Meydan okuma - ConfigMap
- Docker & Kubernetes kursu
- Orta seviye
- Ders 81/82
- 5 dk
ConfigMap yazıp Pod'a environment olarak bağlarsın.
Meydan okuma: ayarı dışarı al
Bir nginx sitesinin ayar dosyasını image'a gömmek yerine ConfigMap'e alacaksın. Dosya volume olarak bağlanacak; ayar değişince pod'lar yeniden başlatılmadan dosya güncellenecek, nginx'e yeniden yüklemesi söylenecek.
kubectl create configmap nginx-ayar --from-file=default.conf
# ... volumes: configMap: nginx-ayar -> /etc/nginx/conf.d
kubectl create configmap nginx-ayar --from-file=default.conf --dry-run=client -o yaml | kubectl apply -f -
kubectl exec deploy/web -- nginx -s reloadUygulama Volume'lü Deployment şablonu
Bir Deployment şablonunun spec bölümünü yaz (spec: ile başlayarak): volumes altında nginx-ayar ConfigMap'inden ayar volume'ü; container adı nginx, image nginx:1.27; ayar'ı /etc/nginx/conf.d'ye readOnly: true ile bağla.
Başlangıç kodu
# buraya yazÖrnek çözüm
spec:
volumes:
- name: ayar
configMap:
name: nginx-ayar
containers:
- name: nginx
image: nginx:1.27
volumeMounts:
- name: ayar
mountPath: /etc/nginx/conf.d
readOnly: trueBeklenen çıktı
deployment.apps/web configured
Uygulama Ayarı güncelle
Üç komut yaz: default.conf dosyasından nginx-ayar ConfigMap'ini oluşturmadan YAML olarak üretip kubectl apply -f -'e aktar; deploy/web'de cat /etc/nginx/conf.d/default.conf çalıştırarak dosyayı kontrol et; deploy/web'de nginx -s reload çalıştır.
Başlangıç kodu
# buraya yazÖrnek çözüm
kubectl create configmap nginx-ayar --from-file=default.conf --dry-run=client -o yaml | kubectl apply -f -
kubectl exec deploy/web -- cat /etc/nginx/conf.d/default.conf
kubectl exec deploy/web -- nginx -s reloadBeklenen çıktı
configmap/nginx-ayar configured
server {
listen 80;
location / { root /usr/share/nginx/html; }
}
2026/11/03 13:05:21 [notice] 42#42: signal process started
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Bu düzende ayar dosyası subPath ile bağlansaydı ne olurdu?
- Fark olmazdı
- ConfigMap güncellemesi dosyaya yansımazdı Doğru cevap
- Dosya hiç görünmezdi
- nginx çökerdi
Açıklama: subPath bağlamaları otomatik yenilenmez.
2 nginx'e ayarı yeniden yüklet.
kubectl exec deploy/web -- nginx -s ____
kubectl exec deploy/web -- nginx -s reload
Açıklama: nginx -s reload süreci durdurmadan ayarı yeniden okur.
3 Eşleştir.
| Kavram | Anlamı |
|---|---|
--from-file=default.conf |
Dosyadan ConfigMap |
configMap volume |
Dosya olarak bağla |
| kubectl apply -f - |
Güncelle |
nginx -s reload |
Yeniden yükle |