04: Zmienne środowiskowe

Zmienne środowiskowe w Kubernetes: konfiguracja z YAML

10 min

Cel zadania

Celem zadania jest zrozumienie jak konfigurować i zarządzać zmiennymi środowiskowymi w Kubernetes przy użyciu plików YAML.

Teoria

Zmienne środowiskowe w Kubernetes

  • Zmienna środowiskowa: Parametr konfiguracyjny dostępny dla aplikacji w kontenerze
  • Typy zmiennych:
    • Proste zmienne (wartość statyczna)
    • Zmienne systemowe (z metadanych Pod/Node)
  • Lokalizacja w YAML: Sekcja env w specyfikacji kontenera

Zadanie 1: Pod z prostymi zmiennymi środowiskowymi

1.1. Utwórz plik basic-env-pod-XX.yaml:

apiVersion: v1
kind: Pod
metadata:
  name: basic-env-pod-XX
spec:
  containers:
  - name: demo
    image: busybox
    command: ["/bin/sh", "-c", "env; sleep 3600"]
    env:
    - name: ENVIRONMENT
      value: "development"
    - name: APP_NAME
      value: "demo-XX"
    - name: TEAM
      value: "team-XX"

Zapisz powyższą definicję i zastosuj:

kubectl apply -f basic-env-pod-XX.yaml

1.2. Sprawdź logi i zmienne:

kubectl logs basic-env-pod-XX

Zadanie 2: Pod ze zmiennymi systemowymi

2.1. Utwórz plik system-env-pod-XX.yaml:

apiVersion: v1
kind: Pod
metadata:
  name: system-env-pod-XX
  labels:
    app: env-demo-XX
spec:
  containers:
  - name: demo
    image: busybox
    command: ["/bin/sh", "-c", "env; sleep 3600"]
    env:
    - name: POD_NAME
      valueFrom:
        fieldRef:
          fieldPath: metadata.name
    - name: POD_IP
      valueFrom:
        fieldRef:
          fieldPath: status.podIP
    - name: NODE_NAME
      valueFrom:
        fieldRef:
          fieldPath: spec.nodeName
    - name: POD_NAMESPACE
      valueFrom:
        fieldRef:
          fieldPath: metadata.namespace

2.2. Zastosuj i sprawdź:

kubectl apply -f system-env-pod-XX.yaml
kubectl logs system-env-pod-XX

Zadanie 3: Pod z wieloma kontenerami i zmiennymi

3.1. Utwórz plik multi-container-env-XX.yaml:

apiVersion: v1
kind: Pod
metadata:
  name: multi-container-env-XX
spec:
  containers:
  - name: first
    image: busybox
    command: ["/bin/sh", "-c", "echo Container 1 env: $CONTAINER_NAME; sleep 3600"]
    env:
    - name: CONTAINER_NAME
      value: "container-1"
  - name: second
    image: busybox
    command: ["/bin/sh", "-c", "echo Container 2 env: $CONTAINER_NAME; sleep 3600"]
    env:
    - name: CONTAINER_NAME
      value: "container-2"

3.2. Zastosuj i sprawdź logi obu kontenerów:

kubectl apply -f multi-container-env-XX.yaml
kubectl logs multi-container-env-XX -c first
kubectl logs multi-container-env-XX -c second

Najczęstsze problemy

Problem Rozwiązanie
Błędy w YAML Sprawdź wcięcia i składnię
Zmienne nie są widoczne Zweryfikuj sekcję env w YAML
Błędne wartości systemowe Sprawdź poprawność fieldPath

Dobre praktyki

  1. Struktura YAML
    • Grupuj powiązane zmienne razem
    • Używaj komentarzy dla dokumentacji
    • Zachowaj spójne wcięcia
  2. Nazewnictwo
    • Używaj WIELKICH_LITER dla nazw zmiennych
    • Dodawaj prefix dla grupowania zmiennych
    • Stosuj opisowe nazwy
  3. Wartości zmiennych
    • Unikaj znaków specjalnych w wartościach
    • Weryfikuj poprawność przed aplikacją
    • Nie przechowuj wrażliwych danych

Podsumowanie

  • YAML pozwala na deklaratywną konfigurację zmiennych
  • Możemy używać wartości statycznych i dynamicznych
  • Każdy kontener może mieć własne zmienne
  • Proper formatting and indentation is crucial

Wskazówki

  • Zawsze waliduj YAML przed zastosowaniem
  • Używaj kubectl describe pod do debugowania
  • Dokumentuj znaczenie każdej zmiennej
  • Regularnie przeglądaj konfigurację zmiennych

results matching ""

    No results matching ""