Paano Gamitin ang HAProxy bilang Ingress Controller sa Kubernetes Environment

Paano Gamitin Ang Haproxy Bilang Ingress Controller Sa Kubernetes Environment



Ang Kubernetes ay ang perpektong opsyon para sa sinumang naghahanap upang i-automate ang isang containerized na pag-deploy ng application, pag-scale, at pamamahala. Sa isang kapaligiran ng Kubernetes, mahalaga ang isang ingress controller sa pamamahala ng external na access sa anumang serbisyo ng cluster ng Kubernetes. Ang ingress controller ay nagsisilbing entry space para sa panlabas na trapiko na nagbibigay-daan sa iyong tukuyin ang pagruruta at kung paano mo gustong kontrolin ang trapiko sa serbisyo. Maaari kang gumamit ng iba't ibang mga kontrol sa pagpasok, ngunit para sa kasong ito, tututukan namin ang HAProxy at gagamitin namin ito upang ipatupad ang mga panuntunang tinukoy namin sa aming mapagkukunan ng pagpasok.

Ano ang Ingress Controller?

Ang ingress controller ay isang component na nagbibigay-daan sa mga user na pamahalaan at kontrolin ang pag-access ng mga serbisyo sa loob ng kanilang Kubernetes cluster. Ang ingress controller ay may dalawang pangunahing elemento:

  1. Ang Ingress Resource – Ito ay isang object ng Kubernetes API na tumutukoy sa mga panuntunan para sa pagruruta ng trapiko ng mga serbisyo sa cluster batay sa tinukoy na hostname at mga path.
  2. Ang Ingress Controller – Ito ay isang bahagi ng software tulad ng HAProxy, Traefik, o NGINX na nagpapatupad ng mga patakaran na tinukoy sa mapagkukunan ng pagpasok. Kino-configure nito ang load balancer para pangasiwaan ang trapiko batay sa mga pagbabagong ginawa sa mga bagay na papasok.

Paano Gamitin ang HAProxy bilang Ingress Controller sa Kubernetes Environment

Ang pagkakaroon ng naunawaan kung ano ang isang ingress controller at kung bakit mo ito kailangan, ang susunod na gawain ay upang masakop ang mga hakbang sa paggamit nito. Para sa aming kaso, nag-set up kami ng HAProxy bilang aming ingress controller kasunod ng mga ibinigay na hakbang.







N/B: Tiyaking nakabukas at tumatakbo ang iyong cluster ng Kubernetes. Pagkatapos, magpatuloy bilang mga sumusunod.



Hakbang 1: Simulan ang Iyong Kubernetes Cluster
Mayroong iba't ibang paraan ng pag-set up at pagsisimula ng isang Kubernetes cluster. Para sa gabay na ito, ginagamit namin ang Minikube. Ito ay isang tool na nag-aalok ng isang simplistic na paraan ng pag-deploy ng mga Kubernetes sa loob ng isang virtual machine o Docker, lalo na kung mayroon kang lokal na Kubernetes sa iyong makina.



Sumangguni sa Dokumentasyon ng Minikube sa mga utos sa pag-install na gagamitin para sa iyong platform. Para sa kasong ito, nagpapatakbo kami ng isang matatag na arkitektura ng Linux na 'x64' at pinapatakbo ang mga sumusunod na command:





$ kulot -IT https: // storage.googleapis.com / minikube / naglalabas / pinakabago / minikube-linux-amd64
$ sudo i-install minikube-linux-amd64 / usr / lokal / bin / minikube

Kinukuha ng unang command ang pinakabagong stable na Minikube binary, habang ini-install at inililipat ng pangalawang command ang binary sa tinukoy na path.

Kapag na-install mo na ang Minikube, simulan ito upang ilabas ang cluster.



$ simula ng minikube

Dapat ay mayroon kang kubectl na naka-install upang ma-access ang cluster. Gayunpaman, maaari mong gamitin ang kubectl na bersyon na available sa Minikube. Halimbawa, upang suriin ang mga detalye ng mga tumatakbong pod, isagawa mo ang command na 'kubectl' tulad ng sumusunod:

$ minikube kubectl -- kumuha ng pods -A

Sa ganoong paraan, hindi mo kailangang i-install ang kubectl. Ang (–) ay nagpapahiwatig na ang mga utos ay para sa kubectl, hindi Minikube.

Hakbang 2: Gumawa ng Namespace
Ang ikalawang hakbang ay nagsasangkot ng paglikha ng nakalaang namespace para sa ingress controller. Pinangalanan namin ang namespace bilang 'haproxy-controller'.

$ minikube kubectl lumikha ng namespace haproxy-controller

Hakbang 3: Gumawa at I-deploy ang HAProxy Ingress Controller
Kung paano mo gagawin ang ingress controller ay depende sa kung ano ang gusto mong makamit. Halimbawa, maaari kang lumikha ng isang HAProxy ingress controller upang iruta ang isang HTTP na trapiko depende sa hiniling na hostname. Para sa ganoong kaso, magsimula sa pamamagitan ng pag-access sa iyong DNS server at paglikha ng isang 'A' na tala upang imapa ang target na hostname sa iyong cluster.

Kapag nakuha mo na ang iyong tamang 'A' na tala, likhain ang iyong ingress controller na YAML file tulad ng ipinapakita sa sumusunod na larawan. Sa unang seksyon, gumawa kami ng Deployment na mapagkukunan na gumagamit ng 'jmalloc/echo-server' na larawan ng container ng Docker bilang aming halimbawa.

Sa pangalawang seksyon ng YAML file, ginawa namin ang Service resource na namamapa batay sa hostname na hinihiling sa ingress controller na ginawa sa hakbang 4.

I-save ang file at i-deploy ito sa iyong cluster gamit ang kubectl. Tinutukoy namin ang Minikube kubectl sa pamamagitan ng pagpapatakbo ng sumusunod na command para sa aming kaso. Ang aming HAProxy ingress controller ay 'linuxhint-jmaildeployment.yaml'.

$ minikube kubectl -- mag-apply -f < file_name >

Kapag nakakuha ka ng isang output na nagpapakita na ang serbisyo ay nilikha, maaari mong higit pang i-verify na ito ay na-deploy gamit ang sumusunod na command:

$ minikube kubectl -- kumuha ng pods --namespace haproxy-controller

Tiyaking ginagamit mo ang tamang namespace na ginawa mo sa hakbang 1. Makakakuha ka ng output na nagpapatunay na available ang serbisyo na nangangahulugang matagumpay ang deployment.

Hakbang 4: Gumawa at Mag-deploy ng Ingress Resource
Gumawa ng isa pang YAML file na nagsisilbing mapagkukunan ng pagpasok na naglalaman ng mga panuntunan kung paano dapat iruta ng HAProxy ang iyong trapiko. Tiyaking ginagamit mo ang tamang domain name (host) na iyong tina-target at isaayos ang pagpapangalan at ang gustong port upang tanggapin ang papasok na trapiko.

I-save ang HAProxy ingress resource file at i-deploy ito tulad ng ginawa namin sa controller.

$ minikube kubectl -- mag-apply -f < file_name >

Pinangalanan namin ang aming ingress resource bilang 'linuxhint-ingresscontroller.yaml'.

Ayan yun! Gamit ang sumusunod na command, maaari mong i-verify na gumagana ang iyong HAProxy ingress controller sa pamamagitan ng pagsuri sa port na nakatalaga sa NodePort.

$ minikube kubectl -- kumuha ng serbisyo haproxy-kubernetes-ingress --namespace haproxy-controller

Para sa kasong ito, itinalaga ito sa port 32448. Maaari mong i-access ang ginawang serbisyo gamit ang port at tingnan ang status nito.

Sa pamamagitan nito, nagawa mong gamitin ang HAProxy bilang isang ingress controller sa isang Kubernetes na kapaligiran.

Konklusyon

Nagbibigay-daan sa iyo ang isang ingress controller na tukuyin kung paano pangasiwaan ang trapiko sa iyong cluster batay sa mga panuntunang tinukoy sa iyong ingress resource file. Ang HAProxy ay isang maaasahang ingress controller na magagamit mo sa loob ng isang Kubernetes cluster, at ang post na ito ay sumasaklaw sa kung anong mga hakbang ang dapat mong sundin upang magamit ito. Subukan ito at mag-enjoy sa paggamit ng HAProxy bilang iyong ingress controller.