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
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
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
- 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
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
Utilisez la commande
oc new-app
pour créer votre service :$ oc new-app nodejs:12~https://github.com/sclorg/nodejs-ex.git
Pour vérifier que le service a été créé, exécutez la commande suivante :
$ oc get svc -n myproject
Exemple de sortie
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE nodejs-ex ClusterIP 172.30.197.157 <none> 8080/TCP 70s
Par défaut, le nouveau service n'a pas d'adresse IP externe.
27.4.4. Exposer le service en créant une route
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
Exécutez la commande
oc expose service
pour exposer la route :$ oc expose service nodejs-ex
Exemple de sortie
route.route.openshift.io/nodejs-ex exposed
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
Exemple de sortie
NAME HOST/PORT PATH SERVICES PORT TERMINATION WILDCARD nodejs-ex nodejs-ex-myproject.example.com nodejs-ex 8080-tcp None
Utilisez cURL pour vérifier que l'hôte répond à une requête GET :
$ curl --head nodejs-ex-myproject.example.com
Exemple de sortie
HTTP/1.1 200 OK ...
27.4.5. Création d'un service d'équilibreur de charge
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
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
apiVersion: v1 kind: Service metadata: name: egress-2 1 spec: ports: - name: db port: 3306 2 loadBalancerIP: loadBalancerSourceRanges: 3 - 10.0.0.0/8 - 192.168.0.0/16 type: LoadBalancer 4 selector: name: mysql 5
- 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>
Par exemple :
$ oc create -f mysql-lb.yaml
Exécutez la commande suivante pour afficher le nouveau service :
$ oc get svc
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
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>
Par exemple :
$ curl 172.29.121.74:3306
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
Exemple de sortie
Enter password: Welcome to the MariaDB monitor. Commands end with ; or \g. MySQL [(none)]>