implementasi helm pada kubernetes production

0
479

halo sobat sekolahlinux, kali ini saya akan sedikit berbagi tentang bagaimana saya mengimplementasi helm pada kubernetes production, yuk langsung saja kita masuk ke materi pembahasannya

1. install helm cli

  • install helm v2.x
    • dalam install helm cli v2.x ini kamu harus mendownload helm binnary dari https://github.com/helm/helm/releases, contohnya bisa seperti dibawah ini
wget https://get.helm.sh/helm-v2.16.12-linux-amd64.tar.gz && tar -zxvf helm-v2.16.12-linux-amd64.tar.gz && mv linux-amd64/helm /usr/local/bin/helm
    • jika sudah pada helm v2.x kamu diharuskan melakukan provisioning tiller, sebelumnya jika kubernetes kamu mengaktifkan RBAC maka kamu perlu membuat service account untuk tiller, contohnya seperti dibawah ini
kubectl create serviceaccount -n kube-system tiller
kubectl create clusterrolebinding tiller-cluster-rule --clusterrole=cluster-admin -- serviceaccount=kube-system:tiller
    • selanjutnya jika sudah makan jalankan perintah dibawah ini untuk install tiller pada kubernetes kamu
helm init --service-account tiller
  • install helm v3.x
    • dalam install helm cli v3.x ini kamu harus mendownload helm binnary dari https://github.com/helm/helm/releases, contohnya bisa seperti dibawah ini
wget https://get.helm.sh/helm-v3.3.4-linux-amd64.tar.gz && tar -zxvf helm-v3.3.4-linux-amd64.tar.gz && mv linux-amd64/helm /usr/local/bin/helm
    • pada installasi helm cli v3.x ini kamu tidak perlu install tiller seperti pada helm cli v2.x

2. basic helm cli

berikut ini command yang berguna yang bisa kamu gunakan dalam penggunaan helm di production

  • get values.yaml from helm chart
helm inspect values stable/airflow > airflow.yaml
  • get values.yaml from existing helm chart install on k8s, release_name disini adalah name dari chart yg kamu install, misal kamu install chart stable/airflow dengan nama airflow-dev
helm get values release_name
helm get values airflow-dev
  • show helm chart version list
    • helm v2.x
helm search stable/airflow -l
    • helm v3.x
helm search repo stable/airflow -l
  • download helm chart package
    • helm v2.x
helm fetch stable/airflow --version 0.9.1
    • helm v3.x
helm pull stable/airflow --version 0.9.1

3. install helm chart on kubernetes

  • helm v2.x
helm install --name ariflow-production stable/airflow
  • helm v3.x
helm install ariflow-production stable/airflow

4. install helm chart on kubernetes with custom values

  • inpect values, dan setelahnya rubah dan sesuaikan value dari paramater yang ada di airflow-values.yaml
helm inspect values stable/airflow > airflow-values.yaml
  • helm v2.x
helm install --name airflow-production stable/airflow -f airflow-values.yaml
  • helm v3.x
helm install airflow-production stable/airflow -f airflow-values.yaml

5. upgrade values helm chart on kubernetes

pada beberapa case setelah sebuah chart diinstall pada kubernetes, kita ingin melakukan perubahan pada file airflow-values.yaml yang didapatkan dengan cara helm inspect values, maka jika ada perubahan pada airflow-values.yaml tersebut lakukan upgrade dengan perintah seperti dibawah ini

helm upgrade airflow-production stable/airflow -f airflow-values.yaml

6. install helm chart on kubernetes in production

pada kubernetes production untuk installation chart perlu cara dan metode yang berbeda, jika kita sebelumnya menggunakan chart yang berada pada repo di cloud atau internet, maka pada production baik kita menggunakan chart yang ada di local tempat kita menjalankan perintah helm, metode ini digunakan untuk mencegah terjadinya break pada sebuah service yang kita install menggunakan helm pada k8s production pada saat proses upgrade yang disebabkan template atau structure helm template nya berubah, yuk mari kita langsung ke step-step nya

  • download helm chart package
    • helm v2.x
helm fetch stable/airflow --version 0.9.1
    • helm v3.x
helm pull stable/airflow --version 0.9.1
  • extract package yang sudah di download
tar xvf airflow-0.9.1.tgz
  • maka setelah di extract layout folder dan file hasil extract file airflow-0.9.1.tgz kurang lebih akan seperti dibawah ini
.
├── charts
├── Chart.yaml
├── examples
├── OWNERS
├── README.md
├── requirements.lock
├── requirements.yaml
├── templates
└── values.yaml
  • jika sudah lakukan install helm chart dari package chart yang sudah kita download dan extract diatas
helm install airflow-production ./airflow -f ./airflow/values.yaml
  • helm v2.x
helm install --name airflow-production ./airflow -f ./airflow/values.yaml
  • helm v3.x
helm install airflow-production ./airflow -f ./airflow/values.yaml

7. upgrade values helm chart on kubernetes in production

pada beberapa case setelah sebuah chart diinstall pada kubernetes production, kita ingin melakukan perubahan pada file values.yaml didalam folder airflow yang didapatkan dengan cara pull chart package, maka jika ada perubahan pada values.yaml tersebut lakukan upgrade dengan perintah seperti dibawah ini

helm upgrade airflow-production ./airflow -f ./airflow/values.yaml

atau bisa dengan cara dibawah ini

helm upgrade airflow-production stable/airflow -f values.yaml --version 0.9.1

8. tips helm on kubernetes production

  • pastikan kamu membaca README sebuah helm chart dengan baik dan seksama
  • pada beberapa chart ada metode upgrade yang berbeda, misalkan dalam case ini adalah rabbitmq, karena rabbitmq harus tetap mempertahankan erlang cookies nya agar tetap sama saat seperti pertama kali install, jika erlang cookies berubah maka akan menyebabkan break pada service rabbitmq
https://github.com/bitnami/charts/tree/master/bitnami/rabbitmq
  • selalu coba dulu di dev atau staging sebelum lanjut ke production
  • pada chart service statefull, sebaiknya kamu menggunakan persistent volume atau disini biasanya disebut pvc

9. generate manifest k8s from helm template

  • with local template
helm template airflow ./ -f values.yaml --namespace default
  • with remote template
helm template airflow stable/airflow -f values.yaml --namespace default

 

terimakasih sudah berkunjung dan membaca, semoga apa yang share berguna dan juga bermanfaat

reference: