Home TürkçeKubernetes Helm 3, Kubernetes Paket Yönetici

Helm 3, Kubernetes Paket Yönetici

by Fatih Boy
0 comment

Kubernetes’te uygulama ayağa kaldırmak, işin içinde container teknolojisi de olsa, bazen karmaşık olabilir. Kubernetes’te uygulama deploy sürecini basitleştirmek, deyim yerindeyse hap haline getirmek amacıyla Helm paket yöneticisi geliştirilmiştir. Hatırlarsanız daha önce size Helm 2 Paket Yönetici yapısı ve kurulumu hakkında bilgi vermiştim. Geçen zaman içerisinde Helm Paket Yönetici yapısal değişiklik geçirmiş olarak v3 sürümünü yayınladı.

Helm 3 ile birlikte aşağıda detaylarını bulabileceğiniz değişikler geldi;

  • Sürümler artık yeni bir formatta saklanıyor
  • Artık cluster’da konumlanmış bir Tiller bileşenine ihtiyaç kalmadı
  • Helm Chart’ları yeni bir formata (v2) sahip
  • Diğer Helm Chart’ları için gerekli kaynakların tutulması amacıyla Library Chart desteği eklendi
  • Güncelleme sırasında yapılan yama işlemine 3 düzey birleştirme desteği eklendi
  • OCI Registry desteği eklendi
  • Chart girdi değerlerine JSON şemaları ile doğrulama desteği eklendi

Yukarıda sıraladığım değişiklerden de görebileceğiniz gibi Helm 3 önemli yenilikler barındıran majör bir sürüm. Bu önemli değişiklerin gerçekleşmesi için geriye dönük Helm 2 ile uyumluluk barındırmamakta. Bu sayede tüm geliştirme eforu daha iyileştirilmiş bir Helm’e harcanmış.

Helm 3, birden fazla dosyaya dağılmış olan meta veri’yi Chart.yaml dosyasında birleştirilerek daha kompakt bir Chart v2 formatına kavuştu. Chart v2 geliştirmesi sırasında Helm ekibi mevcut açık depolarda yer alan özellikleri inceleyerek %1 altı kullanıma sahip bazı özellikleri de kullanılmaması nedeniyle kaldırdı.

Helm 2’nin cluster içi bileşeni olan Tiller, kurduğu bileşenler nedeniyle çoğu zaman geniş yelpazede yetkilendirme ihtiyacına sahipti. Pek çok kurulumda, detaylı yetkilendirme ile uğraşmayan Kubernetes admin’leri geniş yetkilerle kurulumu gerçekleştirmekteydi. Tasarımı nedeniyle sahip olduğu bu güvenlik riski nedeniyle Openshift gibi güvenliği ön planda tutan Kubernetes tabanlı dağıtımlar resmi olarak Helm 2 desteği sunmuyordu. Helm 3 ile birlikte bu tasarımdan vazgeçilerek Tiller emekli edildi. Helm 3’te, gerekli olan yapılandırma bilgisi Kubernetes API’lerinden çekilerek Helm Chart’ları istemci tarafından ilgili yaml dosyalarına dönüştürülüyor ve Kubernetes cluster’ına uygulanıyor. Kuruluma dair oluşan kayıt ise yine Kubernetes cluster’ında tutuluyor.

Tiller bileşenine sahip Helm 2 mimarisinin bir diğer sorunuda release’lere dair bilgilerin tek noktada tutulmasıdı diyebiliriz. Bu tasarımda örneğin herhangi bir namespace’de gerçekleştirilen bir release’e dair ad bilgisi tekil olmalıydı. Yani aynı anda birden fazla release aynı ada sahip olamazdı. Özellikle birden çok ekibe/ortama kısıtlı yetki ile açılan Kubernetes Cluster’larında bu durum sorun olabilmekteydi. Helm 3 ile birlikte bu gibi bilgiler namespace düzeyinde tutulmakta. Bu yeni senaryoda farklı namespace’lerde aynı isimle release’ler oluşturulabilmekte.

Helm 2’de yapılan bir güncellemede, Helm Chart’ın uygulanmış en güncel manifest’i ile güncelleme manifest’i karşılaştırılmakta ve sadece aralarında tespit edilen değişiklikler yapılmaktaydı. Yamalama diyebileceğimiz bu yaklaşımda hızlı reaksiyon hedeflenmekteydi. Release’lere ait kaynakların sadece manifest’ler üzerinden ve güncelleme yoluyla değiştirildiği öngörülen bu senaryo, pratikte doğrudan kaynaklara müdahale edilmesi durumlarında problem oluşturmaktaydı. Kaynaklara kubectl edit v.b. yollarla yapılan harici müdahaleler güncellemelerde göz önüne alınmıyor ve örneğin eski ve yeni manifest’in aynı olduğu senaryolarda kaynaklar release anındaki haline geri alınmıyordu. Helm 3 ile birlikte güncelleme işlemlerinde eski ve yeni manifest’lerin karşılaştırılması yanında kaynakların mevcut durumu da göz önüne alınıyor.

Henüz deneme aşamasında olan Helm 3 OCI Registry desteğinin olgunlaşması ile birlikte daha fazla genele açık ya da özel Helm Chart deposu görmeye başlayacağız.

Helm 3 hakkında bu bilgiler ardında sıra kurulumuna geldi. Helm 2 ile kıyaslandığında Helm 3 oldukça sadece bir kuruluma sahip;

curl https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3 | bash

Helm 3 kurulumda varsayılanda tanımlı bir Helm Chart deposu gelmemekte. Bu sebeple kurulum ardından en az bir depo eklemeniz gerekli. Aşağıda örneklendiği şekilde kubernetes-charts.storage.googleapis.com deposunu ekleyebilirsiniz;

helm repo add stable https://kubernetes-charts.storage.googleapis.com

Bu noktada Helm geliştiricilerinin mevcut Helm Chart Hub’ını geriye dönük uyumluluk adına açık tuttuklarını ve uzun soluklu açık kalmasını hedeflemediklerini belirtmekte fayda var.

Şu Yazıları da Sevebilirsiniz

Leave a Comment

* Bu formu kullanarak, verilerinizin bu web sitesi tarafından saklanması ve kullanılmasını kabul ediyorsunuz.

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Bu web sitesi deneyiminizi geliştirmek için çerezleri kullanır. Bunu kabul ettiğinizi varsayacağız, ancak isterseniz vazgeçebilirsiniz. Kabul Et Daha Fazla Bilgi