인그레스 컨트롤러 설정 및 배포하기

페이지 이동경로

인그레스 컨트롤러 배포하기

인그레스(Ingress)는 클러스터 외부에서 클러스터 내부 서비스로 들어오는 네트워크를 처리하며, 인그레스 컨트롤러는 인그레스 리소스에 정의된 규칙에 따라 클러스터 외부에서 클러스터 내부 서비스로 HTTP와 HTTPS 경로를 노출합니다. 인그레스에 대한 자세한 설명은 Kubernetes 공식 문서를 참고하시기 바랍니다. 클러스터에 인그레스 컨트롤러를 설정하고 배포하는 방법은 다음과 같습니다.

안내
본 가이드는 인그레스 컨트롤러를 배포하는 예시를 설명하는 가이드로, Kubernetes Engine 서비스는 인그레스 컨트롤러의 지원을 포함하지 않습니다. 인그레스 컨트롤러의 선택 및 배포, 운영은 사용자의 재량에 따릅니다.

Step 1. 사전 작업하기

인그레스 컨트롤러를 설정 및 배포하기 위해서는 다음의 사전작업이 필요합니다.

  1. 인그레스 컨트롤러를 배포할 클러스터를 생성합니다. 클러스터 생성 방법에 대한 자세한 설명은 Kubernetes Engine > 클러스터 만들기 문서를 참고하시기 바랍니다.

  2. 생성한 클러스터에 인그레스 컨트롤러 배포 명령을 보내기 위한 kubectl 제어를 설정합니다. kubectl 설치 및 제어 설정에 대한 자세한 설명은 Kubernetes Engine > kubectl 제어 설정하기 문서를 참고하시기 바랍니다.

Step 2. 인그레스 컨트롤러 배포하기

오픈소스 Nginx 기반의 인그레스 컨트롤러를 배포합니다.

안내
현재 Kubernetes Engine 서비스에서는 Kubernetes Engine의 Admission Webhook을 지원하지 않습니다. Admission Webhook 설정된 서비스를 배포하려면 hostNetwork: true 설정이 필요합니다.

  1. 다음의 명령어를 터미널에 입력하여 ingress-nginx를 클러스터에 배포합니다. ingress-nginx에 대한 네임스페이스와 서비스 등 리소스들이 한번에 배포됩니다.
    • 해당 ingress-nginx 예제 파일은 Deployment명세에 hostNetwork: true를 설정한 커스텀 예제입니다.

    코드 예제 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
    
  2. 인그레스 컨트롤러가 정상적으로 배포되었는지 확인하기 위해 다음의 명령어를 터미널에 입력하고 파드의 상태를 관찰합니다. 이때 ingress-controller 파드가 정상적으로 실행되는지 확인합니다.
    • ingress-controller 파드가 running 상태로 실행되고 있다면 Ctrl+C를 눌러서 명령을 취소합니다.

    코드 예제 파드 정상 실행 확인

     kubectl --kubeconfig=$KUBE_CONFIG get pods -n ingress-nginx \
       -l app.kubernetes.io/name=ingress-nginx --watch
    

    코드 예제 실행 결과

     NAME                                        READY   STATUS      RESTARTS   AGE
     ingress-nginx-admission-create-r7v2q        0/1     Completed   0          30s
     ingress-nginx-admission-patch-v7dmf         0/1     Completed   1          30s
     ingress-nginx-controller-74fd5565fb-6gv9g   1/1     Running     0          30s
    
  3. 생성된 ingress-controller 리소스를 확인합니다.

Step 3. 인그레스 컨트롤러 엔드포인트 확인하기

인그레스 컨트롤러 YAML을 배포하면 인그레스 컨트롤러 서비스를 위한 로드밸런서가 함께 생성됩니다. 생성된 로드밸런서의 IP를 통해 인그레스 서비스를 오픈할 수 있습니다. 다음의 명령어를 실행하여 ingress-nginx 서비스를 확인합니다.

안내
로드밸런서 생성에 대한 자세한 내용은 Kubernetes Engine > 로드밸런서 생성 및 삭제하기 문서를 참고하시기 바랍니다.

코드 예제 ingress-nginx 서비스 확인

kubectl --kubeconfig=$KUBE_CONFIG get svc -n ingress-nginx

실행 결과에서 ingress-nginx-controller의 EXTERNAL-IP를 확인합니다. EXTERNAL-IP는 이후 Ingress 객체를 만들어서 오픈하는 서비스의 엔드포인트가 됩니다.

  • 하단의 예제에서는 EXTERNAL-IP10.187.5.42임을 확인할 수 있습니다.

코드 예제 실행 결과

NAME                                 TYPE           CLUSTER-IP      EXTERNAL-IP   PORT(S)                      AGE
ingress-nginx-controller             LoadBalancer   10.109.189.56   10.187.5.42   80:30391/TCP,443:30000/TCP   86s
ingress-nginx-controller-admission   ClusterIP      10.99.111.97    <none>        443/TCP                      86s