Skip to content

Commit 7cfa743

Browse files
author
k0rventen
committed
add french translation for task 'Expose Pod Information to Containers Through Environment Variables'
1 parent c44bdb2 commit 7cfa743

File tree

3 files changed

+247
-0
lines changed

3 files changed

+247
-0
lines changed
Lines changed: 164 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,164 @@
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+
Dans Kubernetes, il y a deux façons distinctes d'exposer les champs de
15+
configuration de Pod et de container à l'intérieur d'un container:
16+
17+
* _Via les variables d'environnement_, comme expliqué ci-dessous
18+
* Via un [volume](/docs/tasks/inject-data-application/downward-api-volume-expose-pod-information/)
19+
20+
Ensemble, ces deux façons d'exposer des informations du Pod et du container sont appelées la _downward API_.
21+
22+
## {{% heading "prerequisites" %}}
23+
24+
{{< include "task-tutorial-prereqs.md" >}}
25+
26+
<!-- steps -->
27+
28+
## Utiliser les champs du Pod comme variables d'environnement
29+
30+
Dans cette partie de l'exercice, vous allez créer un Pod qui a un container,
31+
et vous allez projeter les champs d'informations du Pod à l'intérieur du
32+
container comme variables d'environnement.
33+
34+
{{< codenew file="pods/inject/dapi-envars-pod.yaml" >}}
35+
36+
Dans ce fichier de configuration, on trouve cinq variables d'environnement. Le champ `env` est une liste de variables d'environnement.
37+
Le premier élément de la liste spécifie que la variable d'environnement
38+
`MY_NODE_NAME` aura sa valeur à partir du champ `spec.nodeName` du Pod.
39+
Il en va de même pour les autres variables d'environnement, qui héritent
40+
des champs du Pod.
41+
{{< note >}}
42+
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.
43+
{{< /note >}}
44+
45+
Créez le Pod:
46+
47+
```shell
48+
kubectl apply -f https://k8s.io/examples/pods/inject/dapi-envars-pod.yaml
49+
```
50+
51+
Vérifiez que le container dans le Pod fonctionne:
52+
53+
```shell
54+
# If the new Pod isn't yet healthy, rerun this command a few times.
55+
kubectl get pods
56+
```
57+
58+
Affichez les logs du container:
59+
60+
```shell
61+
kubectl logs dapi-envars-fieldref
62+
```
63+
64+
Le résultat doit afficher les valeurs des variables d'environnement choisies:
65+
66+
```
67+
minikube
68+
dapi-envars-fieldref
69+
default
70+
172.17.0.4
71+
default
72+
```
73+
74+
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.
75+
76+
Ensuite, exécutez un shell à l'intérieur du container:
77+
78+
```shell
79+
kubectl exec -it dapi-envars-fieldref -- sh
80+
```
81+
82+
Dans ce shell, listez les variables d'environnement:
83+
84+
```shell
85+
# À exécuter à l'intérieur du container
86+
printenv
87+
```
88+
89+
Le résultat doit montrer que certaines variables d'environnement contiennent
90+
les informations du Pod:
91+
92+
```
93+
MY_POD_SERVICE_ACCOUNT=default
94+
...
95+
MY_POD_NAMESPACE=default
96+
MY_POD_IP=172.17.0.4
97+
...
98+
MY_NODE_NAME=minikube
99+
...
100+
MY_POD_NAME=dapi-envars-fieldref
101+
```
102+
103+
## Utiliser des informations du container comme variables d'environnement
104+
105+
Dans l'exercice précédent, vous avez utilisé les informations du Pod à
106+
travers des variables d'environnement.
107+
Dans cet exercice, vous allez faire passer des champs appartenant
108+
au [container](/docs/reference/kubernetes-api/workload-resources/pod-v1/#Container)
109+
qui est exécuté à l'intérieur du Pod.
110+
111+
Voici un fichier de configuration pour un autre Pod qui ne contient qu'un seul
112+
container:
113+
114+
{{< codenew file="pods/inject/dapi-envars-container.yaml" >}}
115+
116+
Dans ce fichier, vous pouvez voir 4 variables d'environnement.
117+
Le champ `env` est une liste de variables d'environnement.
118+
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é.
119+
120+
Créez le Pod:
121+
122+
```shell
123+
kubectl apply -f https://k8s.io/examples/pods/inject/dapi-envars-container.yaml
124+
```
125+
126+
Vérifiez que le container dans le Pod fonctionne:
127+
128+
```shell
129+
# Si le nouveau Pod n'est pas fonctionnel, re-exécutez cette commande plusieurs fois
130+
kubectl get pods
131+
```
132+
133+
Affichez les logs du container:
134+
135+
```shell
136+
kubectl logs dapi-envars-resourcefieldref
137+
```
138+
139+
Le résultat doit afficher les valeurs des variables selectionnées:
140+
141+
```
142+
1
143+
1
144+
33554432
145+
67108864
146+
```
147+
148+
## {{% heading "whatsnext" %}}
149+
150+
151+
* Lire [Defining Environment Variables for a Container](/docs/tasks/inject-data-application/define-environment-variable-container/)
152+
* Read the [`spec`](/docs/reference/kubernetes-api/workload-resources/pod-v1/#PodSpec)
153+
API definition for Pod. This includes the definition of Container (part of Pod).
154+
* Read the list of [available fields](/docs/concepts/workloads/pods/downward-api/#available-fields) that you
155+
can expose using the downward API.
156+
157+
Read about Pods, containers and environment variables in the legacy API reference:
158+
159+
* [PodSpec](/docs/reference/generated/kubernetes-api/{{< param "version" >}}/#podspec-v1-core)
160+
* [Container](/docs/reference/generated/kubernetes-api/{{< param "version" >}}/#container-v1-core)
161+
* [EnvVar](/docs/reference/generated/kubernetes-api/{{< param "version" >}}/#envvar-v1-core)
162+
* [EnvVarSource](/docs/reference/generated/kubernetes-api/{{< param "version" >}}/#envvarsource-v1-core)
163+
* [ObjectFieldSelector](/docs/reference/generated/kubernetes-api/{{< param "version" >}}/#objectfieldselector-v1-core)
164+
* [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)