Come utilizzare HAProxy come controller di ingresso nell'ambiente Kubernetes

Come Utilizzare Haproxy Come Controller Di Ingresso Nell Ambiente Kubernetes



Kubernetes è l'opzione ideale per chiunque desideri automatizzare la distribuzione, il ridimensionamento e la gestione di applicazioni containerizzate. In un ambiente Kubernetes, un controller di ingresso è essenziale per gestire un accesso esterno a qualsiasi servizio cluster Kubernetes. Il controller di ingresso funge da spazio di ingresso per il traffico esterno che consente di definire l'instradamento e il modo in cui si desidera controllare il traffico al servizio. È possibile utilizzare diversi controlli di ingresso, ma in questo caso ci concentreremo su HAProxy e lo utilizzeremo per implementare le regole che definiamo nella nostra risorsa di ingresso.

Che cos'è un controller di ingresso?

Un controller di ingresso è un componente che consente agli utenti di gestire e controllare l'accesso ai servizi all'interno del proprio cluster Kubernetes. Il controller di ingresso ha due elementi chiave:

  1. La risorsa di ingresso – È un oggetto API Kubernetes che definisce le regole per instradare il traffico dei servizi nel cluster in base al nome host e ai percorsi specificati.
  2. Il controllore di ingresso – È un componente software come HAProxy, Traefik o NGINX che implementa le regole specificate nella risorsa di ingresso. Configura il sistema di bilanciamento del carico per gestire il traffico in base alle modifiche apportate agli oggetti in ingresso.

Come utilizzare HAProxy come controller di ingresso nell'ambiente Kubernetes

Dopo aver capito cos'è un controller di ingresso e perché ne hai bisogno, il compito successivo è coprire i passaggi per utilizzarlo. Nel nostro caso, abbiamo configurato HAProxy come controller di ingresso seguendo i passaggi forniti.







N/B: Assicurati di avere il tuo cluster Kubernetes attivo e funzionante. Quindi, procedere come segue.



Passaggio 1: avvia il tuo cluster Kubernetes
Esistono diversi modi per configurare e avviare un cluster Kubernetes. Per questa guida utilizziamo Minikube. È uno strumento che offre un modo semplicistico di distribuire Kubernetes all'interno di una macchina virtuale o Docker, soprattutto se hai Kubernetes localmente sulla tua macchina.



Fare riferimento al Documentazione Minikube sui comandi di installazione da utilizzare per la tua piattaforma. In questo caso, utilizziamo un'architettura Linux stabile “x64” ed eseguiamo i seguenti comandi:





$ ricciolo -ESSO https: // storage.googleapis.com / minikube / rilascia / ultimo / minikube-linux-amd64
$ sudo installare minikube-linux-amd64 / usr / Locale / bidone / minikube

Il primo comando acquisisce l'ultimo binario Minikube stabile, mentre il secondo comando installa e sposta il binario nel percorso specificato.

Una volta installato Minikube, avvialo per visualizzare il cluster.



$ Inizio minikube

Devi quindi avere kubectl installato per accedere al cluster. Puoi tuttavia utilizzare la versione kubectl disponibile con Minikube. Ad esempio, per verificare i dettagli dei pod in esecuzione, esegui il comando 'kubectl' come segue:

$ minikube kubectl -- prendi i baccelli -UN

In questo modo non è necessario che sia installato kubectl. Il (-) segnala che i comandi sono per kubectl, non per Minikube.

Passaggio 2: crea uno spazio dei nomi
Il secondo passaggio prevede la creazione di uno spazio dei nomi dedicato per il controller di ingresso. Abbiamo chiamato lo spazio dei nomi 'haproxy-controller'.

$ minikube kubectl crea il namespace haproxy-controller

Passaggio 3: creare e distribuire il controller di ingresso HAProxy
Il modo in cui crei il controller di ingresso dipende da ciò che desideri ottenere. Ad esempio, puoi creare un controller di ingresso HAProxy per instradare un traffico HTTP in base al nome host richiesto. In tal caso, inizia accedendo al tuo server DNS e creando un record 'A' per mappare il nome host di destinazione sul tuo cluster.

Una volta ottenuto il record 'A' corretto, crea il file YAML del controller di ingresso come mostrato nell'immagine seguente. Nella prima sezione, abbiamo creato una risorsa di distribuzione che utilizza l'immagine del contenitore Docker 'jmalloc/echo-server' come esempio.

Nella seconda sezione del file YAML, abbiamo creato la risorsa Service che viene mappata in base al nome host richiesto nel controller di ingresso creato nel passaggio 4.

Salva il file e distribuiscilo nel tuo cluster utilizzando kubectl. Facciamo riferimento al Minikube kubectl eseguendo il seguente comando per il nostro caso. Il nostro controller di ingresso HAProxy è 'linuxhint-jmaildeployment.yaml'.

$ minikube kubectl -- fare domanda a -F < nome del file >

Una volta ottenuto un output che mostra che il servizio è stato creato, puoi verificare ulteriormente che sia stato distribuito utilizzando il seguente comando:

$ minikube kubectl -- prendi i baccelli --spazio dei nomi controller aproxy

Assicurati di utilizzare lo spazio dei nomi corretto creato nel passaggio 1. Otterrai un output che conferma che il servizio è disponibile, il che significa che la distribuzione ha avuto esito positivo.

Passaggio 4: creare e distribuire una risorsa di ingresso
Crea un altro file YAML che funge da risorsa di ingresso che contiene le regole su come HAProxy deve instradare il traffico. Assicurati di utilizzare il nome di dominio (host) corretto a cui ti rivolgi e modifica la denominazione e la porta desiderata per accettare il traffico in entrata.

Salvare il file di risorse di ingresso HAProxy e distribuirlo come abbiamo fatto con il controller.

$ minikube kubectl -- fare domanda a -F < nome del file >

Chiamiamo la nostra risorsa di ingresso 'linuxhint-ingresscontroller.yaml'.

Questo è tutto! Con il comando seguente è possibile verificare che il controller di ingresso HAProxy funzioni controllando la porta assegnata a NodePort.

$ minikube kubectl -- ottenere il servizio haproxy-kubernetes-ingress --spazio dei nomi controller aproxy

In questo caso gli viene assegnata la porta 32448. Puoi accedere al servizio creato utilizzando la porta e verificarne lo stato.

In questo modo, sei riuscito a utilizzare HAProxy come controller di ingresso in un ambiente Kubernetes.

Conclusione

Un controller di ingresso ti consente di definire come gestire il traffico verso il tuo cluster in base alle regole definite nel file di risorse di ingresso. HAProxy è un controller di ingresso affidabile che puoi utilizzare all'interno di un cluster Kubernetes e questo post illustra i passaggi da seguire per utilizzarlo. Provalo e divertiti a utilizzare HAProxy come controller di ingresso.