So verwenden Sie HAProxy als Ingress-Controller in einer Kubernetes-Umgebung

So Verwenden Sie Haproxy Als Ingress Controller In Einer Kubernetes Umgebung



Kubernetes ist die ideale Option für alle, die die Bereitstellung, Skalierung und Verwaltung einer Containeranwendung automatisieren möchten. In einer Kubernetes-Umgebung ist ein Ingress-Controller für die Verwaltung des externen Zugriffs auf jeden Kubernetes-Clusterdienst unerlässlich. Der Ingress-Controller fungiert als Eingangsbereich für externen Datenverkehr, der es Ihnen ermöglicht, das Routing zu definieren und zu bestimmen, wie Sie den Datenverkehr zum Dienst steuern möchten. Sie können verschiedene Eingangskontrollen verwenden, aber in diesem Fall konzentrieren wir uns auf HAProxy und verwenden es, um die Regeln zu implementieren, die wir in unserer Eingangsressource definieren.

Was ist ein Ingress-Controller?

Ein Ingress-Controller ist eine Komponente, mit der Benutzer den Zugriff auf Dienste innerhalb ihres Kubernetes-Clusters verwalten und steuern können. Der Ingress-Controller besteht aus zwei Schlüsselelementen:

  1. Die Ingress-Ressource – Es handelt sich um ein Kubernetes-API-Objekt, das die Regeln für die Weiterleitung des Datenverkehrs der Dienste im Cluster basierend auf dem angegebenen Hostnamen und den angegebenen Pfaden definiert.
  2. Der Ingress-Controller – Es handelt sich um eine Softwarekomponente wie HAProxy, Traefik oder NGINX, die die Regeln implementiert, die in der Ingress-Ressource angegeben sind. Es konfiguriert den Load Balancer so, dass er den Datenverkehr basierend auf den an den Eingangsobjekten vorgenommenen Änderungen verarbeitet.

So verwenden Sie HAProxy als Ingress-Controller in einer Kubernetes-Umgebung

Nachdem Sie verstanden haben, was ein Ingress-Controller ist und warum Sie ihn benötigen, besteht die nächste Aufgabe darin, die Schritte zu seiner Verwendung zu behandeln. Für unseren Fall richten wir HAProxy als unseren Ingress-Controller ein, indem wir die bereitgestellten Schritte befolgen.







Hinweis: Stellen Sie sicher, dass Ihr Kubernetes-Cluster betriebsbereit ist. Gehen Sie dann wie folgt vor.



Schritt 1: Starten Sie Ihren Kubernetes-Cluster
Es gibt verschiedene Möglichkeiten, einen Kubernetes-Cluster einzurichten und zu starten. Für diesen Leitfaden verwenden wir Minikube. Es handelt sich um ein Tool, das eine einfache Möglichkeit zur Bereitstellung von Kubernetes in einer virtuellen Maschine oder Docker bietet, insbesondere wenn Sie Kubernetes lokal auf Ihrer Maschine haben.



Siehe die Minikube-Dokumentation Informationen zu den Installationsbefehlen, die für Ihre Plattform verwendet werden sollen. Für diesen Fall betreiben wir eine stabile „x64“-Linux-Architektur und führen die folgenden Befehle aus:





$ Curl -ES https: // storage.googleapis.com / Minikube / Veröffentlichungen / neueste / minikube-linux-amd64
$ Sudo Installieren minikube-linux-amd64 / usr / lokal / Behälter / Minikube

Der erste Befehl greift auf die neueste stabile Minikube-Binärdatei zu, während der zweite Befehl die Binärdatei installiert und in den angegebenen Pfad verschiebt.

Sobald Sie Minikube installiert haben, starten Sie es, um den Cluster aufzurufen.



$ minikube start

Anschließend muss kubectl installiert sein, um auf den Cluster zugreifen zu können. Sie können jedoch die kubectl-Version verwenden, die mit Minikube verfügbar ist. Um beispielsweise die Details der laufenden Pods zu überprüfen, führen Sie den Befehl „kubectl“ wie folgt aus:

$ minikube kubectl -- Holen Sie sich Schoten -A

Auf diese Weise muss kubectl nicht installiert sein. Das (–) signalisiert, dass die Befehle für kubectl und nicht für Minikube gelten.

Schritt 2: Erstellen Sie einen Namespace
Im zweiten Schritt wird ein dedizierter Namespace für den Ingress-Controller erstellt. Wir haben den Namespace „Haproxy-Controller“ genannt.

$ Minikube Kubectl erstellt den Namensraum Haproxy-Controller

Schritt 3: Erstellen und Bereitstellen des HAProxy Ingress Controllers
Wie Sie den Ingress-Controller erstellen, hängt davon ab, was Sie erreichen möchten. Sie können beispielsweise einen HAProxy-Ingress-Controller erstellen, um einen HTTP-Verkehr abhängig vom angeforderten Hostnamen weiterzuleiten. Greifen Sie in einem solchen Fall zunächst auf Ihren DNS-Server zu und erstellen Sie einen „A“-Eintrag, um den Ziel-Hostnamen Ihrem Cluster zuzuordnen.

Sobald Sie den richtigen „A“-Eintrag haben, erstellen Sie Ihre Ingress-Controller-YAML-Datei, wie in der folgenden Abbildung gezeigt. Im ersten Abschnitt haben wir eine Bereitstellungsressource erstellt, die als Beispiel das Docker-Container-Image „jmalloc/echo-server“ verwendet.

Im zweiten Abschnitt der YAML-Datei haben wir die Service-Ressource erstellt, die basierend auf dem Hostnamen zugeordnet wird, der im Ingress-Controller angefordert wird, der in Schritt 4 erstellt wird.

Speichern Sie die Datei und stellen Sie sie mit kubectl in Ihrem Cluster bereit. Wir verweisen auf den Minikube kubectl, indem wir für unseren Fall den folgenden Befehl ausführen. Unser HAProxy-Ingress-Controller ist „linuxhint-jmaildeployment.yaml“.

$ minikube kubectl -- anwenden -F < Dateiname >

Sobald Sie eine Ausgabe erhalten, aus der hervorgeht, dass der Dienst erstellt wurde, können Sie mit dem folgenden Befehl weiter überprüfen, ob er bereitgestellt wurde:

$ minikube kubectl -- Holen Sie sich Schoten --namespace Haproxy-Controller

Stellen Sie sicher, dass Sie den richtigen Namespace verwenden, den Sie in Schritt 1 erstellt haben. Sie erhalten eine Ausgabe, die bestätigt, dass der Dienst verfügbar ist, was bedeutet, dass die Bereitstellung erfolgreich war.

Schritt 4: Erstellen und Bereitstellen einer Ingress-Ressource
Erstellen Sie eine weitere YAML-Datei, die als Eingangsressource fungiert und die Regeln dafür enthält, wie HAProxy Ihren Datenverkehr weiterleiten soll. Stellen Sie sicher, dass Sie den richtigen Domänennamen (Host) verwenden, auf den Sie abzielen, und passen Sie die Benennung und den gewünschten Port an, um den eingehenden Datenverkehr zu akzeptieren.

Speichern Sie die HAProxy-Ingress-Ressourcendatei und stellen Sie sie wie beim Controller bereit.

$ minikube kubectl -- anwenden -F < Dateiname >

Wir nennen unsere Ingress-Ressource „linuxhint-ingresscontroller.yaml“.

Das ist es! Mit dem folgenden Befehl können Sie überprüfen, ob Ihr HAProxy-Ingress-Controller funktioniert, indem Sie den Port überprüfen, der dem NodePort zugewiesen ist.

$ minikube kubectl -- Holen Sie sich den Dienst haproxy-kubernetes-ingress --namespace Haproxy-Controller

In diesem Fall wird ihm der Port 32448 zugewiesen. Sie können über den Port auf den erstellten Dienst zugreifen und dessen Status überprüfen.

Damit ist es Ihnen gelungen, HAProxy als Ingress-Controller in einer Kubernetes-Umgebung zu verwenden.

Abschluss

Mit einem Ingress-Controller können Sie basierend auf den Regeln, die in Ihrer Ingress-Ressourcendatei definiert sind, definieren, wie der Datenverkehr zu Ihrem Cluster verarbeitet werden soll. HAProxy ist ein zuverlässiger Ingress-Controller, den Sie in einem Kubernetes-Cluster verwenden können. In diesem Beitrag wurde erläutert, welche Schritte Sie befolgen sollten, um ihn zu verwenden. Probieren Sie es aus und genießen Sie die Verwendung von HAProxy als Ingress-Controller.