Cloud Service Mesh-Kompatibilität

In diesem Leitfaden wird beschrieben, wie Sie die Kompatibilität einer Flotte für die Modernisierung der Steuerungsebene bewerten können. Dazu bestätigen Sie, dass Konfiguration, Infrastruktur und Skalierung mit der TRAFFIC_DIRECTOR-Implementierung der Steuerungsebene kompatibel sind.

Kompatibilitätsprüfungen aktivieren oder deaktivieren

Um die Kompatibilitätsprüfungen zu starten, aktivieren Sie den Validierungsmodus für die Flotte. Dadurch wird eine fortlaufende Prüfung aller Istio-Konfigurationen, Infrastrukturkonfigurationen und Skalierungsparameter ausgelöst. Durch das Aktivieren dieser Prüfungen werden keine Änderungen an Ihrer Flotte oder Ihren Clustern vorgenommen. Es wird lediglich die Kompatibilitätsberichterstellung aktiviert.

Prüfungen aktivieren

Führen Sie den folgenden gcloud-Befehl aus, um die Kompatibilitätsprüfung zu starten:

gcloud alpha container fleet mesh update --modernization-compatibility validation-enabled --project FLEET_PROJECT_ID

Ersetzen Sie FLEET_PROJECT_ID durch die ID Ihres Flotten-Hostprojekts. Im Allgemeinen hat FLEET_PROJECT_ID denselben Namen wie das Projekt.

Nach der Aktivierung beginnt Cloud Service Mesh mit der Bewertung der Flotte und aller in der Flotte bereitgestellten Cloud Service Mesh-Cluster auf Modernisierungskompatibilität.

Prüfungen deaktivieren

Führen Sie den folgenden Befehl aus, um die Berichterstellung von Kompatibilitätsergebnissen zu beenden:

gcloud alpha container fleet mesh update --modernization-compatibility validation-disabled --project FLEET_PROJECT_ID

Mit diesem Befehl werden die Bedingungen für die Modernisierungskompatibilität aus den Mitgliedschaftsstatus sowie der Status ModernizationCompatible aus einzelnen Istio-CRs entfernt.

Kompatibilität verstehen

Die Modernisierungskompatibilität wird sowohl auf Flotten- als auch auf Mitgliedschaftsebene (Cluster) mithilfe von Bedingungen gemeldet. Das System führt zu verschiedenen Zeiten verschiedene Prüfungen durch. Alle Prüfungen werden mindestens einmal täglich ausgeführt. Nach dem Aktivieren der Prüfungen oder dem Anwenden von Korrekturen kann es bis zu einem Tag dauern, bis der Status aktualisiert wird.

Rufen Sie die neuesten Mesh-Status mit dem folgenden Befehl ab, um diese Ergebnisse anzusehen:

gcloud container fleet mesh describe --project FLEET_PROJECT_ID

Kompatibilität auf Clusterebene

Suchen Sie unter membershipStates.servicemesh nach Bedingungen mit dem Schweregrad WARNING oder ERROR für jeden in der Flotte bereitgestellten Cloud Service Mesh-Cluster. Wenn Inkompatibilitäten vorhanden sind, sieht die Ausgabe so aus:

membershipSpecs:
 projects/project_id/locations/global/memberships/cluster-a:
   mesh:
     management:MANAGEMENT_AUTOMATIC
membershipStates:
  projects/project_id/locations/global/memberships/cluster-a:
    servicemesh:
      conditions:
     - code: MODERNIZATION_INCOMPATIBLE_POD_ANNOTATION
       details: 'Pod pod-a in namespace test-namespace: invalid annotations: ["status.sidecar.istio.io/port": failed to parse port - "invalid", port must be a number and should be in the range 1..65535]; unsupported annotations: ["ambient.istio.io/redirection"] .'
       documentationLink: https://cloud.google.com/service-mesh/...
       severity: WARNING
     - code: WORKLOAD_IDENTITY_REQUIRED
       details: 'Workload Identity is not enabled for the cluster or at least one of the node pools.'
       documentationLink: https://cloud.google.com/...
       severity: ERROR
...

Folgen Sie dem documentationLink in jeder Bedingung, um die jeweilige Inkompatibilität zu verstehen und zu beheben.

Kompatibilitätsprobleme beheben

Inkompatible Pod-Annotationen beheben

Der Code MODERNIZATION_INCOMPATIBLE_POD_ANNOTATION gibt an, dass der Cluster nicht auf die TRAFFIC_DIRECTOR-Steuerungsebene modernisiert werden kann, da bestimmte Pods nicht unterstützte oder ungültige Istio-Annotationen haben.

Beispielausgabe des Befehls gcloud container fleet mesh describe mit der Bedingung MODERNIZATION_INCOMPATIBLE_POD_ANNOTATION für die Mitgliedschaft:

membershipStates:
  projects/project_id/locations/global/memberships/membership-a:
    servicemesh:
      conditions:
     - code: MODERNIZATION_INCOMPATIBLE_POD_ANNOTATION
       details: 'Pod pod-a in namespace test-namespace: invalid annotations: ["status.sidecar.istio.io/port": failed to parse port - "invalid", port must be a number and should be in the range 1..65535]; unsupported annotations: ["ambient.istio.io/redirection"] .'
       documentationLink: https://cloud.google.com/service-mesh/...
       severity: WARNING

So beheben Sie diese Pod-Annotationen:

  1. Problematische Annotationen identifizieren: Prüfen Sie das Feld details der Status bedingung, um die nicht unterstützten oder ungültigen Annotationsschlüssel zu finden. Suchen Sie alle Pods mit den problematischen Annotationsschlüsseln.

  2. Beheben und prüfen:

    1. Ändern Sie die YAML-Spezifikationen für Ihre Bereitstellungen oder Pods, um die identifizierten Annotationen zu entfernen oder zu ändern. Achten Sie darauf, dass sie keine nicht unterstützten Annotationenenthalten. Wenden Sie die aktualisierte YAML-Datei auf Ihren Cluster an.
    2. Sobald alle Pod-Annotationen korrigiert wurden, wird die Bedingung MODERNIZATION_INCOMPATIBLE_POD_ANNOTATION für diese Mitgliedschaft nicht mehr angezeigt.