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
:Copy to Clipboard Copied! Toggle word wrap Toggle overflow podman cp $(podman create registry.redhat.io/rhmtc/openshift-migration-controller-rhel8:v1.7):/crane ./
$ 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é :
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc config view
$ oc config view
Établissez un tunnel en entrant la commande suivante sur le système de commande :
Copy to Clipboard Copied! Toggle word wrap Toggle overflow crane tunnel-api [--namespace <namespace>] \ --destination-context <destination-cluster> \ --source-context <source-cluster>
$ 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 :
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 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/admin
$ 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/admin
AstuceVoir tous les paramètres disponibles pour la commande
crane tunnel-api
en 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 :
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc get po -n <namespace>
# oc get po -n <namespace>
Exemple de sortie
Copy to Clipboard Copied! Toggle word wrap Toggle overflow NAME READY STATUS RESTARTS AGE <pod_name> 2/2 Running 0 44s
NAME READY STATUS RESTARTS AGE <pod_name> 2/2 Running 0 44s
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc logs -f -n <namespace> <pod_name> -c openvpn
# oc logs -f -n <namespace> <pod_name> -c openvpn
Lorsque l'adresse de l'équilibreur de charge est résolue, le message
Initialization Sequence Completed
apparaî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
openvpn
et le serviceproxied-cluster
fonctionnent :Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc get service -n <namespace>
$ oc get service -n <namespace>
Sur le nœud source, obtenez le jeton de compte de service (SA) pour le contrôleur de migration :
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc sa get-token -n openshift-migration migration-controller
# oc sa get-token -n openshift-migration migration-controller
Ouvrez 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.
Ressources supplémentaires
- Pour plus d'informations sur la création d'un manifeste MigCluster CR pour chaque cluster distant, voir Migrer une application à l'aide de l'API MTC.
- Pour plus d'informations sur l'ajout d'un cluster à l'aide de la console web, voir Migrer vos applications à l'aide de la console web MTC