Helm ile Kubernetes Paket Yönetimi

090119_1035_HelmileKube1.png

Platformlarda paket yönetimi bir uygulamanın kurulması için gerekli öngereksinimlerin kurulması, ilgili kütüphanelerin kurulması ve sonrasında uygulamanın kurulması için geliştirilmiş bir kurulum yönetim sistemidir. Helm ile Kubernetes Paket Yönetimine Örnek vermek gerekirse, Linux platformlarda bir uygulama kurmak için, apt, yum, rpm, dpkg gibi paket yönetim sistemleri ile ilgili uygulamayı (text ediyor, winzip, docker, media player vs.) repositorylerde arar ve kurarız. Bu paket yönetim yazılımları bu uygulamaları kurmak için gerekli olan binary ve öngereksinimleri kurar sonrasında uygulamanın kendisini kurar. Modern platformların hepsinde bir paket yönetim sistemi vardır. Linux ortamında yum,rpm,apt,yum, Windows ortamında OneGet, Chocolatey gibi paket yönetim sistemleri vardır.

Helm ise Kubernetes platformunun paket yönetim sistemidir. Kubernetes ortamında uygulamaları, bağımlılıklarını veya öngereksinimlerini yönetmek kurulan uygulamarın versiyonlamasını yapmak için helm paket yönetimini kullanırız.

Helm’in son versiyonu CNCF (Cloud Native Computing Foundation) içerisinde Microsoft, Google, Bitnami işbirliği içerisinde yönetiliyor.

Peki Helm gibi paket yönetim sistemleri neden kullanılır? Helm uygulamalarınızı yönetirken, karışıklığı azaltır, kolay güncelleme yapmanızı sağlar, uygulamaların platformlar arası basit bir şekilde paylaşılmasını sağlar ve gerektiği zaman kolayca farklı bir versiyona rollback yapmanızı sağlar.

Helm Chart

Helm Chart bir Kubernetes uygulaması için gerekli olan bilgiler topluluğunu barındıran dosyadır. Örnek vermek gerekirse Kubernetes deploymentlarında bulunan, service bilgisi, repository bilgisi, ingress bilgisi, load balancer bilgisi gibi bir çok bilgiyi yaml formatında barındırır ve versiyonlar. Bu bilgileri helm yapısı içerisinde parametrik hale getirip güvenli ve otomatize kurulumlar gerçekleştirebilirsiniz.

Helm Mimarisi

Helm mimarisinde temel olarak iki bileşen bulunur, Helm Client ve Helm Tiller

Helm Client

Helm client kullanıcıların tiller server ile haberleşmesi için komut sistemidir. Helm client local chartların oluşturulması, değiştirilmesi, repositorylerden chartlarin çekilmesi gibi client işlerinden sorumludur.

Tiller Server

Tiller server helm client’ın haberleştiği ve Kubernetes api server ile etkileşimde bulunan server bileşenidir. Helm clientdan gelen istekleri dinler, chartların kurulumu, güncellenmesi veya silinmesinden sorumludur.

Helm ile ilgili detaylı dokümanyasyona https://helm.sh/ adresinden ulaşabilirsiniz.

Helm Kurulumu

Helm’I yine kendisi gibi diğer paket yönetim sistemleri ile kurabilirsiniz.

MacOS için;

Brew install Kubernetes-helm

Linux için;

Sudo snap install helm –classic

Windows için;

choco install kubernetes-helm

Resim-1

Windows’unuz da chocolatey yoksa kurmak için; https://chocolatey.org/install

Şimdi örnek bir helm paketi deploy edelim.

Helm paketlerini kurmak için ben Azure AKS kullanacağım. Sizde kendi ortamınızda ki herhangi bir Kubernetes clusterına bağlanabilir veya Azure üzerinde yeni bir Kubernetes kurulumu yapabilirsiniz. Kubernetes kurulumu için Mshowto içerisinde ki Kubernetes kurulumu makalelerini inceleyebilirsiniz.

Helm client kuruluduktan sonra ilgili Kubernetes clusterına bağlanırdak sonra “helm init” komutunu yazmanız sunucu da tiller’ın kurulmasını sağlayacaktır.

Helm içerisinde hazır repository url’leri vardır buralarda arama yapmak için search komutunu kullanabilirsiniz.

Helm search wordpress

Resim-2

Kubernetes üzerine wordpress kurulumu yapmak için “helm search wordpress” komutu ile chart araması yaptım.

Gördüğünüz gibi 7.0.1 versiyon numaralı bir chart’ım var.

Bu Chart’ I indirmek için “Helm fetch stable/wordpress” yazmamız yeterli.

Chart’ın paketini download ettik.

Resim-3

Bu paketi deployment’a hazır bir şekilde geldi. Helm paketleri tgz olarak paketlenir ve bu şekilde deploy edilir.

Paketi incelemek veya editlemek istiyorsanız.

“Helm fetch stable/wordpress –untar” komutunu kullanabilirsiniz.

Resim-4

Untar olarak aldığımız paketin içeriği yukarıda ki gibidir.

Yukarıda ki klasörde ki dosyaları inceleyecek olursak.

Chart.yaml: Chart hakkında ki bilgileri buluduran yaml dosyası

Readme.Md: Açıklama ve text yazabileceğiniz md dosyası

Requirements.yaml: Chart’ın ön gereksinimlerinin bulunduğu dosya

Values.yaml: Chart içerisinde ki değerlerin parametrik olarak alındığı dosya.

Templates klasörü: Values dosyasında ki değerler ile deployment dosyalarını(yaml dosyaları) birleştirerek Kubernetes manifest dosyaları buradan oluşturulur.

Resim-5

Gördüğünüz gibi değerler bu values.yaml dosyasından geliyor.

Resim-6

Yukarıda gördüğünüz gibi deployment değişkenler values.yaml dosyasından alınacak şekilde parametrik.

Bu değişkenleri Devops araçlarından parametrik olarak, tek tek tüm dosyalarda değiştirmek yerine sadece values file da değiştirerek otomatize edebilirsiniz.

Chart dosya yapısını da incelediğimize göre deployment aşamasına geçebiliriz.

Daha öncede bahsettiğim gibi deployment yapabilmeniz için Kubernetes clusterınıza bağlı olmanız gerekiyor. Yani current context de ilgili cluster bilgisinin olması gerekir.

Helm install stable/wordpress komutu ile deployment yapıyoruz.

Resim-7

Deployment’ımız tamamlandı.

Resim-8

Kubernetes üzerinde chart da tanımlanan ilgili kaynakları görüyoruz.

Kurduğumuz kaynakları silmek için ise, helm chart instalları listeleyip(“helm list”) ismi ile delete komutunu kullanmanız yeterli(“helm delete <chart deployment name>”).

Resim-9

Bu konuyla ilgili sorularınızı  alt kısımda bulunan yorumlar alanını kullanarak sorabilirsiniz.

Referanslar

www.mshowto.org

TAGS: helm, helm chart, tiller, helm nedir, Kubernetes paket yönetimi, Kubernetes uygulama kurulumu, Kubernetes deployment, helm chart deployment, package management, Kubernetes service kurulumu, Kubernetes microservice kurulumu,kubernetes nedir

Yazı gezinmesi

Mobil sürümden çık