27.7. Configuration du trafic entrant de la grappe à l'aide d'un NodePort
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 une adresse NodePort
.
27.7.1. Utilisation d'un NodePort pour acheminer le trafic vers le cluster
Utilisez une ressource NodePort
-type Service
pour exposer un service sur un port spécifique sur tous les nœuds du cluster. Le port est spécifié dans le champ .spec.ports[*].nodePort
de la ressource Service
.
L'utilisation d'un port de nœud nécessite des ressources portuaires supplémentaires.
Un NodePort
expose le service sur un port statique de l'adresse IP du nœud. Les NodePort
se situent par défaut entre 30000
et 32767
, ce qui signifie qu'un NodePort
a peu de chances de correspondre au port prévu d'un service. Par exemple, le port 8080
peut être exposé en tant que port 31020
sur le nœud.
L'administrateur doit s'assurer que les adresses IP externes sont acheminées vers les nœuds.
NodePort
et les IP externes sont indépendantes et peuvent être utilisées simultanément.
Les procédures de cette section requièrent des conditions préalables effectuées par l'administrateur du cluster.
27.7.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 <user_name>
- 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.7.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.7.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
Pour exposer un port de nœud pour l'application, modifiez la définition de ressource personnalisée (CRD) d'un service en entrant la commande suivante :
$ oc edit svc <service_name>
Exemple de sortie
spec: ports: - name: 8443-tcp nodePort: 30327 1 port: 8443 protocol: TCP targetPort: 8443 sessionAffinity: None type: NodePort 2
Facultatif : Pour confirmer que le service est disponible avec un port de nœud exposé, entrez 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.217.127 <none> 3306/TCP 9m44s nodejs-ex-ingress NodePort 172.30.107.72 <none> 3306:31345/TCP 39s
En option : Pour supprimer le service créé automatiquement par la commande
oc new-app
, entrez la commande suivante :$ oc delete svc nodejs-ex
Vérification
Pour vérifier que le port du nœud de service est mis à jour avec un port de la plage
30000-32767
, entrez la commande suivante :$ oc get svc
Dans l'exemple suivant, le port mis à jour est
30327
:Exemple de sortie
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE httpd NodePort 172.xx.xx.xx <none> 8443:30327/TCP 109s