타사 수신 컨트롤러를 지원하도록 NCP를 구성할 수 있습니다.

ncp.ini 파일 편집

구성 파일 /var/vcap/data/jobs/ncp/xxxxxxxx/config/ncp.ini를 편집해야 합니다(여기서 xxxxxxxx는 BOSH 배포 ID임). 그러면 NCP가 다시 시작될 때마다 이 파일이 rootfs에 복사되고 NCP에서 사용됩니다. 이 파일은 각 마스터 노드에서 편집해야 합니다.

중요: ncp.ini의 변경 내용은 PKS 클러스터 업데이트 시 지속되지 않습니다. PKS 타일을 통해 변경한 다음, PKS 배포를 업데이트하는 경우 ncp.ini의 변경 내용이 손실됩니다.
관련 옵션은 nsx_v3 섹션에 있습니다.
  • use_native_loadbalancer - False로 설정하면 NCP는 주석과 관계없이 LoadBalancer 유형 업데이트의 모든 수신 또는 서비스를 처리하지 않습니다. 이 설정은 전체 PKS 클러스터에 적용됩니다. 기본값은 True입니다.
  • default_ingress_class_nsx - True로 설정하면 NCP는 기본 수신 컨트롤러가 되고, kubernetes.io/ingress.class: "nsx" 주석이 지정된 수신과 어떤 주석도 지정되지 않은 수신을 모두 처리합니다. False로 설정하면 NCP는 kubernetes.io/ingress.class: "nsx"로 주석이 지정된 수신만 처리합니다. 기본값은 True입니다.
NCP가 부동 IP를 NGINX 컨트롤러 포드에 할당하고 부동 IP를 사용하여 수신 상태를 업데이트하도록 하려면 다음을 수행합니다.
  • ncp.inik8s 섹션에서 ingress_mode=nat를 설정합니다.
  • NGINX 수신 컨트롤러 포드에 주석 ncp/ingress-controller: "True"를 추가합니다.

NCP가 NGINX 수신 컨트롤러 포드의 부동 IP를 사용하여 주석 kubernetes.io/ingress.class: "nginx"가 지정된 수신 상태를 업데이트합니다. default_ingress_class_nsx=False인 경우 NCP가 NGINX 수신 컨트롤러 포드의 부동 IP를 사용하여 주석 kubernetes.io/ingress.class가 지정되지 않은 수신 상태도 업데이트합니다.

참고: NGINX 수신 컨트롤러 포드에 ncp/ingress-controller: "True" 주석이 지정되지 않은 경우에도 NCP가 위에 언급된 수신 상태를 loadBalancer: {}로 업데이트합니다. 그러면 NGINX 컨트롤러가 수신 상태를 loadBalancer: {ingress: [{ip: <IP>}]}로 업데이트하고 NCP가 수신 상태를 loadBalancer: {}로 업데이트하는 루프에서 수신이 중단될 수 있습니다. 이러한 상황을 피하려면 다음 단계를 수행합니다.

시나리오 1: NCP가 수신을 처리하지만 기본 수신 컨트롤러가 아닙니다.

이 절차에 따라 NCP가 nsx 클래스 수신을 처리하도록 합니다.
  1. 각 마스터 노드에서 ncp.ininsx_v3 섹션을 편집합니다.
    1. default_ingress_class_nsxFalse로 설정합니다.
    2. use_native_loadbalancer를 기본값인 True로 둡니다.
  2. 각 마스터 노드에서 NCP를 다시 시작합니다. 이로 인해 마스터 페일오버가 발생할 수 있습니다.
  3. NCP가 처리할 모든 수신에 kubernetes.io/ingress.class: "nsx" 주석을 지정합니다.

시나리오 2: NCP가 기본 수신 컨트롤러입니다.

다음 절차를 따릅니다.
  1. ncp.ini를 편집할 필요가 없지만 모든 수신에 주석이 지정되어 있는지 확인합니다.
  2. NCP를 통해 처리할 수신에는 kubernetes.io/ingress.class: "nsx" 주석을 지정해야 합니다.

    NCP는 kubernetes.io/ingress.class 주석이 지정되지 않은 수신도 처리하지만 여러 수신 컨트롤러가 있는 경우에는 항상 kubernetes.io/ingress.class 주석을 지정하고, 기본 수신 컨트롤러 동작에 의존하지 않는 것이 좋습니다.

  3. 타사 수신 컨트롤러를 통해 처리할 수신에는 해당 수신 컨트롤러에 필요한 값이 주석으로 지정되어야 합니다.
중요: 목표가 NGINX를 기본 수신 컨트롤러로 지정하는 것이 아니라면, NGINX를 기본 수신 컨트롤러로 지정하는 nginx를 NGINX 수신 컨트롤러로 사용하면 안 됩니다.

시나리오 3: NCP는 주석과 관계없이 어떠한 수신도 처리하지 않습니다.

다음 절차를 따릅니다.
  1. 각 마스터 노드에서 ncp.ininsx_v3 섹션을 편집합니다.
    1. use_native_loadbalancerFalse로 설정합니다. 이제 default_ingress_class_nsx의 값은 부적절합니다.
  2. 각 마스터 노드에서 NCP를 다시 시작합니다. 이로 인해 마스터 페일오버가 발생할 수 있습니다.

NCP는 LoadBalancer 유형의 서비스도 처리하지 않습니다.