Setelah kita membuat aplikasi golang sederhana, lalu membuat docker untuk aplikasi tersebut, terakhir kita akan deploy aplikasi golang ke kubernetes.
Tahap yang perlu kita lakukan adalah:
1. Pertama kirim image ke docker registry, agar bisa di download dan di deploy ke kubernetes. Bisa menggunakan hub.docker.com, Gitlab Registry, Github Registry, Amazon Elastic Container Registry dan lain sebagainya. Bila anda menggunakan minikube, bisa langsung di deploy
2. Buat deployment untuk kubernetes
Buat file deploy.yaml yang berisi
apiVersion: apps/v1 kind: Deployment metadata: name: golangapp-deployment labels: app: golangapp spec: replicas: 3 selector: matchLabels: app: golangapp template: metadata: labels: app: golangapp spec: containers: - name: golangapp image: golangapp:latest imagePullPolicy: IfNotPresent ports: - containerPort: 8000 --- apiVersion: v1 kind: Service metadata: name: golangapp-service labels: service: golangapp spec: type: NodePort selector: app: golangapp ports: - port: 8000 targetPort: 8000
Bila anda menggunakan manage kubernetes (GCK, LKE, DOKS, EKS) ganti NodePort menjadi LoadBalancer agar bisa diakses dari IP Public.
golangapp:latest
adalah docker images yang kita build sebelumnya. Bila anda menggunakan docker hub formatnya kurang lebih username/golangapp:latest
, latest tersebut adalah tag default bila anda build docker image. Code lengkapnya bisa diambil dari https://github.com/jaranguda/golangapp
Bila anda ingin langsung mencoba tanpa perlu build dan push image, gunakan ghcr.io/jaranguda/golangapp:latest
Deploy ke kubernetes
kubectl apply -f deploy.yaml
di minikube bisa diakses url dengan, membuka IP:port output dari
minikube service --url golangapp-service # contoh http://192.168.49.2:32234
Untuk pengguna cloud, cek IP dan portnya dengan
kubectl get services # output golangapp-service LoadBalancer 10.128.173.28 5.6.38.101 8000:32633/TCP 30m
pada contoh diatas aplikasi golang bisa diakses di alamat http://5.6.38.101:8000