Multi-Cluster-Mesh-Netzwerk außerhalb von Google Cloud einrichten

In dieser Anleitung wird beschrieben, wie Sie ein Multi-Cluster-Mesh-Netzwerk für die folgenden Plattformen einrichten:

  • GKE on VMware
  • Google Distributed Cloud Virtual for Bare Metal
  • GKE on AWS
  • Amazon EKS

In dieser Anleitung wird beschrieben, wie Sie zwei Cluster einrichten. Sie können den Vorgang jedoch erweitern und eine beliebige Anzahl von Clustern in Ihr Mesh-Netzwerk einbinden.

Hinweise

In dieser Anleitung wird davon ausgegangen, dass Sie Anthos Service Mesh mit asmcli install installiert haben. Sie benötigen asmcli und das Konfigurationspaket, das von asmcli in das Verzeichnis heruntergeladen wird, das Sie bei der Ausführung von asmcli install in --output_dir angegeben haben. Wenn Sie die Einrichtung vornehmen müssen, führen Sie die Schritte unter Erste Schritte aus, um Folgendes zu tun:

Sie benötigen Zugriff auf die kubeconfig-Dateien für alle Cluster, die Sie im Mesh-Netzwerk einrichten.

Umgebungsvariablen und Platzhalter einrichten

Sie benötigen die folgenden Umgebungsvariablen, wenn Sie das east-west-Gateway installieren.

  1. Erstellen Sie eine Umgebungsvariable für die Projektnummer. Ersetzen Sie im folgenden Befehl FLEET_PROJECT_ID durch die Projekt-ID des Flottenhostprojekts.

    export PROJECT_NUMBER=$(gcloud projects describe FLEET_PROJECT_ID --format="value(projectNumber)")
    
  2. Erstellen Sie eine Umgebungsvariable für die Mesh-Netzwerk-ID.

    export MESH_ID="proj-${PROJECT_NUMBER}"
    
  3. Erstellen Sie Umgebungsvariablen für die Clusternamen in dem Format, das asmcli erfordert:

    export CLUSTER_1="cn-FLEET_PROJECT_ID-global-CLUSTER_NAME_1"
    export CLUSTER_2="cn-FLEET_PROJECT_ID-global-CLUSTER_NAME_2"
    

east-west-Gateway installieren

Tun Sie dazu in den folgenden Befehlen Folgendes:

  • Ersetzen Sie CLUSTER_NAME_1 und CLUSTER_NAME_2 durch die Namen Ihrer Cluster.

  • Ersetzen Sie PATH_TO_KUBECONFIG_1 und PATH_TO_KUBECONFIG_2 durch die kubeconfig-Dateien für Ihre Cluster.

Mesh CA

  1. Installieren Sie ein Gateway in cluster1 speziell für east-west-Traffic an $CLUSTER_2. Standardmäßig ist dieses Gateway im Internet öffentlich zugänglich. Für Produktionssysteme sind möglicherweise zusätzliche Zugriffseinschränkungen erforderlich, z. B. Firewallregeln, um externe Angriffe zu verhindern.

    asm/istio/expansion/gen-eastwest-gateway.sh \
        --mesh ${MESH_ID} \
        --cluster ${CLUSTER_1} \
        --network default \
        --revision asm-1118-4 | \
        istioctl --kubeconfig=PATH_TO_KUBECONFIG_1 install -y --set spec.values.global.pilotCertProvider=kubernetes -f -
    
  2. Installieren Sie ein Gateway in $CLUSTER_2, das für den east-west-Traffic für $CLUSTER_1 reserviert ist.

    asm/istio/expansion/gen-eastwest-gateway.sh \
        --mesh ${MESH_ID} \
        --cluster ${CLUSTER_2} \
        --network default \
        --revision asm-1118-4 | \
        istioctl install --kubeconfig=PATH_TO_KUBECONFIG_2 -y --set spec.values.global.pilotCertProvider=kubernetes -f -
    

Istio CA

  1. Installieren Sie ein Gateway in cluster1 speziell für east-west-Traffic an $CLUSTER_2. Standardmäßig ist dieses Gateway im Internet öffentlich zugänglich. Für Produktionssysteme sind möglicherweise zusätzliche Zugriffseinschränkungen erforderlich, z. B. Firewallregeln, um externe Angriffe zu verhindern.

    asm/istio/expansion/gen-eastwest-gateway.sh \
        --mesh ${MESH_ID} \
        --cluster ${CLUSTER_1} \
        --network default \
        --revision asm-1118-4 | \
        istioctl --kubeconfig=PATH_TO_KUBECONFIG_1 install -y -f -
    
  2. Installieren Sie ein Gateway in $CLUSTER_2, das für den east-west-Traffic für $CLUSTER_1 reserviert ist.

    asm/istio/expansion/gen-eastwest-gateway.sh \
        --mesh ${MESH_ID} \
        --cluster ${CLUSTER_2} \
        --network default \
        --revision asm-1118-4 | \
        istioctl --kubeconfig=PATH_TO_KUBECONFIG_2 install -y -f -
    

Verfügbar machende Dienste

Da sich die Cluster in separaten Netzwerken befinden, müssen Sie alle Dienste (*.local) auf dem east-west-Gateway in beiden Clustern verfügbar machen. Während dieses Gateway öffentlich im Internet verfügbar ist, können Dienste nur mit Diensten mit einem vertrauenswürdigen mTLS-Zertifikat und einer Arbeitslast-ID aufgerufen werden, genauso wie sie sich im selben Netzwerk befinden.

  1. Machen Sie Dienste über das east-west-Gateway für CLUSTER_NAME_1 verfügbar.

    kubectl --kubeconfig=PATH_TO_KUBECONFIG_1 apply -n istio-system -f \
        asm/istio/expansion/expose-services.yaml
    
  2. Machen Sie Dienste über das east-west-Gateway für CLUSTER_NAME_2 verfügbar.

    kubectl --kubeconfig=PATH_TO_KUBECONFIG_2 apply -n istio-system -f \
        asm/istio/expansion/expose-services.yaml
    

Endpunkterkennung aktivieren

Führen Sie den Befehl asmcli create-mesh aus, um die Endpunkterkennung zu aktivieren. In diesem Beispiel werden nur zwei Cluster gezeigt. Sie können jedoch den Befehl ausführen, um die Endpunkterkennung auf zusätzlichen Clustern zu aktivieren. Dabei gilt die maximal zulässige Anzahl von Clustern, die Sie Ihrer Flotte hinzufügen können..

  ./asmcli create-mesh \
      FLEET_PROJECT_ID \
      PATH_TO_KUBECONFIG_1 \
      PATH_TO_KUBECONFIG_2