Menjalankan Golang di Kubernetes

Photo by Chinmay B on Unsplash

Menjalankan Golang di Kubernetes

Kubernetes adalah platform manajemen wadah yang sangat populer untuk mengelola aplikasi dalam lingkungan kontainer.

Golang, atau disebut juga Go, adalah bahasa pemrograman yang kuat dan efisien. Dalam tutorial ini, kita akan menjalankan aplikasi Golang HTTP di Kubernetes dengan menggunakan port 80 dan menetapkan domain menjadi dibumi.com.

Persiapan Awal

  1. Pastikan Anda telah menginstal dan mengonfigurasi Kubernetes di sistem Anda.

  2. Pastikan kubectl telah terhubung ke klaster Kubernetes yang sesuai.

Langkah 1: Struktur Proyek Golang

Buat struktur proyek Golang sederhana. Buat file dengan nama main.go sebagai berikut:

// main.go
package main

import (
    "fmt"
    "net/http"
)

func handler(w http.ResponseWriter, r *http.Request) {
    fmt.Fprintf(w, "Selamat datang di Dibumi.com!")
}

func main() {
    http.HandleFunc("/", handler)
    http.ListenAndServe(":80", nil)
}

Langkah 2: Dockerfile

Buat Dockerfile untuk membangun gambar Docker dari aplikasi Golang:

# Dockerfile
FROM golang:alpine

WORKDIR /app

COPY . .

RUN go build -o main .

CMD ["./main"]

Langkah 3: Membangun dan Menjalankan di Lokal

# Build Docker image
docker build -t golang-dibumi .

# Jalankan container secara lokal
docker run -p 8080:80 golang-dibumi

Langkah 4: Deploy ke Kubernetes

Buat file deployment.yaml untuk mendefinisikan objek Deployment:

# deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: golang-dibumi
spec:
  replicas: 1
  selector:
    matchLabels:
      app: golang-dibumi
  template:
    metadata:
      labels:
        app: golang-dibumi
    spec:
      containers:
      - name: golang-dibumi
        image: golang-dibumi:latest
        ports:
        - containerPort: 80

Buat file service.yaml untuk mendefinisikan objek Service:

# service.yaml
apiVersion: v1
kind: Service
metadata:
  name: golang-dibumi
spec:
  selector:
    app: golang-dibumi
  ports:
    - protocol: TCP
      port: 80
      targetPort: 80
  type: LoadBalancer

Langkah 5: Terapkan di Kubernetes

# Terapkan Deployment
kubectl apply -f deployment.yaml

# Terapkan Service
kubectl apply -f service.yaml

Langkah 6: Tentukan Domain

Tambahkan entri host atau konfigurasi DNS yang sesuai untuk mengarahkan dibumi.com ke alamat IP Load Balancer yang diberikan oleh Kubernetes.

Kesimpulan

Dengan mengikuti langkah-langkah di atas, Anda sekarang telah berhasil menjalankan aplikasi Golang HTTP di Kubernetes dengan menggunakan port 80 dan menetapkan domain menjadi dibumi.com. Ini adalah langkah awal yang solid untuk membuat dan mendeploy aplikasi Golang dengan Kubernetes. Jangan ragu untuk menyesuaikan konfigurasi sesuai kebutuhan proyek Anda.