CodeBlanks Logo Icon CodeBlanks

Environment değişkeni

ConfigMap'i environment değişkeni olarak bağlamayı öğrenirsin.

Ortam değişkeni olarak

ConfigMap değerleri container'a iki yolla ortam değişkeni olarak verilir: tek tek valueFrom.configMapKeyRef ile ya da tüm anahtarlar birden envFrom ile:

      containers:
        - name: api
          image: api:1.0
          envFrom:
            - configMapRef:
                name: api-ayar
          env:
            - name: SEVIYE
              valueFrom:
                configMapKeyRef:
                  name: api-ayar
                  key: LOG_LEVEL

Hata ve isteğe bağlılık

Pod'un kullandığı ConfigMap yoksa container CreateContainerConfigError durumunda kalır. Eksik olmasına izin verilecekse optional: true yazılır:

$ kubectl get pod api-5d8f7c9b4-qrstu
NAME                  READY   STATUS                       RESTARTS
api-5d8f7c9b4-qrstu   0/1     CreateContainerConfigError   0
$ kubectl describe pod api-5d8f7c9b4-qrstu | grep -i configmap
  Warning  Failed  configmap "api-ayar" not found

Uygulama Ayarı container'a ver

Bir Deployment'ın container bölümünü yaz (containers: ile başlayarak): container adı api, image api:1.0; envFrom ile api-ayar ConfigMap'inin tüm anahtarları; env altında SEVIYE değişkeni configMapKeyRef ile api-ayar'ın LOG_LEVEL anahtarından.

Başlangıç kodu

terminal
# buraya yaz

Örnek çözüm

terminal
containers:
  - name: api
    image: api:1.0
    envFrom:
      - configMapRef:
          name: api-ayar
    env:
      - name: SEVIYE
        valueFrom:
          configMapKeyRef:
            name: api-ayar
            key: LOG_LEVEL

Beklenen çıktı

deployment.apps/api configured
$ kubectl exec deploy/api -- env | grep -E "LOG_LEVEL|SEVIYE"
LOG_LEVEL=info
SEVIYE=info

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 ConfigMap'teki bir değer değişince, ortam değişkeni olarak kullanan çalışan pod ne görür?

  • Pod çöker
  • Eski değeri; pod yeniden başlatılana kadar değişmez Doğru cevap
  • Yeni değeri hemen
  • Boş değer

Açıklama: Ortam değişkenleri süreç başlarken okunur; kubectl rollout restart gerekir.

2 ConfigMap'in tüm anahtarlarını ortam değişkeni yap.

Soru
          ____:
            - configMapRef:
                name: api-ayar
Cevap
          envFrom:
            - configMapRef:
                name: api-ayar

Açıklama: envFrom tüm anahtarları birden yükler.

3 Eşleştir.

Kavram Anlamı
envFrom Tüm anahtarlar
configMapKeyRef Tek anahtar
CreateContainerConfigError ConfigMap bulunamadı
optional: true Eksikse sorun yok

Orta seviye bölümündeki tüm dersler