Örnek operator
- Docker & Kubernetes kursu
- Uzman
- Ders 17/47
- 4 dk
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 -fRBAC 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;deletemake 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
# buraya yazÖrnek çözüm
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 -fBeklenen çı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.
make ____ IMG=ghcr.io/ali/yedek-operator:0.1.0
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 |