2025-02-25Hünkar Döner

Kubernetes CRD Nedir? EKS’de Nasıl Kullanılır?

KubernetesCRDEKSDevelopment
K

Kubernetes CRD Nedir? EKS’de Nasıl Kullanılır?

Kubernetes'in en güçlü yanı genişletilebilir olmasıdır. Varsayılan olarak Pod, Service, Deployment gibi kaynakları (Resources) bilir. Ancak siz, Kubernetes'e kendi işinize özel yeni nesneler öğretmek isterseniz? Örneğin, bir Database veya Website objesi?

İşte Custom Resource Definition (CRD), Kubernetes API'sine yeni türler eklemenizi sağlar. Amazon EKS üzerindeki birçok eklenti (ArgoCD Application, Prometheus ServiceMonitor) aslında birer CRD'dir.

CRD ve Controller Mantığı (Operator Pattern)

Sadece CRD oluşturmak yetmez (veriyi veritabanına kaydetmek gibidir). O veriye göre iş yapacak bir Controller (beyin) yazmanız gerekir.

  1. CRD: "Ben MyApp diye bir şey tanımlıyorum, içinde version ve replicas alanı olacak."
  2. Custom Resource (CR): Kullanıcı bir MyApp YAML dosyası oluşturur.
  3. Controller: Bu yeni MyApp objesini görür ve arka planda gerekli Deployment ve Service'leri oluşturur.

EKS'te CRD Örneği

Basit bir CRD tanımı:

apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  name: crontabs.stable.example.com
spec:
  group: stable.example.com
  versions:
    - name: v1
      served: true
      storage: true
      schema:
        openAPIV3Schema:
          type: object
          properties:
            spec:
              type: object
              properties:
                cronSpec:
                  type: string
                image:
                  type: string
  scope: Namespaced
  names:
    plural: crontabs
    singular: crontab
    kind: CronTab

Bu dosyayı uyguladığınızda, artık EKS kümeniz CronTab diye bir nesneyi tanır.

CRD'ler, Kubernetes'i sadece bir konteyner yöneticisi olmaktan çıkarıp, her şeyi yönetebilen bir platforma dönüştürür.