CodeBlanks Logo Icon CodeBlanks

CRD YAML

CRD YAML yapısını öğrenirsin.

CRD YAML

CRD'nin adı <çoğul>.<grup> biçiminde olmalıdır. names türün adlarını, scope namespace kapsamını, versions sunulan API sürümlerini ve doğrulama tanımlarını belirtir:

apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  name: yedekler.ornek.com
spec:
  group: ornek.com
  scope: Namespaced
  names:
    plural: yedekler
    singular: yedek
    kind: Yedek
    shortNames: [yd]
  versions:
    - name: v1
      served: true
      storage: true
      schema:
        openAPIV3Schema:
          type: object
          properties:
            spec:
              type: object
              properties:
                veritabani: {type: string}
                takvim: {type: string}
                saklamaGun: {type: integer}

storage: true etcd'ye hangi sürümde yazılacağını gösterir; tam olarak bir sürümde olmalıdır.

Kapsam ve adlar

scope: Namespaced türü namespace'lere bağlar (çoğu uygulama kaynağı); Cluster cluster genelinde tek bir ad alanı kullanır (ör. bir platform ayarı). names kubectl'in hangi adları tanıyacağını belirler:

names:
  plural: yedekler      # kubectl get yedekler, URL yolu
  singular: yedek       # kubectl get yedek
  kind: Yedek           # YAML'daki kind
  shortNames: [yd]      # kubectl get yd
  categories: [all]     # kubectl get all içinde görünür

Uygulama CRD yaz

Bir CRD YAML'ı yaz: apiextensions.k8s.io/v1; adı yedekler.ornek.com; group: ornek.com, scope: Namespaced; names: plural: yedekler, singular: yedek, kind: Yedek; versions'ta name: v1, served: true, storage: true. Bu, dosyanın ilk kısmıdır: API sunucusu her sürüm için bir doğrulama tanımı da ister; onu bu grubun 5. dersinde ekleyeceksin.

Başlangıç kodu

terminal
# buraya yaz

Örnek çözüm

terminal
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  name: yedekler.ornek.com
spec:
  group: ornek.com
  scope: Namespaced
  names:
    plural: yedekler
    singular: yedek
    kind: Yedek
  versions:
    - name: v1
      served: true
      storage: true

Beklenen çıktı

# crd.yaml (ilk kısım) hazır
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  name: yedekler.ornek.com

Soru ve cevaplar

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

1 group: ornek.com ve plural: yedekler olan bir CRD'nin metadata.name'i ne olmalıdır?

  • Yedek
  • ornek.com
  • yedek.v1
  • yedekler.ornek.com Doğru cevap

Açıklama: Ad uymazsa API sunucusu CRD'yi reddeder.

2 Türü namespace kapsamlı yap.

Soru
spec:
  group: ornek.com
  scope: ____
Cevap
spec:
  group: ornek.com
  scope: Namespaced

Açıklama: Diğer seçenek Cluster'dır.

3 Eşleştir.

Kavram Anlamı
plural URL ve liste adı
kind YAML türü
shortNames Kısaltma
storage: true etcd sürümü

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