Quick Start: minikube


Photo by Growtika on Unsplash

Minikube adalah alat yang memungkinkan Anda untuk menjalankan Kubernetes secara lokal. Minikube dirancang untuk memudahkan pengembang dalam membuat dan menguji aplikasi Kubernetes di lingkungan lokal mereka sebelum memindahkannya ke lingkungan produksi.

Selain minikube, terdapat juga kind. Bedanya kind memiliki depedensi dengan Docker untuk dapat menjalankannya. Secara garis besar minikube dilakukan bila ingin mengetes suatu aplikasi Kubernetes dengan lingkungan yang mirip produksi sedangkan kind lebih berfokus pada lingkungan development yang membutuhkan perubahan cepat seperti dalam kasus CI/CD.

Persyaratan minimal

  • 2 CPUs or more
  • 2GB of free memory
  • 20GB of free disk space
  • Internet connection
  • Container or virtual machine manager, such as: Docker, QEMU, Hyperkit, Hyper-V, KVM, Parallels, Podman, VirtualBox, or VMware Fusion/Workstation

Instalasi

Disini saya menggunakan RockyLinux dan arsitektur ARM64.

Unduh dan pasang minikube:

curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-latest.aarch64.rpm
sudo rpm -Uvh minikube-latest.aarch64.rpm

Lihat link untuk opsi lainnya.

minikube juga membutuhkan driver dapat dijalankan. Kita dapat menggunakan Docker, QEMU, Hyperkit, Hyper-V, KVM, Parallels, Podman, VirtualBox, atau VMware Fusion/Workstation. Kali ini kita akan menggunakan Podman sebagai alternatif dari Docker.

sudo dnf install -y podman

Jalankan minikube

minikube start
  minikube v1.33.1 on Rocky 9.4 (arm64)
✨  Automatically selected the podman driver. Other choices: none, ssh
📌  Using Podman driver with root privileges
👍  Starting "minikube" primary control-plane node in "minikube" cluster
🚜  Pulling base image v0.0.44 ...
💾  Downloading Kubernetes v1.30.0 preload ...
    > preloaded-images-k8s-v18-v1...:  319.81 MiB / 319.81 MiB  100.00% 21.44 M
    > gcr.io/k8s-minikube/kicbase...:  435.76 MiB / 435.76 MiB  100.00% 18.99 M
🔥  Creating podman container (CPUs=2, Memory=2200MB) ...
🐳  Preparing Kubernetes v1.30.0 on Docker 26.1.1 ...
    ▪ Generating certificates and keys ...
    ▪ Booting up control plane ...
    ▪ Configuring RBAC rules ...
🔗  Configuring bridge CNI (Container Networking Interface) ...
🔎  Verifying Kubernetes components...
    ▪ Using image gcr.io/k8s-minikube/storage-provisioner:v5
🌟  Enabled addons: storage-provisioner, default-storageclass
💡  kubectl not found. If you need it, try: 'minikube kubectl -- get pods -A'
🏄  Done! kubectl is now configured to use "minikube" cluster and "default" namespace by default

Unduh juga kubectl untuk mengatur cluster minikube nantinya

minikube kubectl -- get po -A
    > kubectl.sha256:  64 B / 64 B [-------------------------] 100.00% ? p/s 0s
    > kubectl:  47.63 MiB / 47.63 MiB [-------------] 100.00% 6.80 MiB p/s 7.2s
NAMESPACE     NAME                               READY   STATUS    RESTARTS   AGE
kube-system   coredns-7db6d8ff4d-sstwv           1/1     Running   0          28s
kube-system   etcd-minikube                      1/1     Running   0          42s
kube-system   kube-apiserver-minikube            1/1     Running   0          42s
kube-system   kube-controller-manager-minikube   1/1     Running   0          42s
kube-system   kube-proxy-gj92m                   1/1     Running   0          29s
kube-system   kube-scheduler-minikube            1/1     Running   0          43s
kube-system   storage-provisioner                1/1     Running   0          41s

Dari kubectl kita dapat melihat cluster minikube sudah berhasil kita buat

Tambahkan alias supaya lebih mudah

alias kubectl="minikube kubectl --"

Sekarang kita coba deploy service dengan tipe node port

kubectl create deployment hello-minikube --image=kicbase/echo-server:1.0
kubectl expose deployment hello-minikube --type=NodePort --port=8080

Tunggu sebentar, hingga service ready

kubectl get services hello-minikube
NAME             TYPE       CLUSTER-IP       EXTERNAL-IP   PORT(S)          AGE
hello-minikube   NodePort   10.103.170.158   <none>        8080:30748/TCP   56s

Anda bisa jalankan command ini agar minikube membuka halaman service secara otomatis di browser

minikube service hello-minikube

Alternatifnya gunakan port forwarding secara manual lalu akses melalui http://localhost:7080

kubectl port-forward service/hello-minikube 7080:8080

Berikut hasilnya