4.4. Configuration du proxy
Dans le cas d’OpenShift Container Platform 4.1 et versions antérieures, vous devez configurer les proxies dans le manifeste de la ressource personnalisée (CR) MigrationController après avoir installé l’opérateur Migration Toolkit for Containers, car ces versions ne prennent pas en charge un objet proxy à l’échelle du cluster.
Pour OpenShift Container Platform 4.2 à 4.12, le Migration Toolkit for Containers (MTC) hérite des paramètres de proxy à l'échelle du cluster. Vous pouvez modifier les paramètres du proxy si vous souhaitez remplacer les paramètres du proxy à l'échelle du cluster.
4.4.1. Migration directe des volumes Copier lienLien copié sur presse-papiers!
La migration directe des volumes (DVM) a été introduite dans MTC 1.4.2. DVM ne prend en charge qu'un seul proxy. Le cluster source ne peut pas accéder à la route du cluster cible si ce dernier se trouve également derrière un proxy.
Si vous souhaitez effectuer un DVM à partir d'un cluster source situé derrière un proxy, vous devez configurer un proxy TCP qui fonctionne au niveau de la couche transport et transmet les connexions SSL de manière transparente sans les décrypter et les recrypter à l'aide de leurs propres certificats SSL. Un proxy Stunnel est un exemple de ce type de proxy.
4.4.1.1. Configuration du proxy TCP pour le DVM Copier lienLien copié sur presse-papiers!
Vous pouvez établir une connexion directe entre le cluster source et le cluster cible via un proxy TCP et configurer la variable stunnel_tcp_proxy dans le CR MigrationController pour utiliser le proxy :
La migration directe de volume (DVM) ne prend en charge que l'authentification de base pour le proxy. En outre, la DVM ne fonctionne que derrière des proxys qui peuvent tunneliser une connexion TCP de manière transparente. Les mandataires HTTP/HTTPS en mode man-in-the-middle ne fonctionnent pas. Les proxys existants à l'échelle du cluster peuvent ne pas prendre en charge ce comportement. Par conséquent, les paramètres du proxy pour DVM sont intentionnellement différents de la configuration habituelle du proxy dans MTC.
4.4.1.2. Pourquoi utiliser un proxy TCP plutôt qu'un proxy HTTP/HTTPS ? Copier lienLien copié sur presse-papiers!
Vous pouvez activer DVM en exécutant Rsync entre le cluster source et le cluster cible via une route OpenShift. Le trafic est chiffré à l'aide de Stunnel, un proxy TCP. Le Stunnel fonctionnant sur le cluster source initie une connexion TLS avec le Stunnel cible et transfère les données sur un canal crypté.
Les proxys HTTP/HTTPS à l'échelle du cluster dans OpenShift sont généralement configurés en mode man-in-the-middle où ils négocient leur propre session TLS avec les serveurs extérieurs. Cependant, cela ne fonctionne pas avec Stunnel. Stunnel exige que sa session TLS ne soit pas modifiée par le proxy, faisant essentiellement du proxy un tunnel transparent qui transmet simplement la connexion TCP telle quelle. Vous devez donc utiliser un proxy TCP.
4.4.1.3. Problème connu Copier lienLien copié sur presse-papiers!
La migration échoue avec l'erreur Upgrade request required
Le contrôleur de migration utilise le protocole SPDY pour exécuter des commandes dans des modules distants. Si le cluster distant se trouve derrière un proxy ou un pare-feu qui ne prend pas en charge le protocole SPDY, le contrôleur de migration ne parvient pas à exécuter les commandes à distance. La migration échoue avec le message d'erreur Upgrade request required. Solution : Utilisez un proxy qui prend en charge le protocole SPDY.
Outre la prise en charge du protocole SPDY, le proxy ou le pare-feu doit également transmettre l'en-tête HTTP Upgrade au serveur API. Le client utilise cet en-tête pour ouvrir une connexion websocket avec le serveur API. Si l'en-tête Upgrade est bloqué par le proxy ou le pare-feu, la migration échoue avec le message d'erreur Upgrade request required. Solution : Assurez-vous que le proxy transmet l'en-tête Upgrade.
4.4.2. Optimiser les politiques de réseau pour les migrations Copier lienLien copié sur presse-papiers!
OpenShift prend en charge la restriction du trafic vers ou depuis les pods à l'aide de NetworkPolicy ou EgressFirewalls en fonction du plugin réseau utilisé par le cluster. Si l'un des espaces de noms source impliqués dans une migration utilise de tels mécanismes pour restreindre le trafic réseau vers les pods, les restrictions peuvent par inadvertance arrêter le trafic vers les pods Rsync pendant la migration.
Les pods Rsync fonctionnant sur les clusters source et cible doivent se connecter l'un à l'autre via une route OpenShift. Les objets NetworkPolicy ou EgressNetworkPolicy existants peuvent être configurés pour exempter automatiquement les pods Rsync de ces restrictions de trafic.
4.4.2.1. Configuration de la politique de réseau Copier lienLien copié sur presse-papiers!
4.4.2.1.1. Trafic de sortie des pods Rsync Copier lienLien copié sur presse-papiers!
Vous pouvez utiliser les étiquettes uniques des modules Rsync pour autoriser le trafic sortant de ces modules si la configuration de NetworkPolicy dans les espaces de noms source ou destination bloque ce type de trafic. La stratégie suivante autorise le trafic de sortie all à partir des modules Rsync dans l'espace de noms :
4.4.2.1.2. Trafic entrant vers les pods Rsync Copier lienLien copié sur presse-papiers!
4.4.2.2. Configuration de la politique de réseau EgressNetworkPolicy Copier lienLien copié sur presse-papiers!
L'objet EgressNetworkPolicy ou Egress Firewalls sont des constructions OpenShift conçues pour bloquer le trafic de sortie du cluster.
Contrairement à l'objet NetworkPolicy, le pare-feu Egress fonctionne au niveau du projet car il s'applique à tous les modules de l'espace de noms. Par conséquent, les étiquettes uniques des pods Rsync n'exemptent pas uniquement les pods Rsync des restrictions. Cependant, vous pouvez ajouter les plages CIDR du cluster source ou cible à la règle Allow de la politique afin qu'une connexion directe puisse être établie entre deux clusters.
En fonction du cluster dans lequel le pare-feu de sortie est présent, vous pouvez ajouter la plage CIDR de l'autre cluster pour autoriser le trafic de sortie entre les deux :
4.4.2.3. Choix d'autres points d'arrivée pour le transfert de données Copier lienLien copié sur presse-papiers!
Par défaut, DVM utilise une route OpenShift Container Platform comme point final pour transférer les données PV vers les clusters de destination. Vous pouvez choisir un autre type de point d'extrémité pris en charge, si les topologies de cluster le permettent.
Pour chaque cluster, vous pouvez configurer un point de terminaison en définissant la variable rsync_endpoint_type sur le cluster destination approprié dans votre MigrationController CR :
4.4.2.4. Configuration de groupes supplémentaires pour les pods Rsync Copier lienLien copié sur presse-papiers!
Lorsque vos PVC utilisent un stockage partagé, vous pouvez configurer l'accès à ce stockage en ajoutant des groupes supplémentaires aux définitions de pods Rsync afin que les pods autorisent l'accès :
| Variable | Type | Défaut | Description |
|---|---|---|---|
|
| chaîne de caractères | Non défini | Liste séparée par des virgules des groupes supplémentaires pour les pods Rsync source |
|
| chaîne de caractères | Non défini | Liste de groupes supplémentaires séparés par des virgules pour les pods Rsync cibles |
Exemple d'utilisation
Le CR MigrationController peut être mis à jour pour définir les valeurs de ces groupes supplémentaires :
spec: src_supplemental_groups: "1000,2000" target_supplemental_groups: "2000,3000"
spec:
src_supplemental_groups: "1000,2000"
target_supplemental_groups: "2000,3000"
4.4.3. Configuration des proxies Copier lienLien copié sur presse-papiers!
Conditions préalables
-
Vous devez être connecté en tant qu’utilisateur avec les privilèges
cluster-adminsur tous les clusters.
Procédure
Procurez-vous le manifeste du CR
MigrationController:oc get migrationcontroller <migration_controller> -n openshift-migration
$ oc get migrationcontroller <migration_controller> -n openshift-migrationCopy to Clipboard Copied! Toggle word wrap Toggle overflow Mettez à jour les paramètres du proxy :
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Faites précéder un domaine du signe
.pour ne faire correspondre que les sous-domaines. Par exemple,.y.comcorrespond àx.y.com, mais pas ày.com. Utilisez*pour ignorer le proxy pour toutes les destinations. Si vous mettez à l’échelle des workers qui ne sont pas inclus dans le réseau défini par le champnetworking.machineNetwork[].cidrà partir de la configuration d’installation, vous devez les ajouter à cette liste pour éviter les problèmes de connexion.Ce champ est ignoré si ni le champ
httpProxyni le champhttpsProxyne sont définis.-
Enregistrez le manifeste en tant que
migration-controller.yaml. Appliquez le manifeste mis à jour :
oc replace -f migration-controller.yaml -n openshift-migration
$ oc replace -f migration-controller.yaml -n openshift-migrationCopy to Clipboard Copied! Toggle word wrap Toggle overflow
Pour plus d'informations, voir Configuration du proxy pour l'ensemble du cluster.