TheKoguryo's 기술 블로그

 Version 2023.11.20

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 설치

  1. kubectl 사용이 가능한 Cloud Shell 또는 작업환경에 접속합니다.

  2. nginx ingress controller 설치할 파일 deploy.yaml을 다운로드 받습니다.

    wget https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v1.8.0/deploy/static/provider/cloud/deploy.yaml
    
  3. 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를 부여합니다.

  4. 다음 명령으로 NGINX Ingress Controller를 설치합니다.

    kubectl apply -f deploy.yaml
    
  5. 설치 확인

    ingress-nginx namespace에 아래와 같이 설치된 것을 확인할 수 있습니다.

    kubectl get all -n ingress-nginx
    
  6. 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 확인

  1. OCI 콘솔에 로그인합니다.

  2. 좌측 상단 햄버거 메뉴에서 Networking > Load Balancers > Load Balancer로 이동합니다.

  3. 동일한 Public IP로 생성된 Network Load Balancer를 확인할 수 있습니다.

    image-20230702114339905

  4. 해당 Network Load Balancer를 클릭합니다.

  5. Listener를 보면 그림과 같이 TCP 프로토콜로 80, 443 포트로 수신하고 있습니다.

    image-20230702114645857



이 글은 개인으로서, 개인의 시간을 할애하여 작성된 글입니다. 글의 내용에 오류가 있을 수 있으며, 글 속의 의견은 개인적인 의견입니다.

Last updated on 20 Feb 2023