Skip to content

Commit 76756d0

Browse files
authored
Merge pull request #39838 from k0rventen/fr-task-env-var-podinfo
[fr] add french translation for task inject-data-application/environment-variable-expose-pod-information.md
2 parents baa62c4 + 8109d68 commit 76756d0

File tree

3 files changed

+249
-0
lines changed

3 files changed

+249
-0
lines changed
Lines changed: 166 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,166 @@
1+
---
2+
title: Exposer les informations du Pod aux containers via les variables d'environnement
3+
content_type: task
4+
weight: 30
5+
---
6+
7+
<!-- overview -->
8+
9+
Cette page montre comment un Pod peut utiliser des variables d'environnement pour
10+
exposer ses propres informations aux containers qu'il exécute via la
11+
_downward API_.
12+
Vous pouvez utiliser des variables d'environnement pour exposer des champs
13+
de configuration du Pod, des containers ou les deux.
14+
15+
Dans Kubernetes, il y a deux façons distinctes d'exposer les champs de
16+
configuration de Pod et de container à l'intérieur d'un container:
17+
18+
* _Via les variables d'environnement_, comme expliqué dans cette tâche,
19+
* Via un [volume](/docs/tasks/inject-data-application/downward-api-volume-expose-pod-information/)
20+
21+
Ensemble, ces deux façons d'exposer des informations du Pod et du container sont appelées la _downward API_.
22+
23+
## {{% heading "prerequisites" %}}
24+
25+
{{< include "task-tutorial-prereqs.md" >}}
26+
27+
<!-- steps -->
28+
29+
## Utiliser les champs du Pod comme variables d'environnement
30+
31+
Dans cette partie de l'exercice, vous allez créer un Pod qui a un container,
32+
et vous allez projeter les champs d'informations du Pod à l'intérieur du
33+
container comme variables d'environnement.
34+
35+
{{< codenew file="pods/inject/dapi-envars-pod.yaml" >}}
36+
37+
Dans ce fichier de configuration, on trouve cinq variables d'environnement.
38+
Le champ `env` est une liste de variables d'environnement.
39+
Le premier élément de la liste spécifie que la valeur de la variable d'environnement
40+
`MY_NODE_NAME` hérite du champ `spec.nodeName` du Pod.
41+
Il en va de même pour les autres variables d'environnement, qui héritent
42+
des autres champs du Pod.
43+
{{< note >}}
44+
Les champs de configuration présents dans cet exemple sont des champs du Pod. Ce ne sont pas les champs du container à l'intérieur du Pod.
45+
{{< /note >}}
46+
47+
Créez le Pod:
48+
49+
```shell
50+
kubectl apply -f https://k8s.io/examples/pods/inject/dapi-envars-pod.yaml
51+
```
52+
53+
Vérifiez que le container dans le Pod fonctionne:
54+
55+
```shell
56+
# Si le nouveau Pod n'est pas fonctionnel, re-exécutez cette commande plusieurs fois
57+
kubectl get pods
58+
```
59+
60+
Affichez les logs du container:
61+
62+
```shell
63+
kubectl logs dapi-envars-fieldref
64+
```
65+
66+
Le résultat doit afficher les valeurs des variables d'environnement choisies:
67+
68+
```
69+
minikube
70+
dapi-envars-fieldref
71+
default
72+
172.17.0.4
73+
default
74+
```
75+
76+
Pour comprendre pourquoi ces valeurs apparaissent dans les logs, regardez les champs `command` et `args` du fichier de configuration. Lorsque le container s'exécute, il écrit les valeurs de 5 variables d'environnement vers stdout, avec un interval de 10 secondes.
77+
78+
Ensuite, exécutez un shell à l'intérieur du container:
79+
80+
```shell
81+
kubectl exec -it dapi-envars-fieldref -- sh
82+
```
83+
84+
Dans ce shell, listez les variables d'environnement:
85+
86+
```shell
87+
# À exécuter à l'intérieur du container
88+
printenv
89+
```
90+
91+
Le résultat doit montrer que certaines variables d'environnement contiennent
92+
les informations du Pod:
93+
94+
```
95+
MY_POD_SERVICE_ACCOUNT=default
96+
...
97+
MY_POD_NAMESPACE=default
98+
MY_POD_IP=172.17.0.4
99+
...
100+
MY_NODE_NAME=minikube
101+
...
102+
MY_POD_NAME=dapi-envars-fieldref
103+
```
104+
105+
## Utiliser des informations du container comme variables d'environnement
106+
107+
Dans l'exercice précédent, vous avez utilisé les informations du Pod à
108+
travers des variables d'environnement.
109+
Dans cet exercice, vous allez faire passer des champs appartenant
110+
au [container](/docs/reference/kubernetes-api/workload-resources/pod-v1/#Container)
111+
qui est exécuté à l'intérieur du Pod.
112+
113+
Voici un fichier de configuration pour un autre Pod qui ne contient qu'un seul
114+
container:
115+
116+
{{< codenew file="pods/inject/dapi-envars-container.yaml" >}}
117+
118+
Dans ce fichier, vous pouvez voir 4 variables d'environnement.
119+
Le champ `env` est une liste de variables d'environnement.
120+
Le premier élément de la liste spécifie que la variable d'environnement `MY_CPU_REQUEST` aura sa valeur à partir du champ `requests.cpu` du container avec le nom `test-container`. Il en va de même pour les autres variables d'environnement, qui hériteront des champs du container qui sera exécuté.
121+
122+
Créez le Pod:
123+
124+
```shell
125+
kubectl apply -f https://k8s.io/examples/pods/inject/dapi-envars-container.yaml
126+
```
127+
128+
Vérifiez que le container dans le Pod fonctionne:
129+
130+
```shell
131+
# Si le nouveau Pod n'est pas fonctionnel, re-exécutez cette commande plusieurs fois
132+
kubectl get pods
133+
```
134+
135+
Affichez les logs du container:
136+
137+
```shell
138+
kubectl logs dapi-envars-resourcefieldref
139+
```
140+
141+
Le résultat doit afficher les valeurs des variables selectionnées:
142+
143+
```
144+
1
145+
1
146+
33554432
147+
67108864
148+
```
149+
150+
## {{% heading "whatsnext" %}}
151+
152+
153+
* Lire [Définir des variables d'environnement pour un Container](/docs/tasks/inject-data-application/define-environment-variable-container/)
154+
* Lire la [`documentation de référence des Pod`](/docs/reference/kubernetes-api/workload-resources/pod-v1/#PodSpec).
155+
Elle inclut la documentation pour les containers.
156+
* Lire la liste des [champs de configuration disponibles](/docs/concepts/workloads/pods/downward-api/#available-fields)
157+
qui peuvent être exposés via la downward API.
158+
159+
En savoir plus sur les pods, les containers et les variables d'environnement avec les documentations de référence:
160+
161+
* [PodSpec](/docs/reference/generated/kubernetes-api/{{< param "version" >}}/#podspec-v1-core)
162+
* [Container](/docs/reference/generated/kubernetes-api/{{< param "version" >}}/#container-v1-core)
163+
* [EnvVar](/docs/reference/generated/kubernetes-api/{{< param "version" >}}/#envvar-v1-core)
164+
* [EnvVarSource](/docs/reference/generated/kubernetes-api/{{< param "version" >}}/#envvarsource-v1-core)
165+
* [ObjectFieldSelector](/docs/reference/generated/kubernetes-api/{{< param "version" >}}/#objectfieldselector-v1-core)
166+
* [ResourceFieldSelector](/docs/reference/generated/kubernetes-api/{{< param "version" >}}/#resourcefieldselector-v1-core)
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
apiVersion: v1
2+
kind: Pod
3+
metadata:
4+
name: dapi-envars-resourcefieldref
5+
spec:
6+
containers:
7+
- name: test-container
8+
image: registry.k8s.io/busybox:1.24
9+
command: [ "sh", "-c"]
10+
args:
11+
- while true; do
12+
echo -en '\n';
13+
printenv MY_CPU_REQUEST MY_CPU_LIMIT;
14+
printenv MY_MEM_REQUEST MY_MEM_LIMIT;
15+
sleep 10;
16+
done;
17+
resources:
18+
requests:
19+
memory: "32Mi"
20+
cpu: "125m"
21+
limits:
22+
memory: "64Mi"
23+
cpu: "250m"
24+
env:
25+
- name: MY_CPU_REQUEST
26+
valueFrom:
27+
resourceFieldRef:
28+
containerName: test-container
29+
resource: requests.cpu
30+
- name: MY_CPU_LIMIT
31+
valueFrom:
32+
resourceFieldRef:
33+
containerName: test-container
34+
resource: limits.cpu
35+
- name: MY_MEM_REQUEST
36+
valueFrom:
37+
resourceFieldRef:
38+
containerName: test-container
39+
resource: requests.memory
40+
- name: MY_MEM_LIMIT
41+
valueFrom:
42+
resourceFieldRef:
43+
containerName: test-container
44+
resource: limits.memory
45+
restartPolicy: Never
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
apiVersion: v1
2+
kind: Pod
3+
metadata:
4+
name: dapi-envars-fieldref
5+
spec:
6+
containers:
7+
- name: test-container
8+
image: registry.k8s.io/busybox
9+
command: [ "sh", "-c"]
10+
args:
11+
- while true; do
12+
echo -en '\n';
13+
printenv MY_NODE_NAME MY_POD_NAME MY_POD_NAMESPACE;
14+
printenv MY_POD_IP MY_POD_SERVICE_ACCOUNT;
15+
sleep 10;
16+
done;
17+
env:
18+
- name: MY_NODE_NAME
19+
valueFrom:
20+
fieldRef:
21+
fieldPath: spec.nodeName
22+
- name: MY_POD_NAME
23+
valueFrom:
24+
fieldRef:
25+
fieldPath: metadata.name
26+
- name: MY_POD_NAMESPACE
27+
valueFrom:
28+
fieldRef:
29+
fieldPath: metadata.namespace
30+
- name: MY_POD_IP
31+
valueFrom:
32+
fieldRef:
33+
fieldPath: status.podIP
34+
- name: MY_POD_SERVICE_ACCOUNT
35+
valueFrom:
36+
fieldRef:
37+
fieldPath: spec.serviceAccountName
38+
restartPolicy: Never

0 commit comments

Comments
 (0)