인그레스 컨트롤러 배포
인그레스(Ingress) 는 클러스터 외부에서 내부 서비스로 들어오는 네트워크를 처리하며, 인그레스 컨트롤러는 인그레스 리소스에 정의된 규칙에 따라 클러스터 외부에서 클러스터 내부 서비스로 HTTP와 HTTPS 경로를 노출합니다. 인그레스에 대한 자세한 설명은 Kubernetes 공식 문서를 참고하시기 바랍니다. 클러스터에 인그레스 컨트롤러를 설정하고 배포하는 방법은 다음과 같습니다.
본 가이드는 인그레스 컨트롤러를 배포하는 예시를 설명하는 가이드로, Kubernetes Engine 서비스는 인그레스 컨트롤러의 지원을 포함하지 않습니다. 인그레스 컨트롤러의 선택 및 배포, 운영은 사용자의 재량에 따릅니다.
Step 1. 사전 작업
인그레스 컨트롤러를 설정 및 배포하기 위해서는 다음의 사전작업이 필요합니다.
-
인그레스 컨트롤러를 배포할 클러스터를 생성합니다.
-
생성한 클러스터에 인그레스 컨트롤러 배포 명령을 보내기 위한 kubectl 제어 설정을 수행합니다.
Step 2. 인그레스 컨트롤러 배포
오픈소스 Nginx 기반의 인그레스 컨트롤러를 배포합니다.
현재 Kubernetes Engine 서비스에서는 Kubernetes Engine의 Admission Webhook을 지원하지 않습니다. Admission Webhook 설정된 서비스를 배포하려면 hostNetwork: true
설정이 필요합니다.
YAML 파일로 인그레스 컨트롤러 배포
다음의 명령어를 터미널에 입력하여 ingress-nginx를 클러스터에 배포합니다. ingress-nginx에 대한 네임스페이스와 서비스 등 리소스들이 한 번에 배포됩니다. 해당 ingress-nginx 예제 파일은 Deployment
명세에 hostNetwork: true
설정을 한 커스텀 예제입니다.
kubectl --kubeconfig=$KUBE_CONFIG apply -f https://raw.githubusercontent.com/kakaoicloud-guide/kubernetes-engine/main/guide-samples/settingIC/ingress-nginx/controller-v1.3.1/deploy.yml
Helm을 사용하여 인그레스 컨트롤러 배포
쿠버네티스 패키지 관리 도구인 Helm을 사용하여 인그레스 컨 트롤러를 배포합니다.
-
인그레스 컨트롤러를 설치하기 전, Helm client를 설치합니다. 운영체제별 Helm 설치에 대한 자세한 설명은 Helm 공식 문서 > 헬름 설치하기를 참고하시기 바랍니다.
-
다음의 명령어를 실행하여 공식 ingress-controller Helm chart repository를 추가합니다.
Helm chart repository 추가 명령어$ helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx
"ingress-nginx" has been added to your repositories
$ helm repo update
Hang tight while we grab the latest from your chart repositories...
...Successfully got an update from the "ingress-nginx" chart repository
Update Complete. ⎈Happy Helming!⎈ -
다음의 명령어를 터미널에 입력하여 ingress-nginx를 클러스터에 배포합니다. ingress-nginx에 대한 네임스페이스와 서비스 등 리소스들이 한 번에 배포됩니다.
- 해당 인그레스 컨트롤러 예제 파일은
Deployment
명세에hostNetwork: true
설정을 한 커스텀 예제입니다.
hostNetwork: true 설정한 커스텀 예제$ helm install ingress-nginx ingress-nginx/ingress-nginx \
--version 4.2.5 \
--set controller.hostNetwork=true \
--namespace ingress-nginx --create-namespace
NAME: ingress-nginx
LAST DEPLOYED: Tue Mar 14 06:51:47 2023
NAMESPACE: ingress-nginx
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
The ingress-nginx controller has been installed.
It may take a few minutes for the LoadBalancer IP to be available.
You can watch the status by running 'kubectl --namespace ingress-nginx get services -o wide -w ingress-nginx-controller' - 해당 인그레스 컨트롤러 예제 파일은