27.4. Configuration du trafic entrant dans le cluster à l'aide d'un équilibreur de charge
OpenShift Container Platform fournit des méthodes pour communiquer depuis l'extérieur du cluster avec les services s'exécutant dans le cluster. Cette méthode utilise un équilibreur de charge.
27.4.1. Utilisation d'un équilibreur de charge pour acheminer le trafic vers le cluster Copier lienLien copié sur presse-papiers!
Si vous n'avez pas besoin d'une adresse IP externe spécifique, vous pouvez configurer un service d'équilibreur de charge pour permettre l'accès externe à un cluster OpenShift Container Platform.
Un service d'équilibrage de charge attribue une IP unique. L'équilibreur de charge a une seule IP de routeur de périphérie, qui peut être une IP virtuelle (VIP), mais qui reste une machine unique pour l'équilibrage initial de la charge.
Si un pool est configuré, il l'est au niveau de l'infrastructure, et non par un administrateur de cluster.
Les procédures de cette section requièrent des conditions préalables effectuées par l'administrateur du cluster.
27.4.2. Conditions préalables Copier lienLien copié sur presse-papiers!
Avant de commencer les procédures suivantes, l'administrateur doit
- Configurez le port externe de l'environnement réseau de la grappe pour que les demandes puissent atteindre la grappe.
Assurez-vous qu'il existe au moins un utilisateur ayant le rôle d'administrateur de cluster. Pour ajouter ce rôle à un utilisateur, exécutez la commande suivante :
oc adm policy add-cluster-role-to-user cluster-admin username
$ oc adm policy add-cluster-role-to-user cluster-admin username
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - Disposer d'un cluster OpenShift Container Platform avec au moins un maître et au moins un nœud et un système extérieur au cluster qui a un accès réseau au cluster. Cette procédure suppose que le système externe se trouve sur le même sous-réseau que le cluster. La mise en réseau supplémentaire requise pour les systèmes externes sur un sous-réseau différent n'entre pas dans le cadre de cette rubrique.
27.4.3. Création d'un projet et d'un service Copier lienLien copié sur presse-papiers!
Si le projet et le service que vous souhaitez exposer n'existent pas, créez d'abord le projet, puis le service.
Si le projet et le service existent déjà, passez à la procédure d'exposition du service pour créer une route.
Conditions préalables
-
Installez le CLI
oc
et connectez-vous en tant qu'administrateur de cluster.
Procédure
Créez un nouveau projet pour votre service en exécutant la commande
oc new-project
:oc new-project myproject
$ oc new-project myproject
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Utilisez la commande
oc new-app
pour créer votre service :oc new-app nodejs:12~https://github.com/sclorg/nodejs-ex.git
$ oc new-app nodejs:12~https://github.com/sclorg/nodejs-ex.git
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Pour vérifier que le service a été créé, exécutez la commande suivante :
oc get svc -n myproject
$ oc get svc -n myproject
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Exemple de sortie
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE nodejs-ex ClusterIP 172.30.197.157 <none> 8080/TCP 70s
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE nodejs-ex ClusterIP 172.30.197.157 <none> 8080/TCP 70s
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Par défaut, le nouveau service n'a pas d'adresse IP externe.
27.4.4. Exposer le service en créant une route Copier lienLien copié sur presse-papiers!
Vous pouvez exposer le service en tant que route en utilisant la commande oc expose
.
Procédure
Pour exposer le service :
- Connectez-vous à OpenShift Container Platform.
Connectez-vous au projet dans lequel se trouve le service que vous souhaitez exposer :
oc project myproject
$ oc project myproject
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Exécutez la commande
oc expose service
pour exposer la route :oc expose service nodejs-ex
$ oc expose service nodejs-ex
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Exemple de sortie
route.route.openshift.io/nodejs-ex exposed
route.route.openshift.io/nodejs-ex exposed
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Pour vérifier que le service est exposé, vous pouvez utiliser un outil, tel que cURL, pour vous assurer que le service est accessible depuis l'extérieur du cluster.
Utilisez la commande
oc get route
pour trouver le nom d'hôte de la route :oc get route
$ oc get route
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Exemple de sortie
NAME HOST/PORT PATH SERVICES PORT TERMINATION WILDCARD nodejs-ex nodejs-ex-myproject.example.com nodejs-ex 8080-tcp None
NAME HOST/PORT PATH SERVICES PORT TERMINATION WILDCARD nodejs-ex nodejs-ex-myproject.example.com nodejs-ex 8080-tcp None
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Utilisez cURL pour vérifier que l'hôte répond à une requête GET :
curl --head nodejs-ex-myproject.example.com
$ curl --head nodejs-ex-myproject.example.com
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Exemple de sortie
HTTP/1.1 200 OK ...
HTTP/1.1 200 OK ...
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
27.4.5. Création d'un service d'équilibreur de charge Copier lienLien copié sur presse-papiers!
La procédure suivante permet de créer un service d'équilibreur de charge.
Conditions préalables
- Assurez-vous que le projet et le service que vous souhaitez exposer existent.
Procédure
Pour créer un service d'équilibreur de charge :
- Connectez-vous à OpenShift Container Platform.
Chargez le projet dans lequel se trouve le service que vous souhaitez exposer.
oc project project1
$ oc project project1
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Ouvrez un fichier texte sur le nœud du plan de contrôle et collez le texte suivant, en modifiant le fichier si nécessaire :
Exemple de fichier de configuration d'un équilibreur de charge
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- Entrez un nom descriptif pour le service d'équilibreur de charge.
- 2
- Saisissez le même port que celui sur lequel le service que vous souhaitez exposer écoute.
- 3
- Entrez une liste d'adresses IP spécifiques pour restreindre le trafic via l'équilibreur de charge. Ce champ est ignoré si le fournisseur de cloud computing ne prend pas en charge cette fonctionnalité.
- 4
- Saisissez
Loadbalancer
comme type. - 5
- Saisissez le nom du service.
NotePour limiter le trafic via l'équilibreur de charge à des adresses IP spécifiques, il est recommandé d'utiliser le champ Ingress Controller (contrôleur d'entrée)
spec.endpointPublishingStrategy.loadBalancer.allowedSourceRanges
. Ne définissez pas le champloadBalancerSourceRanges
.- Save and exit the file.
Exécutez la commande suivante pour créer le service :
oc create -f <nom-de-fichier>
$ oc create -f <nom-de-fichier>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Par exemple :
oc create -f mysql-lb.yaml
$ oc create -f mysql-lb.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Exécutez la commande suivante pour afficher le nouveau service :
oc get svc
$ oc get svc
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Exemple de sortie
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE egress-2 LoadBalancer 172.30.22.226 ad42f5d8b303045-487804948.example.com 3306:30357/TCP 15m
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE egress-2 LoadBalancer 172.30.22.226 ad42f5d8b303045-487804948.example.com 3306:30357/TCP 15m
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Le service dispose d'une adresse IP externe automatiquement attribuée si un fournisseur de cloud est activé.
Sur le maître, utilisez un outil, tel que cURL, pour vous assurer que vous pouvez atteindre le service en utilisant l'adresse IP publique :
curl <public-ip>:<port>
$ curl <public-ip>:<port>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Par exemple :
curl 172.29.121.74:3306
$ curl 172.29.121.74:3306
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Les exemples de cette section utilisent un service MySQL, qui nécessite une application client. Si vous obtenez une chaîne de caractères avec le message
Got packets out of order
, vous êtes en train de vous connecter au service :Si vous disposez d'un client MySQL, connectez-vous à l'aide de la commande CLI standard :
mysql -h 172.30.131.89 -u admin -p
$ mysql -h 172.30.131.89 -u admin -p
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Exemple de sortie
Enter password: Welcome to the MariaDB monitor. Commands end with ; or \g. MySQL [(none)]>
Enter password: Welcome to the MariaDB monitor. Commands end with ; or \g. MySQL [(none)]>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow