Cehennem’in Dümeni

Evet başlık biraz Hollywood filmleri gibi oldu, başrolde Harrison Ford beklentisi 🙂 ancak bu makalede tek anlatmak istediğim K8s üzerine uygulama yönetimi için kullanılan araçlardan biri olan Helm‘e bir giriş yapmak.

Helm, Kubernetes için geliştirilmiş bir paket yöneticisi, uygulamaları K8s üzerine kurmak, güncellemek, gerektiğinde silmek, bunları paylaşmak için kullanılıyor.

Linux kullanıcıları için Centos’da yum, Ubuntu’da apt gibi veya Docker Hub gibi herkesin paylaşıp uygulamaları kuracağı bir repo’su var Helm Hub. Helm paket formatına chart deniyor.

K8s üzerinde bir uygulama kurmak için öncelikle bir deployment.yaml, uygulamayı dışarıdan erişilebilir kılmak için service.yaml dosyasına ek olarak belki birtakım değerleri değişkenlerle set etmek için variable.yaml , configMap ve secrets bilgilerine ihtiyacımız olacak , işte Helm bize bütün bunların birleştirerek bir şablon oluşturmamızı ve bunun güncellenebilir, tekrar kullanılabilir, hatta paylaşabilir kılıyor.

Bazen geç öğrendiğiniz şeyler farklı avantajlara sağlayabiliyor insana mesela Helm v3 ile beraber artık tiller diye bir şey yokmuş. Helm v3 direkt K8s API ile konuşuyor artık eskiden tiller denen ara uygulama ile K8s API ile konuşuyormuş, eski yapıya Client-Server modeli denirken artık sadece Client bazlı olmuş. Olay ağırlıkla güvenlik kaygıları ile ilgili K8s’de RBAC olmadığı zamanlar Helm kendi RBAC’ını uyguluyormuş, K8s 1.6 ‘dan sonra native RBAC desteği olunca bunada gerek kalmamış. Haliyle öncesinde K8s kümesine ek kaynak gerektiren ve başlamadan önce yapılması gerekenlerde azalmış, mesela “helm init” diye bir komut yok artık, helm client direkt iletişime geçebiliyor K8s API ile. Birkaç link paylaşmak istiyorum 1, 2, 3, 4 Ek olarak tiller günlerinden bir kesit de burada.

Helm client’ı kuralım ;

MacOS üzerine helm client kurmak ve/veya var olan kurulumu güncellemek için aşağıdaki komutları kullanabilirsiniz.

rev:~ vahricmuhtaryan$ brew install helm

rev:~ vahricmuhtaryan$ brew upgrade helm

Helm ile K8s üzerinde kurulabilecek uygulamaları aramak ;

Daha önce Docker Hub gibi Helm Hub olduğundan bahsetmiştik, diyelim K8s üzerine MariaDB Galera kurmak istiyoruz, öncelikle Helm Hub’da var mı diye bir bakalım, Docker search gibi Helm search kullanacağız, örnek komut satırını aşağıda görebilirsiniz.

rev:~ vahricmuhtaryan$ helm search hub mariadb-galera

Helm Hub üzerinde tüm istediğiniz chart’lar olamayacağı gibi üçüncü parti diğer firmalarda K8s üzerine kurulabilen uygulamalarını Helm üzerinden kurulabilir kılmak için Repo’lara sahiptirler, tek yapmanız gereken bu repo’yu eklemek. Örneğin diyelim ki Rancher firmasının Rancher UI’ını eklemek için stable olan repo’yu ekleyelim.

rev:~ vahricmuhtaryan$ helm repo add rancher-stable https://releases.rancher.com/server-charts/stable

“rancher-stable” has been added to your repositories

Repo’ları güncellemek için ;

rev:~ vahricmuhtaryan$ helm repo update

Sahip olduğunuz repo’ları listelemek için aşağıdaki komutu kullanabilirsiniz.

rev:~ vahricmuhtaryan$ helm repo list

Şimdi basit bir WordPress kurulumu yapalım, öncelikle farklı bir Kube config dosyanız var ise $KUBECONFIG değişkenini set edin, Helm bu değişkene bakacaktır.

export KUBECONFIG=kube_config_bizinrkek8scluster.yml 

echo $KUBECONFIG
kube_config_bizinrkek8scluster.yml

Kurulum için ;

helm install bitnami/wordpress –generate-name

Helm ile kurulumu kontrol edelim ;

helm list

K8s üzerinden kubectl ile kontrol edelim, kubectl set pods

Gördüğünüz gibi halen “pending” durumda, sonuçlanmayacağın biliyordum, iki şeye dikkat çekmek için ;

  1. helm list ile baktığınızda ilgili uygulamayı “deployed” göreceksiniz.
  2. K8s üzerinden baktığınızda ise pending durumunda beklediğini göreceksiniz.

Burada yardıma iki güzel komut koşuyor ;

kubectl describe pod wordpress-1589729561-7445b5cc4b-zvm28

Eksik olan persistent volume

kubectl logs wordpress-1589729561-7445b5cc4b-zvm28

Bazen log bazende describe duruma gore daha fazla yardımcı olabiliyor.

Helm Chart kurmadan önce gereksinimlere daha önceden kontrol etmek gerekiyor.

Kurduğumuz helm chart’ı kaldırmak için ;

rev:~ vahricmuhtaryan$ helm uninstall wordpress-1589729561

release “wordpress-1589729561” uninstalled

Happy Helming 😀

VM

Posted on 17/05/2020, in Helm and tagged , , , , , , , , , , . Bookmark the permalink. Leave a comment.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

%d bloggers like this: