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/
# 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/
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