Kubernetes CRD Nedir? EKS’de Nasıl Kullanılır?
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.
- CRD: "Ben
MyAppdiye bir şey tanımlıyorum, içindeversionvereplicasalanı olacak." - Custom Resource (CR): Kullanıcı bir
MyAppYAML dosyası oluşturur. - Controller: Bu yeni
MyAppobjesini 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.