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
envw 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
- Struktura YAML
- Grupuj powiązane zmienne razem
- Używaj komentarzy dla dokumentacji
- Zachowaj spójne wcięcia
- Nazewnictwo
- Używaj WIELKICH_LITER dla nazw zmiennych
- Dodawaj prefix dla grupowania zmiennych
- Stosuj opisowe nazwy
- 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 poddo debugowania - Dokumentuj znaczenie każdej zmiennej
- Regularnie przeglądaj konfigurację zmiennych