Ingress einrichten
Erstellen Sie eine Ingress-Ressource, um Ihre Ingress-Komponenten zu konfigurieren, Regeln für Routing-Anforderungen zu definieren und den Pfad zu Ihren App-Services anzugeben. Für jeden Namensbereich, der eine App oder einen Service enthält, die bzw. den Sie zugänglich machen möchten, ist eine separate Ingress-Ressource erforderlich.
Vorbereitende Schritte
Führen Sie die folgenden Vorbereitungsschritte aus, bevor Sie beginnen.
-
Stellen Sie sicher, dass Sie über die erforderlichen Berechtigungen verfügen, um Ingress einzurichten. Die folgenden IBM Cloud IAM-Rollen sind erforderlich:
- Plattformzugriffsrolle Administrator für den Cluster
- Servicezugriffsrolle Manager in allen Namensbereichen
-
Bestimmen Sie, ob Sie die von IBMbereitgestellte Ingress-Unterdomäne verwenden möchten. Wenn Sie die bereitgestellte Unterdomäne nicht verwenden wollen, müssen Sie Ihre eigene angepasste Domäne erstellen und registrieren.
Eine benutzerdefinierte Domain oder die manuelle Konfiguration von Domains, die von IBM bereitgestellt werden und erforderlich sind, um Apps über private ALBs bereitzustellen.
-
Stellen Sie sicher, dass die ALB, die Sie verwenden möchten, die erwartete Version aufweist. Führen Sie den Befehl „
ibmcloud ks ingress alb versions“ aus, um die derzeit unterstützten Versionen aufzulisten, und vergleichen Sie diese mit der Ausgabe von „ibmcloud ks ingress alb ls --cluster CLUSTER“. Wenn Sie dieser Dokumentation folgen, wird davon ausgegangen, dass Sie einen auf Ingress- NGINX-basierten Ingress betreiben. Für Traefik-spezifische Anleitungen befolgen Sie bitte die entsprechende Dokumentation. -
Wenn Sie Apps über private ALBs zugänglich machen, müssen Sie jede private ALB in der Befehlszeilenschnittstelle aktivieren. Um die ALB-ID abzurufen, führen Sie folgenden Befehl aus:
ibmcloud ks ingress alb ls --cluster CLUSTER.
Klassische Cluster Weitere Informationen und Befehlsoptionen finden Sie in derCLI-Referenz.
sh {: pre} ibmcloud ks ingress alb enable classic --alb ALB_ID --cluster CLUSTER_NAME
VPC-Cluster Weitere Informationen und Befehlsoptionen finden Sie in derCLI-Referenz.
sh {: pre} ibmcloud ks ingress alb enable vpc-gen2 --alb ALB_ID --cluster CLUSTER_NAME
-
Stellen Sie sicher, dass Ihr Cluster mindestens zwei Workerknoten pro Zone enthält, um hohe Verfügbarkeit sicherzustellen und regelmäßige Aktualisierungen anzuwenden. Wenn eine Zone nur einen Arbeitsknoten hat, kann der ALB keine automatischen Aktualisierungen empfangen. Weitere Informationen finden Sie unter Voraussetzungen für Workerknoten für ALBs.
-
Wenn Sie einen klassischen Cluster verwenden, aktivieren Sie eine Virtual Router Function(VRF ) für Ihr IBM Cloud Infrastrukturkonto.
- Informationen zum Aktivieren von VRF finden Sie im Abschnitt VRF aktivieren.
- Mit dem Befehl
ibmcloud account showkönnen Sie überprüfen, ob VRF bereits aktiviert ist. - Wenn Sie VRF nicht aktivieren können oder wollen, aktivieren Sie VLAN-Spanning. Wenn VRF- oder VLAN Spanning aktiviert ist, kann die ALB Pakete an verschiedene Teilnetze im Konto weiterleiten.
-
Stellen Sie bei VPC-Clustern sicher, dass Ihre VPC-Sicherheitsgruppen den Knotenports erlauben, Datenverkehrsanfragen zu empfangen, die von Ingress weitergeleitet werden. Weitere Informationen finden Sie unter Secure by Default-Cluster-VPC-Netzwerke verstehen.
-
Wenn Sie einen Cluster mit demselben Namen 5 Mal oder häufiger innerhalb von 7 Tagen (beispielsweise für Automatisierungs- oder Testzwecke) erstellen, beachten Sie, dass Sie möglicherweise den Grenzwert für die Rate doppelter Lets Encrypt-Zertifikate erreichen. Um sicherzustellen, dass die Ingress-Unterdomäne und das Zertifikat ordnungsgemäß registriert werden, müssen die ersten 24 Zeichen der Clusternamen unterschiedlich sein.
-
Wenn Sie den Datenaustausch im Netz auf Edge-Workerknoten beschränken, müssen Sie sicherstellen, dass in jeder Zone mindestens zwei Edge-Workerknoten aktiviert sind, sodass ALBs gleichmäßig bereitgestellt werden können.
Wenn in einer Zone ein Fehler auftritt, kann es zu sporadisch auftretenden Fehlern bei Anforderungen an die Ingress-ALB in dieser Zone kommen.
Konfigurationsschritte
Führen Sie die Schritte zum Konfigurieren von Ingress aus.
Schritt 1: ClusterIP-Service erstellen
Erstellen Sie für jede App-Bereitstellung, die Sie zugänglich machen möchten, einen Kubernetes-Service ClusterIP. Ihre App muss durch einen Kubernetes Service zugänglich gemacht werden, damit sie in den Ingress-Lastausgleich einbezogen
wird.
kubectl expose deploy <app_deployment_name> --name my-app-svc --port <app_port> -n <namespace>
Schritt 2: Einrichten der TLS Terminierung mit TLS Zertifikaten und Kubernetes Geheimnissen
Ihr TLS Zertifikat muss als Kubernetes secret in jedem Namespace gespeichert werden, in dem Ihre Anwendungen existieren.
-
Um die IBM-provided Ingress-Subdomain zu verwenden, siehe Einrichten von TLS Geheimnissen für die IBM-bereitgestellte Ingress-Subdomäne.
-
Um eine benutzerdefinierte Domäne zu verwenden, siehe TLS Geheimnisse für benutzerdefinierte Subdomänen einrichten.
Schritt 3: Ingress-Ressource erstellen
Erstellen Sie die Ingress-Ressource, um die Routing-Regeln zu definieren, nach denen der Ingress-Controller den Datenverkehr an Ihren App-Service weiterleitet.
-
Erstellen Sie die Ingress-Ressource in einer YAML-Datei.
apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: my-ingress-resource spec: ingressClassName: public-iks-k8s-nginx tls: - hosts: - <domain_name> secretName: <tls_secret_name> rules: - host: HOSTNAME http: paths: - path: <app_path_1> pathType: Prefix backend: service: name: <app_service_1> port: number: 80 - path: <app_path_2> pathType: Prefix backend: service: name: <app_service_2> port: number: 80
Ressourcenfelder
ingressClassName- Der Ingress-Klassenname. Die von IBMbereitgestellten Ingress-Klassen sind
public-iks-k8s-nginxfür öffentliche ALBs undprivate-iks-k8s-nginxfür private ALBs. tls.hosts- Wenn TLS verwendet werden soll, ersetzen Sie
<domain>durch die von IBM bereitgestellte Ingress-Unterdomäne oder Ihre angepasste Domäne. tls.secretName- Ersetzen Sie
<tls_secret_name>durch den Namen des Geheimnisses Kubernetes, in dem Ihr Zertifikat TLS gespeichert ist. host- Ersetzen Sie
<domain>durch die von IBM bereitgestellte Ingress-Unterdomäne oder Ihre angepasste Domäne. path- Ersetzen Sie
<app_path>durch einen Schrägstrich oder durch den Pfad, über den Ihre App empfangsbereit ist. Der Pfad wird an die angegebene Ingress-Domäne angehängt, um eine eindeutige Route zu Ihrer App zu erstellen. Wenn Sie diese Route in einen Web-Browser eingeben, wird der Netzverkehr an die Lastausgleichsfunktion für Anwendungen (ALB) weitergeleitet. Die Lastausgleichsfunktion für Anwendungen (ALB) sucht nach dem zugehörigen Service und sendet Netzverkehr an ihn. Daraufhin leitet der Service den Datenverkehr an die Pods weiter, in denen die App ausgeführt wird. pathType- Die Methode zum Abgleich des URL-Pfads. Unterstützte Werte sind
ImplementationSpecific,ExactoderPrefix. Weitere Informationen und Beispiele zu den einzelnen Pfadtypen finden Sie in der Community-Dokumentation unter Kubernetes. service.name- Ersetzen Sie
app1_service,app2_serviceusw. durch den Namen der Services, die Sie erstellt haben, um Ihre Apps zugänglich zu machen. Stellen Sie sicher, dass sich die von Ihnen angegebenen Apps in demselben Namespace befinden. service.name- Ersetzen Sie
<app1_service>,<app2_service>usw. durch den Namen der Services, die Sie erstellt haben, um Ihre Apps zugänglich zu machen. Stellen Sie sicher, dass sich die von Ihnen angegebenen Apps in demselben Namespace befinden. service.port.number- Der Port, den Ihr Service überwacht. Verwenden Sie denselben Port, die Sie beim Erstellen der Kubernetes Service-Instanz für Ihre App definiert haben.
- Wenden Sie die Ingress-Ressource auf Ihren Cluster an. Stellen Sie sicher, dass die Ressource im selben Namensbereich wie die App-Services bereitgestellt wird, die in der Ressource angegeben wurden.
kubectl apply -f community-ingress-resource.yaml -n <namespace>
Schritt 4: Ingress-Konfiguration überprüfen
-
Listen Sie Ihre ALBs auf und kopieren Sie die IP-Adresse (Classic) oder den Hostnamen (VPC) für eine ALB, auf der das Kubernetes-Ingress-Image ausgeführt wird. Wählen Sie in der Ausgabe eine ALB aus, die über einen Build im Format
<community_version>_<ibm_build>_iksverfügt.ibmcloud ks ingress alb ls -c CLUSTER -
Verwenden Sie die IP-Adresse (klassisch) oder den Hostnamen (VPC) des ALB sowie den App-Pfad und Ihre Domain, um zu überprüfen, ob Sie Datenverkehr erfolgreich über diesen ALB an Ihre App senden können.
curl http://<ALB_IP>/<app_path> -H "Host: <ingress_subdomain>"Um beispielsweise eine Anfrage an eine App namens
myappunter Verwendung einer Standard-Ingress-Subdomain zu senden, führen Sie den folgenden Befehl aus.curl http://169.X.X.X/myapp -H "Host: mycluster-a1b2cdef345678g9hi012j3kl4567890-0000.us-south.containers.appdomain.cloud"
Haben Sie Schwierigkeiten, über Ingress eine Verbindung zu Ihrer App herzustellen? Versuchen Sie, Fehler bei Ingress zu beheben. Sie können den Gesamtzustand und den Status Ihrer
Ingress-Komponenten überprüfen, indem Sie ibmcloud ks ingress status-report get -c CLUSTER_NAME_OR_ID ausführen.
Angepasste Domänen mit Ingress
Wenn Sie die von „ IBM “ bereitgestellte Ingress-Subdomain nicht verwenden möchten, können Sie eine eigene benutzerdefinierte Domain verwenden, die Sie in Ihrer Ingress-Ressource angeben. Beachten Sie, dass Apps, die über Ingress auf privaten ALBs bereitgestellt werden, eine benutzerdefinierte Domain erfordern oder dass die von IBM bereitgestellten Domains manuell konfiguriert werden müssen.
Angepasste Domänen für öffentliche ALBs erstellen
Führen Sie die Schritte zum Erstellen einer angepassten Domäne für öffentliche ALBs aus.
-
Erstellen Sie eine angepasste Domäne. Arbeiten Sie mit Ihrem DNS-Provider (Domain Name Service) oder IBM Cloud-DNS, um Ihre angepasste Domäne zu registrieren. Wenn sich die Apps, die über Ingress zugänglich gemacht werden sollen, in einem Cluster in unterschiedlichen Namensbereichen befinden, registrieren Sie die angepasste Domäne als Platzhalterdomäne, wie
*.custom_domain.net. Beachten Sie, dass Domänen in Kubernetes Version 1.20 oder höher auf maximal 130 Zeichen begrenzt sind. -
Definieren Sie einen Aliasnamen für Ihre Clusterdomäne, indem Sie die von IBM bereitgestellte Unterdomäne als kanonischen Namensdatensatz (CNAME) angeben. Führen Sie
ibmcloud ks cluster get --cluster CLUSTER_NAMEaus, um die von IBM bereitgestellte Ingress-Domäne zu finden, und suchen Sie nach dem Feld Ingress-Unterdomäne.Die Angabe der von IBM bereitgestellten Subdomain als CNAME ist für die automatischen Zustandsprüfungen erforderlich, um fehlerhafte IPs aus der DNS-Antwort zu entfernen und um sicherzustellen, dass Ihre benutzerdefinierte Domain aktualisiert wird, wenn Sie ALBs hinzufügen oder entfernen.
Angepasste Domänen für private ALBs erstellen
Führen Sie die Schritte zum Erstellen einer angepassten Domäne für private ALBs aus. Beachten Sie, dass angepasste Domänen für die Verwendung von Ingress mit privaten ALBs erforderlich sind.
Wenn Sie über einen klassischen Cluster mit nur einem privaten VLAN verfügen, müssen Sie zuerst Ihren eigenen DNS-Service konfigurieren, der in Ihrem privaten Netz verfügbar ist.
-
Erstellen Sie eine angepasste Domäne über Ihren DNS-Service-Provider. Beachten Sie, dass Ingress-URLs maximal 130 Zeichen lang sein dürfen.
-
Ordnen Sie Ihre angepasste Domäne den privaten ALBs zu, indem Sie ihre IP-Adressen als A-Datensatz (klassische Cluster) oder ihren VPC-Hostnamen als CNAME (VPC-Cluster) hinzufügen. Führen Sie
ibmcloud ks ingress alb ls -c CLUSTER_NAME_OR_IDaus, um die IP-Adressen (klassischer Cluster) oder den Hostnamen (VPC-Cluster) der ALB zu suchen.