Helm Nedir? Nasıl Kurulur ve Kullanılır?
Helm, Kubernetes için bir paket yöneticisidir. Bir CNCF projesidir ve Kubernetes üzerinde uygulama dağıtma, güncelleme ve yönetmeyi kolaylaştırır.
Helm chart, Kubernetes üzerinde bir uygulama dağıtmak için Kubernetes resource'ları tanımlayan bir dosyadır. Helm chart, YAML veya JSON formatında yazılabilir.
Helm'in mimarisi son yıllarda değişmiştir. Helm'in mevcut sürümü, Rest aracılığıyla doğrudan Kubernetes cluster'la iletişim kurar. Helm hakkında içinde Tiller geçen bir şeyler okursanız, eski bir makaleyi okuyorsunuz demektir. Çünkü Tiller, Helm 3'te kaldırıldı.
Helm stateful çalışır, yani durum bilgisi tutar. Bir Helm Chart yüklendiğinde, tanımlanan resource'lar devreye alınır ve meta bilgiler Kubernetes secretlarda depolanır.
1. Helm'in Avantajları Nelerdir?
Kubernetes, karmaşık bir platformdur. Kubernetes üzerinde uygulama dağıtmak, güncellemek ve yönetmek zor olabilir. Helm, bu zorluğu azaltır. Helm, Kubernetes üzerinde uygulama dağıtmayı, güncellemeyi ve yönetmeyi kolaylaştırır.
Helm'in avantajları şunlardır:
- Kolay kullanım: Helm, Kubernetes üzerinde uygulama dağıtma, güncelleme ve yönetmeyi kolaylaştırır.
- Standart format: Helm, Kubernetes üzerinde uygulama dağıtmak için standart bir format kullanır. Bu, Helm ile dağıtılan uygulamaların diğer Kubernetes kümelerine taşınmasını kolaylaştırır.
- Geniş topluluk: Helm, büyük bir kullanıcı ve geliştirici topluluğuna sahiptir. Bu, Helm ile ilgili sorunları çözmek ve yeni özellikler eklemenizde büyük fayda sağlayacaktır.
2. Helm Nasıl Kurulur?
Helm, Linux, macOS ve Windows platformlarında kullanılabilir. Helm'i kurmak için aşağıdaki adımları izleyin:
MacOS için:
brew install helm
Windows için:
choco install kubernetes-helm
Debian ailesi için:
curl https://baltocdn.com/helm/signing.asc | gpg --dearmor | sudo tee /usr/share/keyrings/helm.gpg > /dev/null
sudo apt-get install apt-transport-https --yes
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/helm.gpg] https://baltocdn.com/helm/stable/debian/ all main" | sudo tee /etc/apt/sources.list.d/helm-stable-debian.list
sudo apt-get update
sudo apt-get install helm
RedHat ailesi için:
sudo dnf install helm
Daha fazla seçenek için resmi sayfasını ziyaret edebilirsiniz.
3. Helm Nasıl Kullanılır?
Helm, daha önceden hazırlanmış binlerce hazır kurulum chart'larını bulabileceğiniz bir repository'e sahiptir. Kurmak istediğiniz uygulamayı, örneğin; Kubernetes Dashboard, Ghost BLog, Grafana vs repository'den arayarak bulabilirsiniz.
Ardından bulduğunuz uygulamanın reposunu repo add
komutuyla eklemeli ve ardından install
komutuyla cluster'a yüklemelisiniz.
Örneğin Kubernetes Dashboard için sadece şu iki komut cluster'a uygulamayı yüklemek için yeterlidir.
helm repo add kubernetes-dashboard https://kubernetes.github.io/dashboard/
helm install kubernetes-dashboard kubernetes-dashboard/kubernetes-dashboard --create-namespace --namespace kubernetes-dashboard
Kurmak istediğiniz uygulamanın kurulum aşamalarını ve detaylı açıklamasını ilgili uygulama Helm sayfasında bulabilirsiniz.
Eğer daha önce kurduğunuz bir uygulamayı Helm ile kaldırmak istiyorsanız da delete
komutunu kullanabilirsiniz.
helm delete kubernetes-dashboard --namespace kubernetes-dashboard
Ayrıca yine daha önce yüklediğiniz bir uygulamayı upgrade
komutuyla güncelleyebilirsiniz.
helm upgrade kubernetes-dashboard kubernetes-dashboard/kubernetes-dashboard --namespace kubernetes-dashboard
Eğer güncelleme sonrası bir sorun çıkar veya önceki bir versiyona dönmek isterseniz de rollback
komutunu kullanabilirsiniz. Öncesinde list
komutuyla mevcut revision numarasını görebilirsiniz.
$ helm list
NAME REVISION STATUS CHART VERSION
my-apache 2 deployed apache-8.0.3 2.4.46
$ helm rollback my-apache 1
Rollback was a success! Happy Helming!
4. Kendi Helm Chart'ımı Nasıl Hazırlayabilirim?
Artifact Hub üzerindeki hazır chartları kullanmak yerine kendi özel chartlarınızı da hazırlayabilirsiniz. Kendi Helm chart'ınızı oluşturmak için aşağıdaki adımları izleyin:
- Yeni bir dizin oluşturun.
- Dizin içine
chart.yaml
dosyasını oluşturun. chart.yaml
dosyasında, chart'ın meta verilerini tanımlayın.values.yaml
dosyasını oluşturun.values.yaml
dosyasında, chart'ın değerlerini tanımlayın.- Chart'ın Kubernetes resource'larını tanımlayan
templates
dosyasını oluşturun.
chart.yaml Dosyası
chart.yaml
dosyası, chart'ın meta verilerini tanımlar. Meta veriler, chart'ın adını, sürümünü, maintainer'ını ve diğer bilgileri içerir.
chart.yaml
dosyasının örnek içeriği aşağıdaki gibidir:
name: my-chart
version: 0.1.0
description: A Helm chart for a simple application.
maintainer: <Your Name>
values.yaml Dosyası
values.yaml
dosyası, chart'ın değerlerini tanımlar. Değerler, chart'ın Kubernetes kaynaklarını nasıl yapılandıracağını belirtir.
values.yaml
dosyasının örnek içeriği aşağıdaki gibidir:
image:
repository: nginx
tag: latest
templates Dosyası
templates
dosyası, chart'ın Kubernetes kaynaklarını tanımlar. templates
dosyası, YAML veya JSON formatında yazılabilir.
templates
dosyasının örnek içeriği aşağıdaki gibidir:
deployment.yaml:
kind: Deployment
metadata:
name: my-app
spec:
replicas: 1
template:
metadata:
labels:
app: my-app
spec:
containers:
- name: my-app
image: nginx
ports:
- containerPort: 80
Daha fazla detay ve örnek için Chart Template Guide sayfasını ziyaret edebilirsiniz: