Meydan okuma - Operator
- Docker & Kubernetes kursu
- Uzman
- Ders 44/47
- 5 dk
Operator reconcile mantığını açıklayan bir yapı yazarsın.
Meydan okuma: Yedek operator'ü
CRD tek başına yalnızca veri saklar; işi yapan bir operator gerekir. Operator her Yedek nesnesi için bir CronJob oluşturacak ve son yedeğin durumunu status'a yazacak:
Yedek magaza-db ──reconcile──► CronJob magaza-db-yedek (0 2 * * *)
◄──status───── sonYedek: 2026-11-03T02:00:00Z, durum: Basariliİskeleti kubebuilder ile kuracak, ardından operator'ü cluster'a dağıtıp sonucu sınayacaksın.
Uygulama İskeleti kur
Üç komut yaz: kubebuilder init --domain sirket.com --repo github.com/sirket/yedek-operator; platform grubunda, v1 sürümünde Yedek türü için API oluştur (--resource --controller); CRD ve RBAC dosyalarını üret (make manifests).
Başlangıç kodu
# buraya yazÖrnek çözüm
kubebuilder init --domain sirket.com --repo github.com/sirket/yedek-operator
kubebuilder create api --group platform --version v1 --kind Yedek --resource --controller
make manifestsBeklenen çıktı
INFO Writing kustomize manifests for you to edit... INFO Writing scaffold for you to edit... INFO api/v1/yedek_types.go INFO internal/controller/yedek_controller.go /home/ali/yedek-operator/bin/controller-gen rbac:roleName=manager-role crd webhook paths="./..." output:crd:artifacts:config=config/crd/bases
Uygulama Dağıt ve sına
Dört komut yaz: CRD'yi cluster'a kur (make install); operator'ü ghcr.io/sirket/yedek-operator:0.1.0 image'ıyla dağıt (make deploy IMG=...); yedek.yaml'ı uygula; magaza'da magaza-db nesnesinin {.status.durum} alanını jsonpath ile yazdır.
Başlangıç kodu
# buraya yazÖrnek çözüm
make install
make deploy IMG=ghcr.io/sirket/yedek-operator:0.1.0
kubectl apply -f yedek.yaml
kubectl get yedek magaza-db -n magaza -o jsonpath='{.status.durum}'Beklenen çıktı
customresourcedefinition.apiextensions.k8s.io/yedekler.platform.sirket.com created deployment.apps/yedek-operator-controller-manager created yedek.platform.sirket.com/magaza-db created Basarili
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Operator'ün oluşturduğu CronJob'a ownerReference eklemesinin faydası nedir?
- CronJob daha hızlı çalışır
- RBAC gerekmez
- Status otomatik dolar
- Yedek nesnesi silinince CronJob da çöp toplayıcıyla silinir Doğru cevap
Açıklama: Sahiplik ilişkisi temizliği Kubernetes'e bırakır.
2 Yeni bir API türü ve denetleyicisi ekle.
kubebuilder create ____ --group platform --version v1 --kind Yedek
kubebuilder create api --group platform --version v1 --kind Yedek
Açıklama: create api tür ve denetleyici iskeletini üretir.
3 Eşleştir.
| Kavram | Anlamı |
|---|---|
reconcile |
İstenen duruma getir |
ownerReference |
Sahiplik |
status |
Gözlenen durum |
make manifests |
CRD ve RBAC üret |