Hoe u HAProxy gebruikt als Ingress-controller in de Kubernetes-omgeving

Hoe U Haproxy Gebruikt Als Ingress Controller In De Kubernetes Omgeving



Kubernetes is de ideale optie voor iedereen die de implementatie, schaalbaarheid en het beheer van containerapplicaties wil automatiseren. In een Kubernetes-omgeving is een ingangscontroller essentieel voor het beheren van externe toegang tot elke Kubernetes-clusterservice. De ingangscontroller fungeert als toegangsruimte voor extern verkeer, waarmee u de routering kunt definiëren en hoe u het verkeer naar de service wilt beheren. U kunt verschillende ingangscontroles gebruiken, maar in dit geval zullen we ons concentreren op HAProxy en deze gebruiken om de regels te implementeren die we definiëren in onze ingangsbron.

Wat is een Ingress-controller?

Een ingangscontroller is een component waarmee gebruikers de toegang tot services binnen hun Kubernetes-cluster kunnen beheren en controleren. De ingangscontroller heeft twee belangrijke elementen:

  1. De Ingress-bron – Het is een Kubernetes API-object dat de regels definieert voor het routeren van het verkeer van de services in het cluster op basis van de opgegeven hostnaam en paden.
  2. De Ingress-controller – Het is een softwarecomponent zoals HAProxy, Traefik of NGINX die de regels implementeert die zijn gespecificeerd in de ingangsbron. Het configureert de load balancer om het verkeer af te handelen op basis van de wijzigingen die zijn aangebracht in de ingangsobjecten.

Hoe u HAProxy gebruikt als Ingress-controller in de Kubernetes-omgeving

Nu u begrijpt wat een ingangscontroller is en waarom u deze nodig heeft, is de volgende taak het bespreken van de stappen om deze te gebruiken. Voor ons geval hebben we HAProxy ingesteld als onze ingangscontroller door de gegeven stappen te volgen.







N/B: Zorg ervoor dat uw Kubernetes-cluster actief is. Ga dan als volgt te werk.



Stap 1: Start uw Kubernetes-cluster
Er zijn verschillende manieren om een ​​Kubernetes-cluster op te zetten en te starten. Voor deze handleiding gebruiken we Minikube. Het is een tool die een simplistische manier biedt om Kubernetes in een virtuele machine of Docker te implementeren, vooral als je Kubernetes lokaal op je machine hebt staan.



Verwijs naar de Minikube-documentatie over de installatieopdrachten die u voor uw platform moet gebruiken. Voor dit geval gebruiken we een stabiele “x64” Linux-architectuur en voeren we de volgende opdrachten uit:





$ krul -HET https: // storage.googleapis.com / minikube / releases / laatste / minikube-linux-amd64
$ sudo installeren minikube-linux-amd64 / usr / lokaal / bak / minikube

Het eerste commando pakt het nieuwste stabiele Minikube-binaire bestand, terwijl het tweede commando het binaire bestand installeert en naar het opgegeven pad verplaatst.

Nadat u Minikube hebt geïnstalleerd, start u het om het cluster te openen.



$ minikube starten

Vervolgens moet kubectl zijn geïnstalleerd om toegang te krijgen tot het cluster. U kunt echter de kubectl-versie gebruiken die beschikbaar is bij Minikube. Om bijvoorbeeld de details van de actieve pods te controleren, voert u de opdracht “kubectl” als volgt uit:

$ minikube kubectl -- peulen krijgen -A

Op die manier hoeft kubectl niet geïnstalleerd te zijn. De (–) geeft aan dat de opdrachten voor kubectl zijn, niet voor Minikube.

Stap 2: Maak een naamruimte
De tweede stap omvat het maken van een speciale naamruimte voor de ingangscontroller. We hebben de naamruimte 'haproxy-controller' genoemd.

$ minikube kubectl maakt naamruimte haproxy-controller

Stap 3: Maak en implementeer de HAProxy Ingress-controller
Hoe u de ingangscontroller maakt, hangt af van wat u wilt bereiken. U kunt bijvoorbeeld een HAProxy-ingangscontroller maken om HTTP-verkeer te routeren, afhankelijk van de aangevraagde hostnaam. In een dergelijk geval begint u met het benaderen van uw DNS-server en het maken van een “A”-record om de doelhostnaam aan uw cluster toe te wijzen.

Zodra u over de juiste “A”-record beschikt, maakt u uw YAML-bestand voor de ingangscontroller, zoals weergegeven in de volgende afbeelding. In de eerste sectie hebben we een implementatiebron gemaakt die de Docker-containerimage 'jmalloc/echo-server' als voorbeeld gebruikt.

In de tweede sectie van het YAML-bestand hebben we de servicebron gemaakt die in kaart wordt gebracht op basis van de hostnaam die wordt opgevraagd in de ingangscontroller die in stap 4 is gemaakt.

Sla het bestand op en implementeer het in uw cluster met kubectl. We verwijzen naar de Minikube kubectl door de volgende opdracht voor ons geval uit te voeren. Onze HAProxy-ingangscontroller is 'linuxhint-jmaildeployment.yaml'.

$ minikube kubectl -- toepassen -F < bestandsnaam >

Zodra u een uitvoer ontvangt waaruit blijkt dat de service is gemaakt, kunt u verder verifiëren dat deze is geïmplementeerd met behulp van de volgende opdracht:

$ minikube kubectl -- peulen krijgen --naamruimte haproxy-controller

Zorg ervoor dat u de juiste naamruimte gebruikt die u in stap 1 heeft gemaakt. U krijgt een uitvoer die bevestigt dat de service beschikbaar is, wat betekent dat de implementatie succesvol was.

Stap 4: Maak en implementeer een Ingress-resource
Maak nog een YAML-bestand dat fungeert als ingangsbron en dat de regels bevat voor de manier waarop HAProxy uw verkeer moet routeren. Zorg ervoor dat u de juiste domeinnaam (host) gebruikt waarop u zich richt en pas de naamgeving en de gewenste poort aan om het binnenkomende verkeer te accepteren.

Sla het HAProxy-ingangsbronbestand op en implementeer het zoals we deden met de controller.

$ minikube kubectl -- toepassen -F < bestandsnaam >

We noemen onze ingangsbron 'linuxhint-ingresscontroller.yaml'.

Dat is het! Met de volgende opdracht kunt u verifiëren dat uw HAProxy-ingangscontroller werkt door de poort te controleren die is toegewezen aan de NodePort.

$ minikube kubectl -- krijg service haproxy-kubernetes-ingress --naamruimte haproxy-controller

In dit geval wordt poort 32448 toegewezen. U kunt via de poort toegang krijgen tot de gemaakte service en de status ervan controleren.

Daarmee is het je gelukt om HAProxy in te zetten als ingress-controller in een Kubernetes-omgeving.

Conclusie

Met een ingangscontroller kunt u definiëren hoe u het verkeer naar uw cluster moet afhandelen op basis van de regels die zijn gedefinieerd in uw ingangsbronbestand. HAProxy is een betrouwbare ingangscontroller die u binnen een Kubernetes-cluster kunt gebruiken, en in dit bericht wordt beschreven welke stappen u moet volgen om deze te gebruiken. Probeer het uit en geniet van het gebruik van HAProxy als uw ingangscontroller.