Contoh Deployment

Untuk mendefinisikan konfigurasi pod, kita bisa mendeklarasikan deployment sebagai berikut:

# deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: myapp
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

Di sini kita mendeklarasikan bahwa kita membutuhkan dua pod yang masing-masing berisi container nginx:1.14.2. Masing-masing pod akan memiliki sebuah port khusus yang terhubung ke port 80 pada container.

Terkadang kita tidak secara langsung mendeklarasikan replica (jumlah pod) di sini, melainkan menggunakan horizontal pod autoscaler (HPA). Untuk mendalami lebih jauh tentang HPA, bisa mengunjungi link berikut: https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale/

Contoh Service

# service.yaml
apiVersion: v1
kind: Service
metadata:
  name: myapp-service
spec:
  selector:
    matchLabels:
      app: nginx
  ports:
    - protocol: TCP
      port: 80
      targetPort: 80

Antara deployment dan service bisa terhubung satu sama lain melalui selector. Oleh karena itu, bagian selector pada service biasanya sama dengan bagian selector pada deployment.

Pada contoh di atas, kita ingin setiap request ke myapp-service:80 akan diarahkan pada dua pod yang dideklarasikan melalui deployment di atas.

Jika kita menginginkan service kita bisa diakses dari luar cluster, biasanya kita juga akan membutuhkan ingress. Untuk mendalami lebih jauh tentang ingress, bisa mengunjungi link berikut: https://kubernetes.io/docs/concepts/services-networking/ingress/

Melakukan deployment

Untuk melakukan deployment ke cluster kube, kita bisa menggunakan kubectl client:

kubectl apply -f <nama-script>.yaml
# atau
kubesctl apply -f <directory>

Untuk mengetahui perintah-perintah yang sering dipakai, silahkan mengunjungi link berikut: https://phoenixnap.com/kb/kubectl-commands-cheat-sheet