Hybrid-Mesh-Netzwerk einrichten
Auf dieser Seite wird erläutert, wie Sie ein Hybrid-Mesh-Netzwerk für die folgenden Plattformen einrichten:
- Hybrid: GKE auf Google Cloud und Google Distributed Cloud (nur Software) für VMware
- Hybrid: GKE auf Google Cloud und Google Distributed Cloud (nur Software) für Bare Metal
Mit dieser Anleitung richten Sie zwei Cluster ein. Sie können diesen Prozess jedoch erweitern, um eine beliebige Anzahl von Clustern in Ihr Mesh-Netzwerk einzubinden.
Vorbereitung
- Alle Cluster müssen im selben Hostprojekt der Flotte registriert sein.
- Alle GKE-Cluster müssen sich in einer gemeinsam genutzten VPC-Konfiguration im selben Netzwerk befinden.
- Die Adresse des Kubernetes-Steuerungsebenen und die Gateway-Adresse des Clusters müssen von jedem Cluster im Mesh-Netzwerk aus erreichbar sein. Das Google Cloud -Projekt, in dem sich die GKE-Cluster befinden, sollte externe Load-Balancing-Typen erstellen dürfen. Wir empfehlen, autorisierte Netzwerke und VPC-Firewallregeln zu verwenden, um den Zugriff einzuschränken.
- Private Cluster, einschließlich privater GKE-Cluster, werden nicht unterstützt. Wenn Sie lokale Cluster einschließlich Google Distributed Cloud (nur Software) für VMware und Google Distributed Cloud (nur Software) für Bare-Metal verwenden, müssen die Adresse der Kubernetes-Steuerungsebene und die Gateway-Adresse über Pods in den GKE-Clustern erreichbar sein. Wir empfehlen die Verwendung von CloudVPN, um das Subnetz des GKE-Clusters mit dem Netzwerk des lokalen Clusters zu verbinden.
- Wenn Sie die Istio-Zertifizierungsstelle nutzen, verwenden Sie für alle Cluster dasselbe benutzerdefinierte Root-Zertifikat.
Hinweis
Sie benötigen Zugriff auf die kubeconfig-Dateien für alle Cluster, die Sie im Mesh-Netzwerk einrichten. Zum Erstellen einer neuen kubeconfig-Datei für den Cluster können Sie im GKE-Cluster die KUBECONFIG-Umgebung mit dem vollständigen Dateipfad als Wert in Ihr Terminal exportieren und den kubeconfig-Eintrag generieren.
Umgebungsvariablen und Platzhalter einrichten
Sie benötigen die folgenden Umgebungsvariablen zum Installieren des east-west-Gateways.
Erstellen Sie eine Umgebungsvariable für die Projektnummer. Ersetzen Sie im folgenden Befehl den Wert FLEET_PROJECT_ID durch die Projekt-ID des Hostprojekts der Flotte.
export PROJECT_NUMBER=$(gcloud projects describe FLEET_PROJECT_ID --format="value(projectNumber)")Erstellen Sie eine Umgebungsvariable für die Mesh-Netzwerk-ID.
export MESH_ID="proj-${PROJECT_NUMBER}"Erstellen Sie Umgebungsvariablen für die Netzwerknamen.
Für GKE-Cluster wird standardmäßig der Name des Clusternetzwerks verwendet:
export NETWORK_1="PROJECT_ID-CLUSTER_NETWORK"
Andere Cluster verwenden
default:export NETWORK_2="default"
Wenn Sie Cloud Service Mesh auf anderen Clustern mit abweichenden Werten für
--network_idinstalliert haben, sollten Sie dieselben Werte an den Wert NETWORK_2 übergeben.
east-west-Gateway installieren
Installieren Sie ein Gateway in CLUSTER_1 (Ihr GKE-Cluster), das east-west-Traffic an CLUSTER_2 (Ihren lokalen Cluster) ermöglicht:
asm/istio/expansion/gen-eastwest-gateway.sh \ --mesh ${MESH_ID} \ --network ${NETWORK_1} \ --revision asm-1274-1 | \ ./istioctl --kubeconfig=PATH_TO_KUBECONFIG_1 install -y -f -Beachten Sie, dass dieses Gateway standardmäßig im Internet öffentlich ist. Für Produktionssysteme sind möglicherweise zusätzliche Zugriffseinschränkungen erforderlich, z. B. Firewallregeln, um externe Angriffe zu verhindern.
Installieren Sie in CLUSTER_2 ein Gateway für east-west-Traffic für CLUSTER_1.
asm/istio/expansion/gen-eastwest-gateway.sh \ --mesh ${MESH_ID} \ --network ${NETWORK_2} \ --revision asm-1274-1 | \ ./istioctl --kubeconfig=PATH_TO_KUBECONFIG_2 install -y -f -
Dienste verfügbar machen
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 als ob sie sich im selben Netzwerk befinden würden.
Dienste über das east-west-Gateway für jeden Cluster freigeben
kubectl --kubeconfig=PATH_TO_KUBECONFIG_1 apply -n istio-system -f \
asm/istio/expansion/expose-services.yaml
kubectl --kubeconfig=PATH_TO_KUBECONFIG_2 apply -n istio-system -f \
asm/istio/expansion/expose-services.yaml
Endpoint Discovery aktivieren
Führen Sie den Befehl asmcli create-mesh aus, um die Endpoint Discovery zu aktivieren. In diesem Beispiel werden nur zwei Cluster gezeigt. Sie können aber den Befehl ausführen, um die Endpoint Discovery für zusätzliche Cluster zu aktivieren, wobei das GKE Hub-Dienstlimit gilt.
./asmcli create-mesh \
FLEET_PROJECT_ID \
PATH_TO_KUBECONFIG_1 \
PATH_TO_KUBECONFIG_2
Multi-Cluster-Verbindungen prüfen
Weitere Informationen finden Sie unter Sidecar-Proxys einfügen.