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 ab Cloud Service Mesh v1.13 unterstützt. oder später. 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:
Achten Sie außerdem darauf, dass Sie derzeit Cloud Service Mesh v1.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:
awk
grep
jq
kubectl
head
sed
tr
yq
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 für
Verfolgen Sie den Status der Zertifizierungsstellenmigration pro installierter Cloud Service Mesh-Version/-Version.
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_ca
herunter:curl https://raw.githubusercontent.com/GoogleCloudPlatform/anthos-service-mesh-packages/main/scripts/migration/ca-migration/migrate_ca > migrate_ca
Machen Sie das Tool ausführbar:
chmod +x migrate_ca
Richten 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_DIR
Führen Sie den folgenden Befehl aus, um sicherzustellen, dass alle Voraussetzungen erfüllt sind:
./migrate_ca check-prerequisites
Notieren 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
kubeConfig
undkubeContext
, 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
kubeConfig
hinzuzufügen:gcloud container clusters get-credentials CLUSTER_NAME
Verwenden 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
initialize
des 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_REVISION
Andernfalls:
./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
initialize
des 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_REVISION
Andernfalls:
./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.pem
CA-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.pem
Fügen Sie die trustAnchors der CA hinzu:
./migrate-ca add-trust-anchor --ca_cert ROOT_CERT.pem
Prü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 NAMESPACES
Erwartete 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_ca
CA-Dienst
./migrate_ca migrate-ca --ca gcp_cas --ca_pool CA_POOL
Starten 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 NAMESPACE
Prü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 NAMESPACES
Erwartete 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 rollback
Starten Sie alle Arbeitslasten neu. Starten Sie nur Arbeitslasten neu, die der Überarbeitung ASM_REVISION der Steuerungsebene zugeordnet sind. Wenn beispielsweise alle Arbeitslasten im Kubernetes-Namespace NAMESPACES sind mit demselben Cloud Service Mesh verknüpft Steuerungsebene.
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.pem
Wiederholen 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.