Blog
Mert Özen'in yazılım geliştirme, backend, frontend ve DevOps üzerine blog yazıları.
Helm Nedir, Kustomize'dan Farkı Ne? Chart, Release, Repository ve Helm 4 Kurulumu
Helm, Kubernetes manifest'lerini template'leyen, chart olarak paketleyen ve kurulumları release olarak kaydedip upgrade, rollback ve history sağlayan araçtır; Kustomize ise yalnızca düz YAML üzerine overlay yapar. Helm 4'ü kurup Artifact Hub'dan Valkey chart'ını kuruyor, release'in cluster'da Secret olarak nasıl saklandığını açıyor ve Bitnami'nin 2025 katalog değişikliğiyle 'deployed' görünen ama hiç başlamayan bir release'i gerçek çıktılarla inceliyoruz.
İlk Chart: helm create, Chart.yaml, templates/ ve values.yaml ile Bookstore.Api'yi Paketlemek
Bir Helm chart'ı Chart.yaml (chart'ın version'ı ve uygulamanın appVersion'ı), values.yaml (chart'ın arayüzü) ve templates/ klasöründeki Go template'lerinden oluşur. helm create iskeletini sadeleştirip Bookstore.Api'nin Deployment, Service ve ServiceAccount'unu template'e çeviriyor, built-in object'leri, helm template ile --dry-run=server farkını ve sabit resource adları ile appVersion'dan habersiz image tag'i tuzaklarını gerçek çıktılarla görüyoruz.
Helm Template Dili: Go Template, Fonksiyonlar, _helpers.tpl, include, Flow Control ve Whitespace
Helm template'leri Go text/template ile Sprig ve Helm fonksiyonlarından oluşur; ortak label ve isimler _helpers.tpl'de define ile tanımlanıp include ile çağrılır, scope değişince köke $ ile ulaşılır. Bookstore chart'ına bookstore-web'i ikinci component olarak ekliyor, config değişince pod'ları yeniden başlatan checksum annotation'ını, whitespace ve girinti hatalarını, tpl ve lookup'ın dry run'daki davranışını gerçek çıktılarla görüyoruz.
Values Tasarımı: Environment Başına Values, --set, values.schema.json ile Doğrulama ve Secret'lar
Helm values'ı chart varsayılanı, sırayla -f dosyaları ve en son --set olarak birleştirir; values.schema.json bu birleşmiş sonucu doğrular, secret'lar ise values'a değil var olan bir Secret'a referansla girer. Bookstore için dev, staging ve prod values dosyalarını, Helm 4'ün multi-document values ve --set-json desteğini, --set'in virgül ve nokta tuzaklarını, required ve fail ile anlamlı hataları ve --reuse-values'un yeni varsayılanları yuttuğu bir upgrade'i gerçek çıktılarla görüyoruz.
Release Yönetimi: install, upgrade --install, rollback, history, --wait ve Hook'larla Migration
helm upgrade --install her çalıştırmada aynı sonuca götüren deploy komutudur; pre-upgrade hook'u migration'ı Deployment'tan önce çalıştırır, ama rollback veritabanı migration'ını geri almaz. Bookstore'un EF Core migration bundle'ını SQL Server'a karşı hook olarak çalıştırıyor, hook'un üç gerçek başarısızlığını, Helm 4'ün kstatus tabanlı --wait'ini, --rollback-on-failure'ı, pending-upgrade'den kurtarmayı ve server-side apply çakışmalarını gerçek çıktılarla görüyoruz.
Dependency'ler, OCI Registry ve Chart'ı Test Etmek: Chart.lock, helm push, lint, helm test ve CI
Chart dependency'leri Chart.yaml'da aralıkla tanımlanır ve Chart.lock ile sabitlenir; chart helm package ve helm push ile bir OCI registry'ye yayımlanır, ama aynı sürümü farklı içerikle yeniden push etmeyi registry engellemez. Bookstore chart'ına opsiyonel bir Valkey subchart'ı ve global.imageRegistry ekliyor, Helm 4'ün registry login ve digest ile kurulum davranışını, kubeconform, helm test ve chart-testing'i ve bunları çalıştıran bir GitHub Actions workflow'unu gerçek çıktılarla görüyoruz.
Helm 3'ten Helm 4'e: Ne Değişti, Neyi Bozar ve Helm 3 EOL Takvimi
Helm 4, Helm 3 chart'larını ve release'lerini değiştirmeden yönetir; kırılan şeyler script'ler, plugin'ler ve post-renderer'lardır, Helm 3'ün security desteği ise 10 Şubat 2027'de biter. Helm 3.22 ile Helm 4.3'ü yan yana çalıştırıp server-side apply latching'ini, iki sürüm karışınca SSA'nın nasıl geri alındığını, flag ve log değişikliklerini, post-renderer'ın plugin'e dönüşmesini, deneysel Chart v3'ü ve Helm 2 dönemi bir chart'ı gerçek çıktılarla görüyor, bir geçiş checklist'i çıkarıyoruz.