Cette page explique comment migrer des ressources Config Connector d'un cluster Config Controller vers un autre. Vous devrez peut-être migrer une ressource si votre cluster Config Controller principal échoue et doit être remplacé, ou si vous devez modifier une configuration de cluster immuable.
Cette page utilise la terminologie suivante :
- Cluster source : cluster contenant les ressources Config Connector que vous devez migrer.
- Cluster de destination : cluster vers lequel vous allez migrer les ressources.
Recommandations
- Avant d'apporter des modifications en production, effectuez ces étapes dans un environnement de test.
- Si vous devez migrer plusieurs clusters Config Controller, migrez-les chacun en commençant par le cluster le moins critique.
- Si le cluster Config Sync se synchronise à partir de plusieurs sources de vérité, migrez toutes les ressources de chaque source en même temps.
Procédure de migration pour divers scénarios
Migrer toutes les ressources
Pour migrer toutes les ressources, procédez comme suit :
Créez le cluster de destination.
Arrêtez d'envoyer des modifications à la source de vérité à partir de laquelle le cluster source est configuré pour la synchronisation. Config Sync doit continuer à être synchronisé à partir de la source de vérité. Seules les modifications à partir desquelles le cluster source est synchronisé doivent être arrêtées.
Assurez-vous que les modifications récentes apportées à la source de vérité sont synchronisées dans le cluster et que toutes les ressources sont à jour dans le cluster source.
Si certaines ressources présentent des erreurs, vous devrez peut-être les analyser individuellement. Si une ressource n'a pas encore été créée en raison d'une erreur, elle est créée ultérieurement à l'aide de Config Connector s'exécutant dans le cluster de destination. Ces erreurs peuvent généralement être ignorées. Toutefois, pour la plupart des erreurs, les causes premières doivent être détectées et corrigées avant d'essayer d'effectuer la migration.
Configurez Config Sync dans le cluster de destination pour lire les données de la même source de vérité que celle à partir de laquelle le cluster source est configuré. Si plusieurs synchronisations sont configurées pour se synchroniser à partir de plusieurs sources de vérité, effectuez cette étape pour chaque synchronisation.
Utilisez la commande
nomos status
pour vous assurer que le cluster de destination a synchronisé toutes les ressources de la source de vérité.Une fois les ressources synchronisées, supprimez RootSync ou RepoSync du cluster source.
Une fois que chaque source de vérité a été migrée, supprimez le cluster Config Controller source.
Migrer certaines ressources
Pour migrer certaines ressources, procédez comme suit :
Suivez les étapes 1 à 6 de la section précédente Migrer toutes les ressources.
Annotez les ressources à migrer vers le cluster de destination avec l'annotation
cnrm.cloud.google.com/deletion-policy: abandon
. Cette annotation empêche Config Connector de supprimer les ressources sous-jacentes lorsque la ressource Config Connector est supprimée du cluster Config Controller.Supprimez les ressources marquées comme abandonnées sur le cluster source. Cette suppression ne fonctionne que si ces ressources sont supprimées de la source de vérité avant de rétablir Config Sync.
Déplacez ces ressources vers une autre source de vérité ou un autre dossier au sein de la même source de vérité.
Configurez le cluster de destination pour qu'il se synchronise à partir de l'emplacement vers lequel vous avez déplacé les ressources. Le cluster de destination peut désormais acquérir ces ressources et commencer à les gérer.
Migrer des ressources individuelles
Lorsqu'un cluster Config Controller ne peut pas être supprimé (par exemple, lorsque vous migrez uniquement un sous-ensemble de ressources vers un autre cluster), vous pouvez supprimer des ressources individuelles. Pour supprimer des ressources individuelles, désactivez Config Sync, puis définissez l'annotation cnrm.cloud.google.com/deletion-policy: abandon
sur les ressources individuelles que vous devez supprimer.
Migrer les ressources qui ont un resourceID
généré par le service
Pour les ressources pour lesquelles le champ resourceID
n'a pas été explicitement fourni, le champ resourceID
n'a pas besoin d'être spécifié pour l'acquisition de ressources par une autre instance Config Connector. Cependant, certaines ressources qui ont un ID généré par le service nécessitent des étapes supplémentaires. Même si resourceID
est généré par le service, il doit être fourni pour acquérir ces ressources à partir d'une autre instance Config Connector. Pour ces ressources, les identifiants resourceID
doivent être ajoutés à la source de vérité avant d'essayer de les acquérir à partir du cluster de destination.
Migrer des ressources à l'aide d'une règle de prévention des conflits
Par défaut, la règle de prévention des conflits est désactivée pour les ressources. Vous pouvez l'activer sur une ressource en définissant l'annotation suivante :
cnrm.cloud.google.com/management-conflict-prevention-policy: "resource"
Une fois paramétré, Config Connector doit acquérir un bail pour la ressource sous-jacente avant d'y apporter des modifications. Cela signifie que le cluster de destination ne peut pas acquérir immédiatement le bail, car Config Connector détient le bail dans le cluster source. Le bail est accordé pour une durée de 40 minutes. Cependant, après 20 minutes, Config Connector tente de renouveler de manière proactive le bail. En raison de ce comportement, si Config Connector dans le cluster source est opérationnel et en cours d'exécution, le cluster de destination ne peut pas acquérir le bail. Le cluster source doit libérer son bail avant que le cluster de destination ne puisse l'acquérir. Pour ce faire, vous pouvez supprimer le cluster source ou supprimer la ressource dans le cluster source.
Une fois que le cluster source a libéré le bail, le cluster de destination peut l'acquérir. Le cluster de destination peut acquérir le bail après au maximum 40 minutes et commencer à gérer les ressources. Aucune modification ne doit être apportée aux ressources Config Connector tant que le cluster de destination n'a pas acquis le bail.
Étapes suivantes
- Résoudre les problèmes liés à Config Controller.
- Basculer manuellement vers une deuxième instance Config Controller.
- Gérer les ressources avec le champ
resourceID
. - Arrêter et reprendre la synchronisation des configurations