6.8. Utiliser la redirection de port pour accéder aux applications dans un conteneur


OpenShift Container Platform prend en charge la redirection des ports vers les pods.

6.8.1. Comprendre le transfert de port

Vous pouvez utiliser l'interface de commande pour transférer un ou plusieurs ports locaux vers un module. Cela vous permet d'écouter localement sur un port donné ou aléatoire, et d'avoir des données transférées vers et depuis des ports donnés dans le pod.

La prise en charge de la redirection de port est intégrée à la CLI :

$ oc port-forward <pod> [<local_port> :]<remote_port> [...[<local_port_n> :]<remote_port_n>]

La CLI écoute sur chaque port local spécifié par l'utilisateur, en utilisant le protocole décrit ci-dessous.

Les ports peuvent être spécifiés en utilisant les formats suivants :

5000

Le client écoute sur le port 5000 localement et transmet à 5000 dans le pod.

6000:5000

Le client écoute sur le port 6000 localement et transmet à 5000 dans le pod.

:5000 ou 0:5000

Le client sélectionne un port local libre et le transmet à 5000 dans le pod.

OpenShift Container Platform gère les demandes de transfert de port des clients. À la réception d'une demande, OpenShift Container Platform met à jour la réponse et attend que le client crée des flux de transfert de port. Lorsque OpenShift Container Platform reçoit un nouveau flux, il copie les données entre le flux et le port du pod.

D'un point de vue architectural, il existe des options de transfert vers le port d'un pod. L'implémentation prise en charge par OpenShift Container Platform invoque nsenter directement sur l'hôte du nœud pour entrer dans l'espace de noms réseau du pod, puis invoque socat pour copier les données entre le flux et le port du pod. Cependant, une implémentation personnalisée pourrait inclure l'exécution d'un pod helper qui exécute ensuite nsenter et socat, de sorte que ces binaires ne doivent pas être installés sur l'hôte.

6.8.2. Utilisation de la redirection de port

Vous pouvez utiliser le CLI pour transférer un ou plusieurs ports locaux vers un pod.

Procédure

La commande suivante permet d'écouter le port spécifié dans un pod :

$ oc port-forward <pod> [<local_port> :]<remote_port> [...[<local_port_n> :]<remote_port_n>]

Par exemple :

  • Utilisez la commande suivante pour écouter les ports 5000 et 6000 localement et transmettre des données vers et depuis les ports 5000 et 6000 dans le pod :

    $ oc port-forward <pod> 5000 6000

    Exemple de sortie

    Forwarding from 127.0.0.1:5000 -> 5000
    Forwarding from [::1]:5000 -> 5000
    Forwarding from 127.0.0.1:6000 -> 6000
    Forwarding from [::1]:6000 -> 6000

  • Utilisez la commande suivante pour écouter le port 8888 localement et le transférer à 5000 dans le pod :

    $ oc port-forward <pod> 8888:5000

    Exemple de sortie

    Forwarding from 127.0.0.1:8888 -> 5000
    Forwarding from [::1]:8888 -> 5000

  • Utilisez la commande suivante pour écouter sur un port libre localement et transmettre à 5000 dans le pod :

    $ oc port-forward <pod> :5000

    Exemple de sortie

    Forwarding from 127.0.0.1:42390 -> 5000
    Forwarding from [::1]:42390 -> 5000

    Ou bien :

    $ oc port-forward <pod> 0:5000

6.8.3. Protocole pour initier le transfert de port à partir d'un client

Les clients initient le transfert de port vers un pod en émettant une demande au serveur API de Kubernetes :

/proxy/nodes/<node_name>/portForward/<namespace>/<pod>

Dans l'URL ci-dessus :

  • <node_name> est le FQDN du nœud.
  • <namespace> est l'espace de noms du pod cible.
  • <pod> est le nom du module cible.

Par exemple :

/proxy/nodes/node123.openshift.com/portForward/myns/mypod

Après avoir envoyé une demande de transfert de port au serveur de l'API, le client met à niveau la connexion pour qu'elle prenne en charge les flux multiplexés Hyptertext Transfer Protocol Version 2 (HTTP/2).

Le client crée un flux avec l'en-tête port contenant le port cible dans le pod. Toutes les données écrites dans le flux sont transmises via le kubelet au pod et au port cibles. De même, toutes les données envoyées depuis le module pour cette connexion transférée sont renvoyées vers le même flux dans le client.

Le client ferme tous les flux, la connexion améliorée et la connexion sous-jacente lorsqu'il a terminé la demande de transfert de port.

Red Hat logoGithubRedditYoutubeTwitter

Apprendre

Essayez, achetez et vendez

Communautés

À propos de la documentation Red Hat

Nous aidons les utilisateurs de Red Hat à innover et à atteindre leurs objectifs grâce à nos produits et services avec un contenu auquel ils peuvent faire confiance.

Rendre l’open source plus inclusif

Red Hat s'engage à remplacer le langage problématique dans notre code, notre documentation et nos propriétés Web. Pour plus de détails, consultez leBlog Red Hat.

À propos de Red Hat

Nous proposons des solutions renforcées qui facilitent le travail des entreprises sur plusieurs plates-formes et environnements, du centre de données central à la périphérie du réseau.

© 2024 Red Hat, Inc.