Verwaltetes Anthos Service Mesh mit Fleet API konfigurieren

Auf dieser Seite wird gezeigt, wie Sie mit der Fleet Feature API verwaltetes Anthos Service Mesh mit automatischer Verwaltung der Steuerungsebene einrichten.

Wenn Sie die automatische Verwaltung der Steuerungsebene in einem GKE-Cluster aktivieren, wendet Google die empfohlene Konfiguration von verwaltetem Anthos Service Mesh basierend auf dem Releasekanal Ihres Clusters an und behält ihn auf dem neuesten Stand.

Verwenden Sie diesen Vorschau-Onboarding-Pfad, wenn Sie Folgendes möchten:

  • gcloud zum Konfigurieren des verwalteten Anthos Service Mesh mithilfe von Google Cloud APIs und IAM verwenden
  • Anthos Service Mesh mit denselben APIs wie andere Fleet-Features konfigurieren
  • Automatisch die empfohlene Konfiguration von Anthos Service Mesh für jeden Ihrer Cluster zu erhalten

Weitere Informationen zur Onboarding-Funktion mit dem asmcli-Tool finden Sie unter Verwaltetes Anthos Service Mesh konfigurieren.

Vorbereitung

Sie sollten Folgendes bereits haben:

Voraussetzungen

  • Ein oder mehrere Cluster mit einer unterstützten Version von GKE in einer der unterstützten Regionen.
  • Ihre Cluster müssen in einer Flotte registriert sein. Dies ist in der Anleitung enthalten oder kann vor der Installation separat durchgeführt werden.
  • In Ihrem Projekt muss das Service Mesh-Feature aktiviert sein. Dies ist in der Anleitung enthalten oder kann separat durchgeführt werden.
  • Alle GKE-Cluster müssen sich in einem einzelnen Projekt in einem einzelnen Netzwerk befinden.

Beschränkungen

Wir empfehlen Ihnen, die Liste der von verwaltetem Anthos Service Mesh unterstützten Features und Einschränkungen durchzugehen. Insbesondere ist Folgendes zu berücksichtigen:

  • Die IstioOperator API wird nicht unterstützt, da sie hauptsächlich den Zugriff auf Clusterkomponenten steuert.

  • Jeder Cluster in der Flotte, in dem Anthos Service Mesh ausgeführt wird, muss Mesh CA verwenden.

  • Die verwaltete Datumsebene ist in den Release-Kanälen „Regular” und „Rapid” verfügbar.

  • Die tatsächlichen Features, die für das verwaltete Anthos Service Mesh verfügbar sind, hängen von der Release-Version ab. Weitere Informationen finden Sie in der vollständigen Liste der von Anthos Service Mesh unterstützten Features und Einschränkungen.

  • Während des Bereitstellungsprozesses für eine von Google verwaltete Steuerungsebene werden Istio-CRDs, die dem ausgewählten Kanal entsprechen, im angegebenen Cluster installiert. Wenn im Cluster Istio-CRDs vorhanden sind, werden sie überschrieben.

Vorbereitung

  1. Melden Sie sich bei Ihrem Google Cloud-Konto an. Wenn Sie mit Google Cloud noch nicht vertraut sind, erstellen Sie ein Konto, um die Leistungsfähigkeit unserer Produkte in der Praxis sehen und bewerten zu können. Neukunden erhalten außerdem ein Guthaben von 300 $, um Arbeitslasten auszuführen, zu testen und bereitzustellen.
  2. Wählen Sie in der Google Cloud Console auf der Seite der Projektauswahl ein Google Cloud-Projekt aus oder erstellen Sie eines.

    Zur Projektauswahl

  3. Die Abrechnung für das Cloud-Projekt muss aktiviert sein. So prüfen Sie, ob die Abrechnung für ein Projekt aktiviert ist.

  4. Wählen Sie in der Google Cloud Console auf der Seite der Projektauswahl ein Google Cloud-Projekt aus oder erstellen Sie eines.

    Zur Projektauswahl

  5. Die Abrechnung für das Cloud-Projekt muss aktiviert sein. So prüfen Sie, ob die Abrechnung für ein Projekt aktiviert ist.

  6. Aktivieren Sie die erforderlichen APIs:

      gcloud services enable mesh.googleapis.com \
          --project=PROJECT_ID
    

Durch Aktivieren von mesh.googleapis.com werden die folgenden APIs aktiviert:

API
meshconfig.googleapis.com
meshca.googleapis.com
container.googleapis.com
gkehub.googleapis.com
monitoring.googleapis.com
stackdriver.googleapis.com
opsconfigmonitoring.googleapis.com
iam.googleapis.com
iamcredentials.googleapis.com
bigquery.googleapis.com
bigquerystorage.googleapis.com
compute.googleapis.com
oslogin.googleapis.com
containerregistry.googleapis.com
pubsub.googleapis.com
storage-api.googleapis.com
gkeconnect.googleapis.com
multiclustermetering.googleapis.com
logging.googleapis.com
connectgateway.googleapis.com

gcloud konfigurieren

Führen Sie die folgenden Schritte auch dann aus, wenn Sie Cloud Shell verwenden.

  1. Authentifizieren Sie sich mit dem Google Cloud CLI:

    gcloud auth login --project PROJECT_ID
    
  2. Aktualisieren Sie die Komponenten:

    gcloud components update
    
  3. Wenn Sie Anthos Service Mesh in einem GKE-Cluster installieren, konfigurieren Sie kubectl so, dass auf den Cluster verwiesen wird.

    gcloud container clusters get-credentials CLUSTER_NAME \
         --zone CLUSTER_LOCATION \
         --project PROJECT_ID
    

Anthos Service Mesh aktivieren

Aktivieren Sie Anthos Service Mesh in der Flotte. Wenn Sie mehrere Cluster registrieren möchten, wird Anthos Service Mesh auf Projektebene aktiviert, sodass Sie diesen Befehl nur einmal ausführen müssen.

gcloud container fleet mesh enable --project PROJECT_ID

wobei

  • PROJECT_ID ist die ID des aktuellen Projekts.

Cluster in einer Flotte registrieren

  1. Registrieren Sie einen GKE-Cluster mithilfe von Workload Identity für eine Flotte:

    gcloud container fleet memberships register MEMBERSHIP_NAME \
         --gke-cluster=GKE_CLUSTER \
         --enable-workload-identity \
         --project PROJECT_ID
    

    wobei

    • MEMBERSHIP_NAME ist der Name der Mitgliedschaft, den Sie für den Cluster festlegen, der für eine Flotte registriert wird.

    • GKE_CLUSTER ist der location/name des GKE-Clusters aus dem aktuellen Projekt. Der Standort kann eine Zone oder Region sein, z. B. us-central1-a/my-gke-cluster.

  2. Prüfen Sie, ob Ihr Cluster registriert ist:

    gcloud container fleet memberships list --project PROJECT_ID
    

Jeden Cluster konfigurieren

Führen Sie die folgenden Schritte aus, um ein verwaltetes Anthos Service Mesh für jeden Cluster in Ihrem Mesh-Netzwerk zu konfigurieren.

Mesh_id-Label anwenden

Wenden Sie das Label mesh_id auf Ihren GKE-Cluster an:

  gcloud container clusters update CLUSTER_NAME --zone ZONE\
      --update-labels mesh_id=proj-PROJECT_NUMBER

wobei

  • CLUSTER_NAME ist der Name des Clusters.
  • ZONE ist die Computing-Zone für Ihren Cluster.
  • PROJECT_NUMBER ist die eindeutige Kennung für Ihr Projekt.

Automatische Verwaltung der Steuerungsebene aktivieren

Führen Sie den folgenden Befehl aus, um die automatische Verwaltung der Steuerungsebene zu aktivieren:

  gcloud container fleet mesh update \
     --control-plane automatic \
     --memberships MEMBERSHIP_NAME \
     --project PROJECT_ID

Beachten Sie, dass ein Gateway für eingehenden Traffic nicht automatisch mit der Steuerungsebene bereitgestellt wird. Durch das Entkoppeln der Bereitstellung des Ingress-Gateways können Sie Ihre Gateways in einer Produktionsumgebung leichter verwalten. Wenn der Cluster ein Gateway für eingehenden Traffic oder ein Gateway für ausgehenden Traffic benötigt, finden Sie weitere Informationen unter Gateways bereitstellen. Informationen zum Aktivieren anderer optionaler Features finden Sie unter Optionale Features in verwaltetem Anthos Service Mesh aktivieren.

Bereitstellung der Steuerungsebene prüfen

  1. Prüfen Sie nach einigen Minuten, ob der Status der Steuerungsebene ACTIVE lautet:

    gcloud container fleet mesh describe --project PROJECT_ID
    

    Die Ausgabe sieht etwa so aus:

    ...
    membershipSpecs:
      projects/746296320118/locations/global/memberships/demo-cluster-1:
        mesh:
          controlPlane: AUTOMATIC
    membershipStates:
      projects/746296320118/locations/global/memberships/demo-cluster-1:
        servicemesh:
          controlPlaneManagement:
            details:
            - code: REVISION_READY
              details: 'Ready: asm-managed'
            state: ACTIVE
        state:
          code: OK
          description: 'Revision(s) ready for use: asm-managed.'
    ...
    

    Beachten Sie das Überarbeitungslabel im Feld description:, z. B. asm-managed in der angegebenen Ausgabe. Sie müssen dieses Label festlegen, bevor Sie Anwendungen bereitstellen.

Von Google verwaltete Datenebene anwenden (optional)

Wenn Sie möchten, dass Google Upgrades der Proxys verwaltet, aktivieren Sie die von Google verwaltete Datenebene. Wenn diese Option aktiviert ist, werden die Sidecar-Proxys und injizierten Gateways automatisch in Verbindung mit der verwalteten Steuerungsebene aktualisiert.

Beachten Sie, dass die von Google verwaltete Datenebene das Plug-in Istio Container Network Interface (CNI) erfordert, das jetzt standardmäßig aktiviert ist, wenn Sie die von Google verwaltete Steuerungsebene bereitstellen.

In der Feature-Vorschau aktualisiert die verwaltete Steuerungsebene Proxys durch Entfernen von Pods, auf denen ältere Versionen des Proxys ausgeführt werden. Die Bereinigungen werden in einer geordneten Weise vorgenommen. Dabei wird das Budget für die Pod-Unterbrechung berücksichtigt und die Änderungsrate kontrolliert.

In diesem Vorschaurelease der verwalteten Datenebene wird Folgendes nicht verwaltet:

  • Nicht eingefügte Pods.
  • Manuell mit istioctl kube-inject eingefügte Pods.
  • Jobs
  • Zustandsorientierte Sets
  • DaemonSet

Die verwaltete Datenebene ist in beiden Release-Kanälen verfügbar: "Rapid" und "Regular".

So aktivieren Sie die von Google verwaltete Datenebene:

  1. Aktivieren Sie die Verwaltung der Datenebene:

    kubectl annotate --overwrite namespace NAMESPACE \
    mesh.cloud.google.com/proxy='{"managed":"true"}'
    

    Alternativ können Sie die von Google verwaltete Datenebene für einen bestimmten Pod aktivieren, indem Sie sie mit derselben Annotation versehen. Wenn Sie einen bestimmten Pod mit Annotationen versehen, verwendet dieser Pod den von Google verwalteten Sidecar-Proxy und der Rest der Arbeitslasten verwendet die nicht verwalteten Sidecar-Proxys.

  2. Wiederholen Sie den vorherigen Schritt für jeden Namespace, den Sie für eine verwaltete Datenebene benötigen.

    Es kann bis zu zehn Minuten dauern, bis der Datenebenen-Controller zur Verwaltung der Proxys im Cluster bereit ist. Führen Sie den folgenden Befehl aus, um den Status zu prüfen:

    if kubectl get dataplanecontrols -o custom-columns=REV:.spec.revision,STATUS:.status.state | grep rapid | grep -v none > /dev/null; then echo "Managed Data Plane is ready."; else echo "Managed Data Plane is NOT ready."; fi
    

    Wenn der Datenebene-Controller bereit ist, gibt der Befehl Folgendes aus: Managed Data Plane is ready.

Wenn der Datenebene-Controller nach mehr als zehn Minuten nicht bereit ist, lesen Sie die Tipps zur Fehlerbehebung unter Status der verwalteten Datenebene.

Wenn Sie die von Google verwaltete Datenebene deaktivieren und wieder die Sidecar-Proxys verwalten möchten, ändern Sie die Annotation:

kubectl annotate --overwrite namespace NAMESPACE \
  mesh.cloud.google.com/proxy='{"managed":"false"}'

Endpunkterkennung konfigurieren (nur für Installationen mit mehreren Clustern)

Bevor Sie fortfahren, sollten Sie bereits verwaltetes Anthos Service Mesh auf jedem Cluster konfiguriert haben, wie in den vorherigen Schritten beschrieben. Sie müssen nicht angeben, dass ein Cluster ein primärer Cluster ist, dies ist das Standardverhalten. Sie müssen die Abschnitte Projekt- und Clustervariablen festlegen und Firewallregel erstellen ausführen, bevor Sie die Endpunkterkennung konfigurieren.

Öffentliche Cluster

Endpunkterkennung zwischen öffentlichen Clustern konfigurieren

Wenn Sie mit öffentlichen Clustern (nicht privaten Clustern) arbeiten, haben Sie folgende Möglichkeiten: Endpunkterkennung zwischen öffentlichen Clustern konfigurieren oder noch einfacher Endpunkterkennung zwischen öffentlichen Clustern aktivieren.

Private Cluster

Endpunkterkennung zwischen privaten Clustern konfigurieren

Wenn Sie private GKE-Cluster verwenden, müssen Sie den Endpunkt der Clustersteuerungsebene als öffentlichen Endpunkt statt als privaten Endpunkt konfigurieren. Weitere Informationen finden Sie unter Endpunkterkennung zwischen privaten Clustern konfigurieren.

Eine Beispielanwendung mit zwei Clustern finden Sie im HelloWorld-Dienstbeispiel.

Anwendungen bereitstellen

Verwenden Sie zum Bereitstellen von Anwendungen entweder das Label des Kanals, den Sie während der Installation konfiguriert haben, oder istio-injection=enabled, wenn Sie Standard-Injektionslabels verwenden.

Standard-Injektionslabels

kubectl label namespace NAMESPACE istio-injection=enabled istio.io/rev- --overwrite

Überarbeitungslabel

Entfernen Sie vor dem Bereitstellen von Anwendungen alle vorherigen istio-injection-Labels aus ihren Namespaces und legen Sie stattdessen das Label istio.io/rev=asm-managed-rapid fest.

Dies ist das Überarbeitungslabel, das Sie bei der Prüfung der Steuerungsebene identifiziert haben. Wenn Sie ein anderes Überarbeitungslabel verwenden, klicken Sie auf asm-managed-rapid und ersetzen Sie es durch das entsprechende Label: asm-managed für Regular oder asm-managed-stable für Stable.

Das Überarbeitungslabel entspricht einer Release-Version:

Überarbeitungslabel Kanal
asm-managed Regulär
asm-managed-rapid Rapid
asm-managed-stable Stabile Version
kubectl label namespace NAMESPACE istio-injection- istio.io/rev=REVISION_LABEL --overwrite

Sie haben die verwaltete Anthos Service Mesh-Steuerungsebene konfiguriert. Wenn Sie auch die verwaltete Datenebene angewendet haben, starten Sie Ihre Arbeitslasten neu. Führen Sie andernfalls ein Rolling Update durch. Jetzt können Sie die Anwendungen oder die Bookinfo-Beispielanwendung bereitstellen.

Wenn Sie eine Anwendung in einer Multi-Cluster-Konfiguration bereitstellen, replizieren Sie die Kubernetes- und Steuerungsebene auf allen Clustern, sofern Sie diese bestimmte Konfiguration nicht auf eine Teilmenge von Clustern beschränken. Die auf einen bestimmten Cluster angewendete Konfiguration ist die "Source of Truth" für diesen Cluster. Wenn der Cluster auch Anthos Service Mesh oder Certificate Authority Service mit Mesh CA in anderen Namespaces ausführt, prüfen Sie, ob die Anwendung mit den anderen Anwendungen kommunizieren kann, die von der Steuerungsebene im Cluster gesteuert werden.

Automatische Verwaltung der Steuerungsebene deaktivieren

Durch Deaktivieren der automatischen Verwaltung der Steuerungsebene werden Bereitstellung von Ressourcen nicht aufgehoben. Alle Ressourcen verbleiben im Cluster, sodass Sie sie manuell verwalten oder entfernen können. Weitere Informationen zur vollständigen Einstellung finden Sie unter Anthos Service Mesh deinstallieren.

  1. Führen Sie den folgenden Befehl aus, um die automatische Verwaltung der Steuerungsebene zu deaktivieren:

    gcloud container fleet mesh update \
       --control-plane manual \
       --memberships MEMBERSHIP_NAME \
       --project PROJECT_ID
    
  2. Prüfen Sie, ob nach einigen Minuten der Status der automatischen Verwaltung auf Steuerungsebene DISABLED ist:

    gcloud container fleet mesh describe --project PROJECT_ID
    

    Die Ausgabe sieht etwa so aus:

    ...
    membershipSpecs:
      projects/projectid/locations/global/memberships/cluster-name:
        mesh:
          controlPlane: MANUAL
    membershipStates:
      projects/projectid/locations/global/memberships/cluster-name:
        servicemesh:
          controlPlaneManagement:
            state: DISABLED
        state:
          code: OK
          description: 'Revision(s) ready for use: asm-managed.'
    ...
    

    Informationen zum vollständigen Deinstallieren von Anthos Service Mesh finden Sie unter Anthos Service Mesh deinstallieren.

Nächste Schritte