Web Deployment
- Docker & Kubernetes kursu
- Orta seviye
- Ders 69/82
- 4 dk
Web uygulaması için Deployment yazarsın.
Web ve API Deployment'ları
API iki kopyayla çalışır, ayarlarını ConfigMap'ten, parolayı Secret'tan alır ve hazırlık kontrolüne sahiptir. Web (nginx) üç kopyalıdır ve isteği http://api:8000'e iletir:
# 20-api.yaml (özet)
spec:
replicas: 2
template:
spec:
containers:
- name: api
image: ghcr.io/ali/magaza-api:1.0
envFrom:
- configMapRef: {name: api-ayar}
env:
- name: DB_PASSWORD
valueFrom:
secretKeyRef: {name: db-gizli, key: POSTGRES_PASSWORD}
readinessProbe:
httpGet: {path: /saglik, port: 8000}Web servisini dışa açmak
Dış dünyaya yalnızca web açılır. Minikube'de NodePort yeterlidir; bulutta LoadBalancer ya da (ileride) Ingress kullanılır:
apiVersion: v1
kind: Service
metadata:
name: web
namespace: magaza
spec:
type: NodePort
selector:
app: web
ports:
- port: 80
targetPort: 80
nodePort: 30080
minikube service web -n magaza --urlUygulama API deployment'ı
Bir Deployment YAML'ı yaz: adı api, namespace'i magaza, replicas: 2; selector ve şablon etiketi app: api; container adı api, image ghcr.io/ali/magaza-api:1.0; envFrom altında api-ayar ConfigMap'i.
Başlangıç kodu
# buraya yazÖrnek çözüm
apiVersion: apps/v1
kind: Deployment
metadata:
name: api
namespace: magaza
spec:
replicas: 2
selector:
matchLabels:
app: api
template:
metadata:
labels:
app: api
spec:
containers:
- name: api
image: ghcr.io/ali/magaza-api:1.0
envFrom:
- configMapRef:
name: api-ayarBeklenen çıktı
deployment.apps/api created
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 API veritabanına bağlanamadığı sürece hazırlık kontrolü başarısız olursa ne olur?
- Web çöker
- API pod'ları trafik almaz ama yeniden başlatılmaz Doğru cevap
- API pod'ları silinir
- Veritabanı yeniden başlatılır
Açıklama: Readiness başarısızlığı yalnızca Service uç noktalarından çıkarır.
2 Secret'tan tek anahtar al.
valueFrom:
____: {name: db-gizli, key: POSTGRES_PASSWORD}
valueFrom:
secretKeyRef: {name: db-gizli, key: POSTGRES_PASSWORD}
Açıklama: secretKeyRef tek anahtarı seçer.
3 Eşleştir.
| Kavram | Anlamı |
|---|---|
api replicas: 2 |
Yedekli API |
readinessProbe |
Hazır olmadan trafik yok |
web NodePort |
Tek dış giriş |
{name: x} |
YAML satır içi sözlük |