CodeBlanks Logo Icon CodeBlanks

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.

Başlangıç kodu

terminal
# buraya yaz

Örnek çözüm

terminal
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

Beklenen çı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.

Soru
operator-sdk create ____ --group yedek --version v1 --kind Yedek --resource --controller
Cevap
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

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