Hi gengz, kali ini kita akan belajar bareng bagaimana cara melakukan Hot Reload Kubernetes Development menggunakan Okteto, nyok disimak
Kita buat aja dulu ya folder baru dan codenya seperti dibawah ini

mkdir golang-service
cd golang-service
go mod init golang-service
touch main.go
code .

package main
import (
"net/http"
"github.com/labstack/echo/v4"
"github.com/labstack/echo/v4/middleware"
)
func main() {
// Echo instance
e := echo.New()
// Middleware
e.Use(middleware.Logger())
e.Use(middleware.Recover())
// Route => handler
e.GET("/", func(c echo.Context) error {
return c.String(http.StatusOK, "Hello, World!\n")
})
// Start server
e.Logger.Fatal(e.Start(":1323"))
}

go mod tidy
go run main.go
Setelah ini kita buat dulu yuk file Dockerfile nya, seperti dibawah ini

# Step 1, membuat binary file
FROM golang:alpine AS builder
RUN apk update && apk add --no-cache git
WORKDIR $GOPATH/src/mypackage/myapp/
# Tambahan ENV penting, karena bila tidak ditambahkan, binary tidak jalan pada saat running di scratch
ENV CGO_ENABLED=0
COPY . .
# Melakukan instalasi terhadap library yang kita gunakan
RUN go get -d -v
RUN go build -o /go/bin/main
# Step 2, meletakkan binary file diatas scratch
FROM scratch
COPY --from=builder /go/bin/main /go/bin/main
ENTRYPOINT ["/go/bin/main"]
Sekarang saatnya kita buat file deployment, mari kita buat folder baru bernama k8s lalu buat 2 file dibawah ini

apiVersion: apps/v1
kind: Deployment
metadata:
name: golang-service
spec:
selector:
matchLabels:
app: golang-service
replicas: 1
template:
metadata:
labels:
app: golang-service
spec:
containers:
- name: golang-service
image: okteto.dev/golang-service:latest
ports:
- containerPort: 1323

apiVersion: v1
kind: Service
metadata:
name: golang-service
spec:
type: LoadBalancer
ports:
- name: http
port: 1323
selector:
app: golang-service
Setelah itu mari kita buat file pipeline milik okteto seperti dibawah ini

deploy:
- okteto build -t okteto.dev/golang-service:latest
- kubectl apply -f k8s
Yuk kita push dulu ya, silahkan buat repo baru di Github

Yuk kita buka Okteto kita, silahkan ikuti langkah berikut


Jangan lupa klik deploy ya, saatnya kita tunggu dulu


Kita bisa lihat bahwa Deployment sudah running, mari kita coba check ya


Selamat, Deployment kita ke kubernetes sudah berhasil, nah sekarang kita coba Hot Reloadnya yuk


okteto init
Saat ini kita sudah melakukan init terhadap directory, dan bila diperhatikan, ada file baru bernama okteto.yml. Selanjutnya yang akan kita lakukan adalah mounting local dev kita dengan okteto, yuk kita simak caranya

okteto up
Agak sedikit lama ya gengz, monggo ngopi aja dulu

Sebelum ganti codingan, kita check balik ya servicenya dulu


Bisa kita lihat, service kita tidak berjalan seperti seharusnya, karena kita sudah “terhubung” dengan okteto, yang perlu kita lakukan adalah menjalankan service secara manual, seperti berikut


Nah baru dia mau jalan gengz, yuk kita coba ganti ya code nya seperti dibawah ini

package main
import (
"net/http"
"github.com/labstack/echo/v4"
"github.com/labstack/echo/v4/middleware"
)
func main() {
// Echo instance
e := echo.New()
// Middleware
e.Use(middleware.Logger())
e.Use(middleware.Recover())
// Route => handler
e.GET("/", func(c echo.Context) error {
return c.String(http.StatusOK, "Hot Reload Kubernetes Development menggunakan Okteto\n")
})
// Start server
e.Logger.Fatal(e.Start(":1323"))
}
Jangan lupa save yak gengz :)), sebelum bisa melihat perubahan kita harus re-run ulang codenya, seperti dibawah ini, biasanya tekan ctrl + c

Yuk coba refresh browsernya untuk mengecheck

Mangstap, sudah berubah ya, nah sekarang kita “putus” dulu ya koneksi kita dengan okteto seperti dibawah ini

okteto down
Mari kita refresh browser kita kembali

Wah kembali lagi seperti awal ya, yup betul, hot reload dipakai untuk bisa merubah secara realtime, tapi tidak akan berpengaruh ke deployment, kita harus melakukan push ke Github kita, lalu Re-Deploy agar bisa melihat codenya berubah di Production, yuk kita gas aja


okteto push
Yuk kita coba refresh lagi browser kita

Selamat, saat ini deployment di okteto juga sudah update ya gengz. Ntaps, saat ini berarti kita sudah bisa coding secara hot-reload ke arah okteto, dan langsung update ke deployment via git push :), semoga bermanfaat ya
Source:
https://okteto.com/docs/tutorials/getting-started-with-pipelines/index.html
Tinggalkan Balasan