CodeBlanks Logo Icon CodeBlanks

Web Deployment

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 --url

Uygulama 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

terminal
# buraya yaz

Örnek çözüm

terminal
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-ayar

Beklenen çı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.

Soru
              valueFrom:
                ____: {name: db-gizli, key: POSTGRES_PASSWORD}
Cevap
              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

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