GNU/Linux >> Belajar Linux >  >> Linux

Cara Mengatur Ingress Controller NGINX di Kubernetes

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.


Linux
  1. Cara Membuat Sertifikat yang Ditandatangani Sendiri untuk Kubernetes

  2. Cara Mengatur Cluster Kubernetes(k8s) di HA dengan Kubeadm

  3. Cara Mengatur Samba sebagai Pengontrol Domain Utama di Linux

  1. Cara Menyiapkan Cluster Kubernetes di Google Cloud Platform (GCP)

  2. Cara Mengatur NGINX yang Sangat Tersedia dengan KeepAlived di Linux

  3. Cara Mengatur Registri Docker Pribadi di Kubernetes (k8s)

  1. Apa itu Cert-Manager dan cara menyiapkan Cert-Manager untuk sertifikat SSL di Kubernetes Cluster di AWS menggunakan Helm

  2. Apa itu Ingress Controller dan bagaimana cara men-deploy Nginx Ingress Controller di Kubernetes Cluster di AWS menggunakan Helm

  3. Cara Setup Kubernetes 1.5 dengan kubeadm di CentOS