7.7. Exécuter des commandes à distance dans un service Red Hat OpenShift sur le conteneur AWS
Le CLI permet d’exécuter des commandes à distance dans un service OpenShift Red Hat sur le conteneur AWS.
7.7.1. Exécution de commandes distantes dans des conteneurs Copier lienLien copié sur presse-papiers!
La prise en charge de l’exécution de la commande de conteneur à distance est intégrée dans le CLI.
Procédure
Exécuter une commande dans un conteneur:
oc exec <pod> [-c <container>] -- <command> [<arg_1> ... <arg_n>]
$ oc exec <pod> [-c <container>] -- <command> [<arg_1> ... <arg_n>]
À titre d’exemple:
oc exec mypod date
$ oc exec mypod date
Exemple de sortie
Thu Apr 9 02:21:53 UTC 2015
Thu Apr 9 02:21:53 UTC 2015
À des fins de sécurité, la commande oc exec ne fonctionne pas lors de l’accès aux conteneurs privilégiés, sauf lorsque la commande est exécutée par un utilisateur cluster-admin.
7.7.2. Lancement d’une commande distante à partir d’un client Copier lienLien copié sur presse-papiers!
Les clients initient l’exécution d’une commande distante dans un conteneur en envoyant une demande au serveur API Kubernetes:
/proxy/nodes/<node_name>/exec/<namespace>/<pod>/<container>?command=<command>
/proxy/nodes/<node_name>/exec/<namespace>/<pod>/<container>?command=<command>
Dans l’URL ci-dessus:
- <node_name> est le FQDN du nœud.
- <namespace> est le projet du pod cible.
- <pod> est le nom du pod cible.
- <container> est le nom du conteneur cible.
- <command> est la commande souhaitée à exécuter.
À titre d’exemple:
/proxy/nodes/node123.openshift.com/exec/myns/mypod/mycontainer?command=date
/proxy/nodes/node123.openshift.com/exec/myns/mypod/mycontainer?command=date
En outre, le client peut ajouter des paramètres à la demande pour indiquer si:
- le client doit envoyer une entrée à la commande du conteneur distant (stdin).
- le terminal du client est un TTY.
- la commande du conteneur distant doit envoyer la sortie de stdout au client.
- la commande du conteneur distant doit envoyer la sortie de stderr au client.
Après avoir envoyé une requête exec au serveur API, le client met à niveau la connexion vers celui qui prend en charge les flux multiplexés; l’implémentation actuelle utilise HTTP/2.
Le client crée un flux chacun pour stdin, stdout et stderr. Afin de distinguer entre les flux, le client définit l’en-tête streamType sur le flux sur l’un de stdin, stdout ou stderr.
Le client ferme tous les flux, la connexion mise à niveau et la connexion sous-jacente lorsqu’elle est terminée avec la demande d’exécution de commande à distance.