Helm : Kubernetes İçin Paket Yönetimi ⎈

Helm, Kubernetes için apt-get, yum ya da brew gibi bir paket yöneticisi. Kubernetes ile çalıştırılan uygulamalar çoğu zaman bir çok YAML manifestosundan oluşuyor. Helm ise bu manifestoları ayarlanabilir şekilde dağıtmaya, versiyon yönetimini yapmaya yarıyor.

Helm, 2 temel parçadan oluşuyor;

  1. Helm client : Chart’ları yönetmeye ve Tiller’a komut vermeye yarar.
  2. Tiller server : Kubernetes Cluster’ında çalışır ve Kubernetes API Server üzerinden dağıtımları (Release) yönetir.

Kullanılan terimler ise şöyle;

  • Chart: Önceden ayarlanmış Kubernetes kaynaklarından oluşan paket.
  • Repository: Chart’ların toplu bir şekilde listelendiği yer.
  • Release : Helm kullanılarak Kubernetes Cluster’ına deploy edilmiş kaynaklar.

Helm Yükleyelim

macOS ve Homebrew kullanıyorsanız aşağıdaki gibi kolayca yükleyebilirsiniz. Ayrıca her versiyonda Windows, Linux, Mac OS için binary’leri yayınlanıyor.

brew install kubernetes-helm
source < (helm completion zsh) ile bash ya da zsh terminalize autocomplete ekleyebilirsiniz.

Şimdi Kubernetes’e Tiller’ı yükleyeceğiz, init komutu Kubernetes’e bağlanırken~/.kube/config ayarlarını kullanıyor. O yüzden kubectl config current-context doğru cluster’a bağlandığımızdan emin olmakta fayda var.

helm init

Bu komut ile hem Kubenertes’e Tiller kurulacak hem de ~/.helm klasörünüze gerekli dosyalar oluşturulmuş olacaktır.

kubectl get deployment tiller-deploy --namespace=kube-system

komutuyla Tiller’ın başarıyla kurulduğundan emin olabilirsiniz.

Helm Kullanmaya Başlayabiliriz.

Kullanabileceğimiz chart’larıhelm search YOUR_TERM komutu ile aratabilir, helm search ile tamamını listeleyebilirsiniz.

Önemli Not:
Kubernetes 1.7 sürümünden itibaren Role Based Access Control (RBAC) desteklemeye başladı, eğer kullandığınız Kubernetes Cluster’ında RBAC aktif ise install komutunuz ile Tiller yetkisi olmadığı için repository’yi okuyamayacak ve ERROR verecektir. Aşağıdaki kod ile yetkilendirmeyi yapabilirsiniz.
kubectl create clusterrolebinding tiller-cluster-admin \
--clusterrole=cluster-admin \
--serviceaccount=kube-system:default

Aşağıdaki komut ile wordpress’i kurmaya başlayabiliriz.

helm install stable/wordpress
İşlem tamamlandıktan sonra çıktıdaki NOTES: kısmındaki talimatlar faydalı olacaktır.
Birkaç dakika içinde Wordpress blogumuz yayında. 🎉🎉🎉🎉
helm list komutu ile release’leri listeyebilirsiniz.

helm status punk-walrus komutu ile deploy ettiğimiz release’in detaylarını ve gerekli notları görebilirsiniz.

Biraz ayar yapalım.

Helm chart’ları genelde deploy ederken birçok ayar yapmamıza imkan sağlar.helm inspect values stable/wordpress komutu ile chart’ın kullandığı varsayılan ayarları yaml formatında görebilirsiniz. Overwrite etmek istediğiniz ayarlar için bir yaml dosyası oluşturduktan sonra kendi ayarlarınız ile deploy edebilirsiniz.

$ echo '{wordpressBlogName: Baskin's Blog!}' > config.yaml
$
helm install -f config.yaml stable/wordpress

Ya da direkt komut içinde key-value pair parametreleri ile

$ helm install --set wordpressBlogName="Baskin's Blog",mariadb.persistence.size=16Gi stable/wordpress

şeklinde kendi ayarlarınız ile deploy yapabilirsiniz.

Ortalığı Temizleyelim.

Bir release bir çok Kubernetes kaynağı oluşturuyor. Silmek istediğinizde tek tek kubectl delete kullanmak yerine helm ile tamamını silebilirsiniz.

$ helm delete punk-walrus

Daha mı fazla chart lazım?

Helm ilk yüklendiğinde beraberinde stable reposu ile birlikte gelir. https://github.com/kubernetes/charts projesindeki stable klasöründe göreceğiniz chart ları barındırıyor. İhtiyaç duyarsanız;

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

komutu ile incubator reposunu da ekleyebilir daha çok chart kullanabilirsiniz.

$ helm repo update

komutuyla repolarınızın güncel halini çekebilirsiniz.

Bir sonraki yazılarımdan birinde kendi Helm Chart’ımızı geliştirmeye çalışacağız.

Twitter: https://twitter.com/baskindev

⎈ Happy Helming!⎈