Instalasi Helm pada Kluster Kubernetes
By twahyono
Apa itu Helm?
Helm adalah package manager untuk Kubernetes, sebagaimana npm adalah package manager untuk JavaScript di dalam lingkungan Node.js atau seperti package manager Chocolatey untuk Windows. Helm memudahkan tim DevOps melakukan deployment aplikasi ke dalam kluster Kubernetes.
Helm sendiri terdiri dari dua bagian: Helm client (helm) dan Helm server (Tiller). Ikuti langkah-langkah di bawah ini untuk memasang Helm pada kluster Kubernetes anda.
Persiapan Awal
- Kluster Kubernetes yang telah berjalan.
- Tools kubectl di mesin lokal.
Langkah 1
Lakukan hal berikut di shell Linux. Masuk ke direktori /tmp kemudian unduh script dari repo Helm di GitHub:
$ cd /tmp
$ curl https://raw.githubusercontent.com/kubernetes/helm/master/scripts/get > install-helm.sh
Agar script tsb dapat dijalankan gunakan perintah chmod
:
$ chmod u+x install-helm.sh
Lanjutkan dengan menjalankan script berikut:
$ install ./install-helm.sh
Output:
helm installed into /usr/local/bin/helm
Run 'helm init' to configure helm.
Selanjutnya anda perlu memasang komponen Tiller pada kluster Kubernetes.
Langkah 2 - Memasang Tiller
Apa itu Tiller?
Tiller merupakan komponen yang berjalan di dalam kluster Kubernetes dan bertanggung jawab untuk melakukan interaksi dengan Helm client dan melakukan proses antarmuka dengan Kubernetes API Server. Singkatnya Helm client mengelola helm charts dan Tiller akan mengelola release. Pada Helm versi 3 yang sedang dikembangkan, Tiller akan dihilangkan untuk alasan keamanan dan penyederhanaan proses pemasangan charts pada kluster Kubernetes.
Agar Tiller dapat berjalan di dalam kluster Kubernetes maka perlu dibuat serviceaccount dengan role cluster-admin.
$ kubectl -n kube-system create serviceaccount tiller
Lanjutkan dengan memberi role cluster-admin:
$ kubectl create clusterrolebinding tiller --clusterrole cluster-admin --serviceaccount=kube-system:tiller
Kemudian pasanglah Tiller dengan perintah helm init
:
helm init --service-account tiller
Output:
. . .
Tiller (the Helm server-side component) has been installed into your Kubernetes Cluster.
Please note: by default, Tiller is deployed with an insecure 'allow unauthenticated users' policy.
For more information on securing your installation see: https://docs.helm.sh/using_helm/#securing-your-helm-installation
Happy Helming!
Sampai di sini sudah selesai proses instalasi Helm pada kluster Kubernetes anda. Selanjutnya anda bisa mulai mencoba melakukan instalasi helm charts.
Langkah 3 - Memulai helm charts
Paket aplikasi Helm disebut charts. Cara paling mudah adalah dengan memasang contoh charts yang disediakan oleh Helm.
Lakukan terlebih dahulu pembaruan daftar charts yang tersedia:
helm repo update
Sebagai contoh, memasang aplikasi basisdata mysql dengan charts mysql:
helm install stable/mysql
Output:
NAME: angry-fox
LAST DEPLOYED: Sun Jul 14 18:55:13 2019
NAMESPACE: default
STATUS: DEPLOYED
RESOURCES:
==> v1/ConfigMap
NAME DATA AGE
angry-fox-mysql-test 1 1s
==> v1/PersistentVolumeClaim
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE
angry-fox-mysql Pending default 1s
==> v1/Pod(related)
NAME READY STATUS RESTARTS AGE
angry-fox-mysql-6c45b64686-55ksv 0/2 Pending 0 1s
==> v1/Secret
NAME TYPE DATA AGE
angry-fox-mysql Opaque 2 1s
==> v1/Service
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
angry-fox-mysql ClusterIP 10.0.33.9 <none> 3306/TCP 1s
==> v1beta1/Deployment
NAME READY UP-TO-DATE AVAILABLE AGE
angry-fox-mysql 0/1 0 0 1s
NOTES:
MySQL can be accessed via port 3306 on the following DNS name from within your cluster:
angry-fox-mysql.default.svc.cluster.local
To get your root password run:
MYSQL_ROOT_PASSWORD=$(kubectl get secret --namespace default angry-fox-mysql -o jsonpath="{.data.mysql-root-password}" | base64 --decode; echo)
To connect to your database:
1. Run an Ubuntu pod that you can use as a client:
kubectl run -i --tty ubuntu --image=ubuntu:16.04 --restart=Never -- bash -il
2. Install the mysql client:
$ apt-get update && apt-get install mysql-client -y
3. Connect using the mysql cli, then provide your password:
$ mysql -h angry-fox-mysql -p
To connect to your database directly from outside the K8s cluster:
MYSQL_HOST=127.0.0.1
MYSQL_PORT=3306
# Execute the following command to route the connection:
kubectl port-forward svc/angry-fox-mysql 3306
mysql -h ${MYSQL_HOST} -P${MYSQL_PORT} -u root -p${MYSQL_ROOT_PASSWORD}
Untuk melihat release aplikasi yang telah dilakukan Helm, lakukan perintah helm ls
:
$ helm ls
NAME REVISION UPDATED STATUS CHART APP VERSION NAMESPACE
angry-fox 1 Sun Jul 14 18:55:13 2019 DEPLOYED mysql-0.15.0 5.7.14 default
Untuk melakukan uninstall release, gunakan perintah helm delete
:
$ helm delete angry-fox
release angry-fox deleted
Untuk melihat status release:
LAST DEPLOYED: Sun Jul 14 18:55:13 2019
NAMESPACE: default
STATUS: DELETED
Selamat mencoba Helm! Dokumentasi lengkap mengenai Helm dapat anda lihat di sini.