타사 수신 컨트롤러
타사 수신 컨트롤러를 지원하도록 NCP를 구성할 수 있습니다.
ncp.ini 파일 편집
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주석이 지정되지 않은 수신을 더 이상 업데이트하지 않습니다.
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 유형의 서비스도 처리하지 않습니다.