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
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