Sie können NCP für die Unterstützung von Ingress-Controllern von Drittanbietern konfigurieren.
Bearbeiten der Datei NCP.ini
Sie müssen die Konfigurationsdatei /var/vcap/data/jobs/ncp/xxxxxxxx/config/ncp.ini bearbeiten (wobei xxxxxxxx die BOSH-Bereitstellungs-ID ist). Diese Datei wird dann in rootfs kopiert und von NCP jedes Mal verwendet, wenn NCP neu gestartet wird. Diese Datei muss auf jedem Master-Knoten bearbeitet werden.
- use_native_loadbalancer: Wenn dies auf False festgelegt ist, verarbeitet NCP unabhängig von den zugehörigen Anmerkungen keine Ingresses oder Dienste vom Typ LoadBalancer-Aktualisierungen. Diese Einstellung gilt für den gesamten TKGI-Cluster. Die Standardeinstellung lautet True.
- default_ingress_class_nsx: Wenn dies auf True festgelegt ist, wird NCP zum standardmäßigen Ingress-Controller und verarbeitet sowohl Dateneingänge mit der Anmerkung kubernetes.io/ingress.class: "nsx" als auch Dateneingänge ohne Anmerkung. Wenn der Wert auf False festgelegt ist, verarbeitet NCP nur Ingresses mit der Anmerkung kubernetes.io/ingress.class: "nsx". Die Standardeinstellung lautet True.
Ab NCP 3.2.1 wird default_ingress_class_nsx nicht mehr unterstützt. NCP wird beim Auflösen der Ingress-Klasse Folgendes berücksichtigen:
- Anmerkungen
- ingressClass Objekte
- Wenn keine Anmerkung angegeben ist und use_native_loadbalancer „True“ lautet, verarbeitet NSX-LB den Ingress. Andernfalls wird NSX-LB dies nicht verarbeiten.
- Legen Sie im Abschnitt k8s in ncp.ini den Wert ingress_mode=nat fest.
- Fügen Sie dem NGINX-Ingress-Controller-Pod die Anmerkung ncp/ingress-controller: "True" hinzu.
NCP aktualisiert den Status von Dateneingängen, die die Anmerkung kubernetes.io/ingress.class: "nginx" aufweisen, mit der dynamischen IP-Adresse des NGINX-Ingress-Controller-Pods. Wenn default_ingress_class_nsx=False festgelegt ist, aktualisiert NCP auch den Status von Dateneingängen ohne die Anmerkung kubernetes.io/ingress.class mit der dynamischen IP-Adresse des NGINX-Ingress-Controller-Pods.
- Wenn der Ingress-Controller von https://github.com/kubernetes/ingress-nginx stammt,
- Ändern Sie ingress-class auf dem Ingress-Controller in einen anderen Wert als "nginx".
- Wenn ein Ingress mit der Anmerkung kubernetes.io/ingress-class: "nginx" vorhanden ist, ändern Sie die Anmerkung in einen anderen Wert.
- Weitere Informationen finden Sie unter https://kubernetes.github.io/ingress-nginx/user-guide/multiple-ingress.
- Wenn der Ingress-Controller von https://github.com/nginxinc/kubernetes-ingress stammt,
- Ändern Sie ingress-class auf dem Ingress-Controller in einen anderen Wert als "nginx".
- Wenn ein Ingress mit der Anmerkung kubernetes.io/ingress-class: "nginx" vorhanden ist, ändern Sie die Anmerkung in einen anderen Wert.
- Legen Sie use-ingress-class-only auf dem Ingress-Controller-Pod auf True fest. Dadurch wird verhindert, dass dieser Controller Ingresses ohne die Anmerkung kubernetes.io/ingress-class aktualisiert.
- Weitere Informationen finden Sie unter https://github.com/kubernetes/ingress-nginx/blob/master/docs/user-guide/multiple-ingress.md.
Für Ingress-Controller von Drittanbietern, die im NAT-Modus ausgeführt werden, können Sie die Parameter http_ingress_port und https_ingress_port im Abschnitt k8s bearbeiten, um benutzerdefinierte Ports für die für den Ingress-Controller exponierten NAT-Regeln festzulegen.
Szenario 1: NCP verarbeitet Dateneingänge, ist aber nicht der standardmäßige Ingress-Controller.
- Bearbeiten Sie den Abschnitt nsx_v3 in ncp.ini auf jedem Master-Knoten.
- Legen Sie default_ingress_class_nsx auf False fest.
- Lassen Sie use_native_loadbalancer auf True festgelegt. Dies ist der Standardwert.
- Starten Sie NCP auf jedem Master-Knoten neu. Dies kann zu einem Master-Failover führen.
- Fügen Sie allen Ingresses, die NCP verarbeiten soll, die Anmerkung kubernetes.io/ingress.class: "nsx" hinzu.
Szenario 2: NCP ist der standardmäßige Ingress-Controller.
- Es ist nicht erforderlich, ncp.ini zu bearbeiten, sondern es muss sichergestellt werden, dass alle Ingresses mit Anmerkungen versehen sind.
- Die von NCP zu verarbeitenden Dateneingänge sollten mit der Anmerkung kubernetes.io/ingress.class: "nsx" versehen werden.
Obwohl NCP Dateneingänge ohne die Anmerkung kubernetes.io/ingress.class verarbeitet, besteht die bewährte Vorgehensweise bei mehreren Ingress-Controllern darin, immer über die Anmerkung kubernetes.io/ingress.class zu verfügen und sich nicht auf das Verhalten des standardmäßigen Ingress-Controllers zu verlassen.
- Dateneingänge, die von Drittanbieter-Ingress-Controllern verarbeitet werden, müssen als Anmerkung mit dem Wert versehen werden, der von diesen Ingress-Controllern benötigt wird.
Szenario 3: NCP verarbeitet unabhängig von der Anmerkung keinen Ingress.
- Bearbeiten Sie den Abschnitt nsx_v3 in ncp.ini auf jedem Master-Knoten.
- Legen Sie use_native_loadbalancer auf False fest. Der Wert default_ingress_class_nsx ist nun irrelevant.
- Starten Sie NCP auf jedem Master-Knoten neu. Dies kann zu einem Master-Failover führen.
Beachten Sie, dass NCP auch die Dienste vom Typ „LoadBalancer“ nicht verarbeitet.