Migrazione delle CA in loco
Se il tuo mesh ha più cluster con carichi di lavoro che inviano richieste carichi di lavoro su un altro cluster, quindi segui tutti i passaggi di questa guida per cluster.
Segui la procedura descritta in questa guida per il seguente caso d'uso:
- Esegui la migrazione di un piano di controllo Cloud Service Mesh versione 1.13 o successive all'interno del cluster con la CA Mesh a Certificate Authority Service.
- Esegui la migrazione di un piano di controllo gestito di Cloud Service Mesh su un canale di rilascio che viene mappato alla versione 1.13 o successiva con Mesh CA collegato a Certificate Authority Service.
Limitazioni
Le migrazioni e gli upgrade delle CA in-place sono supportati solo dalla versione 1.13 o successiva di Cloud Service Mesh. Per le migrazioni del piano di controllo gestite, assicurati che il canale scelto sia corrispondente alla versione 1.13 o successiva.
Prerequisiti
Prima di seguire i passaggi descritti in questa guida, assicurati di avere:
Inoltre, assicurati di utilizzare Cloud Service Mesh 1.13 o versioni successive.
Strumenti richiesti
Durante la migrazione, esegui lo strumento fornito da Google, migrate_ca
. Questo strumento
ha le seguenti dipendenze:
awk
grep
jq
kubectl
head
sed
tr
yq
Prima di scaricare lo strumento migrate_ca
, segui la procedura descritta in
Preparati per la migrazione.
Panoramica della migrazione
Durante il processo di migrazione, l'autenticazione e l'autorizzazione funzionale tra carichi di lavoro con la CA precedente e carichi di lavoro con il nuovo Canada.
Lo strumento di migrazione migrate_ca
creerà una mappa di configurazione Kubernetes per monitorare lo stato della migrazione della CA per revisione/canale Cloud Service Mesh installato.
Questa è una risorsa con privilegi installata nello spazio dei nomi istio-system
.
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:
Lo strumento di migrazione eseguirà il backup della mappa di configurazione Istio MeshConfig prima di modificarla e tenterà di eseguire la migrazione della configurazione della CA utilizzando il CRD ProxyConfig
, se possibile.
Di seguito è riportato uno schema della migrazione della CA:
Prepararsi per la migrazione
Scarica lo strumento bash
migrate_ca
:curl https://raw.githubusercontent.com/GoogleCloudPlatform/anthos-service-mesh-packages/main/scripts/migration/ca-migration/migrate_ca > migrate_ca
Rendi eseguibile lo strumento:
chmod +x migrate_ca
Configura la directory di lavoro:
./migrate_ca setup --output_dir OUTPUT_DIR
Modifica la directory di lavoro in OUTPUT_DIR specificata nel passaggio precedente
cd OUTPUT_DIR
Esegui il seguente comando per assicurarti che tutti i prerequisiti siano soddisfatti:
./migrate_ca check-prerequisites
Prendi nota della revisione (
ASM_REVISION
) di al piano di controllo associato alla CA precedente di cui viene eseguita la migrazione. I passaggi richiesti dipendono dal tipo di piano di controllo, in-cluster o gestito.Nel cluster
asm-revision=$(kubectl get deploy -n istio-system -l app=istiod -o \ "jsonpath={.items[*].metadata.labels[istio\.io/rev']}{'\n'}")
Gestito
Fai riferimento al canale è già installata.
Poiché la migrazione in situ della CA richiede il riavvio dei carichi di lavoro, assicurati che il budget per l'interruzione dei pod sia configurato correttamente e che tutte le applicazioni di cui è necessaria la migrazione della CA abbiano più di un pod in esecuzione.
Assicurati che il cluster sia già registrato a un parco risorse e che Workload-Identity sia abilitato sul cluster. Poi, prendi nota ID progetto del parco risorse come (
FLEET_ID
) per il futuro passaggi.Lo strumento accetta
kubeConfig
ekubeContext
per selezionare il cluster in cui vengono eseguite le operazioni. Se questi argomenti non vengono passati, vengono utilizzati il contesto/la configurazione predefiniti.Per aggiungere le credenziali di un cluster GKE a
kubeConfig
, utilizza questo comando:gcloud container clusters get-credentials CLUSTER_NAME
Per cambiare il contesto corrente di
kubectl
o per passare il contesto allo strumento: utilizza questo comando:kubectl config get-contexts kubectl config use-context CLUSTER_NAME
Inizializza la nuova CA
I passaggi necessari per inizializzare la nuova CA dipendono dalla nuova CA a cui stanno eseguendo la migrazione. Esegui questi passaggi in ogni cluster del parco risorse in cui vuoi eseguire la migrazione della CA.
CA mesh
Chiama il sottocomando dello strumento di utilità
initialize
.Se specifichi configurazioni Kubernetes personalizzate:
./migrate_ca initialize --kubeconfig KUBECONFIG --kubecontext KUBECONTEXT --ca mesh_ca --old_ca OLD_CA_TYPE \ --fleet_id FLEET_ID --revision ASM_REVISION
In caso contrario:
./migrate_ca initialize --ca mesh_ca --old_ca OLD_CA_TYPE \ --fleet_id FLEET_ID --revision ASM_REVISION ```
Servizio CA
a. Segui i passaggi richiesti per inizializzare Certificate Authority Service. Prendi nota di
CA_POOL
.b. Chiama il sottocomando dello strumento di utilità
initialize
:Se specifichi configurazioni Kubernetes personalizzate:
./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
In caso contrario:
./migrate_ca initialize --ca gcp_cas --ca-pool CA_POOL --ca-old OLD_CA_TYPE \ --fleet-id FLEET_ID --revision ASM_REVISION
Aggiungi trustAnchors a livello di mesh per tutti i cluster del parco risorse
Ripeti i passaggi seguenti sia per la nuova CA sia per la CA precedente per tutti i cluster della flotta.
Scarica i trustAnchors della CA:
CA mesh
./migrate_ca download-trust-anchor --ca mesh_ca --ca_cert ROOT_CERT.pem
Servizio CA
Archivia il certificato CA in un file:
gcloud privateca pools get-ca-certs POOL_NAME --location=POOL_REGION --project=POOL_PROJECT--output-file ROOT_CERT.pem
Aggiungi i trustAnchor della CA:
./migrate-ca add-trust-anchor --ca_cert ROOT_CERT.pem
Verifica che i trustAnchor siano stati ricevuti da tutti i carichi di lavoro in parco risorse. Nell'argomento spazi dei nomi, passa tutti gli spazi dei nomi in cui i carichi di lavoro di cui viene eseguito il deployment:
./migrate-ca check-trust-anchor --ca_cert ROOT_CERT.pem --namespaces NAMESPACES
Risultato previsto:
Check the CA cert in namespace nsa-1-24232 a-v1-597f875788-52c5t.nsa-1-24232 trusts root-cert.pem
Esegui la migrazione della CA
Eseguire la migrazione della configurazione CA. Il comando richiesto dipende dalla nuova CA di cui stai eseguendo la migrazione.
Mesh CA
./migrate_ca migrate-ca --ca mesh_ca
Servizio CA
./migrate_ca migrate-ca --ca gcp_cas --ca_pool CA_POOL
Riavviare tutti i carichi di lavoro.
Per ridurre al minimo il rischio di tempi di inattività del traffico TLS, questo passaggio dovrebbe influire innanzitutto sul numero più ridotto di carichi di lavoro. Riavvia solo i carichi di lavoro che associata alla revisione del piano di controllo ASM_REVISION. Ad esempio, se tutti i carichi di lavoro nello spazio dei nomi KubernetesNAMESPACE sono associati allo stesso piano di controllo Cloud Service Mesh.
kubectl rollout restart deployment -n NAMESPACE
Verifica che le connessioni mTLS funzionino tra i carichi di lavoro nello spazio dei nomi riavviato e altri carichi di lavoro prima di ripetere i passaggi 1 e 2 per tutti gli spazi dei nomi e per tutti i cluster che fanno parte del parco. Se sono in arrivo nuovi carichi di lavoro e il traffico del mesh non viene interrotto, ripeti i passaggi 1 e 2 per tutti gli spazi dei nomi e i cluster che fanno parte del parco. In caso contrario, procedi con l'esecuzione di un rollback per il rollback la configurazione della CA più recente.
Verifica che la nuova configurazione della CA venga utilizzata da tutti i carichi di lavoro:
./migrate_ca verify-ca --ca_cert ROOT_CERT.pem --namespaces NAMESPACES
Output previsto:
Check the CA configuration in namespace nsb-2-76095 b-v1-8ff557759-pds69.nsb-2-76095 is signed by root-cert.pem
Esegui un rollback
Esegui il rollback della configurazione della CA e rimuovi gli elementi trustAnchors appena configurati:
./migrate-ca rollback
Riavvia tutti i carichi di lavoro. Assicurati di riavviare solo i carichi di lavoro associata alla revisione del piano di controllo ASM_REVISION. Ad esempio, se tutti i carichi di lavoro nello spazio dei nomi KubernetesNAMESPACES sono associati allo stesso piano di controllo Cloud Service Mesh.
kubectl rollout restart deployment -n NAMESPACES
(Facoltativo) Verifica che la configurazione CA precedente sia utilizzata da tutti carichi di lavoro con scale out impegnativi.
./migrate-ca verify-ca --ca_cert older-root-cert.pem
Ripeti i passaggi da 1 a 3 per tutti i cluster nel parco risorse in cui i carichi di lavoro utilizzano ASM_REVISION.
Complimenti! Hai eseguito correttamente una migrazione della CA in loco.