7.5. Autoriser les conteneurs à consommer des objets API
L’API Downward est un mécanisme qui permet aux conteneurs de consommer des informations sur les objets API sans couplage à Red Hat OpenShift Service sur AWS. Ces informations incluent le nom, l’espace de noms et les valeurs de ressource du pod. Les conteneurs peuvent consommer des informations à partir de l’API descendante à l’aide de variables d’environnement ou d’un plugin de volume.
7.5.1. Exposer les informations de pod aux conteneurs utilisant l’API Downward Copier lienLien copié sur presse-papiers!
L’API Downward contient des informations telles que le nom, le projet et les valeurs de ressources du pod. Les conteneurs peuvent consommer des informations à partir de l’API descendante à l’aide de variables d’environnement ou d’un plugin de volume.
Les champs dans le pod sont sélectionnés à l’aide du type d’API FieldRef. FieldRef a deux champs:
Le champ | Description |
---|---|
| Le chemin du champ à sélectionner, par rapport au pod. |
| La version API pour interpréter le sélecteur fieldPath à l’intérieur. |
Actuellement, les sélecteurs valides dans l’API v1 incluent:
Le sélecteur | Description |
---|---|
| Le nom de la gousse. Ceci est pris en charge tant dans les variables d’environnement que dans les volumes. |
| L’espace de nom du pod.This est pris en charge dans les variables d’environnement et les volumes. |
| Les étiquettes de la gousse. Cela n’est pris en charge que dans les volumes et non dans les variables d’environnement. |
| Les annotations de la gousse. Cela n’est pris en charge que dans les volumes et non dans les variables d’environnement. |
| L’IP de la gousse. Ceci n’est pris en charge que dans les variables d’environnement et non dans les volumes. |
Le champ apiVersion, s’il n’est pas spécifié, par défaut, par défaut, par défaut à la version API du modèle de pod enclosing.
7.5.2. Comprendre comment consommer des valeurs de conteneur à l’aide de l’API descendante Copier lienLien copié sur presse-papiers!
Les conteneurs peuvent consommer des valeurs API à l’aide de variables d’environnement ou d’un plugin de volume. En fonction de la méthode que vous choisissez, les conteneurs peuvent consommer:
- Le nom du pod
- Le projet Pod/namespace
- Annotations de pod
- Étiquettes de pod
Les annotations et les étiquettes sont disponibles en utilisant uniquement un plugin de volume.
7.5.2.1. Consommer des valeurs de conteneur à l’aide de variables d’environnement Copier lienLien copié sur presse-papiers!
Lorsque vous utilisez les variables d’environnement d’un conteneur, utilisez la valeur du type EnvVar du champ (de type EnvVarSource) pour spécifier que la valeur de la variable devrait provenir d’une source FieldRef au lieu de la valeur littérale spécifiée par le champ de valeur.
Les attributs constants de la gousse peuvent être consommés de cette façon, car les variables d’environnement ne peuvent pas être mises à jour une fois qu’un processus est lancé d’une manière qui permet au processus d’être informé que la valeur d’une variable a changé. Les champs pris en charge à l’aide de variables d’environnement sont:
- Le nom du pod
- Le projet Pod/namespace
Procédure
Créez une nouvelle spécification de pod qui contient les variables d’environnement que vous souhaitez que le conteneur consomme:
Créez un fichier pod.yaml similaire à ce qui suit:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Créer le pod à partir du fichier pod.yaml:
oc create -f pod.yaml
$ oc create -f pod.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
La vérification
Consultez les journaux du conteneur pour les valeurs MY_POD_NAME et MY_POD_NAMESPACE:
oc logs -p dapi-env-test-pod
$ oc logs -p dapi-env-test-pod
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
7.5.2.2. Consommer des valeurs de conteneur à l’aide d’un plugin de volume Copier lienLien copié sur presse-papiers!
Les conteneurs peuvent consommer des valeurs API à l’aide d’un plugin de volume.
Les conteneurs peuvent consommer:
- Le nom du pod
- Le projet Pod/namespace
- Annotations de pod
- Étiquettes de pod
Procédure
D’utiliser le plugin de volume:
Créez une nouvelle spécification de pod qui contient les variables d’environnement que vous souhaitez que le conteneur consomme:
Créez un fichier volume-pod.yaml similaire à ce qui suit:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Créez le pod à partir du fichier volume-pod.yaml:
oc create -f volume-pod.yaml
$ oc create -f volume-pod.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
La vérification
Consultez les journaux du conteneur et vérifiez la présence des champs configurés:
oc logs -p dapi-volume-test-pod
$ oc logs -p dapi-volume-test-pod
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Exemple de sortie
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
7.5.3. Comprendre comment consommer des ressources de conteneurs à l’aide de l’API Downward Copier lienLien copié sur presse-papiers!
Lors de la création de pods, vous pouvez utiliser l’API Downward pour injecter des informations sur les demandes de ressources informatiques et les limites afin que les auteurs d’images et d’applications puissent créer correctement une image pour des environnements spécifiques.
Il est possible de le faire à l’aide d’une variable d’environnement ou d’un plugin de volume.
7.5.3.1. Consommer des ressources de conteneurs à l’aide de variables d’environnement Copier lienLien copié sur presse-papiers!
Lors de la création de pods, vous pouvez utiliser l’API Downward pour injecter des informations sur les demandes de ressources informatiques et les limites à l’aide de variables d’environnement.
Lors de la création de la configuration de pod, spécifiez les variables d’environnement qui correspondent au contenu du champ ressources dans le champ spec.container.
Dans le cas où les limites de ressources ne sont pas incluses dans la configuration du conteneur, l’API descendante par défaut vers le CPU du nœud et les valeurs allocatables de mémoire.
Procédure
Créez une nouvelle spécification de pod qui contient les ressources que vous souhaitez injecter:
Créez un fichier pod.yaml similaire à ce qui suit:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Créer le pod à partir du fichier pod.yaml:
oc create -f pod.yaml
$ oc create -f pod.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
7.5.3.2. Consommer des ressources de conteneurs à l’aide d’un plugin de volume Copier lienLien copié sur presse-papiers!
Lors de la création de pods, vous pouvez utiliser l’API Downward pour injecter des informations sur les demandes de ressources informatiques et les limites à l’aide d’un plugin de volume.
Lors de la création de la configuration de pod, utilisez le champ spec.volumes.downwardAPI.items pour décrire les ressources souhaitées qui correspondent au champ spec.resources.
Dans le cas où les limites de ressources ne sont pas incluses dans la configuration du conteneur, l’API Downward par défaut sur le CPU du nœud et les valeurs allocatables de mémoire.
Procédure
Créez une nouvelle spécification de pod qui contient les ressources que vous souhaitez injecter:
Créez un fichier pod.yaml similaire à ce qui suit:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Créez le pod à partir du fichier volume-pod.yaml:
oc create -f volume-pod.yaml
$ oc create -f volume-pod.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
7.5.4. Consommer des secrets à l’aide de l’API Downward Copier lienLien copié sur presse-papiers!
Lors de la création de pods, vous pouvez utiliser l’API descendante pour injecter des secrets afin que les auteurs d’images et d’applications puissent créer une image pour des environnements spécifiques.
Procédure
Créer un secret à injecter:
Créez un fichier secret.yaml similaire à ce qui suit:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Créez l’objet secret à partir du fichier secret.yaml:
oc create -f secret.yaml
$ oc create -f secret.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
Créez un pod qui fait référence au champ nom d’utilisateur à partir de l’objet secret ci-dessus:
Créez un fichier pod.yaml similaire à ce qui suit:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Créer le pod à partir du fichier pod.yaml:
oc create -f pod.yaml
$ oc create -f pod.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
La vérification
Consultez les journaux du conteneur pour la valeur MY_SECRET_USERNAME:
oc logs -p dapi-env-test-pod
$ oc logs -p dapi-env-test-pod
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
7.5.5. Consommer des cartes de configuration à l’aide de l’API Downward Copier lienLien copié sur presse-papiers!
Lors de la création de pods, vous pouvez utiliser l’API Downward pour injecter des valeurs de carte de configuration afin que les auteurs d’images et d’applications puissent créer une image pour des environnements spécifiques.
Procédure
Créer une carte de configuration avec les valeurs à injecter:
Créez un fichier configmap.yaml similaire à ce qui suit:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Créer la carte de configuration à partir du fichier configmap.yaml:
oc create -f configmap.yaml
$ oc create -f configmap.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
Créez un pod qui fait référence à la carte de configuration ci-dessus:
Créez un fichier pod.yaml similaire à ce qui suit:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Créer le pod à partir du fichier pod.yaml:
oc create -f pod.yaml
$ oc create -f pod.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
La vérification
Consultez les journaux du conteneur pour la valeur MY_CONFIGMAP_VALUE:
oc logs -p dapi-env-test-pod
$ oc logs -p dapi-env-test-pod
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
7.5.6. Les variables d’environnement de référencement Copier lienLien copié sur presse-papiers!
Lors de la création de pods, vous pouvez référencer la valeur d’une variable d’environnement définie précédemment en utilisant la syntaxe $(). Lorsque la référence de la variable d’environnement ne peut pas être résolue, la valeur sera laissée en tant que chaîne fournie.
Procédure
Créer un pod qui fait référence à une variable d’environnement existante:
Créez un fichier pod.yaml similaire à ce qui suit:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Créer le pod à partir du fichier pod.yaml:
oc create -f pod.yaml
$ oc create -f pod.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
La vérification
Consultez les journaux du conteneur pour la valeur MY_ENV_VAR_REF_ENV:
oc logs -p dapi-env-test-pod
$ oc logs -p dapi-env-test-pod
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
7.5.7. Évasion des références des variables d’environnement Copier lienLien copié sur presse-papiers!
Lors de la création d’une gousse, vous pouvez échapper à une référence variable d’environnement en utilisant un signe double dollar. La valeur sera ensuite définie sur une version de signe d’un seul dollar de la valeur fournie.
Procédure
Créer un pod qui fait référence à une variable d’environnement existante:
Créez un fichier pod.yaml similaire à ce qui suit:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Créer le pod à partir du fichier pod.yaml:
oc create -f pod.yaml
$ oc create -f pod.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
La vérification
Consultez les journaux du conteneur pour la valeur MY_NEW_ENV:
oc logs -p dapi-env-test-pod
$ oc logs -p dapi-env-test-pod
Copy to Clipboard Copied! Toggle word wrap Toggle overflow