ConfigMap ve Secret
- Docker & Kubernetes kursu
- Orta seviye
- Ders 70/82
- 4 dk
Uygulama yapılandırması için ConfigMap ve Secret yazarsın.
ConfigMap ve Secret
Ayarlar ikiye ayrılır: gizli olmayanlar ConfigMap'e (sürüm kontrolünde), gizliler Secret'a (komutla, depo dışında). API'nin bağlantı adresi servis adlarını kullanır:
# 40-ayar.yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: api-ayar
namespace: magaza
data:
DB_HOST: db
DB_PORT: "5432"
DB_NAME: magaza
LOG_LEVEL: infoAyar değişince
ConfigMap güncellenince ortam değişkeni olarak kullanan API pod'ları eski değeri görmeye devam eder. Uygulamak için deployment yeniden başlatılır; kademeli yenilendiği için kesinti olmaz:
kubectl apply -f k8s/40-ayar.yaml
kubectl rollout restart deployment/api -n magaza
kubectl rollout status deployment/api -n magaza
kubectl exec -n magaza deploy/api -- printenv LOG_LEVELUygulama Projenin ConfigMap'i
Bir ConfigMap YAML'ı yaz: adı api-ayar, namespace'i magaza; data altında DB_HOST: db, DB_PORT: "5432", LOG_LEVEL: info.
Başlangıç kodu
# buraya yazÖrnek çözüm
apiVersion: v1
kind: ConfigMap
metadata:
name: api-ayar
namespace: magaza
data:
DB_HOST: db
DB_PORT: "5432"
LOG_LEVEL: infoBeklenen çıktı
configmap/api-ayar created
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 DB_PORT değeri neden tırnak içinde yazılır?
- ConfigMap değerleri metin olmalı; 5432 YAML'da sayı olarak okunur Doğru cevap
- Port gizli olduğu için
- Tırnak zorunlu değil, alışkanlık
- Base64 için
Açıklama: Tırnaksız sayı ConfigMap'in reddedilmesine yol açar.
2 Container'daki tek bir ortam değişkenini yazdır.
kubectl exec -n magaza deploy/api -- ____ LOG_LEVEL
kubectl exec -n magaza deploy/api -- printenv LOG_LEVEL
Açıklama: printenv AD tek değişkeni yazar.
3 Eşleştir.
| Kavram | Anlamı |
|---|---|
ConfigMap |
Depoda, gizli değil |
Secret |
Komutla, gizli |
DB_HOST: db |
Servis adı |
rollout restart |
Yeni ayarı uygula |