Helm Chart: Kubernetes Uygulamalarını Paketlemek
Sözlük

Helm Chart: Kubernetes Uygulamalarını Paketlemek

Hazırlayan: Mindset Institute EditörlüğüGüncellendi: 4 dk okuma

Helm chart, Kubernetes kaynaklarını şablon ve değerlerle paketleyen yapıdır. Chart yapısı, release kavramı ve kurulum akışı örnekle anlatılıyor.

Helm chart nedir?

Helm, Kubernetes için bir paket yöneticisidir; Helm chart ise bu paketin kendisidir. Resmî dokümantasyona göre chart, ilişkili bir Kubernetes kaynakları kümesini tanımlayan dosyaların toplandığı, chart adıyla adlandırılmış bir dizindir.

Bir uygulamanın Kubernetes'te çalışması için genellikle birden fazla kaynak gerekir: Deployment, Service, ConfigMap, Ingress ve benzerleri. Bunları tek tek YAML dosyası olarak yönetmek, farklı ortamlar (geliştirme, test, üretim) için kopyalamak ve güncellemek zamanla karmaşıklaşır. Helm chart, bu dosyaları şablon hâline getirip tek bir paket olarak kurulabilir, güncellenebilir ve geri alınabilir kılar.

Chart'ın yapısı

Resmî dokümantasyona göre bir chart dizininde şu dosya ve klasörler bulunur:

  • Chart.yaml: Chart'ın zorunlu üst verisi. Chart adı ve sürümü burada tanımlanır; uygulama sürümü (appVersion) ayrı bir alandır ve chart sürümünü etkilemez. Bağımlılıklar da bu dosyada belirtilir.
  • values.yaml: Chart'ın varsayılan yapılandırma değerleri. Kurulum sırasında verilen değerler (bir değer dosyasıyla ya da komut satırından) bu varsayılanların üzerine eklenir.
  • templates/: Go şablon dosyaları. Helm bu şablonları değerlerle birleştirerek Kubernetes manifestlerini üretir.
  • charts/: Chart'ın bağımlı olduğu alt chart'lar.
  • crds/: Özel kaynak tanımları (Custom Resource Definitions).

Bu yapı sayesinde aynı şablon farklı değerlerle farklı ortamlara kurulabilir: Aynı chart, üretimde çok replikayla, test ortamında az kaynakla çalıştırılabilir.

Release, repository ve sürüm kavramları

Helm'de bazı kavramlar sık karıştırılır.

Release: Bir chart'ın kümeye kurulmuş örneğidir. Aynı chart farklı adlarla birden fazla kez kurulabilir ve her kurulum ayrı bir release olur. Kurulum ve güncelleme, tek bir release'i oluşturur ya da değiştirir.

Repository (chart deposu): Paketlenmiş chart'ları barındıran HTTP sunucusudur ve chart'ların dizinini tutan bir index.yaml dosyası içerir. Kurumlar kendi iç chart depolarını da işletebilir.

Sürüm: Chart sürümü, chart paketinin kendi sürümüdür; resmî dokümantasyon SemVer kullanımını önerir. Uygulama sürümü ise paketlenen uygulamanın sürümüdür ve ayrı izlenir. Bu ayrım, "uygulama aynı kaldı ama paketleme değişti" gibi durumları ifade etmeyi mümkün kılar.

Temel kullanım akışı

Chart'ı kullanmanın tipik akışı şu adımlardan oluşur:

  • Bir chart deposu eklenir ve içerik güncellenir.
  • İhtiyaç duyulan chart aranır ve varsayılan değerleri incelenir.
  • Gerekli değerler kendi değer dosyasında üzerine yazılır.
  • Chart kurulur; bu işlem bir release oluşturur.
  • Uygulama değiştiğinde ya da yapılandırma güncellendiğinde release yükseltilir (upgrade).
  • Sorun çıkarsa release önceki bir revizyona geri alınır (rollback).

Helm her release'in revizyon geçmişini tutar. Bu nedenle bir güncelleme sorun çıkardığında, önceki çalışan duruma dönmek temel bir işlemdir. Üretimde ayrıca kurulumdan önce şablonun üreteceği manifestleri incelemek ve değerlerin şema ile doğrulanması yaygın bir iyi uygulamadır.

Örnek: Aynı uygulamayı farklı ortamlara kurmak

Örneğin bir ekip, web uygulamasını tek bir chart olarak paketler. Şablonlar Deployment, Service ve Ingress kaynaklarını tanımlar; kopya sayısı, imaj etiketi, kaynak sınırı ve alan adı değerlere bırakılır.

Geliştirme ortamı için küçük bir değer dosyası, üretim için ise daha yüksek kapasiteli ve farklı alan adlı bir değer dosyası hazırlanır. Aynı chart her ortamda kendi değer dosyasıyla kurulur. Yeni bir uygulama sürümü çıktığında yalnızca imaj etiketi değişir ve ilgili release yükseltilir.

Bu yaklaşım ortamlar arası tutarlılığı artırır: Şablon bir yerde durur, farklılıklar yalnızca değer dosyalarında görünür. Değer dosyaları sürüm kontrolünde tutulursa, her ortamın yapılandırma geçmişi izlenebilir olur.

Helm chart'ın sınırları ve ilgili kavramlar

Şablon gücü bir risk de taşır. Aşırı karmaşık şablonlar okunması ve bakımı zor chart'lara yol açar. Gizli bilgilerin (parola, anahtar) değer dosyalarında düz metin olarak tutulması ise güvenlik sorunudur; bunlar için ayrı bir gizli bilgi yönetimi yaklaşımı gerekir.

Helm, GitOps yaklaşımıyla birlikte de kullanılır: Chart ve değerler bir Git deposunda tutulur, küme durumu o depoyla senkronize edilir. Semantik versiyonlama, chart sürümlerinin anlamlı biçimde numaralanmasına yardım eder.

Mindset kataloğundaki Helm ve K8s Paket Yönetimi programı Helm temel kavramı ve mimarisi, chart geliştirme temelleri, ileri düzey şablon teknikleri, sürüm yönetimi ve versiyonlama, Helm repository ve dağıtım, GitOps ile Helm entegrasyonu ve üretim Helm yönetimi başlıklarını modül olarak içerir.

İlgili Mindset programı

Helm ve K8s Paket Yönetimi

Sık sorulanlar

Sık sorulan sorular

Helm ile kubectl arasındaki fark nedir?

kubectl, Kubernetes kümesiyle doğrudan konuşan komut satırı aracıdır ve tek tek kaynakları yönetir. Helm ise bu kaynakları chart adı verilen şablonlu paketler hâlinde toplar; kurulum, yükseltme ve geri alma işlemlerini release düzeyinde yapar. Bunlar birbirini tamamlar, genellikle birlikte kullanılır.

values.yaml dosyası ne işe yarar?

values.yaml, chart'ın varsayılan yapılandırma değerlerini taşır. Kurulumda verilen değer dosyası ya da komut satırı değerleri bu varsayılanların üzerine yazılır. Böylece şablonlar sabit kalırken kopya sayısı, imaj etiketi ve alan adı gibi ayarlar ortama göre değiştirilir.

Helm release nedir?

Release, bir chart'ın kümeye kurulmuş çalışan örneğidir. Aynı chart farklı adlarla birden fazla kez kurulabilir ve her kurulum ayrı bir release olur. Helm, her release'in revizyon geçmişini tutar; bu sayede yükseltme sonrası bir sorun çıktığında önceki revizyona dönülebilir.

Chart sürümü ile appVersion aynı şey midir?

Hayır. Chart sürümü paketin kendi sürümüdür ve paketleme değiştikçe artar. appVersion ise paketlenen uygulamanın sürümünü bilgi amaçlı gösterir ve chart sürümlemesini etkilemez. Resmî dokümantasyon chart sürümü için SemVer kullanılmasını önerir.

Kendi chart'ımı nasıl paylaşabilirim?

Chart paketlenir ve bir chart deposuna yüklenir; depo, chart'ları indeksleyen bir HTTP sunucusudur. Kurumlar iç depolar işletebilir. Kullanıcılar depoyu ekleyip chart'ı kurabilir. Güvenlik ve sürüm yönetimi için paylaşım sürecinin kurum içinde tanımlı olması önerilir.

Helm Chart Nedir? Kubernetes Paket Yönetimi