Migration sur place de l'autorité de certification
Si votre maillage comporte plusieurs clusters avec des charges de travail qui envoient des requêtes aux charges de travail d'un autre cluster, suivez toutes les étapes de ce guide pour tous les clusters.
Suivez la procédure décrite dans ce guide pour migrer un maillage de services Cloud Service Mesh v1.13 au sein d'un cluster. ou un plan de contrôle ultérieur avec l'autorité de certification Cloud Service Mesh sur Certificate Authority Service.
Limites
Les migrations et les mises à niveau sur place des autorités de certification ne sont compatibles qu'avec Cloud Service Mesh en version 1.13 et ultérieures.
Prérequis
Avant de suivre les étapes de ce guide, vérifiez les points suivants :
De plus, assurez-vous d'utiliser Cloud Service Mesh v1.13 ou une version ultérieure.
Outils requis
Pendant la migration, vous exécutez un outil fourni par Google, migrate_ca
. Cet outil comporte les dépendances suivantes :
awk
grep
jq
kubectl
head
sed
tr
yq
Avant de télécharger l'outil migrate_ca
, suivez les étapes décrites dans la section Préparer votre migration.
Présentation de la migration
Au cours du processus de migration, l'authentification et l'autorisation sont entièrement fonctionnelles entre les charges de travail utilisant l'autorité de certification précédente et les charges de travail utilisant la nouvelle autorité de certification.
L'outil de migration migrate_ca
crée un mappage de configuration Kubernetes pour
suivre l'état de la migration d'autorités de certification par révision/canal Cloud Service Mesh installé.
Il s'agit d'une ressource privilégiée installée dans l'espace de noms 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:
L'outil de migration sauvegarde le mappage de configuration Istio MeshConfig avant de le modifier et tente de migrer la configuration de l'autorité de certification à l'aide de l'objet CRD ProxyConfig
si possible.
Voici un aperçu de la migration de l'autorité de certification :
Préparer votre migration
Téléchargez l'outil bash
migrate_ca
:curl https://raw.githubusercontent.com/GoogleCloudPlatform/anthos-service-mesh-packages/main/scripts/migration/ca-migration/migrate_ca > migrate_ca
Rendez l'outil exécutable :
chmod +x migrate_ca
Configurez le répertoire de travail :
./migrate_ca setup --output_dir OUTPUT_DIR
Passez au répertoire de travail OUTPUT_DIR spécifié à l'étape précédente.
cd OUTPUT_DIR
Exécutez la commande suivante pour vous assurer que toutes les conditions préalables sont remplies :
./migrate_ca check-prerequisites
Notez la révision (
ASM_REVISION
) du plan de contrôle associé à l'autorité de certification précédente en cours de migration.Dans le cluster
asm-revision=$(kubectl get deploy -n istio-system -l app=istiod -o \ "jsonpath={.items[*].metadata.labels[istio\.io/rev']}{'\n'}")
Étant donné que la migration sur place de l'autorité de certification nécessite le redémarrage de vos charges de travail, assurez-vous que le Budget d'interruption de pod est correctement configuré, et que toutes les applications dont l'autorité de certification doit migrer disposent de plusieurs pods en cours d'exécution.
Assurez-vous que le cluster est déjà enregistré auprès d'un parc et que Workload Identity est activé sur le cluster. Notez ensuite l'ID de projet de parc en tant que (
FLEET_ID
) pour les étapes suivantes.L'outil accepte
kubeConfig
etkubeContext
pour sélectionner le cluster sur lequel les opérations sont effectuées. Si ces arguments ne sont pas transmis, le contexte ou la configuration par défaut sont utilisés.Pour ajouter les identifiants d'un cluster GKE à
kubeConfig
, utilisez la commande suivante :gcloud container clusters get-credentials CLUSTER_NAME
Pour modifier le contexte
kubectl
actuel ou transmettre le contexte à l'outil, utilisez la commande suivante :kubectl config get-contexts kubectl config use-context CLUSTER_NAME
Initialiser la nouvelle autorité de certification
Les étapes requises pour initialiser la nouvelle autorité de certification dépendent de la nouvelle autorité de certification vers laquelle vous effectuez la migration. Effectuez ces étapes dans chaque cluster du parc vers lequel vous souhaitez migrer l'autorité de certification.
Mesh CA
Appelez la sous-commande
initialize
de l'utilitaire.Si vous spécifiez des configurations Kubernetes personnalisées :
./migrate_ca initialize --kubeconfig KUBECONFIG --kubecontext KUBECONTEXT --ca mesh_ca --old_ca OLD_CA_TYPE \ --fleet_id FLEET_ID --revision ASM_REVISION
Mais :
./migrate_ca initialize --ca mesh_ca --old_ca OLD_CA_TYPE \ --fleet_id FLEET_ID --revision ASM_REVISION
Service d'autorité de certification
a. Suivez les étapes requises pour initialiser Certificate Authority Service. Notez la valeur de
CA_POOL
.b. Appelez la sous-commande
initialize
de l'utilitaire :Si vous spécifiez des configurations Kubernetes personnalisées :
./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
Mais :
./migrate_ca initialize --ca gcp_cas --ca-pool CA_POOL --ca-old OLD_CA_TYPE \ --fleet-id FLEET_ID --revision ASM_REVISION
Ajouter des trustAnchors à l'échelle du maillage pour tous les clusters du parc
Répétez les étapes ci-dessous pour la nouvelle et l'ancienne autorité de certification pour tous les clusters qui sont de la flotte.
Téléchargez les trustAnchors de l'autorité de certification :
Mesh CA
./migrate_ca download-trust-anchor --ca mesh_ca --ca_cert ROOT_CERT.pem
Service d'autorité de certification
Stockez le certificat CA dans un fichier :
gcloud privateca pools get-ca-certs POOL_NAME --location=POOL_REGION --project=POOL_PROJECT--output-file ROOT_CERT.pem
Ajoutez les trustAnchors de l'autorité de certification :
./migrate-ca add-trust-anchor --ca_cert ROOT_CERT.pem
Vérifier que les trustAnchors ont bien été reçus par toutes les charges de travail du parc. Dans l'argument des espaces de noms, transmettez tous les espaces de noms dans lesquels les charges de travail sont déployées :
./migrate-ca check-trust-anchor --ca_cert ROOT_CERT.pem --namespaces NAMESPACES
Résultat attendu :
Check the CA cert in namespace nsa-1-24232 a-v1-597f875788-52c5t.nsa-1-24232 trusts root-cert.pem
Migrer l'autorité de certification
Migrez la configuration de l'autorité de certification. La commande requise dépend de la nouvelle autorité de certification vers laquelle vous effectuez la migration.
Mesh CA
./migrate_ca migrate-ca --ca mesh_ca
Service d'autorité de certification
./migrate_ca migrate-ca --ca gcp_cas --ca_pool CA_POOL
Redémarrez toutes les charges de travail.
Pour réduire le risque de temps d'arrêt du trafic TLS, cette étape doit d'abord affecter le plus petit nombre de charges de travail. Ne redémarrez que les charges de travail associées à la révision du plan de contrôle ASM_REVISION. Par exemple, si toutes les charges de travail de l'espace de noms Kubernetes NAMESPACE sont associées au même plan de contrôle Cloud Service Mesh.
kubectl rollout restart deployment -n NAMESPACE
Vérifiez que les connexions mTLS fonctionnent entre les charges de travail de l'espace de noms redémarré et les autres charges de travail, avant de répéter les étapes 1 et 2 pour tous les espaces de noms et pour tous les clusters du parc. Si des charges de travail plus récentes arrivent et que le trafic du réseau maillé n'est pas interrompu, répétez les étapes 1 et 2 pour tous les espaces de noms et clusters qui font partie du parc. Sinon, effectuez un rollback pour restaurer la configuration d'autorité de certification la plus récente.
Vérifiez que la nouvelle configuration de l'autorité de certification est bien utilisée par toutes les charges de travail :
./migrate_ca verify-ca --ca_cert ROOT_CERT.pem --namespaces NAMESPACES
Résultat attendu :
Check the CA configuration in namespace nsb-2-76095 b-v1-8ff557759-pds69.nsb-2-76095 is signed by root-cert.pem
Effectuer un rollback
Effectuez un rollback de la configuration de l'autorité de certification et supprimez les trustAnchors nouvellement configurés :
./migrate-ca rollback
Redémarrez toutes les charges de travail. Veillez à ne redémarrer que les charges de travail associées à la révision du plan de contrôle ASM_REVISION. Par exemple, si toutes les charges de travail de l'espace de noms Kubernetes NAMESPACES sont associées au même plan de contrôle Cloud Service Mesh.
kubectl rollout restart deployment -n NAMESPACES
(Facultatif) Vérifiez que l'ancienne configuration de l'autorité de certification est bien utilisée par toutes les charges de travail.
./migrate-ca verify-ca --ca_cert older-root-cert.pem
Répétez les étapes 1 à 3 pour tous les clusters du parc où les charges de travail utilisent le plan de contrôle ASM_REVISION.
Félicitations ! Vous avez effectué une migration sur place de l'autorité de certification.