11.2. Migration d'une application d'un site sur site vers un cluster en nuage
Vous pouvez migrer d'un cluster source qui se trouve derrière un pare-feu vers un cluster de destination basé sur le cloud en établissant un tunnel réseau entre les deux clusters. La commande crane tunnel-api établit un tel tunnel en créant un tunnel VPN sur le cluster source, puis en se connectant à un serveur VPN fonctionnant sur le cluster de destination. Le serveur VPN est exposé au client en utilisant une adresse d'équilibreur de charge sur le cluster de destination.
Un service créé sur le cluster de destination expose l'API du cluster source à MTC, qui s'exécute sur le cluster de destination.
Conditions préalables
- Le système qui crée le tunnel VPN doit avoir accès et être connecté aux deux clusters.
- Il doit être possible de créer un équilibreur de charge sur le cluster de destination. Consultez votre fournisseur de services en nuage pour vous assurer que cela est possible.
- Préparez les noms à attribuer aux espaces de noms, à la fois sur le cluster source et le cluster de destination, dans lesquels le tunnel VPN sera exécuté. Ces espaces de noms ne doivent pas être créés à l'avance. Pour plus d'informations sur les règles relatives aux espaces de noms, voir https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#dns-subdomain-names.
- Lorsque vous connectez plusieurs clusters sources protégés par un pare-feu au cluster en nuage, chaque cluster source nécessite son propre espace de noms.
- Le serveur OpenVPN est installé sur le cluster de destination.
- Le client OpenVPN est installé sur le cluster source.
Lors de la configuration du cluster source dans MTC, l'URL de l'API prend la forme de
https://proxied-cluster.<namespace>.svc.cluster.local:8443.- Si vous utilisez l'API, voir Créer un manifeste MigCluster CR pour chaque cluster distant.
- Si vous utilisez la console Web MTC, consultez la section Migration de vos applications à l'aide de la console Web MTC.
- La console Web MTC et le contrôleur de migration doivent être installés sur le cluster cible.
Procédure
Installez l'utilitaire de
grue:$ podman cp $(podman create registry.redhat.io/rhmtc/openshift-migration-controller-rhel8:v1.7):/crane ./- Connectez-vous à distance à un nœud du cluster source et à un nœud du cluster de destination.
Obtenez le contexte de cluster pour les deux clusters après vous être connecté :
$ oc config viewÉtablissez un tunnel en entrant la commande suivante sur le système de commande :
$ crane tunnel-api [--namespace <namespace>] \ --destination-context <destination-cluster> \ --source-context <source-cluster>Si vous ne spécifiez pas d'espace de noms, la commande utilise la valeur par défaut
openvpn.Par exemple :
$ crane tunnel-api --namespace my_tunnel \ --destination-context openshift-migration/c131-e-us-east-containers-cloud-ibm-com/admin \ --source-context default/192-168-122-171-nip-io:8443/adminAstuceVoir tous les paramètres disponibles pour la commande
crane tunnel-apien entrantcrane tunnel-api --help.La commande génère des certificats TSL/SSL. Ce processus peut prendre plusieurs minutes. Un message apparaît lorsque le processus est terminé.
Le serveur OpenVPN démarre sur le cluster de destination et le client OpenVPN démarre sur le cluster source.
Après quelques minutes, l'équilibreur de charge se résout sur le nœud source.
AstuceVous pouvez afficher le journal des pods OpenVPN pour vérifier l'état de ce processus en entrant les commandes suivantes avec les privilèges root :
# oc get po -n <namespace>Exemple de sortie
NAME READY STATUS RESTARTS AGE <pod_name> 2/2 Running 0 44s# oc logs -f -n <namespace> <pod_name> -c openvpnLorsque l'adresse de l'équilibreur de charge est résolue, le message
Initialization Sequence Completedapparaît à la fin du journal.Sur le serveur OpenVPN, qui se trouve sur un nœud de contrôle de destination, vérifiez que le service
openvpnet le serviceproxied-clusterfonctionnent :$ oc get service -n <namespace>Sur le nœud source, obtenez le jeton de compte de service (SA) pour le contrôleur de migration :
# oc sa get-token -n openshift-migration migration-controllerOuvrez la console Web MTC et ajoutez le cluster source, en utilisant les valeurs suivantes :
- Nom du cluster: le nom du cluster source.
-
URL:
proxied-cluster.<namespace>.svc.cluster.local:8443. Si vous n'avez pas défini de valeur pour<namespace>, utilisezopenvpn. - Jeton de compte de service: Le jeton du compte de service du contrôleur de migration.
-
Hôte de route exposé au registre d'images:
proxied-cluster.<namespace>.svc.cluster.local:5000. Si vous n'avez pas défini de valeur pour<namespace>, utilisezopenvpn.
Une fois que MTC a validé avec succès la connexion, vous pouvez procéder à la création et à l'exécution d'un plan de migration. L'espace de noms du cluster source devrait apparaître dans la liste des espaces de noms.