Slik bruker du HAProxy som en Ingress-kontroller i Kubernetes-miljø

Slik Bruker Du Haproxy Som En Ingress Kontroller I Kubernetes Miljo



Kubernetes er det ideelle alternativet for alle som ønsker å automatisere en containerisert applikasjonsdistribusjon, skalering og administrasjon. I et Kubernetes-miljø er en inngangskontroller avgjørende for å administrere en ekstern tilgang til enhver Kubernetes-klyngetjeneste. Inngangskontrolleren fungerer som inngangsområdet for ekstern trafikk som lar deg definere rutingen og hvordan du ønsker å kontrollere trafikken til tjenesten. Du kan bruke forskjellige inngangskontroller, men for dette tilfellet vil vi fokusere på HAProxy og bruke det til å implementere reglene som vi definerer i vår inngangsressurs.

Hva er en Ingress Controller?

En ingress-kontroller er en komponent som lar brukerne administrere og kontrollere tilgangen til tjenester innenfor deres Kubernetes-klynge. Inngangskontrolleren har to nøkkelelementer:

  1. Ingress-ressursen – Det er et Kubernetes API-objekt som definerer reglene for å rute trafikken til tjenestene i klyngen basert på det angitte vertsnavnet og stiene.
  2. Inngangskontrolleren – Det er en programvarekomponent som HAProxy, Traefik eller NGINX som implementerer reglene som er spesifisert i inngangsressursen. Den konfigurerer lastbalanseren til å håndtere trafikken basert på endringene som er gjort i inngående objekter.

Slik bruker du HAProxy som en Ingress-kontroller i Kubernetes-miljø

Etter å ha forstått hva en ingress-kontroller er og hvorfor du trenger den, er neste oppgave å dekke trinnene for å bruke den. For vårt tilfelle konfigurerte vi HAProxy som vår inntrengningskontroller ved å følge de angitte trinnene.







N/B: Sørg for at du har Kubernetes-klyngen oppe og går. Fortsett deretter som følger.



Trinn 1: Start Kubernetes-klyngen
Det er forskjellige måter å sette opp og starte en Kubernetes-klynge på. Til denne guiden bruker vi Minikube. Det er et verktøy som tilbyr en forenklet måte å distribuere Kubernetes inne i en virtuell maskin eller Docker, spesielt hvis du har Kubernetes lokalt på maskinen din.



Referere til Minikube dokumentasjon på installasjonskommandoene som skal brukes for plattformen din. For dette tilfellet kjører vi en stabil 'x64' Linux-arkitektur og kjører følgende kommandoer:





$ krøll -DEN https: // storage.googleapis.com / minikube / utgivelser / siste / minikube-linux-amd64
$ sudo installere minikube-linux-amd64 / usr / lokale / bin / minikube

Den første kommandoen henter den siste stabile Minikube-binæren, mens den andre kommandoen installerer og flytter binærfilen til den angitte banen.

Når du har installert Minikube, start den for å få opp klyngen.



$ minikube start

Du må da ha installert kubectl for å få tilgang til klyngen. Du kan imidlertid bruke kubectl-versjonen som er tilgjengelig med Minikube. For eksempel, for å sjekke detaljene til de kjørende podene, utfører du kommandoen 'kubectl' som følger:

$ minikube kubectl -- få poder -EN

På den måten trenger du ikke ha kubectl installert. (–) signaliserer at kommandoene er for kubectl, ikke Minikube.

Trinn 2: Opprett et navneområde
Det andre trinnet innebærer å opprette et dedikert navneområde for inngangskontrolleren. Vi kalte navneområdet som 'haproxy-controller'.

$ minikube kubectl opprette navneområde haproxy-kontroller

Trinn 3: Opprett og distribuer HAProxy Ingress Controller
Hvordan du oppretter ingress-kontrolleren avhenger av hva du ønsker å oppnå. Du kan for eksempel opprette en HAProxy-inngangskontroller for å rute en HTTP-trafikk avhengig av det forespurte vertsnavnet. For et slikt tilfelle, start med å få tilgang til DNS-serveren din og opprette en 'A'-post for å tilordne målvertsnavnet til klyngen din.

Når du har den riktige 'A'-posten, oppretter du YAML-filen for ingresskontroller som vist i bildet nedenfor. I den første delen opprettet vi en distribusjonsressurs som bruker 'jmalloc/echo-server' Docker-beholderbildet som vårt eksempel.

I den andre delen av YAML-filen opprettet vi tjenesteressursen som blir kartlagt basert på vertsnavnet som er forespurt i inngangskontrolleren som opprettes i trinn 4.

Lagre filen og distribuer den til klyngen din ved hjelp av kubectl. Vi refererer til Minikube kubectl ved å kjøre følgende kommando for vårt tilfelle. Vår HAProxy-inngangskontroller er 'linuxhint-jmaildeployment.yaml'.

$ minikube kubectl -- søke om -f < filnavn >

Når du får en utdata som viser at tjenesten er opprettet, kan du ytterligere bekrefte at den har blitt distribuert ved å bruke følgende kommando:

$ minikube kubectl -- få poder --navneområde haproxy-kontroller

Sørg for at du bruker riktig navneområde som du opprettet i trinn 1. Du vil få en utdata som bekrefter at tjenesten er tilgjengelig, noe som betyr at distribusjonen var vellykket.

Trinn 4: Opprett og distribuer en Ingress-ressurs
Lag en annen YAML-fil som fungerer som inngangsressursen som inneholder reglene for hvordan HAProxy skal rute trafikken din. Sørg for at du bruker riktig domenenavn (vert) som du målretter mot, og juster navngivningen og ønsket port for å akseptere innkommende trafikk.

Lagre HAProxy-inngangsressursfilen og distribuer den slik vi gjorde med kontrolleren.

$ minikube kubectl -- søke om -f < filnavn >

Vi kaller inngangsressursen vår som 'linuxhint-ingresscontroller.yaml'.

Det er det! Med følgende kommando kan du bekrefte at HAProxy-inngangskontrolleren fungerer ved å sjekke porten som er tilordnet til NodePort.

$ minikube kubectl -- få tjenesten haproxy-kubernetes-ingress --navneområde haproxy-kontroller

For dette tilfellet er den tildelt port 32448. Du kan få tilgang til den opprettede tjenesten ved å bruke porten og sjekke statusen.

Med det klarte du å bruke HAProxy som en inngangskontroller i et Kubernetes-miljø.

Konklusjon

En ingress-kontroller lar deg definere hvordan du skal håndtere trafikken til klyngen din basert på reglene som er definert i ingress-ressursfilen. HAProxy er en pålitelig inngangskontroller som du kan bruke i en Kubernetes-klynge, og dette innlegget dekket hvilke trinn du bør følge for å bruke den. Prøv det ut og nyt å bruke HAProxy som din ingress-kontroller.