Sådan bruges HAProxy som en Ingress-controller i Kubernetes-miljøet

Sadan Bruges Haproxy Som En Ingress Controller I Kubernetes Miljoet



Kubernetes er den ideelle mulighed for alle, der ønsker at automatisere en containeriseret applikationsimplementering, skalering og administration. I et Kubernetes-miljø er en indgangscontroller essentiel til at administrere en ekstern adgang til enhver Kubernetes-klyngetjeneste. Ingresscontrolleren fungerer som indgangsrum for ekstern trafik, som giver dig mulighed for at definere ruten, og hvordan du ønsker at styre trafikken til tjenesten. Du kan bruge forskellige indgangskontroller, men i dette tilfælde vil vi fokusere på HAProxy og bruge det til at implementere de regler, som vi definerer i vores indgangsressource.

Hvad er en Ingress Controller?

En ingress-controller er en komponent, der giver brugerne mulighed for at administrere og kontrollere adgangen til tjenester i deres Kubernetes-klynge. Indgangscontrolleren har to nøgleelementer:

  1. Ingress-ressourcen – Det er et Kubernetes API-objekt, der definerer reglerne for routing af trafikken for tjenesterne i klyngen baseret på det angivne værtsnavn og stier.
  2. Ingress-controlleren – Det er en softwarekomponent såsom HAProxy, Traefik eller NGINX, der implementerer de regler, der er specificeret i indgangsressourcen. Den konfigurerer belastningsbalanceren til at håndtere trafikken baseret på de ændringer, der er foretaget i indgangsobjekterne.

Sådan bruges HAProxy som en Ingress-controller i Kubernetes-miljøet

Efter at have forstået, hvad en ingress-controller er, og hvorfor du har brug for den, er den næste opgave at dække trinene for at bruge den. I vores tilfælde konfigurerede vi HAProxy som vores indgangscontroller ved at følge de angivne trin.







N/B: Sørg for, at du har din Kubernetes-klynge oppe og køre. Fortsæt derefter som følger.



Trin 1: Start din Kubernetes-klynge
Der er forskellige måder at opsætte og starte en Kubernetes-klynge på. Til denne guide bruger vi Minikube. Det er et værktøj, der tilbyder en forenklet måde at implementere Kubernetes inde i en virtuel maskine eller Docker, især hvis du har dine Kubernetes lokalt på din maskine.



Der henvises til Minikube dokumentation på de installationskommandoer, der skal bruges til din platform. I dette tilfælde kører vi en stabil 'x64' Linux-arkitektur og kører følgende kommandoer:





$ krølle -DET https: // storage.googleapis.com / minikube / udgivelser / seneste / minikube-linux-amd64
$ sudo installere minikube-linux-amd64 / usr / lokal / beholder / minikube

Den første kommando griber den seneste stabile Minikube-binære, mens den anden kommando installerer og flytter den binære ind i den angivne sti.

Når du har installeret Minikube, skal du starte den for at hente klyngen frem.



$ minikube start

Du skal derefter have kubectl installeret for at få adgang til klyngen. Du kan dog bruge kubectl-versionen, der er tilgængelig med Minikube. For eksempel, for at kontrollere detaljerne for de kørende pods, udfører du kommandoen 'kubectl' som følger:

$ minikube kubectl -- få bælg -EN

På den måde behøver du ikke have kubectl installeret. (–) signalerer, at kommandoerne er til kubectl, ikke Minikube.

Trin 2: Opret et navneområde
Det andet trin involverer oprettelse af et dedikeret navneområde til ingress-controlleren. Vi navngav navneområdet som 'haproxy-controller'.

$ minikube kubectl create namespace haproxy-controller

Trin 3: Opret og implementer HAProxy Ingress Controller
Hvordan du opretter indgangscontrolleren afhænger af, hvad du ønsker at opnå. For eksempel kan du oprette en HAProxy-indgangscontroller til at dirigere en HTTP-trafik afhængigt af det anmodede værtsnavn. I et sådant tilfælde skal du starte med at få adgang til din DNS-server og oprette en 'A'-record for at kortlægge målværtsnavnet til din klynge.

Når du har din korrekte 'A'-record, skal du oprette din ingress controller YAML-fil som vist på det følgende billede. I det første afsnit oprettede vi en implementeringsressource, der bruger 'jmalloc/echo-server' Docker-containerbilledet som vores eksempel.

I den anden sektion af YAML-filen oprettede vi serviceressourcen, som bliver kortlagt baseret på det værtsnavn, der anmodes om i ingresscontrolleren, som oprettes i trin 4.

Gem filen og implementer den til din klynge ved hjælp af kubectl. Vi henviser til Minikube kubectl ved at køre følgende kommando for vores sag. Vores HAProxy-indgangscontroller er 'linuxhint-jmaildeployment.yaml'.

$ minikube kubectl -- ansøge -f < filnavn >

Når du får et output, der viser, at tjenesten er blevet oprettet, kan du yderligere bekræfte, at den er blevet implementeret ved hjælp af følgende kommando:

$ minikube kubectl -- få bælg --navneområde haproxy-controller

Sørg for, at du bruger det korrekte navneområde, som du oprettede i trin 1. Du får et output, der bekræfter, at tjenesten er tilgængelig, hvilket betyder, at implementeringen var vellykket.

Trin 4: Opret og implementer en Ingress-ressource
Opret endnu en YAML-fil, der fungerer som den indgående ressource, der indeholder reglerne for, hvordan HAProxy skal dirigere din trafik. Sørg for, at du bruger det korrekte domænenavn (vært), som du målretter mod, og juster navngivningen og den ønskede port for at acceptere den indgående trafik.

Gem HAProxy-indgangsressourcefilen, og implementer den, som vi gjorde med controlleren.

$ minikube kubectl -- ansøge -f < filnavn >

Vi navngiver vores indgangsressource som 'linuxhint-ingresscontroller.yaml'.

Det er det! Med følgende kommando kan du bekræfte, at din HAProxy-indgangscontroller fungerer ved at kontrollere den port, der er tildelt til NodePort.

$ minikube kubectl -- få service haproxy-kubernetes-ingress --navneområde haproxy-controller

I dette tilfælde er den tildelt port 32448. Du kan få adgang til den oprettede tjeneste ved hjælp af porten og kontrollere dens status.

Med det lykkedes det dig at bruge HAProxy som en ingress-controller i et Kubernetes-miljø.

Konklusion

En ingress-controller lader dig definere, hvordan du skal håndtere trafikken til din klynge baseret på de regler, der er defineret i din ingress-ressourcefil. HAProxy er en pålidelig indgangscontroller, som du kan bruge i en Kubernetes-klynge, og dette indlæg dækkede, hvilke trin du skal følge for at bruge det. Prøv det og nyd at bruge HAProxy som din ingress controller.