TheKoguryo's 기술 블로그

 Version 2023.11.20

4.1.4.1 NGINX Ingress Controller with OCI Network Load Balancer 설치하기

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: "nlb" 을 추가하여 OCI Network Load Balancer를 사용하도록 지정합니다.

      ---
      apiVersion: v1
      kind: Service
      metadata:
        labels:
          ...
        name: ingress-nginx-controller
        namespace: ingress-nginx
        annotations:
          oci.oraclecloud.com/load-balancer-type: "nlb"
      spec:
        loadBalancerIP: 152.69.xxx.xxx
        ...
        type: LoadBalancer  
      
    • 설정값 설명

      항목설명
      oci.oraclecloud.com/load-balancer-type"nlb"Default: "lb" - OCI Load Balancer 사용
      "nlb" - L4을 지원하는 OCI Network Load Balancer, 무료 서비스
    • 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 Network Load Balancer 확인

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

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

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

    image-20230701005549170

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

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

    image-20230701010159536



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

Last updated on 20 Feb 2023