Kubernetes Helm Chart Nedir? Uygulama Paketleme ve Dağıtım

müfettiş

Moderatör
Katılım
20 Ocak 2024
Mesajlar
325
Tepkime puanı
1
Puanları
18

images (1).png

Kubernetes Helm Chart Nedir? Uygulama Paketleme ve Dağıtım​


Giriş: YAML Cehenneminden Çıkış​

Kubernetes (K8s) harikadır ama yönetimi zordur. Basit bir uygulamayı (örneğin WordPress) kurmak için bile Deployment, Service, Ingress, Secret, PVC, ConfigMap gibi en az 5-6 tane YAML dosyası yazmanız gerekir.

Daha kötüsü, bu uygulamayı "Test" ortamına kurarken ayrı, "Canlı" (Prod) ortama kurarken ayrı YAML dosyaları düzenlemeniz gerekir. Bu kopyala-yapıştır süreci hataya açıktır. İşte Helm, bu sorunu çözen "Kubernetes Paket Yöneticisi"dir. Linux için apt veya yum neyse, K8s için Helm odur.

Helm Mimarisi: 3 Temel Kavram​

Helm'i anlamak için şu üç terimi bilmelisiniz:
  1. Chart (Paket): Uygulamanızın çalışması için gereken tüm şablon (template) dosyalarının bulunduğu klasördür. Paketin kendisidir.
  2. Values (Ayarlar): Şablonların içine doldurulacak değişkenlerdir (values.yaml).
  3. Release (Sürüm): Bir Chart'ın, belirli ayarlarla (Values) kümeye kurulmuş halidir. Aynı Chart'ı farklı isimlerle 10 kere kurabilirsiniz; her biri ayrı bir Release olur.

Neden Helm Kullanmalıyız? (Templating Gücü)​

Helm'in en büyük gücü Şablonlama (Templating) yeteneğidir.Normal bir K8s dosyasında image: nginx:1.19 diye elle yazarsınız. Helm'de ise şöyle yazarız:

YAML
YAML:
# deployment.yaml (Şablon)
image: {{ .Values.image.repository }}:{{ .Values.image.tag }}

Bu sayede, values.yaml dosyasında sadece versiyonu değiştirerek aynı şablonu hem Test hem Prod ortamında kullanabilirsiniz.
  • Test için: helm install my-app ./chart --set image.tag=dev
  • Prod için: helm install my-app ./chart --set image.tag=stable

Helm Kullanımı ve Artifact Hub​

Sıfırdan Chart yazmak zorunda değilsiniz. Artifact Hub, binlerce hazır Helm Chart'ın bulunduğu bir markettir.

Örnek: Prometheus ve Grafana KurulumuNormalde bu ikiliyi kurmak için yüzlerce YAML dosyası gerekir. Helm ile tek komuttur:

Bash

Bash:
# Repo ekle
helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
helm repo update

# Kurulumu yap
helm install monitoring prometheus-community/kube-prometheus-stack
Bu komut, arka planda onlarca pod, servis ve ayar dosyasını otomatik oluşturur.

Yaşam Döngüsü Yönetimi: Upgrade ve Rollback​

Helm sadece kurmaz, güncellemeyi de yönetir.
  • Upgrade: Uygulamada değişiklik yaptınız. helm upgrade my-app ./chart komutuyla sadece değişen kısımlar güncellenir.
  • Rollback: Güncelleme patladı mı? helm rollback my-app 1 komutuyla saniyeler içinde bir önceki versiyona dönersiniz. Helm, yapılan her değişikliğin kaydını (Revision) tutar.

Kendi Chart'ınızı Oluşturmak​

helm create my-chart komutu size hazır bir klasör yapısı verir.
  • templates/: YAML dosyalarınızın şablon hali buradadır.
  • Chart.yaml: Uygulamanın adı ve versiyon bilgisi.
  • values.yaml: Varsayılan ayarlar.

Sonuç​

Helm, Kubernetes kullanımını "uzmanlık" seviyesinden "kullanıcı" seviyesine indirger. Karmaşık uygulamaları tek bir paket halinde dağıtmanızı, versiyonlamanızı ve yönetmenizi sağlar. Modern DevOps süreçlerinde (CI/CD), uygulamalar genellikle kubectl apply ile değil, helm upgrade ile dağıtılır.
 
Geri
Üst