ConfigMapy a Secrety
ConfigMapy a Secrety
Konfigurace žije v prostředí, ne v image. Stejný image běží ve vývoji i v produkci – liší se jen ConfigMapa.
graph LR
CM[ConfigMap app-cfg] -->|proměnná| P[Pod]
SEC[Secret db-cred] -->|proměnná| P
CM -->|připojený soubor| P
apiVersion: v1
kind: ConfigMap
metadata:
name: app-cfg
data:
DATACENTER: dc01
app.properties: |
color=blue
Dva způsoby spotřeby:
env: # 1 – jeden klíč jako proměnná
- name: DATACENTER
valueFrom:
configMapKeyRef: { name: app-cfg, key: DATACENTER }
volumes: # 2 – celá ConfigMapa jako soubory
- name: cfg
configMap: { name: app-cfg }
Připojené soubory se aktualizují samy (zhruba do minuty, až kubelet
synchronizuje). Proměnné prostředí ne – nastaví se jednou při startu
kontejneru, takže pod se musí restartovat: kubectl rollout restart deploy/….
Secret
Stejný tvar, jiný záměr. Hodnoty jsou v manifestu base64, což je kódování, ne šifrování – kdo Secret přečte, vidí hodnotu.
kubectl create secret generic db-cred \
--from-literal=username=app --from-literal=password=S3cret
kubectl get secret db-cred -o jsonpath='{.data.password}' | base64 -d
envFrom:
- secretRef: { name: db-cred }
Když píšete Secret ručně, použijte stringData. Skutečný Secret nikdy nedávejte
do Gitu – použijte sealed-secrets, SOPS nebo externí úložiště. Ochranu dělá RBAC
a šifrování at rest, ne to kódování.