Kubernetes & Helm: Cara Menginstal dan Operasi Dasar

Alexander Ang
DOKU Insight
Published in
4 min readJun 23, 2020

--

Kubernetes

Definition

Kubernetes, atau disingkat K8s (8 ini sepertinya dari jumlah karakter antara K dan S, seperti internationalization yang disingkat menjadi i18n), adalah sebuah open-source container orchestration engine yang digunakan untuk mengotomatisasi deployment, scaling, dan management dari aplikasi yang sudah dikemas (containerized). Maksud dari container orchestration engine adalah mesin atau engine ini dapat mengelompokkan container untuk dapat membuat aplikasi menjadi unit-unit logis agar lebih mudah diatur dan ditemukan. Kubernetes sudah dibangun dengan pengalaman selama 15 tahun dengan production workload di Google, digabungkan dengan ide dan praktek terbaik dari komunitasnya.

sumber: https://docs.bytemark.co.uk/wp-content/uploads/2019/02/Monolithic-Application.png
sumber: https://platform9.com/wp-content/uploads/2019/05/Virtualization-vs-containerization-kubernetes-in-enterprise-1.jpg

Features

Fitur-fitur kubenetes:

  • Planet scale: didesain dengan prinsip yang sama yang memungkinkan Google untuk menjalankan milyaran container setiap minggu, kubernetes dapat melakukan scale (memperbesar dan memperkecil) tanpa menambah jumlah tim ops.
  • Never outgrow: mulai dari testing secara local atau menjalankan perusahaan global, fleksibilitas kubernetes dapat menyesuaikan untuk menghasilkan aplikasi secara konsisten dan mudah terlepas dari seberapa kompleks kebutuhannya.
  • Run anywhere: kubernetes adalah produk open source sehingga memberikan kebebasan untuk menggunakan infrastruktur on-premise, hybrid, atau public cloud infrastructure, membuat kita dengan mudah memindahkan workload kemanapun.
sumber: https://i.ytimg.com/vi/oFglQ50O_rU/maxresdefault.jpg

Informasi lebih lanjut: https://kubernetes.io/docs/home/

Helm

Definition

Helm adalah package and operations manager untuk kubernetes. Menggunakan packaging manager yang dinamakan Charts, helm membuat kita dapat mengemas release dari kubernetes menjadi file zip (.tgz). Sebuah helm chart dapat berisi sejumlah objek kubernetes, yang semuanya di-deploy sebagai bagian dari chart tersebut. Sebuah helm chart umumnya berisi sebuah Deployment dan Service, tetapi juga bisa berisi Ingress, Persistent Volume Claims, atau objek kubernetes lainnya.

Helm chart digunakan untuk men-deploy sebuah aplikasi, atau suatu komponen dari aplikasi yang lebih besar. Daftar dari helm chart yang official bisa dilihat di sini: https://github.com/helm/charts. Chart-chart tersebut dapat diinstal as-is (sebagaimana adanya tanpa modifikasi), atau dimodifikasi untuk menyesuaikan kebutuhan, seperti menginstal plugin tertentu atau menggunakan custom Docker image.

sumber: https://blog.lwolf.org/img/2017/03/ci-pipeline.png
sumber: https://miro.medium.com/max/887/0*a82Fmng2V7eH6EXg.png

Installation

Helm dapat diinstal pada OS Linux, Mac, dan Windows. Hal berikut ini diperlukan untuk menggunakan helm dengan baik dan aman:

  • kubernetes cluster
  • menentukan konfigurasi keamanan, jika ada
  • menginstal dan mengonfigurasi helm

Untuk dapat menjalankan command pada kubernetes cluster kita harus menginstal kubernetes command-line tool bernama kubectl.

1. Download versi terbaru dengan menjalankan command berikut pada terminal:

//macOS
curl -LO https://storage.googleapis.com/kubernetes-release/release/v1.18.0/bin/darwin/amd64/kubectl
//Windows
curl -LO https://storage.googleapis.com/kubernetes-release/release/v1.19.0/bin/windows/amd64/kubectl.exe

2. Buat agar binary kubectl dapat di-execute:

chmod +x ./kubectl

3. Pindahkan binary ke PATH:

sudo mv ./kubectl /usr/local/bin/kubectl

Untuk Windows, kita dapat membuat folder baru (misal: C:\Program Files\Kubernetes) lalu menambahkan path folder tersebut pada PATH di Control Panel >Environment Variables.

4. Untuk mengecek versi sudah up-to-date:

kubectl version --client

Jika sukses maka seharusnya tampil seperti ini:

Client Version: version.Info{Major:"1", Minor:"18", GitVersion:"v1.18.0", GitCommit:"9e991415386e4cf155a24b1da15becaa390438d8", GitTreeState:"clean", BuildDate:"2020-03-25T14:58:59Z", GoVersion:"go1.13.8", Compiler:"gc", Platform:"darwin/amd64"}

Pada macOS, kubectl juga dapat diinstal menggunakan Homebrew dengan command:

brew install kubectl

atau

brew install kubernetes-cli

Setelah itu download helm binary pada link berikut: https://github.com/helm/helm/releases

Unpack file tersebut, cari file “helm” dan pindahkan ke /usr/local/bin/helm untuk macOS atau ke C:\Program Files\Kubernetes (atau folder lain yang anda buat tadi) untuk Windows.

// macOS
mv darwin-amd64/helm /usr/local/bin/helm

Jika berhasil maka kita sudah bisa menjalankan command “helm help” pada terminal.

Pada macOS, helm juga dapat diinstal menggunakan Hombrew dengan command:

brew install helm

Brew akan menginstal helm versi terbaru, jika ingin menginstal versi 2 maka ganti “helm” dengan “helm@2”.

Initialize Helm Chart Repository

Setelah helm sudah dapat digunakan, kita dapat membuat chart repository. Ada 2 cara, yaitu menggunakan official chart atau membuat sendiri dari awal.

Untuk menggunakan salah satu dari official chart:

helm repo add stable https://kubernetes-charts.storage.googleapis.com/

Lalu kita dapat menampilkan list dari chart yang bisa diinstal:

helm search repo stable

Untuk membuat sendiri gunakan command (chartname dapat diganti sesuai nama yang diinginkan):

helm create chartname

Folder chartname akan di-generate, di dalamnya ada beberapa file. File values.yaml berisi value yang akan di-consume oleh file deployment.yaml.

Contoh:

  • values.yaml
image:
repository: jenkins/jenkins
tag: lts
pullPolicy: IfNotPresent
  • deployment.yaml
containers:
- name: {{ .Chart.Name }}
image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
imagePullPolicy: {{ .Values.image.pullPolicy }}

Deploy With Helm

Jika chart sudah selesai diedit, gunakan command berikut untuk membuat .tgz package:

helm package chartname

Kita dapat meng-upload package ini ke chart repository atau instal ke cluster. Chart juga bisa diinstal atau di-upgrade tanpa di-package terlebih dahulu.

Untuk melakukan deploy, install chartnya:

helm install chartname

Dari output command tersebut akan diketahui langkah untuk connect ke aplikasi melalui localhost. Contoh:

$ export POD_NAME=$(kubectl get pods -l "app.kubernetes.io/name=buildachart,app.kubernetes.io/instance=my-cherry-chart" -o jsonpath="{.items[0].metadata.name}")
$ echo "Visit http://127.0.0.1:8080 to use your application"
Visit http://127.0.0.1:8080 to use your application
$ kubectl port-forward $POD_NAME 8080:80
Forwarding from 127.0.0.1:8080 -> 80
Forwarding from [::1]:8080 -> 80

Untuk melihat aplikasi, buka 127.0.0.1:8080 pada browser.

Reference

--

--