Migração de CA no local
Se a sua malha tiver vários clusters com cargas de trabalho que enviam pedidos para cargas de trabalho noutro cluster, siga todos os passos neste guia para todos os clusters.
Use os passos neste guia para o seguinte exemplo de utilização:
- Migre um plano de controlo do Cloud Service Mesh v1.13 ou posterior no cluster com a AC da malha para o serviço de autoridade de certificação.
- Migre um plano de controlo do Cloud Service Mesh gerido num canal de lançamento que mapeia para a versão 1.13 ou posterior com a CA da malha para o serviço de autoridade de certificação.
Limitações
As migrações e as atualizações de CA no local só são suportadas a partir do Cloud Service Mesh v1.13 ou posterior. Para migrações do plano de controlo gerido, certifique-se de que o canal escolhido é mapeado para a versão 1.13 ou posterior.
Pré-requisitos
Antes de seguir os passos neste guia, certifique-se de que tem:
Além disso, certifique-se de que está atualmente no Cloud Service Mesh v1.13 ou posterior.
Ferramentas necessárias
Durante a migração, executa uma ferramenta fornecida pela Google, migrate_ca
. Esta ferramenta tem as seguintes dependências:
awk
grep
jq
kubectl
head
sed
tr
yq
Antes de transferir a ferramenta migrate_ca
, siga os passos em
Prepare-se para a migração.
Vista geral da migração
Durante o processo de migração, a autenticação e a autorização são totalmente funcionais entre cargas de trabalho que usam a AC anterior e cargas de trabalho que usam a nova AC.
A ferramenta de migração migrate_ca
cria um mapa de configuração do Kubernetes para acompanhar o estado da migração da AC por revisão/canal do Cloud Service Mesh instalado.
Este é um recurso privilegiado instalado no espaço de nomes 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 faz uma cópia de segurança do mapa de configuração do Istio MeshConfig antes de o alterar e tenta migrar a configuração da AC através do CRD ProxyConfig
quando possível.
Segue-se um resumo da migração da CA:
Prepare-se para a migração
Transfira a
migrate_ca
ferramenta bash: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 no passo anterior
cd OUTPUT_DIR
Execute o seguinte comando para garantir que todos os pré-requisitos são cumpridos:
./migrate_ca check-prerequisites
Tome nota da revisão (
ASM_REVISION
) do plano de controlo associado à AC anterior que está a ser migrada. Os passos necessários dependem do tipo de plano de controlo, seja no cluster ou gerido.No cluster
asm-revision=$(kubectl get deploy -n istio-system -l app=istiod -o \ "jsonpath={.items[*].metadata.labels[istio\.io/rev']}{'\n'}")
Gerido
Consulte o canal já instalado.
Uma vez que a migração da AC no local requer o reinício das cargas de trabalho, certifique-se de que o orçamento de interrupção de pods está configurado corretamente e que todas as aplicações cuja AC precisa de ser migrada têm mais do que um pod em execução.
Certifique-se de que o cluster já está registado numa frota e que a identidade da carga de trabalho está ativada no cluster. Em seguida, tome nota do ID do projeto da frota como (
FLEET_ID
) para passos futuros.A ferramenta aceita
kubeConfig
ekubeContext
para selecionar o cluster onde as operações são realizadas. Se estes argumentos não forem transmitidos, são usados o contexto/configuração predefinidos.Para adicionar as credenciais de um cluster do GKE ao
kubeConfig
, use o seguinte comando:gcloud container clusters get-credentials CLUSTER_NAME
Para alterar o contexto
kubectl
atual ou transmitir contexto à ferramenta, use o seguinte comando:kubectl config get-contexts kubectl config use-context CLUSTER_NAME
Inicialize a nova CA
Os passos necessários para inicializar a nova AC dependem da nova AC para a qual está a migrar. Execute estes passos em todos os clusters da frota onde quer migrar a AC.
Mesh CA
Chame o subcomando
initialize
da ferramenta de utilidade.Se estiver a especificar configurações personalizadas do Kubernetes:
./migrate_ca initialize --kubeconfig KUBECONFIG --kubecontext KUBECONTEXT --ca mesh_ca --old_ca OLD_CA_TYPE \ --fleet_id FLEET_ID --revision ASM_REVISION
Caso contrário:
./migrate_ca initialize --ca mesh_ca --old_ca OLD_CA_TYPE \ --fleet_id FLEET_ID --revision ASM_REVISION ```
Serviço de AC
a. Siga os passos necessários para inicializar o serviço de autoridade de certificação. Tome nota do
CA_POOL
.b. Chame o subcomando
initialize
da ferramenta de utilidade:Se estiver a especificar configurações personalizadas do Kubernetes:
./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
Caso contrário:
./migrate_ca initialize --ca gcp_cas --ca-pool CA_POOL --ca-old OLD_CA_TYPE \ --fleet-id FLEET_ID --revision ASM_REVISION
Adicione trustAnchors ao nível da malha para todos os clusters na frota
Repita os passos abaixo para a nova e a antiga AC para todos os clusters que fazem parte da frota.
Transfira os trustAnchors da AC:
Mesh CA
./migrate_ca download-trust-anchor --ca mesh_ca --ca_cert ROOT_CERT.pem
Serviço de AC
Armazene o certificado da CA num ficheiro:
gcloud privateca pools get-ca-certs POOL_NAME --location=POOL_REGION --project=POOL_PROJECT--output-file ROOT_CERT.pem
Adicione trustAnchors da AC:
./migrate-ca add-trust-anchor --ca_cert ROOT_CERT.pem
Verifique se os trustAnchors foram recebidos por todas as cargas de trabalho na frota. No argumento namespaces, transmita todos os espaços de nomes onde as cargas de trabalho estão implementadas:
./migrate-ca check-trust-anchor --ca_cert ROOT_CERT.pem --namespaces NAMESPACES
Resultado esperado:
Check the CA cert in namespace nsa-1-24232 a-v1-597f875788-52c5t.nsa-1-24232 trusts root-cert.pem
Migre a AC
Migre a configuração da CA. O comando necessário depende da AC para a qual está a migrar.
Mesh CA
./migrate_ca migrate-ca --ca mesh_ca
Serviço de AC
./migrate_ca migrate-ca --ca gcp_cas --ca_pool CA_POOL
Reinicie todas as cargas de trabalho.
Para minimizar o risco de indisponibilidade do tráfego TLS, este passo deve afetar primeiro o menor número de cargas de trabalho. Reinicie apenas as cargas de trabalho associadas à revisão do plano de controlo ASM_REVISION. Por exemplo, se todas as cargas de trabalho no namespace do Kubernetes NAMESPACE estiverem associadas ao mesmo plano de controlo do Cloud Service Mesh.
kubectl rollout restart deployment -n NAMESPACE
Verifique se as ligações mTLS funcionam entre as cargas de trabalho no espaço de nomes reiniciado e outras cargas de trabalho antes de repetir os passos 1 e 2 para todos os espaços de nomes e para todos os clusters que fazem parte da frota. Se surgirem cargas de trabalho mais recentes e o tráfego de malha não for interrompido, repita os passos 1 e 2 para todos os espaços de nomes e clusters que fazem parte da frota. Caso contrário, avance para fazer uma reversão para reverter a configuração da AC mais recente.
Verifique se a nova configuração da AC está a ser usada por todas as cargas de trabalho:
./migrate_ca verify-ca --ca_cert ROOT_CERT.pem --namespaces NAMESPACES
Resultado esperado:
Check the CA configuration in namespace nsb-2-76095 b-v1-8ff557759-pds69.nsb-2-76095 is signed by root-cert.pem
Faça uma reversão
Reverta a configuração da AC e remova os trustAnchors recém-configurados:
./migrate-ca rollback
Reinicie todas as cargas de trabalho. Certifique-se de que reinicia apenas as cargas de trabalho associadas à revisão do plano de controlo ASM_REVISION. Por exemplo, se todas as cargas de trabalho no namespace do Kubernetes NAMESPACES estiverem associadas ao mesmo plano de controlo do Cloud Service Mesh.
kubectl rollout restart deployment -n NAMESPACES
(Opcional) Verifique se a configuração da AC mais antiga está a ser usada por todas as cargas de trabalho.
./migrate-ca verify-ca --ca_cert older-root-cert.pem
Repita os passos 1 a 3 para todos os clusters na frota onde as cargas de trabalho usam o plano de controlo ASM_REVISION.
Parabéns! Migrou com êxito uma AC no local.