Direkte CA-Migration
Wenn Ihr Mesh über mehrere Cluster mit Arbeitslasten verfügt, die Anfragen an Arbeitslasten in einem anderen Cluster senden, führen Sie alle Schritte in dieser Anleitung für alle Cluster aus.
Befolgen Sie die Schritte in dieser Anleitung für folgende Anwendungsfälle:
- Migrieren Sie eine clusterinterne Steuerungsebene von Cloud Service Mesh Version 1.13 oder höher mit Mesh-CA zum Certificate Authority Service.
- Migrieren Sie eine verwaltete Steuerungsebene von Cloud Service Mesh mit Mesh CA zum Certificate Authority Service. auf einer Release-Version, die Version 1.13 oder höher zugeordnet ist.
Beschränkungen
Direkte CA-Migrationen und -Upgrades werden nur von Cloud Service Mesh v1.13 oder höher unterstützt. Achten Sie bei Migrationen von verwalteten Steuerungsebenen darauf, dass der ausgewählte Kanal Version 1.13 oder höher zugeordnet ist.
Vorbereitung
Bevor Sie die Schritte in dieser Anleitung ausführen, müssen Sie Folgendes ausführen:
Prüfen Sie außerdem, ob Sie derzeit Cloud Service Mesh Version 1.13 oder höher verwenden.
Erforderliche Tools
Während der Migration führen Sie ein von Google bereitgestelltes Tool aus: migrate_ca. Für dieses Tool gelten die folgenden Abhängigkeiten:
awkgrepjqkubectlheadsedtryq
Führen Sie vor dem Herunterladen des migrate_ca-Tools die Schritte unter Vorbereitung auf die Migration aus.
Übersicht über die Migration
Während des Migrationsprozesses funktionieren Authentifizierung und Autorisierung vollständig zwischen Arbeitslasten, die die vorherige CA verwenden, und Arbeitslasten, die die neue CA verwenden.
Das Migrationstool migrate_ca erstellt eine Kubernetes-Konfigurationszuordnung, um den Status der CA-Migration pro installierter Cloud Service Mesh-Version/Kanal zu verfolgen.
Dies ist eine privilegierte Ressource, die im Namespace istio-system installiert ist.
apiVersion: v1
kind: ConfigMap
metadata:
Name: asm-ca-migration-<revision>
Data:
revision:
start_time:
state_update_time:
current_state: TRUSTANCHOR_INJECT | MIGRATE_CA | ROLLBACK
old_ca:
target_ca:
Das Migrationstool sichert die Istio MeshConfig-Konfigurationszuordnung vor dem Ändern und versucht, die CA-Konfiguration, wenn möglich, mithilfe der ProxyConfig-CRD zu migrieren.
Im Folgenden finden Sie einen Überblick über die CA-Migration:
Migration vorbereiten
Laden Sie das Bash-Tool
migrate_caherunter:curl https://raw.githubusercontent.com/GoogleCloudPlatform/anthos-service-mesh-packages/main/scripts/migration/ca-migration/migrate_ca > migrate_caMachen Sie das Tool ausführbar:
chmod +x migrate_caRichten Sie das Arbeitsverzeichnis ein:
./migrate_ca setup --output_dir OUTPUT_DIRÄndern Sie das Arbeitsverzeichnis in das im vorherigen Schritt angegebene OUTPUT_DIR.
cd OUTPUT_DIRFühren Sie den folgenden Befehl aus, um sicherzustellen, dass alle Voraussetzungen erfüllt sind:
./migrate_ca check-prerequisitesNotieren Sie sich die Überarbeitung (
ASM_REVISION) der Steuerungsebene, die der vorherigen zu migrierenden CA zugeordnet ist. Die erforderlichen Schritte hängen vom Typ der Steuerungsebene ab, entweder clusterintern oder verwaltet.Clusterintern
asm-revision=$(kubectl get deploy -n istio-system -l app=istiod -o \ "jsonpath={.items[*].metadata.labels[istio\.io/rev']}{'\n'}")Verwaltet
Verweisen Sie auf den bereits installierten Kanal.
Da Sie bei der direkten CA-Migration Ihre Arbeitslasten neu starten müssen, muss das Budget für Pod-Störungen korrekt konfiguriert und alle Anwendungen, deren CA migriert werden muss, mehr als einen ausgeführten Pod haben.
Achten Sie darauf, dass der Cluster bereits für eine Flotte registriert ist und dass Workload Identity auf dem Cluster aktiviert ist. Notieren Sie sich dann die Projekt-ID der Flotte (
FLEET_ID) für zukünftige Schritte.Das Tool akzeptiert
kubeConfigundkubeContext, um den Cluster auszuwählen, in dem die Vorgänge ausgeführt werden. Wenn diese Argumente nicht übergeben werden, wird der Standardkontext/die Standardkonfiguration verwendet.Verwenden Sie den folgenden Befehl, um die Anmeldedaten eines GKE-Clusters in
kubeConfighinzuzufügen:gcloud container clusters get-credentials CLUSTER_NAMEVerwenden Sie den folgenden Befehl, um den aktuellen
kubectl-Kontext zu ändern oder den Kontext an das Tool zu übergeben:kubectl config get-contexts kubectl config use-context CLUSTER_NAME
Neue CA initialisieren
Die zum Initialisieren der neuen CA erforderlichen Schritte hängen von der neuen CA ab, zu der Sie migrieren. Führen Sie diese Schritte in jedem Flottencluster aus, in den Sie die CA migrieren möchten.
Mesh CA
Rufen Sie den Unterbefehl
initializedes Dienstprogramms auf.Wenn Sie benutzerdefinierte Kubernetes-Konfigurationen angeben:
./migrate_ca initialize --kubeconfig KUBECONFIG --kubecontext KUBECONTEXT --ca mesh_ca --old_ca OLD_CA_TYPE \ --fleet_id FLEET_ID --revision ASM_REVISIONAndernfalls:
./migrate_ca initialize --ca mesh_ca --old_ca OLD_CA_TYPE \ --fleet_id FLEET_ID --revision ASM_REVISION ```CA-Dienst
a. Folgen Sie den Schritten, die zum Initialisieren von Certificate Authority Service erforderlich sind. Notieren Sie sich den
CA_POOL.b. Rufen Sie den Unterbefehl
initializedes Dienstprogramms auf:Wenn Sie benutzerdefinierte Kubernetes-Konfigurationen angeben:
./migrate_ca initialize --kubeconfig KUBECONFIG --context KUBECONTEXT --ca gcp_cas --ca-pool CA_POOL --ca-old OLD_CA_TYPE \ --fleet-id FLEET_ID --revision ASM_REVISIONAndernfalls:
./migrate_ca initialize --ca gcp_cas --ca-pool CA_POOL --ca-old OLD_CA_TYPE \ --fleet-id FLEET_ID --revision ASM_REVISION
Mesh-weite trustAnchors für alle Cluster in der Flotte hinzufügen
Wiederholen Sie die folgenden Schritte für die neue und die alte CA für alle Cluster, die Teil der Flotte sind.
Laden Sie die trustAnchors der CA herunter:
Mesh CA
./migrate_ca download-trust-anchor --ca mesh_ca --ca_cert ROOT_CERT.pemCA-Dienst
Speichern Sie das CA-Zertifikat in einer Datei:
gcloud privateca pools get-ca-certs POOL_NAME --location=POOL_REGION --project=POOL_PROJECT--output-file ROOT_CERT.pemFügen Sie die trustAnchors der CA hinzu:
./migrate-ca add-trust-anchor --ca_cert ROOT_CERT.pemPrüfen Sie, ob die trustAnchors von allen Arbeitslasten in der Flotte empfangen wurden. Übergeben Sie im Namespace-Argument alle Namespaces, in denen Arbeitslasten bereitgestellt werden:
./migrate-ca check-trust-anchor --ca_cert ROOT_CERT.pem --namespaces NAMESPACESErwartete Ausgabe:
Check the CA cert in namespace nsa-1-24232 a-v1-597f875788-52c5t.nsa-1-24232 trusts root-cert.pem
CA migrieren
Migrieren Sie die CA-Konfiguration. Der erforderliche Befehl hängt von der neuen CA ab, zu der Sie migrieren.
Mesh CA
./migrate_ca migrate-ca --ca mesh_caCA-Dienst
./migrate_ca migrate-ca --ca gcp_cas --ca_pool CA_POOLStarten Sie alle Arbeitslasten neu.
Dieser Schritt sollte sich auf die kleinste Anzahl von Arbeitslasten auswirken, um das Risiko von TLS-Trafficausfällen zu minimieren. Starten Sie nur Arbeitslasten neu, die der Überarbeitung ASM_REVISION der Steuerungsebene zugeordnet sind. Beispielsweise wenn alle Arbeitslasten im Kubernetes-Namespace NAMESPACE derselben Cloud Service Mesh-Steuerungsebene zugeordnet sind.
kubectl rollout restart deployment -n NAMESPACEPrüfen Sie, ob mTLS-Verbindungen zwischen Arbeitslasten im neu gestarteten Namespace und anderen Arbeitslasten funktionieren, bevor Sie die Schritte 1 und 2 für alle Namespaces und für alle Cluster der Flotte wiederholen. Wenn neuere Arbeitslasten verfügbar sind und der Mesh-Traffic nicht unterbrochen wird, wiederholen Sie Schritte 1 und 2 für alle Namespaces und Cluster der Flotte. Andernfalls können Sie ein Rollback ausführen, um ein Rollback der neueren CA-Konfiguration durchzuführen.
Prüfen Sie, ob die neue CA-Konfiguration von allen Arbeitslasten verwendet wird:
./migrate_ca verify-ca --ca_cert ROOT_CERT.pem --namespaces NAMESPACESErwartete Ausgabe:
Check the CA configuration in namespace nsb-2-76095 b-v1-8ff557759-pds69.nsb-2-76095 is signed by root-cert.pem
Rollback durchführen
Führen Sie ein Rollback der CA-Konfiguration durch und entfernen Sie die neu konfigurierten trustAnchors:
./migrate-ca rollbackStarten Sie alle Arbeitslasten neu. Starten Sie nur Arbeitslasten neu, die der Überarbeitung ASM_REVISION der Steuerungsebene zugeordnet sind. Beispielsweise wenn alle Arbeitslasten im Kubernetes-Namespace NAMESPACES derselben Cloud Service Mesh-Steuerungsebene zugeordnet sind.
kubectl rollout restart deployment -n NAMESPACES(Optional) Prüfen Sie, ob die ältere CA-Konfiguration von allen Arbeitslasten verwendet wird.
./migrate-ca verify-ca --ca_cert older-root-cert.pemWiederholen Sie die Schritte 1 bis 3 für alle Cluster in der Flotte, in denen Arbeitslasten die Steuerungsebene ASM_REVISION verwenden.
Glückwunsch! Sie haben eine direkte CA-Migration durchgeführt.