타사 수신 컨트롤러를 지원하도록 NCP를 구성할 수 있습니다.
ncp.ini 파일 편집
구성 파일 /var/vcap/data/jobs/ncp/xxxxxxxx/config/ncp.ini를 편집해야 합니다(여기서 xxxxxxxx는 BOSH 배포 ID임). 그러면 NCP가 다시 시작될 때마다 이 파일이 rootfs에 복사되고 NCP에서 사용됩니다. 이 파일은 각 마스터 노드에서 편집해야 합니다.
중요:
ncp.ini의 변경 내용은 TKGI 클러스터 업데이트 시 지속되지 않습니다. TKGI 타일을 통해 변경한 다음, TKGI 배포를 업데이트하는 경우
ncp.ini의 변경 내용이 손실됩니다.
관련 옵션은
nsx_v3 섹션에 있습니다.
- use_native_loadbalancer - False로 설정하면 NCP는 주석과 관계없이 LoadBalancer 유형 업데이트의 모든 수신 또는 서비스를 처리하지 않습니다. 이 설정은 전체 TKGI 클러스터에 적용됩니다. 기본값은 True입니다.
- default_ingress_class_nsx - True로 설정하면 NCP는 기본 수신 컨트롤러가 되고, kubernetes.io/ingress.class: "nsx" 주석이 지정된 수신과 어떤 주석도 지정되지 않은 수신을 모두 처리합니다. False로 설정하면 NCP는 kubernetes.io/ingress.class: "nsx"로 주석이 지정된 수신만 처리합니다. 기본값은 True입니다.
NCP 3.2.1부터 default_ingress_class_nsx가 더 이상 사용되지 않습니다. NCP는 수신 클래스를 확인할 때 다음을 검토합니다.
- 주석
- ingressClass개 개체
- 주석을 지정하지 않았으며 use_native_loadbalancer가 True이면 NSX-LB가 수신을 처리합니다. 그렇지 않으면 NSX-LB가 이를 처리하지 않습니다.
NCP가 부동 IP를 NGINX 컨트롤러 포드에 할당하고 부동 IP를 사용하여 수신 상태를 업데이트하도록 하려면 다음을 수행합니다.
- ncp.ini의 k8s 섹션에서 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: {}로 업데이트하는 루프에서 수신이 중단될 수 있습니다. 이러한 상황을 피하려면 다음 단계를 수행합니다.
- 수신 컨트롤러를 https://github.com/kubernetes/ingress-nginx에서 가져온 경우
- 수신 컨트롤러에서 ingress-class를 "nginx" 이외의 다른 항목으로 변경합니다.
- kubernetes.io/ingress-class: "nginx" 주석이 지정된 수신의 경우 주석을 다른 값으로 변경합니다.
- 자세한 내용은 https://kubernetes.github.io/ingress-nginx/user-guide/multiple-ingress를 참조하십시오.
- 수신 컨트롤러를 https://github.com/nginxinc/kubernetes-ingress에서 가져온 경우
- 수신 컨트롤러에서 ingress-class를 "nginx" 이외의 다른 항목으로 변경합니다.
- kubernetes.io/ingress-class: "nginx" 주석이 지정된 수신의 경우 주석을 다른 값으로 변경합니다.
- 수신 컨트롤러 포드에서 use-ingress-class-only를 True로 설정합니다. 이렇게 하면 이 컨트롤러는 kubernetes.io/ingress-class 주석이 지정되지 않은 수신을 더 이상 업데이트하지 않습니다.
- 자세한 내용은 https://github.com/kubernetes/ingress-nginx/blob/master/docs/user-guide/multiple-ingress.md를 참조하십시오.
NAT 모드로 배포된 타사 수신 컨트롤러의 경우, k8s 섹션에서 http_ingress_port 및 https_ingress_port 매개 변수를 수정하여 수신 컨트롤러에 대해 노출되는 NAT 규칙에 대한 사용자 지정 포트를 지정할 수 있습니다.
시나리오 1: NCP가 수신을 처리하지만 기본 수신 컨트롤러가 아닙니다.
이 절차에 따라 NCP가
nsx 클래스 수신을 처리하도록 합니다.
- 각 마스터 노드에서 ncp.ini의 nsx_v3 섹션을 편집합니다.
- default_ingress_class_nsx를 False로 설정합니다.
- use_native_loadbalancer를 기본값인 True로 둡니다.
- 각 마스터 노드에서 NCP를 다시 시작합니다. 이로 인해 마스터 페일오버가 발생할 수 있습니다.
- NCP가 처리할 모든 수신에 kubernetes.io/ingress.class: "nsx" 주석을 지정합니다.
시나리오 2: NCP가 기본 수신 컨트롤러입니다.
다음 절차를 따릅니다.
- ncp.ini를 편집할 필요가 없지만 모든 수신에 주석이 지정되어 있는지 확인합니다.
- NCP를 통해 처리할 수신에는 kubernetes.io/ingress.class: "nsx" 주석을 지정해야 합니다.
NCP는 kubernetes.io/ingress.class 주석이 지정되지 않은 수신도 처리하지만 여러 수신 컨트롤러가 있는 경우에는 항상 kubernetes.io/ingress.class 주석을 지정하고, 기본 수신 컨트롤러 동작에 의존하지 않는 것이 좋습니다.
- 타사 수신 컨트롤러를 통해 처리할 수신에는 해당 수신 컨트롤러에 필요한 값이 주석으로 지정되어야 합니다.
중요: 목표가 NGINX를 기본 수신 컨트롤러로 지정하는 것이 아니라면, NGINX를 기본 수신 컨트롤러로 지정하는
nginx를 NGINX 수신 컨트롤러로 사용하면 안 됩니다.
시나리오 3: NCP는 주석과 관계없이 어떠한 수신도 처리하지 않습니다.
다음 절차를 따릅니다.
- 각 마스터 노드에서 ncp.ini의 nsx_v3 섹션을 편집합니다.
- use_native_loadbalancer를 False로 설정합니다. 이제 default_ingress_class_nsx의 값은 부적절합니다.
- 각 마스터 노드에서 NCP를 다시 시작합니다. 이로 인해 마스터 페일오버가 발생할 수 있습니다.
NCP는 LoadBalancer 유형의 서비스도 처리하지 않습니다.