CodeBlanks Logo Icon CodeBlanks

Veritabanı Deployment

Veritabanı için Deployment ve Service yazarsın.

Veritabanı Deployment'ı

Veritabanı parolasını Secret'tan alır ve verisini bir volume'de tutar. Bu projede basitlik için tek kopyalı bir Deployment kullanıyoruz; üretimde veritabanları için kalıcı depolama ve sabit kimlik sağlayan StatefulSet tercih edilir (ileri seviyede):

apiVersion: apps/v1
kind: Deployment
metadata:
  name: db
  namespace: magaza
spec:
  replicas: 1
  selector:
    matchLabels: {app: db}
  template:
    metadata:
      labels: {app: db}
    spec:
      containers:
        - name: postgres
          image: postgres:16
          envFrom:
            - secretRef:
                name: db-gizli
          ports:
            - containerPort: 5432

Veritabanı servisi ve secret

API veritabanına db adıyla bağlanır; bunun için aynı adlı bir ClusterIP Service gerekir. Parola komutla Secret'a konur, YAML olarak depoya eklenmez:

kubectl create secret generic db-gizli -n magaza \
  --from-literal=POSTGRES_PASSWORD="$DB_PAROLA" --from-literal=POSTGRES_DB=magaza

apiVersion: v1
kind: Service
metadata:
  name: db
  namespace: magaza
spec:
  selector:
    app: db
  ports:
    - port: 5432

Uygulama Veritabanı servisi

Bir Service YAML'ı yaz: adı db, namespace'i magaza; selector app: db; port 5432.

Başlangıç kodu

terminal
# buraya yaz

Örnek çözüm

terminal
apiVersion: v1
kind: Service
metadata:
  name: db
  namespace: magaza
spec:
  selector:
    app: db
  ports:
    - port: 5432

Beklenen çıktı

service/db created

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 Veritabanı Deployment'ının kopya sayısı neden 1'dir?

  • Daha ucuzdur
  • Service yalnızca bir pod'u görür
  • Birden çok PostgreSQL kopyası aynı veriyi yazamaz; çoğaltma ayrı kurulum ister Doğru cevap
  • Kubernetes izin vermez

Açıklama: Veritabanı kopyaları kendi çoğaltma protokolleriyle (ör. operator) kurulur.

2 Secret'ın tüm anahtarlarını ortam değişkeni yap.

Soru
          envFrom:
            - ____:
                name: db-gizli
Cevap
          envFrom:
            - secretRef:
                name: db-gizli

Açıklama: envFrom altında secretRef tüm anahtarları yükler.

3 Eşleştir.

Kavram Anlamı
db-gizli Parola Secret'ı
Service db DNS adı db
replicas: 1 Tek yazıcı
StatefulSet Üretim veritabanı

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