Ingress ist eines der wichtigen Konzepte in Kubernetes, das es externen Benutzern ermöglicht, mithilfe von FQDN auf containerisierte Anwendungen zuzugreifen (vollständig qualifizierter Domänenname). Obwohl Ingress im Kubernetes-Cluster nicht standardmäßig aktiviert und installiert ist. Wir müssen dieses Kernkonzept mithilfe von Ingress-Controllern von Drittanbietern wie Nginx, Traefik, HAProxy und Istio usw. aktivieren.
In diesem Tutorial zeigen wir Ihnen, wie Sie den NGINX Ingress-Controller im Kubernetes-Cluster einrichten und verwenden.
Wie oben abgebildet, greifen externe Benutzer mit NGINX Ingress Controller über FQDN auf Anwendungen zu, und der interne Ingress Controller leitet die Anfrage an den Dienst weiter und der Dienst leitet die Anfrage dann an Backend-Endpunkte oder Pods weiter.
Aktivieren Sie den NGINX Ingress Controller in Minikube
Minikube ist ein Kubernetes-Cluster mit einem einzelnen Knoten. Wir können den nginx-Ingress-Controller in Minikube einfach aktivieren, indem wir „Minikube-Add-Ons ausführen ”-Befehl.
Führen Sie den folgenden Befehl aus, um den Status des Ingress-Controllers zu überprüfen,
# minikube addons list
Führen Sie den folgenden Minikube-Befehl aus, um den Ingress-Controller zu aktivieren,
[[email protected] ~]# minikube addons enable ingress * The 'ingress' addon is enabled [[email protected] ~]#
Wenn wir den Befehl „minikube addons list“ erneut ausführen, müssen wir dieses Mal sehen, dass der Status von Ingress aktiviert ist.
Führen Sie den folgenden kubectl-Befehl aus, um zu überprüfen, ob der Pod des Ingress-Controllers ausgeführt wird oder nicht.
[[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] ~]#
Die obige Ausgabe bestätigt, dass nginx-controller aktiviert wurde und seinen Pod erfolgreich unter dem kube-system-Namespace gestartet hat.
Eingangscontroller im Kubernetes-Cluster einrichten (Baremetal)
Hinweis: Ich gehe davon aus, dass der Kubernetes-Cluster betriebsbereit ist.
Melden Sie sich beim Master-Knoten oder der Steuerungsebene an und führen Sie den folgenden kubectl-Befehl aus, um Ingress zu installieren.
$ kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v1.1.1/deploy/static/provider/baremetal/deploy.yaml
Ausgabe,
Überprüfen Sie den Ingress-Status, führen Sie unterhalb von kubectl-Befehlen aus
[[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
Die perfekte, obige Ausgabe bestätigt, dass der Ingress-Controller erfolgreich installiert wurde.
Ingress-Controller testen
Um den Ingress-Controller zu testen, fügen Sie zuerst die folgenden Einträge in haproxy hinzu. Mein Ingress-Controller-Pod läuft auf worker-node2, deshalb habe ich worker-node2 zusammen mit NodePort erwähnt.
Speichern und schließen Sie die Datei und starten Sie dann den Haproxy-Dienst neu.
Erstellen Sie eine Nginx-basierte Bereitstellung mit dem Namen „myapp“
$ kubectl create deployment myapp --image=nginx deployment.apps/myapp created $
Erstellen Sie einen Dienst, indem Sie die Bereitstellung mit dem Typ „NodePort“
verfügbar machen$ kubectl expose deployment myapp --name=myapp --type=NodePort --port=80 service/myapp exposed $
Überprüfen Sie den Bereitstellungs- und Dienststatus, führen Sie
aus$ kubectl get deployments myapp $ kubectl get svc myapp
Ausgabe,
Ingress-Ressource für myapp erstellen
Erstellen Sie eine demo-ingress.yaml-Datei mit folgendem Inhalt. Wenn wir diese Datei anwenden, wird sie eine Ingress-Ressource erstellen, die der Anwendung den Zugriff von außerhalb des Kubernetes-Clusters über den Hostnamen ermöglicht. In diesem Fall lautet der Hostname der Anwendung also „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
Speichern und schließen Sie die Datei.
Führen Sie den Befehl below kubectl aus, um die obige Ingress-Ressource zu erstellen,
$ kubectl create -f demo-ingress.yaml ingress.networking.k8s.io/ingress-demo created $
Führen Sie Folgendes aus, um den Status der oben erstellten Ingress-Ressource zu überprüfen
$ kubectl get ingress ingress-demo $kubectl describe ingress ingress-demo
Die perfekte, obige Ausgabe bestätigt, dass Ingress-Ressourcen erfolgreich erstellt wurden.
Bevor Sie von außerhalb des Clusters auf diese URLs zugreifen, stellen Sie bitte sicher, dass Sie den folgenden Eintrag in der Hosts-Datei Ihres Systems hinzufügen, von wo aus Sie darauf zugreifen möchten.
192.168.1.240 myapp.example.com
Versuchen Sie nun, über den Webbrowser auf die URL zuzugreifen, geben Sie
einhttp://myapp.example.com
Großartig, oben bestätigt, dass wir den nginx Ingress Controller erfolgreich in Kubernetes bereitgestellt und eingerichtet haben. Bitte teilen Sie uns Ihr wertvolles Feedback und Ihre Kommentare mit.