Skip to content

Latest commit

 

History

History
90 lines (82 loc) · 3.16 KB

003.md

File metadata and controls

90 lines (82 loc) · 3.16 KB

Pemasangan Ingress Controller

Setelah kluster selesai dibuat, kamu dapat mengakses pod dengan menggunakan service bertipe NodePort. Agar aplikasi dapat dibuka menggunakan domain name atau menggunakan service bertipe ClusterIP, maka kita harus memasang Ingress Controller.

Pada tutorial ini, saya akan menggunakan NGINX Ingress Controller.

Pra-Syarat

  • Kluster Kubernetes
  • Helm Chart 3

Instalasi - Default

  • Secara default, tipe service ingress adalah LoadBalancer/LB, sehingga kamu harus mempunyai LB terlebih dahulu. (Jika kamu memasang kubernetes pada bare metal, maka kamu memerlukan MetalLB sebagai internal load balancer)
  • Jalankan perintah:
helm repo add nginx-stable https://helm.nginx.com/stable
helm repo update
  • Buat namespace baru
kubectl create ns ingress
  • Kemudian, install nginx ingress:
helm install nginx-ingress nginx-stable/nginx-ingress -n ingress
  • Lalu, cek prosesnya
watch -n2 'kubectl get all -n ingress'
  • Sampai tahap ini, ingress nginx berhasil diinstall. Namun, status LoadBalancer nginx akan terus <pending> sampai service LoadBalancer (Service dari provider atau menggunakan MetalLB) memberikan IP eksternal.

Instalasi - NodePort

  • Jalankan perintah:
helm repo add nginx-stable https://helm.nginx.com/stable
helm repo update
  • Lalu, download values.yaml dari ingress nginx
cd k8s
mkdir -p ingress
cd ingress
helm show values nginx-stable/nginx-ingress > values.yaml
  • Buka values.yaml, cari dan ganti service.type LoadBalancer menjadi NodePort
  • (Opsional) Jika kamu ingin menjadikan node port static, cari dan ganti:
    • service.httpPort.nodePort dengan port antara 30000 - 32767
    • service.httpsPort.nodePort dengan port antara 30000 - 32767
    • service.externalIPs dengan IP external kamu (Jika kamu mengguna tipe NodePort)
  • Buat namespace ingress-nginx:
kubectl create ns ingress
  • Terakhir install chart:
helm install ingress-default nginx-stable/nginx-ingress -f values.yaml -n ingress
  • Dan lihat workload-nya sampai selesai running:
watch -n2 'kubectl get all -n ingress -o wide'
  • Terakhir, kita akan cek apakah ingress berhasil di install (Disini saya menggunakan 30000 sebagai port HTTP dan 30443 sebagai port HTTPS):
    • HTTP:
curl <ip.address.node.worker>:30000
  • HTTPS:
curl <ip.address.node.worker>:30443

Atau, apabila kamu telah set External IPs:

curl <ip.address.external.ip>

tanpa menambah port dibagian belakang

Upgrade

Apabila kamu ingin mengupdate values.yaml, jalankan ini setelah ada update:

helm upgrade ingress-nginx nginx-stable/nginx-ingress -f values.yaml -n ingress

Uninstall

helm uninstall ingress-nginx -n ingress

Tips

  • Buatlah sebuah node baru khusus sebagai ingress controller. Sehingga, saat production, IP node ingress tersebut yang akan menjadi gateway. Sehingga worker lainnya tidak terganggu. (Jika tidak menggunakan LB)
  • Jika menggunakan tips diatas, pastikan bahwa untuk setiap node diberi label dan hanya deploy apps ke node yang berlabel "worker" misalnya