Docker & Kubernetes
Operator SDK
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ır
Ansible 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.
Örnek çözümü göster
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 install
Kendini test et
-
make manifests komutu ne üretir?
- Helm chart'ı
- Test raporu
- Go tür tanımlarındaki işaretlerden CRD ve RBAC YAML'ları
- Docker image'ı
Cevabı göster
Go tür tanımlarındaki işaretlerden CRD ve RBAC YAML'ları — // +kubebuilder:validation:Minimum=1 gibi işaretler şemaya dönüşür.
-
Projeye yeni bir API ve denetleyici ekle.
operator-sdk create ____ --group yedek --version v1 --kind Yedek --resource --controller
Cevabı göster
operator-sdk create api --group yedek --version v1 --kind Yedek --resource --controller
-
Eşleştir.
- operator-sdk init
- Proje iskeleti
- create api
- Tür ve denetleyici
- make manifests
- CRD YAML üret
- make run
- Yerelde çalıştır
Sıradaki ders: Özel kaynak yönetimi