Kubernetes – Helm Paket Yöneticisi

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.txt Kı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.yaml Chart bilgilerinin yer aldığı yaml dosyası
LICENSE Chart lisans bilgilerinin yer aldığı lisans dosyası. Bu dosya opsiyoneldir.
README.md Chart beni-oku dosyası. Bu dosya opsiyoneldir.
requirements.yaml Helm Chart’ının gereksinim duyduğu ve bağımlı olduğu Chart’lar. Bu dosya opsiyoneldir.
values.yaml Chart 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).

Fatih Boy

Ankara'da yaşayan Fatih, kendi şirketinde özellikle bankacılık, sigortacılık ve otomotiv sektörlerinde IT danışmanlıkları vermektedir. Devops, ALM süreçleri, kurumsal veri yolu sistemleri, kurumsal altyapı ve yazılım geliştirme konularında destek vermektedir. Boş zamanlarında açık kaynak kodlu projeler geliştirmeyi ve bilgisini yazdığı makalelerle paylaşmayı seven Fatih, aynı zamanda Visual C# ve Visual Studio teknolojileri konusundan Microsoft tarafından altı yıl üst üste MVP (En Değerli Profesyonel) ödülüne layık görülmüştür. İş hayatı boyunca masaüstü uygulamaları, web teknolojileri, akıllı istemciler gibi konularda Asp.Net, Php, C#, Java programlama dilleri ve MySql, MsSql ve Oracle gibi veritabanı yönetim yazılımları ile çalışmıştır. İngilizce ve Türkçe olarak yayınlanan makalelerini gerek İngilizce bloğunda, gerekse de Türkçe bloğunda bulabileceğiniz gibi web sitesinden de açık kaynak kodlu geliştirdiği yazılımlarına ulaşabilirsiniz. vCard - Twitter - Facebook

1 Yorum

  1. Pingback: Fatih'in NotlarıHelm Paket Yöneticisi Kurulumu - Fatih'in Notları

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

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