Kubernetes – Helm Paket Yöneticisi

Bu yazıyı kaleme almam ardından geçen zaman zarfında Helm’in yeni major sürümü olan v3 yayınlandı. Yapısal farklılıklar barındırması ve topluluğun Helm 3’ü destekleyecek olması nedeniyle güncel Helm Paket Yöneticisi v3 ve kurulumunu anlattığım makalemi okumanızı tavsiye ederim.

Kubernetes’te uygulama ayağa kaldırmak, işin içinde container teknolojisi de olsa, bazen karmaşık olabilir. Podlar, servisler, deployment’lar, ingress’ler, secret’ler, configmap’ler… Hataya açık yapılandırmalar. Ortak kurulum deneyiminin paylaşılması… Bu konuda pek çok platform paket yönetici çözümleri geliştirerek süreci basitleştirmiş durumda. Kubernetes’de bu konuda istisna değil.  Kubernetes’te uygulama deploy sürecini basitleştirmek, deyim yerindeyse hap haline getirmek amacıyla Helm paket yöneticisi geliştirilmiştir. Açık kaynak kodlu bir Cloud Native Foundation projesi olarak karşımıza çıkan Helm, Kubernetes için önemli projelerden birisidir.

Helm’de uygulama dağıtımı Chart denilen paket’ler yardımıyla gerçekleşmektedir. Helm Chart’ları; bağımlılık tanımları, yapılandırma dosyaları ve kuruluma esas olacak Kubernetes manifest dosya şablonlarından oluşmaktadır. Kurulum/güncelleme sırasında helm’e vereceğiniz parametreler doğrultusunda bu yapılandırma ve manifest şablon dosyaları yorumlanarak kurulum veya güncelleme yapacak manifest’ler meydana gelecektir. Oluşan bu manifest dosyalarının çalıştırılmasıyla bir Release (sürüm) oluşacaktır. Release, bir Helm chart ile o andaki yapılandırmasının birleşimidir. Helm, release’leri versiyonlar ve önceki bir release’e dönüş yapılabilmesine (rollback) olanak sunar.

Chart Yapısı

Helm Chart’ları aşağıdaki dosya ve dizin yapısına sahiptir;

Charts/Helm Chart’ının gereksinim duyduğu ve bağımlı olduğu Chart’ların yer aldığı dizindir.
Templates/Çalıştırılacak Kubernetes manifestlerini oluşturacak olan dosya şablonlarının bulunduğu dizindir. Şablon dosyaları Go programlama dili şablon formatında olmalıdır.
Templates/NOTES.txtKısa kullanım notlarının yer aldığı text dosyasıdır. Opsiyonel olan bu dosya içeriği kurulum ve güncelleme sonunda kullanıcıya gösterilecektr.
Chart.yamlChart bilgilerinin yer aldığı yaml dosyası
LICENSEChart lisans bilgilerinin yer aldığı lisans dosyası. Bu dosya opsiyoneldir.
README.mdChart beni-oku dosyası. Bu dosya opsiyoneldir.
requirements.yamlHelm Chart’ının gereksinim duyduğu ve bağımlı olduğu Chart’lar. Bu dosya opsiyoneldir.
values.yamlChart parametrelerinin varsayılan değerlerinin yer aldığı yaml dosyasıdır.

Bu dizin hiyerarşisine sahip olan Helm Chart’ları dağıtımı kolay olması adına tar.gz dosyası haline getirilebilir.

Helm Paket Kaynakları

Helm Chart’ları bir önceki bölümde paylaştığım yapıya sahip yerel bir dizinde, bir tar.gz dosyası ya da bir Helm deposunda bulunabilir. Kurulumla birlikte https://kubernetes-charts.storage.googleapis.com/ adresi varsayılan depo olarak kayıt edilir. Bunun yanında kullanıcılar kendi depolarını da ekleyebilir. Varsayılan olarak gelen Helm Chart deposu veriyonları github üzerinde takip edilmektedir.

Helm Mimarisi

Mevcut Helm 2 sürümünde Helm mimarisinin iki bileşeni bulunmaktadır;

Helm-Mimarisi
  • Helm Client: Helm ilklendirmesi ve chart yönetimi sağlayan istemci uygulamasıdır. İşlemlerin yerine gelmesi için Tiller ile iletişim kurar.
  • Tiller:  Helm istemcisince iletilen komutları yorumlayarak Kubernetes API’si ile iletişime geçer ve komutları yerine getirir. Sürüm yönetimi de yine Tiller tarafından yapılmaktadır. Tiller Kubenertes Cluster üzerinde pod olarak çalışmaktadır. Kubernetes’e deployment olarak kurulması nedeniyle hata alması durumunda Kubernetes tarafından yeniden zamanlanacaktır (schedule).

5 Comments

Leave a Comment

en_USEnglish