Kubernetes 환경에서 HAProxy를 수신 컨트롤러로 사용하는 방법

Kubernetes Hwangyeong Eseo Haproxyleul Susin Keonteulolleolo Sayonghaneun Bangbeob



Kubernetes는 컨테이너화된 애플리케이션 배포, 확장 및 관리를 자동화하려는 모든 사람에게 이상적인 옵션입니다. Kubernetes 환경에서는 Kubernetes 클러스터 서비스에 대한 외부 액세스를 관리하는 데 수신 컨트롤러가 필수적입니다. 수신 컨트롤러는 라우팅을 정의하고 서비스에 대한 트래픽을 제어하는 ​​방법을 정의할 수 있는 외부 트래픽의 진입 공간 역할을 합니다. 다양한 수신 제어를 사용할 수 있지만 이 경우 HAProxy에 중점을 두고 이를 사용하여 수신 리소스에 정의한 규칙을 구현하겠습니다.

수신 컨트롤러란 무엇입니까?

수신 컨트롤러는 사용자가 Kubernetes 클러스터 내 서비스 액세스를 관리하고 제어할 수 있게 해주는 구성 요소입니다. 수신 컨트롤러에는 두 가지 핵심 요소가 있습니다.

  1. 수신 리소스 – 지정된 호스트 이름과 경로를 기반으로 클러스터 내 서비스의 트래픽을 라우팅하는 규칙을 정의하는 Kubernetes API 객체입니다.
  2. 수신 컨트롤러 – 수신 리소스에 지정된 규칙을 구현하는 HAProxy, Traefik 또는 NGINX와 같은 소프트웨어 구성 요소입니다. 수신 객체에 대한 변경 사항을 기반으로 트래픽을 처리하도록 로드 밸런서를 구성합니다.

Kubernetes 환경에서 HAProxy를 수신 컨트롤러로 사용하는 방법

수신 컨트롤러가 무엇이고 왜 필요한지 이해한 후 다음 작업은 이를 사용하는 단계를 다루는 것입니다. 우리의 경우 제공된 단계에 따라 HAProxy를 수신 컨트롤러로 설정했습니다.







해당사항 없음: Kubernetes 클러스터가 시작되어 실행 중인지 확인하세요. 그런 다음 다음과 같이 진행하십시오.



1단계: Kubernetes 클러스터 시작
Kubernetes 클러스터를 설정하고 시작하는 방법에는 여러 가지가 있습니다. 이 가이드에서는 Minikube를 사용합니다. 특히 머신에 로컬로 Kubernetes가 있는 경우 가상 머신이나 Docker 내에 Kubernetes를 배포하는 간단한 방법을 제공하는 도구입니다.



다음을 참조하세요. Minikube 문서 플랫폼에 사용할 설치 명령에 대해 설명합니다. 이 경우 안정적인 'x64' Linux 아키텍처를 실행하고 다음 명령을 실행합니다.





$ 컬 -그것 https: // Storage.googleapis.com / minikube / 릴리스 / 최신 / minikube-linux-amd64
$ sudo 설치하다 minikube-linux-amd64 / 우리 / 현지의 / 큰 상자 / minikube

첫 번째 명령은 안정적인 최신 Minikube 바이너리를 가져오는 반면, 두 번째 명령은 바이너리를 설치하고 지정된 경로로 이동합니다.

Minikube를 설치한 후 이를 시작하여 클러스터를 불러옵니다.



$ 미니쿠베 시작

그런 다음 클러스터에 액세스하려면 kubectl을 설치해야 합니다. 그러나 Minikube와 함께 제공되는 kubectl 버전을 사용할 수 있습니다. 예를 들어 실행 중인 Pod의 세부 정보를 확인하려면 다음과 같이 'kubectl' 명령을 실행합니다.

$ minikube kubectl -- 꼬투리 얻기 -ㅏ

이렇게 하면 kubectl을 설치할 필요가 없습니다. (-)는 해당 명령이 Minikube가 아닌 kubectl에 대한 것임을 나타냅니다.

2단계: 네임스페이스 생성
두 번째 단계에서는 수신 컨트롤러에 대한 전용 네임스페이스를 만드는 작업이 포함됩니다. 우리는 네임스페이스를 “haproxy-controller”로 명명했습니다.

$ minikube kubectl 네임스페이스 haproxy-controller 생성

3단계: HAProxy 수신 컨트롤러 생성 및 배포
수신 컨트롤러를 생성하는 방법은 달성하려는 목표에 따라 다릅니다. 예를 들어 HAProxy 수신 컨트롤러를 생성하여 요청된 호스트 이름에 따라 HTTP 트래픽을 라우팅할 수 있습니다. 이러한 경우에는 먼저 DNS 서버에 액세스하고 'A' 레코드를 생성하여 대상 호스트 이름을 클러스터에 매핑하세요.

올바른 'A' 레코드가 있으면 다음 이미지에 표시된 대로 수신 컨트롤러 YAML 파일을 생성합니다. 첫 번째 섹션에서는 'jmalloc/echo-server' Docker 컨테이너 이미지를 예로 사용하는 배포 리소스를 생성했습니다.

YAML 파일의 두 번째 섹션에서는 4단계에서 생성된 수신 컨트롤러에서 요청된 호스트 이름을 기반으로 매핑되는 서비스 리소스를 생성했습니다.

파일을 저장하고 kubectl을 사용하여 클러스터에 배포합니다. 우리의 경우에는 다음 명령을 실행하여 Minikube kubectl을 참조합니다. HAProxy 수신 컨트롤러는 'linuxhint-jmaildeployment.yaml'입니다.

$ minikube kubectl -- 적용하다 -에프 < 파일 이름 >

서비스가 생성되었음을 보여주는 출력을 얻은 후에는 다음 명령을 사용하여 해당 서비스가 배포되었는지 추가로 확인할 수 있습니다.

$ minikube kubectl -- 꼬투리 얻기 --네임스페이스 haproxy 컨트롤러

1단계에서 생성한 올바른 네임스페이스를 사용하고 있는지 확인하십시오. 서비스를 사용할 수 있음을 확인하는 출력이 표시됩니다. 이는 배포가 성공했음을 의미합니다.

4단계: 수신 리소스 생성 및 배포
HAProxy가 트래픽을 라우팅하는 방법에 대한 규칙이 포함된 수신 리소스 역할을 하는 다른 YAML 파일을 만듭니다. 대상으로 삼는 올바른 도메인 이름(호스트)을 사용하고 이름 지정 및 원하는 포트를 조정하여 수신 트래픽을 허용하는지 확인하십시오.

HAProxy 수신 리소스 파일을 저장하고 컨트롤러에서 했던 것처럼 배포합니다.

$ minikube kubectl -- 적용하다 -에프 < 파일 이름 >

수신 리소스의 이름을 'linuxhint-ingresscontroller.yaml'로 지정합니다.

그게 다야! 다음 명령을 사용하면 NodePort에 할당된 포트를 확인하여 HAProxy 수신 컨트롤러가 작동하는지 확인할 수 있습니다.

$ minikube kubectl -- 서비스 haproxy-kubernetes-ingress 가져오기 --네임스페이스 haproxy 컨트롤러

이 경우에는 32448 포트가 할당되어 있습니다. 해당 포트를 이용하여 생성된 서비스에 접속하여 상태를 확인할 수 있습니다.

이를 통해 Kubernetes 환경에서 HAProxy를 수신 컨트롤러로 사용할 수 있었습니다.

결론

수신 컨트롤러를 사용하면 수신 리소스 파일에 정의된 규칙을 기반으로 클러스터에 대한 트래픽을 처리하는 방법을 정의할 수 있습니다. HAProxy는 Kubernetes 클러스터 내에서 사용할 수 있는 안정적인 수신 컨트롤러이며, 이 게시물에서는 이를 사용하기 위해 따라야 하는 단계를 다루었습니다. 시험해보고 HAProxy를 수신 컨트롤러로 사용해 보세요.