Operator SDK
- Docker & Kubernetes kursu
- Uzman
- Ders 15/47
- 4 dk
Operator SDK ile geliştirmeyi öğrenirsin.
Operator SDK
Operator SDK ve altında kullandığı Kubebuilder, Go ile operator yazmak için iskelet, kod üretimi ve araçlar sunar. Proje oluşturma, API (CRD + tür) ve denetleyici ekleme birkaç komuttur:
operator-sdk init --domain ornek.com --repo github.com/ali/yedek-operator
operator-sdk create api --group yedek --version v1 --kind Yedek --resource --controller
make manifests # Go türlerinden CRD YAML'ı üretir
make install # CRD'yi cluster'a yükler
make run # denetleyiciyi yerelde çalıştırırAnsible ve Helm tabanlı operator türleri de vardır; Go en esnek olanıdır.
Tür tanımı ve işaretler
Go struct'larındaki yorum işaretleri (marker) CRD'nin doğrulama kurallarına ve yazdırma sütunlarına dönüşür:
type YedekSpec struct {
// +kubebuilder:validation:MinLength=1
Veritabani string `json:"veritabani"`
Takvim string `json:"takvim"`
// +kubebuilder:validation:Minimum=1
// +kubebuilder:default=7
SaklamaGun int32 `json:"saklamaGun,omitempty"`
}
// +kubebuilder:subresource:status
// +kubebuilder:printcolumn:name="Takvim",type=string,JSONPath=`.spec.takvim`
type Yedek struct { ... }Uygulama Operator projesi
Dört komut yaz: --domain ornek.com --repo github.com/ali/yedek-operator ile proje başlat; --group yedek --version v1 --kind Yedek --resource --controller ile API oluştur; make manifests; make install.
Başlangıç kodu
# buraya yazÖrnek çözüm
operator-sdk init --domain ornek.com --repo github.com/ali/yedek-operator
operator-sdk create api --group yedek --version v1 --kind Yedek --resource --controller
make manifests
make installBeklenen çıktı
INFO[0000] Writing kustomize manifests for you to edit... INFO[0002] Writing scaffold for you to edit... /bin/controller-gen rbac:roleName=manager-role crd webhook paths="./..." output:crd:artifacts:config=config/crd/bases customresourcedefinition.apiextensions.k8s.io/yedekler.yedek.ornek.com created
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 make manifests komutu ne üretir?
- Helm chart'ı
- Test raporu
- Go tür tanımlarındaki işaretlerden CRD ve RBAC YAML'ları Doğru cevap
- Docker image'ı
Açıklama: // +kubebuilder:validation:Minimum=1 gibi işaretler şemaya dönüşür.
2 Projeye yeni bir API ve denetleyici ekle.
operator-sdk create ____ --group yedek --version v1 --kind Yedek --resource --controller
operator-sdk create api --group yedek --version v1 --kind Yedek --resource --controller
Açıklama: create api tür ve denetleyici iskeletini üretir.
3 Eşleştir.
| Kavram | Anlamı |
|---|---|
operator-sdk init |
Proje iskeleti |
create api |
Tür ve denetleyici |
make manifests |
CRD YAML üret |
make run |
Yerelde çalıştır |