4.1.5.1 NGINX Ingress Controller with OCI Load Balancer 설치하기
Service Type=LoadBalancer에서 load-balancer-type을 명시적으로 지정하지 않으면, 디폴트가 “lb"로 OCI Load Balancer를 사용하게 됩니다. 4.1.1 NGINX Ingress Controller 설치하기 을 진행했다면, 이미 OCI Load Balancer를 사용하였습니다. 여기서는 명시적으로 load-balancer-type을 지정하는 것과 그외 추가 설정 옵션을 확인해 봅니다.
NGINX Ingress Controller 설치
kubectl 사용이 가능한 Cloud Shell 또는 작업환경에 접속합니다.
nginx ingress controller 설치할 파일 deploy.yaml을 다운로드 받습니다.
wget https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v1.8.0/deploy/static/provider/cloud/deploy.yaml
ingress-nginx-controller의 Load Balancer Service 유형에 대한 설정을 annotation으로 추가합니다.
oci.oraclecloud.com/load-balancer-type: "lb"
을 추가하여 OCI Network Load Balancer를 사용하도록 지정합니다.--- apiVersion: v1 kind: Service metadata: labels: ... name: ingress-nginx-controller namespace: ingress-nginx annotations: oci.oraclecloud.com/load-balancer-type: "lb" service.beta.kubernetes.io/oci-load-balancer-shape: "flexible" service.beta.kubernetes.io/oci-load-balancer-shape-flex-min: "10" service.beta.kubernetes.io/oci-load-balancer-shape-flex-max: "10" service.beta.kubernetes.io/oci-load-balancer-backend-protocol: "HTTP" spec: loadBalancerIP: 152.69.xxx.xxx ... type: LoadBalancer
설정값 설명
항목 값 설명 oci.oraclecloud.com/load-balancer-type
"lb"
Default: "lb"
- OCI Load Balancer 사용"nlb"
- L4을 지원하는 OCI Network Load Balancer, 무료 서비스service.beta.kubernetes.io/oci-load-balancer-shape
"flexible"
Default: "100Mbps"
flexible 유형을 선택service.beta.kubernetes.io/oci-load-balancer-shape-flex-min
"10"
flexible 유형인 경우 최소 용량 지정 service.beta.kubernetes.io/oci-load-balancer-shape-flex-max
"10"
flexible 유형인 경우 최대 용량 지정 service.beta.kubernetes.io/oci-load-balancer-backend-protocol
"HTTP"
Default: "TCP"
생성되는 OCI Load Balancer의 Listener의 프로토콜을 지정
WAF, WAA 지원을 위해 HTTP으로 지정loadBalancerIP: Reserved Public IP를 사전에 만들어 가지고 있는 경우, 해당 IP를 직접 입력하여, 원하는 IP를 부여합니다.
다음 명령으로 NGINX Ingress Controller를 설치합니다.
kubectl apply -f deploy.yaml
설치 확인
ingress-nginx namespace에 아래와 같이 설치된 것을 확인할 수 있습니다.
kubectl get all -n ingress-nginx
Ingress Controller 서비스의 로드밸런서 IP인 EXTERNAL-IP를 확인합니다.
$ kubectl get svc -n ingress-nginx NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE ingress-nginx-controller LoadBalancer 10.96.29.183 152.xx.xxx.xxx 80:30456/TCP,443:31096/TCP 111s ...
생성된 OCI Load Balancer 확인
OCI 콘솔에 로그인합니다.
좌측 상단 햄버거 메뉴에서 Networking > Load Balancers > Load Balancer로 이동합니다.
동일한 Public IP로 생성된 Network Load Balancer를 확인할 수 있습니다.
해당 Network Load Balancer를 클릭합니다.
Listener를 보면 그림과 같이 TCP 프로토콜로 80, 443 포트로 수신하고 있습니다.
이 글은 개인으로서, 개인의 시간을 할애하여 작성된 글입니다. 글의 내용에 오류가 있을 수 있으며, 글 속의 의견은 개인적인 의견입니다.