Skip to content

Latest commit

 

History

History
169 lines (152 loc) · 4.56 KB

005.md

File metadata and controls

169 lines (152 loc) · 4.56 KB

Menggunakan Helm Chart

Hola, jadi pada tutorial ini, saya akan mencoba menggunakan template Helm Chart untuk me-manage Deployment dan Service tanpa lansung menggunakan resource template kubernetes.

Karena penggunaan helm chart ini membantu kita menghemat waktu untuk menuliskan script untuk membuat/mengupdate resources.

Lets begin!

Pra-Syarat

  • Kluster Kubernetes
  • Helm Chart (V3++) (Boleh diinstall di local atau di server. Disarankan di local saja)

Daftar Isi

Membuat Chart Baru

  • Buat direktori baru di local, misalnya mkdir -p helm-chart-example
  • Masuk ke cd helm-chart-example
  • Jalankan perintah: helm create <nama-chart-kamu>, misalnya helm create nginx-example
    • CATATAN: nama chart harus menggunakan huruf kecil dan tidak boleh ada spasi. Gunakan "-" untuk memisah.
  • Masuk ke cd <nama-chart-kamu>
  • Hapus seluruh file yang ada di dalam folder ./templates: rm -rf ./templates/*
  • Hapus isi dari ./values.yaml, dan ubah menjadi:
# Deployment
deployment:
  replicas: 2
  
  # Containers
  images:
    name: nginx
  ports:
    - 80

# Service
service:
  ports:
    - 80

# Ingress
ingress:
  hostname: "app-1.k8s.local"
  path: "/"
  port: 80
  • Update isi dari ./Chart.yaml sesuai kebutuhan

Membuat Helpers

  • Berikut adalah sample helpers
  • Buat file _helpers.tpl pada template ./templates/_helpers.tpl
  • Copy paste:
{{/* Labels */}}
{{- define "labels" }}
app_name: {{ .Charts.Label }}
{{- end }}

Membuat Namespace

  • Berikut adalah sample namespace
  • Buat file namespace.yaml pada template ./templates/namespace.yaml
  • Copy paste:
apiVersion: v1
kind: Namespace
metadata:
  name: {{ .Values.namespace }}
  • Simpan

Membuat Deployment

  • Berikut adalah sample deployment
  • Buat file deployment.yaml pada template ./templates/deployment.yaml
  • Copy paste:
apiVersion: apps/v1
kind: Deployment
metadata:
  name: {{ .Chart.Name }}-deployment
  labels:
{{- include "labels" . | indent 4 }}
spec:
  replicas: {{ .Values.deployment.replicas }}
  selector:
    matchLabels:
{{- include "labels" . | indent 6 }}
  template:
    metadata:
      labels:
{{- include "labels" . | indent 8 }}
    spec:
      containers:
      - name: {{ .Chart.Name }}
        image: {{ .Values.deployment.images.name }}
        ports:
        {{- range .Values.deployment.ports }}
        - containerPort: {{ . }}
        {{- end }}

Membuat Service

  • Berikut adalah sample service
  • Buat file service.yaml pada template ./templates/service.yaml
  • Copy paste:
apiVersion: v1
kind: Service
metadata:
  name: {{ .Chart.Name }}-service
  labels:
{{- include "labels" . | indent 4 }}
spec:
  selector:
{{- include "labels" . | indent 4 }}
  ports:
  {{- range .Values.service.ports }}
    - name: port-{{ . }}
      protocol: TCP
      port: {{ . }}
  {{- end }}

Membuat Ingress

  • Buat file ingress.yaml pada template ./templates/ingress.yaml
  • Copy paste:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: {{ .Chart.Name }}-ingress
  annotations:
    cert-manager.io/cluster-issuer: "selfsigned-cluster-issuer"
spec:
  ingressClassName: nginx
  tls:
  - hosts:
    - {{ .Values.ingress.hostname | quote }}
    secretName: webserver-secret
  rules:
  - host: {{ .Values.ingress.hostname | quote }}
    http:
      paths:
      - pathType: Prefix
        path: {{ .Values.ingress.path | quote }}
        backend:
          service:
            name: {{ .Chart.Name }}-service
            port:
              number: {{ .Values.ingress.port }}

Install Chart ke Kluster

  • Setelah semua selesai, pastikan kembali dengan men-debug: helm install <nama-release> <nama-chart> --debug --dry-run [...opsi]
  • Contoh: helm install nginx-production ./nginx-example --debug --dry-run
  • Jika tidak ada error, maka kamu dapat menjalankan perintah: helm install nginx-production ./nginx-example

Upgrade Versi

  • Jika ada perubahan, maka kamu harus menaikkan versi version dan appVersion pada file ./Chart.yaml
  • Selanjutnya, jalankan: helm upgrade nginx-production ./nginx-example

Dokumentasi ini merupakan tahapan awal/basic untuk menggunakan helm chart. Untuk penggunaan helm chart lebih lanjut, silahkan klik link ini