GNU/Linux >> LINUX-Kenntnisse >  >> Linux

So richten Sie den NGINX Ingress Controller in Kubernetes ein

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

ein

http://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.


Linux
  1. So generieren Sie ein selbstsigniertes Zertifikat für Kubernetes

  2. So richten Sie Kubernetes (k8s)-Cluster in HA mit Kubeadm ein

  3. So richten Sie Kubernetes-Cluster auf der Google Cloud Platform (GCP) ein

  4. So richten Sie hochverfügbares NGINX mit KeepAlived unter Linux ein

  5. So richten Sie Samba als primären Domänencontroller unter Linux ein

So richten Sie Nginx als Reverse Proxy für Apache auf Ubuntu 18.04 VPS ein

So richten Sie Nginx Cache auf einem LAMP-Server ein

So richten Sie den Nginx-Cache auf dem LEMP-Server ein

So richten Sie Mantis Bug Tracker unter Debian 10 ein

So richten Sie einen NGINX RTMP-Server für das Streaming ein

So richten Sie Logstash unter Linux mit ElasticSearch, Redis, Nginx ein