VPC-Cluster mit einem öffentlichen und einem privaten Service-Endpunkt: Warum kann ich mich nicht mit der Konsole OpenShift verbinden?

Behebung von Problemen bei der Verbindung mit der Konsole OpenShift in einem Cluster, der sowohl einen öffentlichen als auch einen privaten Service-Endpunkt hat.

Die Informationen in dieser Anleitung zur Fehlerbehebung beziehen sich auf VPC-Cluster mit einem öffentlichen und einem privaten Service-Endpunkt.

1. Verstehen des Clusterverbindungsflusses

Das folgende Diagramm zeigt den Verbindungsfluss für einen VPC-Cluster mit öffentlichen und privaten Dienstendpunkten für die Verbindung zur Webkonsole OpenShift. Beachten Sie, dass alle Verbindungen vom Webbrowser zu den Clusterkomponenten über das öffentliche Netz erfolgen. Prüfen Sie dieses Diagramm und die folgenden Beschreibungen, um besser zu verstehen, welche Schritte zur Fehlersuche erforderlich sein könnten.

OpenShift
OpenShift webkonsolen-Verbindungsablauf für einen VPC-Cluster mit öffentlichen und privaten Service-Endpunkten Webkonsolen-Verbindungsablauf für einen VPC-Cluster mit öffentlichen und privaten Service-Endpunkten.

  1. Der Webbrowser stellt eine Verbindung mit dem Cluster-Master-API-Server her. Ein signiertes Zertifikat wird ausgetauscht und eine Umleitung weist den Webbrowser an, sich stattdessen mit dem öffentlichen Load Balancer der Konsole OpenShift zu verbinden.
  2. (a) Der Webbrowser verbindet sich mit dem OpenShift Console Load Balancer, der die OpenShift Konsole bereitstellt. (b) Diese Anfrage wird an einen der beiden openshift-console-Pods gesendet.
  3. Der openshift-console-Pod verbindet sich über das öffentliche Netzwerk mit dem Server-Port des Cluster-Masters OAuth, um zu prüfen, ob die Verbindung bereits authentifiziert ist. Wenn die Anfrage bereits authentifiziert ist, ist die Verbindung zur Webkonsole OpenShift hergestellt und der Zugriff auf die Webkonsole ist möglich. Wenn die Anfrage nicht authentifiziert ist, wird der Benutzer an den Cluster OAuth Dienst auf dem Cluster-Master weitergeleitet.
  4. Der Webbrowser stellt eine Verbindung zum Serverport des Clusters OAuth her, der den Client an IAM weiterleitet.
  5. Der Webbrowser stellt die Verbindung zu IAM über das öffentliche Netz her. Der Benutzer gibt sein Passwort und, falls erforderlich, eine 2FA Verifizierung ein. Wenn dieser Schritt erfolgreich ist, wird der Benutzer zurück zum OAuth Server des Clusters umgeleitet.
  6. Der Webbrowser verbindet sich wieder mit dem Server-Port des Clusters OAuth. Die Verbindung wird zurück zum OpenShift console load balancer umgeleitet.
  7. Der Webbrowser stellt eine Verbindung zum OpenShift Console Load Balancer her, der die OpenShift Konsole zugänglich macht. Diese Anfrage wird an einen der beiden openshift-console-Pods gesendet, die sich wiederum mit dem Server-Port des Cluster-Masters OAuth verbinden, um zu prüfen, ob die Verbindung bereits authentifiziert ist. Wenn der Benutzer sein Passwort und 2FA eingegeben hat, wird die Authentifizierung bestätigt und der Benutzer wird mit der Hauptwebseite der Konsole OpenShift verbunden.

2. Überprüfen Sie Ihre VPC- und Clusterkonfiguration

  1. Stellen Sie sicher, dass Ihr Webbrowser Zugriff auf das öffentliche Netzwerk hat, damit er sich mit dem Cluster-Api-Server, dem OpenShift Console Load Balancer und IAM (die beide iam.cloud.ibm.com und login.ibm.com verwenden) verbinden kann
  2. Wenn Sie Sicherheitsgruppen, ACLs oder CBR-Regeln (Context-Base Restriction) für diesen Cluster oder Load Balancer geändert haben, stellen Sie sicher, dass diese den Datenverkehr von diesem Webbrowser zu diesen Ressourcen zulassen

3. Sammeln von Clusterdaten

Befolgen Sie diese Schritte, um die für die Fehlerbehebung erforderlichen Cluster-Informationen zu sammeln. Die Ausgaben, die Sie mit diesen Befehlen sammeln, werden in späteren Schritten verwendet.

  1. Suchen Sie den Cluster-API-Server URL. In späteren Befehlen wird diese URL als ${CLUSTER_APISERVER_URL} bezeichnet.

    1. Führen Sie den Befehl ibmcloud ks cluster get -c CLUSTER_ID aus.
        ibmcloud oc cluster get -c CLUSTER_ID
        ```
    2. Im Abschnitt `Master` der Ausgabe finden Sie die `URL`. Die URL sollte das folgende Format haben: `https://c<XXX>-e.<REGION>.containers.cloud.ibm.com:<YYYYY>`.
    
    
    
  2. Suchen Sie den Cluster OAuth URL. In späteren Befehlen wird diese URL als ${CLUSTER_OAUTH_URL} bezeichnet.

    1. Führen Sie den Befehl kubectl get --raw /.well-known/oauth-authorization-server | grep issuer aus. Verwenden Sie nicht die ibmcloud oc cluster get -c CLUSTER_ID, da dieser Befehl möglicherweise eine andere URL zurückgibt.
        kubectl get --raw /.well-known/oauth-authorization-server | grep issuer
        ```
    2. Die URL sollte das folgende Format haben: `https://c<XXX>-e.<REGION>.containers.cloud.ibm.com:<ZZZZZ>`.
    
    
  3. Suchen Sie die Ingress-Subdomain. In späteren Befehlen wird diese Subdomain als ${CONSOLE_LOAD_BALANCER} bezeichnet.

    1. Führen Sie den Befehl ibmcloud oc cluster get -c CLUSTER_ID aus.
        ibmcloud oc cluster get -c CLUSTER_ID
        ```
    2. Suchen Sie in der Ausgabe die Subdomain, die folgendem Format entspricht: `<CLUSTER-NAME-PLUS-RANDOM-UNIQUE-STRING>.<REGION>.containers.appdomain.cloud`. Beachten Sie, dass, wenn Sie eine benutzerdefinierte Ingress-Subdomain konfiguriert haben, das Format stattdessen Ihrer benutzerdefinierten Konfiguration entsprechen wird.
    
    

4. Überprüfen von Verbindungen und Fehlerbehebung

Gehen Sie wie folgt vor, um die im Verbindungsablauf beschriebenen Verbindungen zu überprüfen. Wenn Sie ein Problem mit einer Verbindung feststellen, verwenden Sie die Informationen, um das Problem zu beheben.

  1. Vergewissern Sie sich, dass Ingress in Ordnung ist und dass der Router und die Konsolen-Pods in Ordnung sind.

    1. Führen Sie die Befehle aus.
        ibmcloud oc cluster get -c CLUSTERID
        ibmcloud oc ingress status-report get -c CLUSTERID
        ```
    2. Wenn die Ausgabe einen Fehlerstatus anzeigt, verwenden Sie die [Dokumentation zur Fehlerbehebung bei Ingress](/docs/openshift?topic=openshift-ingress-status), um das Problem zu lösen.
    
    
  2. Vergewissern Sie sich, dass die Operatoren des Clusters OpenShift in Ordnung sind.

    1. Führen Sie den folgenden Befehl aus:
        oc get clusteroperators
        ```
    2. Wenn die Ausgabe zeigt, dass einige Operatoren nicht in Ordnung sind oder nicht mit der aktuellen Version ausgeführt werden, verwenden Sie die [Dokumentation OpenShift cluster version troubleshooting](/docs/openshift?topic=openshift-ts-cluster-version-downlevel), um das Problem zu lösen. Sie können auch in der Dokumentation IBM und Red Hat nach bestimmten Fehlern suchen, die angezeigt werden.
    3. Wenn der Konsolenbediener nicht in Ordnung ist, überprüfen Sie die Pod-Protokolle `openshift-console/console...` und `openshift-console-operator/console-operator...`, um festzustellen, ob eine Sicherheitsgruppe, ACL oder DNS-Anpassung die Pods daran hindert, sich mit dem Anschluss OAuth oder der Konsole OpenShift zu verbinden URL. Eine Sicherheitsgruppe, ACL oder DNS könnte so konfiguriert sein, dass die Verbindung verhindert wird.
    
    
  3. Überprüfen Sie, ob die Verbindung zum Cluster-Master-API-Server erfolgreich ist.

    1. Führen Sie den folgenden Befehl aus: Geben Sie den Cluster apiserver URL an, den Sie in den vorherigen Schritten gefunden haben.
        curl -k -vvv ${CLUSTER_APISERVER_URL}/version
        ```
    2. Wenn die Verbindung nicht erfolgreich ist, führen Sie die folgenden Überprüfungen durch und beheben Sie alle Probleme, die Sie finden.
        1. Überprüfen Sie, ob der Cluster-Master in Ordnung ist, indem Sie den Befehl `ibmcloud oc cluster get -c <CLUSTER-ID>` ausführen. Informationen zur Behebung von Problemen mit dem Cluster-Master finden Sie unter [Überprüfen des Zustands des Masters](/docs/openshift?topic=openshift-debug_master).
        2. Überprüfen Sie, ob der Teil des Hostnamens von URL über DNS aufgelöst wird. Verwenden Sie den Befehl `dig $(echo ${CLUSTER_APISERVER_URL} | cut -d/ -f3 | cut -d: -f1)` und geben Sie den Cluster-API-Server URL an.
        3. Überprüfen Sie, ob Regeln für kontextbasierte Einschränkungen (CBR) auf dem Cluster den Client daran hindern, eine Verbindung zum Cluster-API-Server herzustellen. Sie können dies testen, indem Sie vorübergehend eine Netzwerkzone zu Ihrer öffentlichen CBR-Regel hinzufügen, die alle IPs und Subnetze zulässt. Wenn diese vorübergehende Änderung das Problem behebt, nehmen Sie die erforderlichen Änderungen an der Regel vor, um den Datenverkehr zuzulassen.
    
    
  4. Überprüfen Sie, ob die Verbindung zum Cluster-Load-Balancer, der die Konsole OpenShift bereitstellt, erfolgreich ist.

    1. Führen Sie den folgenden Befehl aus: Geben Sie die Ingress-Subdomäne an, die Sie in den vorherigen Schritten gefunden haben.
        curl -k -vvv https://console-openshift-console.${CONSOLE_LOAD_BALANCER}/
        ```
    2. Wenn die Verbindung nicht erfolgreich ist, führen Sie die folgenden Überprüfungen durch und beheben Sie alle Probleme, die Sie finden.
        1. Prüfen Sie, ob der Hostnamen-Teil der Subdomain über DNS aufgelöst wird. Verwenden Sie den Befehl `dig console-openshift-console.${CONSOLE_LOAD_BALANCER}`.
        2. Wenn Sie Sicherheitsgruppen, ACLs oder benutzerdefinierte VPC-Routen geändert haben, die auf den Load Balancer angewendet werden, überprüfen Sie, ob die von Ihnen vorgenommenen Änderungen oder Regeln die Verbindung verhindern. Wenn Sie keine dieser Komponenten geändert haben und sie die Standardwerte verwenden, können Sie diesen Schritt überspringen.
    
    
  5. Überprüfen Sie, ob die Verbindung zum Cluster OAuth erfolgreich ist.

    1. Führen Sie den folgenden Befehl aus: Geben Sie den Cluster OAuth URL an, den Sie in den vorherigen Schritten gefunden haben.
        curl -k -vvv ${CLUSTER_OAUTH_URL}/healthz
        ```
    2. Wenn die Verbindung nicht erfolgreich ist, führen Sie die folgenden Überprüfungen durch und beheben Sie alle Probleme, die Sie finden.
        1. Überprüfen Sie, ob Ihr Clustermaster in Ordnung ist, indem Sie den Befehl `ibmcloud oc cluster get -c <CLUSTER-ID>` ausführen. Informationen zur Behebung von Problemen mit dem Cluster-Master finden Sie unter [Überprüfen des Zustands des Masters](/docs/openshift?topic=openshift-debug_master).
        2. Prüfen Sie, ob der Teil des Hostnamens des Clusters OAuth URL über DNS aufgelöst wird. Verwenden Sie die `dig $(echo ${CLUSTER_OAUTH_URL} | cut -d/ -f3 | cut -d: -f1)` und geben Sie den Cluster OAuth URL an.
        3. Überprüfen Sie, ob CBR-Regeln (Context Based Restriction) auf dem Cluster den Client daran hindern, eine Verbindung zum Cluster OAuth Server herzustellen. Sie können dies testen, indem Sie vorübergehend eine Netzwerkzone zu Ihrer öffentlichen CBR-Regel hinzufügen, die alle IPs und Subnetze zulässt. Wenn diese vorübergehende Änderung das Problem behebt, nehmen Sie die erforderlichen Änderungen an der Regel vor, um den Datenverkehr zuzulassen.
    
    
  6. Überprüfen Sie, ob die Verbindung zu IAM erfolgreich ist.

    1. Führen Sie die Befehle aus.
        curl -vvv https://iam.cloud.ibm.com/healthz
        curl -vvv -o /dev/null -s https://login.ibm.com/
        ```
    2. Wenn einer dieser Befehle fehlschlägt, überprüfen Sie, ob das Client-System in der Lage ist, eine zuverlässige Verbindung zu diesen URLs herzustellen und ob die URLs nicht durch Client- oder Unternehmensfirewalls blockiert werden. Beachten Sie, dass diese URLs einen Zugang zum öffentlichen Internet erfordern.
    
    

5. Kontakt zum Support

Wenn Sie alle oben genannten Schritte ausgeführt haben und das Problem nicht behoben werden konnte, wenden Sie sich an den Support. Öffnen Sie einen Supportfall. Geben Sie in den Falldetails unbedingt alle relevanten Protokolldateien, Fehlermeldungen oder Befehlsausgaben an.