12: Deployment z pełną konfiguracją
Konfiguracja zaawansowanego Deploymentu w Kubernetes
Cel zadania
Celem zadania jest stworzenie pełnej konfiguracji Deployment wykorzystującej poznane wcześniej elementy konfiguracyjne.
Teoria
Łączymy wszystko — pełna konfiguracja Deploymentu
To ćwiczenie integruje wszystkie poznane dotychczas elementy w jeden manifest:
- ConfigMap — konfiguracja aplikacji (pliki + zmienne)
- Secret — wrażliwe dane (hasła)
- Deployment z:
- Resources (requests/limits) → QoS: Guaranteed
- Liveness Probe → restart przy awarii
- Readiness Probe → kontrola ruchu
- Wolumeny → pliki konfiguracyjne w kontenerze
- Zmienne środowiskowe → z ConfigMap i Secret
Architektura full-config Deploymentu
graph TB
CM["ConfigMap: app-config<br/>app.properties, config.json, ENVIRONMENT"]
SEC["Secret: app-secrets<br/>DB_PASSWORD"]
subgraph DEP["Deployment: kuard-deployment (2 repliki)"]
subgraph POD["Pod"]
CONT["Kontener: kuard"]
ENV["env:<br/>ENVIRONMENT (z CM)<br/>DB_PASSWORD (z Secret)"]
VOL["/config<br/>(zamontowany ConfigMap)"]
RES["resources:<br/>CPU: 100m, Memory: 64Mi"]
LP["livenessProbe: /healthy"]
RP["readinessProbe: /ready"]
end
end
CM -->|"envFrom"| ENV
CM -->|"volumeMounts"| VOL
SEC -->|"secretKeyRef"| ENV
style DEP fill:#e3f2fd,stroke:#1976d2
style POD fill:#f0f4ff
style CM fill:#fff3e0,stroke:#f57c00
style SEC fill:#fce4ec,stroke:#e91e63
Zadanie: Deployment z pełną konfiguracją
1. Utwórz pliki konfiguracyjne
# Utwórz plik app.properties
cat > app.properties << EOF
environment=production
database.url=postgres://db:5432
api.key=123456789
EOF
# Utwórz plik config.json
cat > config.json << EOF
{
"database": {
"host": "db.example.com",
"port": 5432
},
"cache": {
"enabled": true,
"ttl": 300
}
}
EOF
2. Stwórz obiekty w jednym pliku YAML
Utwórz plik full-config.yaml zawierający:
- ConfigMap o nazwie
app-config:- Załącz pliki
app.propertiesiconfig.json - Dodaj zmienną
ENVIRONMENTz wartościąproduction
- Załącz pliki
- Secret o nazwie
app-secrets:- Typ:
Opaque - Zawiera zmienną
DB_PASSWORDz wartościąadmin123
- Typ:
- Deployment o nazwie
kuard-deployment:- 2 repliki
- Obraz:
gcr.io/kuar-demo/kuard-amd64:1 - QoS Class: Guaranteed (requests = limits)
- CPU: 100m
- Memory: 64Mi
- Health Checks:
- Liveness probe: endpoint
/healthy - Readiness probe: endpoint
/ready - Oba na porcie 8080
- InitialDelay: 5s
- Period: 10s
- Liveness probe: endpoint
- Zmienne środowiskowe:
ENVIRONMENTz ConfigMapDB_PASSWORDz Secret
- ConfigMap zamontowany jako volumen w
/config
Wskazówka: Możesz umieścić wszystkie obiekty w jednym pliku YAML, oddzielając je
---
Weryfikacja
- Zastosuj konfigurację:
kubectl apply -f full-config.yaml - Sprawdź działanie przez UI kuard:
kubectl port-forward deployment/kuard-deployment 8080:8080 - Otwórz
http://localhost:8080i sprawdź:- Zakładka “ENV” - zmienne środowiskowe
- Zakładka “File System Browser” - pliki w
/config - Zakładka “Liveness” i “Readiness” - status probe
Kryteria sukcesu
- Deployment uruchamia 2 repliki
- QoS Class: Guaranteed (widoczne w
kubectl describe pod) - Oba pliki konfiguracyjne widoczne w
/config - Obie zmienne środowiskowe dostępne
- Health checki przechodzą pomyślnie