Helm Nedir, Nasıl Kullanılır ?| Kubernetes Dersleri 4
Merhabalar, önceki yazımda Kubernetes Yaml dosyalarının nasıl yazılabileceğinden bahsetmiştim. Sizin de fark ettiğiniz üzere yaml dosyalarını sıfırdan yazmak hiç de kolay değil.
Her bir uygulamayı deploy etmek icin ayrı ayrı servis, ConfigMap, Secrets ve deployment dosyaları yazmamız gerekmekte ve normal şartlarda kendi uygulamanız dışındaki kullandığınız sistemler icin de bu dosyaları oluşturmanız gerekmektedir. (Veritabanlari vb.)
Bu yazımda yardımımıza kosan Helm’i inceleyeceğiz.
Helm Nedir ?
Helm’in birden fazla görevi olsa da kubernetes icin paket yöneticisi olarak düşünebiliriz.
Helm Nasil Calişir ?
Projeler icin yazılan kubernetes yaml dosyaları paketlenerek bir repository’e yüklenir. Yüklenen paketlenmiş yaml dosyaları Chart olarak adlandırılmaktadır. Projeyi kullanmak isteyen developerlarin tek yapması gereken “Helm install chart_name” komutuyla o projeyi indirmesidir.
Helm Repository Nedir ?
Helm chartlarının depolandığı yerdir.
Yukarıda verilen tanımlardan anlaşılacağı üzere repositoryde bulunan projeler icin kolayca deployment yapabiliriz. Bitnami Reposu Proje Örnekleri. (Mongodb, postgres, redis vb.)
Helm Chart’i İnceleyelim
Helm indirmek icin linke tıklayabilirsiniz. Dilediğiniz yöntem ile helm’i indirilebilirsiniz.
# denemeProject proje adi, siz istediginizi verebilirsiniz helm create denemeProject
Yukarıdaki komutu koştuğumuzda bir dosya oluştuğunu göreceğiz.
- Charts => Chat’imizin bağımlı olduğu dosyaları tutar.
- Templates => Bizim yaml dosyalarımızı tutar içeriğini kendi projemize göre değiştireceğimiz yer.
- .helmignore => Chart paketlenirken hangi dosyaların eklenmemesi gerektiğini belirtir.
- Chart.yaml => Chart hakkındaki Meta bilgileri içerir.
- Values.yaml => Templates de kullanılan yaml dosyaları için proje değerlerini tutar.
Templates dosyasının içerisinde kubernetes konseptlerini içeren dosyalar olduğunu göreceksiniz deployment, service, ingress vb.)
Eğer bu dosyaları incelersek direk değerlerini vermek yerine, değerleri “.Values.<key>” ile values.yaml dosyasından aldığını göreceğiz. Bu yapı sayesinde farklı ortamlar (dev, stage, prod) için ayni template dosyalarını tekrar yazmak zorunda kalmıyoruz.
Helm Komutları
1.) Helm Repo
# helm reposu eklemek icin helm repo add bitnami https://charts.bitnami.com/bitnami # helm reposu kaldirmak icin helm repo remove bitnami https://charts.bitnami.com/bitnami # helm repolari listelemek icin helm repo list helm repo ls # helm repo update repolardaki yenilikleri çeker helm repo update
2.) Helm Install
İnstall komutu ile istediğimiz projeyi deploy edebiliriz. (O projenin repoda bulunması gerekmektedir)
# helm bitnami reposu ekle helm repo add bitnami https://charts.bitnami.com/bitnami # helm ile postgresql deploy etme komutu 1 helm install my-release bitnami/postgresql # helm ile postgresql deploy etme komutu 2 kendi values yaml dosyamizi kullarak helm install my-release --values=my-values.yaml bitnami/postgresql # helm ile postgresql deploy etme komutu 3 set ile degiskeni setleyerek helm install my-release --set global.postgresql.postgresqlUsername=furkan bitnami/postgresql
3.) Helm Upgrade
Uygulamanızı upgrade yapmanızı sağlar önceki podları silerek yeni ayarlar ile oluşturur.
# ilk olarak deploy edelim helm install my-release bitnami/postgresql # herhangi bir seyi degistirip tekrar upgrade yapabilirsiniz kod veya tempalate helm upgrade my-release --set global.postgresql.postgresqlUsername=furkan bitnami/postgresql
4.) Helm List
Helm ile deploy olmuş uygulamaları gösterir.
# Releaseleri listeler helm list helm ls
5.) Helm Rollback
# bir onceki revizyona döner helm rollback my-release # spesifik revizyona dönmek icin helm rollback my-release <revizyon>
6.) Helm Create
Yeni Helm chart oluşturur. Kendi projemizi kolayca entegre edip deploy edebiliriz.
helm create <chart_adi>
7.) Helm Lint
Charttaki hataları bulmak icin kullanılır.
helm lint <path>
8.) Helm Uninstall
Release’i kaldırmak icin kullanılır.
helm uninstall my-release
Bu yazımda Helm Nedir, Nasıl Kullanılır ve Neleri Kolaylaştırır gibi sorulara cevap vermeye çalıştım. Bir sonraki yazıda görüşmek üzere.