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 Versiyon Yonetimi
Helm Versiyon yönetimi yapmanıza da yardımcı olur. Helm Upgrade ile yeni versiyon deploy edebilirsiniz ya da Helm rollback komutu ile önceki versiyona geri dönebilirsiniz.
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
# List Helm repositories.
helm repo list
helm repo ls
# Fetch the latest repository information.
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.
# List releases.
helm list
helm ls

5.) Helm Rollback
# Roll back to the previous revision.
helm rollback my-release
# Roll back to a specific revision.
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.