Masuk adalah salah satu konsep penting di Kubernetes, yang memungkinkan pengguna eksternal untuk mengakses aplikasi dalam container menggunakan FQDN (nama domain yang sepenuhnya memenuhi syarat). Padahal Ingress tidak diaktifkan dan diinstal secara default di cluster Kubernetes. Kita harus mengaktifkan konsep inti ini menggunakan pengontrol ingress pihak ketiga seperti Nginx, Traefik, HAProxy dan Istio dll.
Dalam tutorial ini kami akan mendemonstrasikan cara mengatur dan menggunakan pengontrol NGINX Ingress di Cluster Kubernetes.
Seperti gambar di atas, pengguna eksternal mengakses aplikasi menggunakan NGINX Ingress Controller melalui FQDN dan pengontrol ingress internal mengarahkan permintaan ke layanan dan kemudian layanan mengarahkan permintaan ke titik akhir backend atau pod.
Aktifkan NGINX Ingress Controller di Minikube
Minikube adalah cluster Kubernetes node tunggal, kita dapat dengan mudah mengaktifkan pengontrol ingress nginx di minikube dengan menjalankan “tambahan minikube ” perintah.
Jalankan perintah di bawah ini untuk memverifikasi status pengontrol masuknya,
# minikube addons list
Jalankan perintah minikube berikut untuk mengaktifkan pengontrol ingress,
[[email protected] ~]# minikube addons enable ingress * The 'ingress' addon is enabled [[email protected] ~]#
Jika kita menjalankan kembali perintah “minikube addons list”, kali ini kita harus melihat status ingress diaktifkan.
Jalankan perintah kubectl berikut untuk memverifikasi apakah pod pengontrol ingress berjalan atau tidak.
[[email protected] ~]# kubectl get pods --all-namespaces | grep -i nginx-controller kube-system ingress-nginx-controller-7bb4c67d67-gkjj5 1/1 Running 0 20m [[email protected] ~]#
Output di atas mengkonfirmasi bahwa nginx-controller telah diaktifkan dan memulai podnya dengan sukses di bawah namespace kube-system.
Menyiapkan Ingress Controller di Kubernetes Cluster (Baremetal)
Catatan: Saya berasumsi bahwa cluster Kubernetes aktif dan berjalan.
Login ke master node atau control plane dan jalankan perintah kubectl berikut untuk menginstal ingress.
$ kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v1.1.1/deploy/static/provider/baremetal/deploy.yaml
Keluaran,
Verifikasi status Ingress, jalankan di bawah perintah kubectl
[[email protected] ~]$ kubectl get pods -n ingress-nginx NAME READY STATUS RESTARTS AGE ingress-nginx-admission-create-4phb2 0/1 Completed 0 8m53s ingress-nginx-admission-patch-m9t8z 0/1 Completed 2 8m53s ingress-nginx-controller-f9d6fc8d8-r92jd 1/1 Running 0 8m53s [[email protected] ~]$ $ kubectl get all -n ingress-nginx
Sempurna, output di atas mengonfirmasi bahwa pengontrol Ingress telah berhasil diinstal.
Menguji Pengontrol Masuknya
Untuk menguji pengontrol Ingress, pertama tambahkan entri berikut di haproxy . Pod pengontrol ingress saya berjalan di worker-node2, itu sebabnya saya menyebutkan worker-node2 bersama dengan NodePort.
Simpan dan tutup file, lalu mulai ulang layanan haproxy.
Buat penerapan berbasis nginx dengan nama 'myapp'
$ kubectl create deployment myapp --image=nginx deployment.apps/myapp created $
Buat layanan dengan mengekspos penerapan dengan ketik 'NodePort'
$ kubectl expose deployment myapp --name=myapp --type=NodePort --port=80 service/myapp exposed $
Verifikasi status Deployment dan Layanan, jalankan
$ kubectl get deployments myapp $ kubectl get svc myapp
keluaran,
Buat Ingress Resource untuk myapp
Buat file demo-ingress.yaml dengan konten berikut. Ketika kita menerapkan file ini, itu akan membuat sumber daya ingress yang memungkinkan aplikasi untuk diakses dari luar cluster kubernetes melalui nama host. Jadi, dalam hal ini, nama host aplikasi adalah 'myapp.example.com'
$ vi demo-ingress.yaml apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: ingress-demo spec: ingressClassName: nginx rules: - host: "myapp.example.com" http: paths: - pathType: Prefix path: / backend: service: name: myapp port: number: 80
simpan dan tutup file.
Jalankan di bawah perintah kubectl untuk membuat resource ingress di atas,
$ kubectl create -f demo-ingress.yaml ingress.networking.k8s.io/ingress-demo created $
Jalankan mengikuti untuk memverifikasi status sumber daya masuk yang dibuat di atas
$ kubectl get ingress ingress-demo $kubectl describe ingress ingress-demo
Sempurna, keluaran di atas mengonfirmasi bahwa sumber daya masuk telah berhasil dibuat.
Sebelum mengakses url ini dari luar cluster, pastikan untuk menambahkan entri berikut di file host sistem Anda dari tempat Anda ingin mengaksesnya.
192.168.1.240 myapp.example.com
Sekarang coba akses URL dari browser web, ketik
http://myapp.example.com
Bagus, di atas mengonfirmasi bahwa kami telah berhasil menerapkan dan menyiapkan pengontrol ingress nginx di Kubernetes. Silakan bagikan umpan balik dan komentar Anda yang berharga.