Migração de CA no local
Se sua malha tiver vários clusters com cargas de trabalho que enviam solicitações para cargas de trabalho em outro cluster, siga todas as etapas neste guia para todos os clusters.
Siga as etapas deste guia para os casos de uso a seguir:
- Migrar um plano de controle do Cloud Service Mesh v1.13 ou posterior no cluster com a AC da malha para o Certificate Authority Service.
- Migre um plano de controle gerenciado do Cloud Service Mesh em um canal de lançamento que é mapeado para a v1.13 ou posterior com a CA da malha para o Certificate Authority Service.
Limitações
As migrações e upgrades de CA no local só são compatíveis com o Cloud Service Mesh v1.13 ou mais recente. Para migrações gerenciadas do plano de controle, verifique se o canal escolhido é mapeado para a v1.13 ou posterior.
Prerequisites
Antes de seguir as etapas deste guia, verifique se você:
Além disso, verifique se você está usando o Cloud Service Mesh v1.13 ou mais recente.
Ferramentas necessárias
Durante a migração, você executa uma ferramenta fornecida pelo Google, migrate_ca
. Essa ferramenta
tem as seguintes dependências:
awk
grep
jq
kubectl
head
sed
tr
yq
Antes de fazer o download da ferramenta migrate_ca
, siga as etapas em
Preparar-se para a migração.
Visão geral da migração
Durante o processo de migração, a autenticação e a autorização estão totalmente funcionais entre as cargas de trabalho que usam a CA anterior e as cargas de trabalho que usam a nova CA.
A ferramenta de migração migrate_ca
vai criar um mapa de configuração do Kubernetes para
rastrear o status da migração da AC por revisão/canal do Cloud Service Mesh instalado.
Esse é um recurso privilegiado instalado no namespace 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:
A ferramenta de migração fará backup do mapa de configuração do Istio MeshConfig antes de
alterá-lo. Além disso, ela tentará migrar a configuração da CA usando o CRD
ProxyConfig
sempre que possível.
Veja a seguir um resumo da migração da CA:
Preparo para a migração
Faça o download da ferramenta bash
migrate_ca
:curl https://raw.githubusercontent.com/GoogleCloudPlatform/anthos-service-mesh-packages/main/scripts/migration/ca-migration/migrate_ca > migrate_ca
Torne a ferramenta executável:
chmod +x migrate_ca
Configure o diretório de trabalho:
./migrate_ca setup --output_dir OUTPUT_DIR
Altere o diretório de trabalho para o OUTPUT_DIR especificado na etapa anterior.
cd OUTPUT_DIR
Execute o comando a seguir para garantir que todos os pré-requisitos sejam atendidos:
./migrate_ca check-prerequisites
Anote a revisão (
ASM_REVISION
) do plano de controle associado à CA anterior que está sendo migrada. As etapas necessárias dependem do tipo de plano de controle, seja no cluster ou gerenciado.No cluster
asm-revision=$(kubectl get deploy -n istio-system -l app=istiod -o \ "jsonpath={.items[*].metadata.labels[istio\.io/rev']}{'\n'}")
Grupo
Consulte o canal já instalado.
Como a migração da AC no local exige que você reinicie as cargas de trabalho, verifique se o Orçamento de interrupção do pod está configurado corretamente e se todos os aplicativos com a AC que precisa ser migrada têm mais de um pod em execução.
Verifique se o cluster já está registrado em uma frota e se a identidade da carga de trabalho está ativada no cluster. Em seguida, anote o ID do projeto da frota como (
FLEET_ID
) para etapas futuras.A ferramenta aceita
kubeConfig
ekubeContext
para selecionar o cluster em que as operações são realizadas. Se esses argumentos não forem transmitidos, o contexto/configuração padrão será usado.Para adicionar as credenciais de um cluster do GKE ao
kubeConfig
, use o seguinte comando:gcloud container clusters get-credentials CLUSTER_NAME
Para mudar o contexto
kubectl
atual ou transmitir o contexto para a ferramenta, use o seguinte comando:kubectl config get-contexts kubectl config use-context CLUSTER_NAME
Inicializar a nova CA
As etapas necessárias para inicializar a nova CA dependem da nova CA para a qual você está migrando. Execute essas etapas em cada cluster de frota para onde você quer migrar a CA.
CA da malha
Chame o subcomando
initialize
da ferramenta de utilitário.Se você estiver especificando configurações personalizadas do Kubernetes, faça o seguinte:
./migrate_ca initialize --kubeconfig KUBECONFIG --kubecontext KUBECONTEXT --ca mesh_ca --old_ca OLD_CA_TYPE \ --fleet_id FLEET_ID --revision ASM_REVISION
Se esse não for seu caso, faça o seguinte:
./migrate_ca initialize --ca mesh_ca --old_ca OLD_CA_TYPE \ --fleet_id FLEET_ID --revision ASM_REVISION ```
Serviço de CA
a. Siga as etapas necessárias para inicializar o Certificate Authority Service. Anote o
CA_POOL
.b. Chame o subcomando
initialize
da ferramenta de utilitário:Se você estiver especificando configurações personalizadas do Kubernetes, faça o seguinte:
./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
Se esse não for seu caso, faça o seguinte:
./migrate_ca initialize --ca gcp_cas --ca-pool CA_POOL --ca-old OLD_CA_TYPE \ --fleet-id FLEET_ID --revision ASM_REVISION
Adição de TrustedAnchors em toda a malha para todos os clusters da frota.
Repita as etapas abaixo para a nova CA e para a CA antiga para todos os clusters que fazem parte da frota.
Faça o download doTrustAnchors da CA:
CA da malha
./migrate_ca download-trust-anchor --ca mesh_ca --ca_cert ROOT_CERT.pem
Serviço de CA
Armazene o certificado da CA em um arquivo:
gcloud privateca pools get-ca-certs POOL_NAME --location=POOL_REGION --project=POOL_PROJECT--output-file ROOT_CERT.pem
Adição de TrustedAnchors da CA:
./migrate-ca add-trust-anchor --ca_cert ROOT_CERT.pem
Verifique se os trustedAnchors foram recebidos por todas as cargas de trabalho na frota. No argumento de namespaces, transmita todos os namespaces em que as cargas de trabalho são implantadas:
./migrate-ca check-trust-anchor --ca_cert ROOT_CERT.pem --namespaces NAMESPACES
Resposta esperada:
Check the CA cert in namespace nsa-1-24232 a-v1-597f875788-52c5t.nsa-1-24232 trusts root-cert.pem
Migrar a CA
Migrar a configuração da CA. O comando necessário depende da nova CA para a qual você está migrando.
CA da malha
./migrate_ca migrate-ca --ca mesh_ca
Serviço de CA
./migrate_ca migrate-ca --ca gcp_cas --ca_pool CA_POOL
Reiniciar todas as cargas de trabalho.
Para minimizar o risco de inatividade do tráfego TLS, esta etapa precisa afetar o menor número de cargas de trabalho primeiro. Reinicie somente as cargas de trabalho associadas à revisão do plano de controle ASM_REVISION. Por exemplo, se todas as cargas de trabalho no namespace NAMESPACE do Kubernetes estiverem associadas ao mesmo plano de controle do Cloud Service Mesh.
kubectl rollout restart deployment -n NAMESPACE
Verifique se as conexões mTLS funcionam entre as cargas de trabalho no namespace reiniciado e outras cargas de trabalho antes de repetir as etapas 1 e 2 para todos os namespaces e para todos os clusters que fazem parte da frota. Se novas cargas de trabalho estiverem chegando e o tráfego da malha não for interrompido, repita as etapas 1 e 2 para todos os namespaces e clusters que fazem parte da frota. Caso contrário, prossiga para a reversão da configuração mais recente da CA.
Verifique se a nova configuração de CA está sendo usada por todas as cargas de trabalho:
./migrate_ca verify-ca --ca_cert ROOT_CERT.pem --namespaces NAMESPACES
Resposta esperada:
Check the CA configuration in namespace nsb-2-76095 b-v1-8ff557759-pds69.nsb-2-76095 is signed by root-cert.pem
Fazer uma reversão
Reverta a configuração da CA e remova os trustedAnchors recém-configurados:
./migrate-ca rollback
Reiniciar todas as cargas de trabalho. Reinicie apenas as cargas de trabalho associadas à revisão do plano de controle ASM_REVISION. Por exemplo, se todas as cargas de trabalho no namespace NAMESPACES do Kubernetes estiverem associadas ao mesmo plano de controle do Cloud Service Mesh.
kubectl rollout restart deployment -n NAMESPACES
(Opcional) Verifique se a configuração da CA mais antiga está sendo usada por todas as cargas de trabalho.
./migrate-ca verify-ca --ca_cert older-root-cert.pem
Repita as etapas 1 a 3 para todos os clusters na frota em que as cargas de trabalho usam o plano de controle ASM_REVISION.
Parabéns! Você executou uma migração da CA no local.