Kustomize – Paket Manajemen untuk Kubernetes

Kustomize adalah perangkat manajemen konfigurasi untuk Kubernetes.
Contoh lain dari perangkat manajemen konfigurasi kubernetes adalah Helm yang juga telah dibahas di situs ini, contohnya di halaman ini.

Salah satu contoh mudah mengapa manajemen konfigurasi ini memudahkan dalam set up konfigurasi kubernetes adalah saat kita me-manage 1 aplikasi
yang berada di berbagai environment seperti development, staging dan production.
Manajemen sebuah aplikasi kubernetes di berbagai environment yang berbeda merupakan sebuah pekerjaan yang menjemukan tanpa solusi khusuu.
Solusi khusus di sini adalah Kustomize.

Konsep utama dari manajemen konfigurasi kustomize adalah penggunaan konsep layering.
Dengan konsep ini menjadikan definisi dasar dari sebuah aplikasi dapat dipertahankan tanpa perubahan dan ditempatkan di direktori base.
Konsep overlaying digunakan untuk mendefinisikan berbagai obyek kubernetes yang dinyatakan dalam bentuk artefak file yaml dalam bentuk deklaratif.
Konsep overlaying ini mendefinisikan berbagai artefak file yaml dalam bentuk deklaratif yang menentukan bagaimana berbagai paramter untuk
berbagai obyek kubernetes didefinisikan. Dengan begitu berbagai file di direktori yang biasanya adalah konfigurasi default tidak perlu disentuh
sama sekali.

Dalam contoh pertama pengunaan kustomize di sini, akan digunakan contoh awal yang dengan mudah memperlihatkan bagaimana kustomize bekerja
dan conton kedua mempelihatkan konsep overlaying.

Untuk contoh pertama dapat diambil instalasi obyek nginx sebagai contoh.
Berikut adalah obyek deployment dari obyek nginx dalam bentuk yaml yang kita namakan sebagai deployment.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
spec:
selector:
matchLabels:
app: nginx
replicas: 2 # tells deployment to run 2 pods matching the template
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.14.2
ports:
- containerPort: 80

Dengan perintah berikut:
kubectl create -f deployment.yaml
akan didapatkan obyek kubernetes deployment dan kubernetes obyek pods.

Untuk dapat mengakses obyek kubernetes dibutuhkan yang disebut sebagai service (svc).
Berikut adalah definisi obyek kubernetes service dalam bentuk yaml: service.yaml.

apiVersion: v1
kind: Service
metadata:
name: nginx
spec:
selector:
app: nginx
ports:

protocol: TCP
port: 80

Langkah berikut adalah untuk men-deploy service ini seperti yang didefinisikan di service.yaml, perintah berikut perlud dieksekusi:
kubectl create -f service.yaml

Dari deployment di atas dapat digunakan perangkat kustomize untuk contoh di atas. Untuk itu perlu dibuat sebuah file bernama kustomization.yaml seperti di bawah ini:

apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization

resources:
- deployment.yaml
- service.yaml 

Di kustomization,yaml ini terlihat syntax berikut

resources:
- deployment.yaml
- service.yaml 

Syntax tersebut merupakan referensi dari 2 file deployment.yaml dan service,yaml di direktori yang sama, di kasus adalah 2 file yang dibuat di atas.

Setelah file kustomization di atas, perintah berikut adalah untuk menciptakan sebuah file deploy.yaml :

kustomize build kustomization.yaml > deploy.yaml

deploy.yaml di atas akan berbentuk seperti berikut:

# deploy.yaml
apiVersion: v1
kind: Service
metadata:
  name: nginx
spec:
  selector:
    app: nginx
  ports:
  - protocol: TCP
    port: 80
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
  labels:
    app: nginx
spec:
  replicas: 1
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:1.19
        ports:
        - containerPort: 80

Seandainya yang ingin dilakukan adalah mendeploy dengan perintah di atas berikut adalah perintah yang dapat dilakukan.

Jika file deploy,yaml perlu digunakan berikut adalah perintah:

# kubectl create -f deploy.yaml

Ada cara yang lebih langsung tanpa membuat file deploy.yaml, untuk itu perintah di bawah ini dapat digunakan:

# kustomize build kustomization.yaml | kubetl -f -

Di artikel berikut akan dibahas mengenai direktori base dan overlays. Klick link ini.

Related Posts

Verified by MonsterInsights