CodeBlanks Logo Icon CodeBlanks

Örnek operator

Basit bir operator senaryosunu öğrenirsin.

Örnek operator

Yedek operator'ünün tam akışı: kullanıcı bir Yedek yazar; operator ondan bir CronJob üretir (sahip referansıyla); CronJob'un son başarılı çalışmasını status'a yazar; Yedek silinince CronJob da çöp toplayıcıyla gider. Operator'ün kendisi de bir Deployment olarak, kendi ServiceAccount'u ve RBAC izinleriyle çalışır:

make docker-build docker-push IMG=ghcr.io/ali/yedek-operator:0.1.0
make deploy IMG=ghcr.io/ali/yedek-operator:0.1.0
kubectl get deploy -n yedek-operator-system
kubectl logs -n yedek-operator-system deploy/yedek-operator-controller-manager -f

RBAC işaretleri

Denetleyici dosyasındaki işaretler operator'ün ClusterRole'ünü üretir; en az yetki ilkesi burada da geçerlidir:

// +kubebuilder:rbac:groups=yedek.ornek.com,resources=yedekler,verbs=get;list;watch;update;patch
// +kubebuilder:rbac:groups=yedek.ornek.com,resources=yedekler/status,verbs=get;update;patch
// +kubebuilder:rbac:groups=batch,resources=cronjobs,verbs=get;list;watch;create;update;patch;delete

make manifests bunları config/rbac/role.yaml'a yazar.

Uygulama Operator'ü yayınla

Dört komut yaz: IMG=ghcr.io/ali/yedek-operator:0.1.0 ile make docker-build docker-push; aynı IMG ile make deploy; yedek-operator-system namespace'indeki deployment'ları listele; o namespace'teki deploy/yedek-operator-controller-manager log'larını canlı izle.

Başlangıç kodu

terminal
# buraya yaz

Örnek çözüm

terminal
make docker-build docker-push IMG=ghcr.io/ali/yedek-operator:0.1.0
make deploy IMG=ghcr.io/ali/yedek-operator:0.1.0
kubectl get deploy -n yedek-operator-system
kubectl logs -n yedek-operator-system deploy/yedek-operator-controller-manager -f

Beklenen çıktı

=> naming to ghcr.io/ali/yedek-operator:0.1.0 done
deployment.apps/yedek-operator-controller-manager created
NAME                                READY   UP-TO-DATE   AVAILABLE
yedek-operator-controller-manager   1/1     1            1
INFO  Starting workers  {"controller": "yedek", "worker count": 1}
INFO  CronJob oluşturuldu  {"Yedek": "magaza/magaza-gece"}

Soru ve cevaplar

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

1 Operator'ün CronJob oluşturabilmesi için ne gerekir?

  • ServiceAccount'una batch grubunda cronjobs için create/update izni veren RBAC Doğru cevap
  • cluster-admin her zaman
  • Hiçbir izin
  • Node erişimi

Açıklama: Kubebuilder'da // +kubebuilder:rbac işaretleri bu izinleri üretir.

2 Operator'ü cluster'a dağıt.

Soru
make ____ IMG=ghcr.io/ali/yedek-operator:0.1.0
Cevap
make deploy IMG=ghcr.io/ali/yedek-operator:0.1.0

Açıklama: install CRD'yi, deploy operator'ün kendisini kurar.

3 Eşleştir.

Kavram Anlamı
make docker-build Operator image'ı
make deploy Cluster'a kur
+kubebuilder:rbac İzin işaretleri
controller-manager Operator pod'u

Uzman bölümündeki tüm dersler