Friday 8 May 2020

Macam mana nak containerize aplikasi go dan letak dalam Kubernetes

Kita akan cuba letak satu aplikasi go di Kubernetes.

1. Tulislah kod go . Untuk contoh ini saya buat aplikasi go yang akan keluarkan text pada service http
main.go

package main

import (
    "fmt"
    "log"
    "net/http"
)

func main() {

    http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
        fmt.Fprintf(w, "Hello form Kubix. We love golang")
    })

    log.Fatal(http.ListenAndServe(":8081", nil))

}



2. Tulislah Dockerfile untuk dockerizekan applikasi go yang ditulis tadi
Dockerfile


FROM golang:1.12.0-alpine3.9
RUN mkdir /app
ADD . /app
WORKDIR /app
RUN go build -o main .
CMD ["/app/main"]
EXPOSE 8081



3. Buat docker image
docker build -t gokubix:1


4. Push image yang telah dibuat ke docker hub atau pun harbor ( internal image repo )( internal image repo ). Pada contoh ini yang tag dan push ker harbor

docker tag gokubix:2 harbor.kubix.tm/sample/gokubix:1

docker push harbor.kubix.tm/sample/gokubix:1


5.Create manifest file dan deploy

kubectl apply -f gokubix.yml
apiVersion: v1
kind: Service
metadata:
  name: gokubix
spec:
  type: ClusterIP
  ports:
  - port: 80 
    targetPort: 8081
  selector:
    app: gokubix
---

apiVersion: apps/v1
kind: Deployment
metadata:
  name: gokubix
spec:
  replicas: 1
  selector:
    matchLabels:
      app: gokubix
  template:
    metadata:
      labels:
        app: gokubix
    spec:
      containers:
      - name: gokubix
        image: harbor.kubix.tm/sample/gokubix:1


6. Buat ingress resource untuk pamerkan servis ini ke network luar
kubectl apply -f ingress.yml

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: gokubix
spec:
  tls:
  - hosts: 
    - gokubix.poc-dev.kubix.tm
  rules:
  - host: gokubix.poc-dev.kubix.tm
    http:
      paths:
      - backend:
          serviceName: gokubix
          servicePort: 80



7. Tadaaaa


 ... Semoga bermanfaat

No comments:

Post a Comment

Tatacara klon pelayan di AWS lightsail

  Kadang-kala kita diminta untuk buat satu sistem baru untuk tujuan ujikaji atau percubaan fungsi baru. Jika di AWS lightsail kita boleh bua...