Kubernetes Helm Charts: Kurumsal Uygulama Dağıtımını Standartlaştırın
Merhaba,
Kubernetes ortamına geçtiniz, containerlarınız hazır ama deployment yönetimi kaos haline gelmeye başladı mı? Helm tam bu noktada devreye giriyor. Kubernetes için paket yöneticisi olan Helm, uygulama dağıtımını şablonlara dönüştürerek tekrarlanabilir hale getiriyor. Gelin kurumsal perspektiften inceleyelim arkadaşlar.
Helm Nedir ve Neden Kullanmalıyız?
Kubernetes'te her deployment, service, configmap, ingress ayrı YAML dosyası. Küçük bir uygulama bile 10-15 YAML gerektiriyor. Bunları ortama göre (dev/test/prod) yönetmek hızla karmaşıklaşıyor. Helm bu YAML'ları Chart adı verilen paketlere topluyor ve değişkenleştiriyor. Sonuç: tek komutla tutarlı deployment.
Chart Yapısı
Bir Helm Chart'ın temel yapısı şu şekilde:
mychart/
Chart.yaml # Metadata (isim, versiyon, açıklama)
values.yaml # Varsayılan değişkenler
templates/ # YAML şablonları
deployment.yaml
service.yaml
ingress.yaml
_helpers.tpl # Tekrar kullanılabilir fonksiyonlarŞablonlarda {{ .Values.image.tag }} gibi Go template syntax'i kullanılıyor. values.yaml'daki değerler şablonlara enjekte ediliyor.
Values Hiyerarşisi ve Ortam Yönetimi
Kurumsal ortamın en kritik konusu bu. Tek bir values.yaml yerine ortam bazlı override dosyaları kullanın:
helm install myapp ./mychart
-f values.yaml
-f values-prod.yaml
--set image.tag=1.2.3values-prod.yaml sadece prod'a özgü değerleri içeriyor (replica sayısı, resource limitleri, ingress hostname). Bu yapı hem güvenli hem de okunabilir.
Helmfile ile Çoklu Chart Yönetimi
Kurumsal ortamda tek chart değil onlarca chart var. Helmfile, birden fazla Helm release'ini deklaratif olarak yönetmenizi sağlıyor. Tüm servislerinizi tek helmfile.yaml'da tanımlayıp helmfile sync ile tümünü deploy edebilirsiniz. GitOps yaklaşımıyla birleşince güçlü bir deployment pipeline elde ediyorsunuz.
Helm ile GitOps: ArgoCD Entegrasyonu
ArgoCD, Helm Chart'larını Git'ten okuyup Kubernetes'e otomatik uygulayan bir GitOps aracı. Git'e chart değişikliği push ettiğinizde ArgoCD algılayıp cluster'ı güncelliyor. Manuel helm upgrade komutu ortadan kalkıyor. Audit trail Git history'de, rollback git revert ile yapılıyor.
Chart Repository Yönetimi
Geliştirdiğiniz chart'ları kurum içi Helm repository'sinde yayınlayın. OCI-based registry (Azure Container Registry, Harbor) ile Helm chart ve Docker image aynı yerde tutulabiliyor. helm push ile publish, helm pull ile çekme artık Docker workflow'una benziyor.
Güvenlik: Secrets Yönetimi
Hassas değerleri values.yaml'a koymayın. Helm Secrets (vals veya SOPS ile şifreleme) veya External Secrets Operator kullanın. Azure Key Vault, HashiCorp Vault entegrasyonlarıyla secret'lar Kubernetes'e güvenli şekilde enjekte edilebiliyor.
Sonuç
Helm, Kubernetes'i ciddiye alan her kurumsal ortamın vazgeçilmezi. Chart yapısı, values hiyerarşisi ve GitOps entegrasyonu, bunları doğru kurguladığınızda deployment karmaşıklığı önemli ölçüde azalıyor. Yeni Kubernetes projesine başlıyorsanız ilk gün Helm ile başlayın :)
İyi Günler Dilerim,
Bu yazıyı paylaş: