Tutorial Deploy Aplikasi ke Kubernetes dengan Helm Charts untuk Pemula
FR
Fajar Riz

Dipublikasikan 10 Juni 2026

Tutorial Deploy Aplikasi ke Kubernetes dengan Helm Charts untuk Pemula

Deploy aplikasi ke Kubernetes secara manual dengan kubectl bisa efisien untuk proyek kecil, tetapi semakin kompleks infrastrukturmu, semakin sulit mengelola manifest YAML yang menumpuk. Helm hadir sebagai package manager untuk Kubernetes yang memungkinkan kita mendefinisikan, menginstall, dan mengupgrade aplikasi menggunakan template yang reusable. Artikel ini akan membimbingmu membuat Helm chart dari nol dan mendeploy aplikasi ke cluster Kubernetes dengan pendekatan yang terstruktur dan mudah dikelola.

Mengapa Helm Charts Penting

Bayangkan kamu memiliki sepuluh microservices yang masing-masing memerlukan Deployment, Service, ConfigMap, dan Ingress. Mengelola ratusan file YAML secara manual rentan terhadap human error dan inkonsistensi antar environment. Helm charts mengatasi masalah ini dengan template engine yang memungkinkan satu set manifest ditulis sekali lalu digunakan di development, staging, dan production dengan nilai variabel yang berbeda. Selain itu, Helm menyediakan fitur versioning dan rollback yang kritis untuk deployment di production.

Prasyarat yang Perlu Disiapkan

Sebelum memulai, pastikan kamu sudah memiliki cluster Kubernetes yang aktif. Kamu bisa menggunakan Minikube, Kind, Docker Desktop Kubernetes, atau cluster cloud managed seperti GKE, EKS, atau AKS. Selain itu, install kubectl dan pastikan konfigurasi context sudah mengarah ke cluster yang benar. Helm CLI juga harus terinstall di mesin lokal. Artikel ini menggunakan Helm v3 yang tidak memerlukan Tiller di cluster, sehingga lebih aman dan sederhana.

Langkah 1: Instalasi Helm CLI

Helm tersedia untuk Linux, macOS, dan Windows. Untuk Linux, jalankan perintah berikut:

curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash
helm version

Perintah tersebut mengunduh binary Helm terbaru dan menempatkannya di /usr/local/bin. Verifikasi instalasi dengan menjalankan helm version. Jika output menampilkan versi semantik, instalasi berhasil. Untuk macOS, gunakan Homebrew: brew install helm. Windows user bisa menggunakan Chocolatey atau mengunduh binary dari GitHub releases Helm.

Langkah 2: Membuat Chart Baru

Helm menyediakan command scaffolding untuk membuat struktur chart baru. Jalankan:

helm create myapp

Command ini menghasilkan folder myapp dengan struktur standar: Chart.yaml, values.yaml, folder templates, dan charts untuk dependency. Buka Chart.yaml dan sesuaikan metadata seperti nama, deskripsi, versi aplikasi, dan versi chart. File ini adalah identitas chart kamu di registry atau repository. Pastikan versi chart mengikuti semantic versioning agar upgrade dan rollback berjalan lancar.

Langkah 3: Mengkonfigurasi values.yaml

File values.yaml adalah tempat kamu mendefinisikan default value untuk template. Pisahkan konfigurasi yang sering berubah seperti replica count, image tag, dan resource limit ke sini:

replicaCount: 2
image:
  repository: myapp
  tag: "1.0.0"
  pullPolicy: IfNotPresent
service:
  type: ClusterIP
  port: 80
ingress:
  enabled: true
  host: myapp.example.com
resources:
  limits:
    cpu: 500m
    memory: 256Mi
  requests:
    cpu: 250m
    memory: 128Mi

Dengan struktur ini, kamu bisa mengganti image tag saat deployment tanpa harus mengedit file template. Tim DevOps juga bisa mengoverride value tertentu melalui command line atau file values terpisah untuk masing-masing environment.

Langkah 4: Menulis Template Deployment

Buka folder templates dan periksa file deployment.yaml. Helm menggunakan Go template syntax dengan helper function dari library Sprig. Berikut contoh template Deployment yang sudah dimodifikasi:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: {{ include "myapp.fullname" . }}
  labels:
    {{- include "myapp.labels" . | nindent 4 }}
spec:
  replicas: {{ .Values.replicaCount }}
  selector:
    matchLabels:
      {{- include "myapp.selectorLabels" . | nindent 6 }}
  template:
    metadata:
      labels:
        {{- include "myapp.selectorLabels" . | nindent 8 }}
    spec:
      containers:
        - name: {{ .Chart.Name }}
          image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
          ports:
            - containerPort: 80
          resources:
            {{- toYaml .Values.resources | nindent 12 }}

Perhatikan penggunaan {{ include }} dan {{ .Values }}. Fungsi nindent memastikan indentasi YAML tetap valid. Template ini akan menghasilkan manifest yang valid untuk setiap kombinasi value yang diberikan. Kamu juga bisa menambahkan ConfigMap dan Secret template untuk environment variable dan credential.

Langkah 5: Deploy dan Verifikasi

Sebelum deploy, validasi chart dengan perintah berikut:

helm lint myapp
helm template myapp ./myapp > /tmp/manifest.yaml
helm install myapp-release ./myapp --dry-run --debug

Perintah helm lint memeriksa sintaksis chart. helm template menampilkan manifest yang dihasilkan tanpa mengirimkannya ke cluster. Dry-run memberikan simulasi deployment lengkap. Setelah yakin, jalankan deployment sesungguhnya:

helm install myapp-release ./myapp
kubectl get pods -l app.kubernetes.io/name=myapp
kubectl get svc myapp-release

Periksa status pod dan service. Jika aplikasi memerlukan ingress, pastikan controller Ingress seperti NGINX Ingress Controller sudah aktif di cluster. Helm akan melacak release history sehingga kamu bisa melihat revisi dan melakukan rollback jika terjadi masalah.

Tips Produksi

Untuk environment production, gunakan Helm repository untuk menyimpan chart yang sudah terverifikasi. Integrasikan Helm dengan pipeline CI/CD menggunakan command helm upgrade --install agar deployment bersifat idempotent. Selalu tentukan resource requests dan limits untuk mencegah pod mengonsumsi resource cluster secara berlebihan. Gunakan helm rollback jika deployment baru menyebabkan error. Terakhir, pertimbangkan menggunakan Helmfile atau ArgoCD untuk mengelola multiple charts secara declarative di skala besar.

Kesimpulan

Helm charts mengubah cara kita mengelola aplikasi Kubernetes dari sekumpulan file YAML statis menjadi template yang dinamis dan reusable. Dengan memahami struktur chart, values, dan template syntax, kamu bisa mendeploy aplikasi lebih konsisten di berbagai environment. Mulai dari scaffolding chart, konfigurasi values, hingga verifikasi dry-run, setiap langkah memastikan deployment berjalan dengan prediktabilitas tinggi. Pelajari lebih lanjut di dokumentasi resmi Helm dan Kubernetes Concepts.