feat(configMap): add a warning message for ConfigMap with a specific path (#14896)
This commit is contained in:
committed by
Kubernetes Prow Robot
parent
58f108a489
commit
70eca876a4
@@ -22,7 +22,7 @@ ConfigMaps allow you to decouple configuration artifacts from image content to k
|
|||||||
|
|
||||||
|
|
||||||
## Create a ConfigMap
|
## Create a ConfigMap
|
||||||
You can use either `kubectl create configmap` or a ConfigMap generator in `kustomization.yaml` to create a ConfigMap. Note that `kubectl` starts to support `kustomization.yaml` since 1.14.
|
You can use either `kubectl create configmap` or a ConfigMap generator in `kustomization.yaml` to create a ConfigMap. Note that `kubectl` starts to support `kustomization.yaml` since 1.14.
|
||||||
|
|
||||||
### Create a ConfigMap Using kubectl create configmap
|
### Create a ConfigMap Using kubectl create configmap
|
||||||
|
|
||||||
@@ -444,21 +444,21 @@ configmap/special-config-2-c92b5mmcf2 created
|
|||||||
{{< codenew file="pods/pod-single-configmap-env-variable.yaml" >}}
|
{{< codenew file="pods/pod-single-configmap-env-variable.yaml" >}}
|
||||||
|
|
||||||
Create the Pod:
|
Create the Pod:
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
kubectl create -f https://kubernetes.io/examples/pods/pod-single-configmap-env-variable.yaml
|
kubectl create -f https://kubernetes.io/examples/pods/pod-single-configmap-env-variable.yaml
|
||||||
```
|
```
|
||||||
|
|
||||||
Now, the Pod's output includes environment variable `SPECIAL_LEVEL_KEY=very`.
|
Now, the Pod's output includes environment variable `SPECIAL_LEVEL_KEY=very`.
|
||||||
|
|
||||||
### Define container environment variables with data from multiple ConfigMaps
|
### Define container environment variables with data from multiple ConfigMaps
|
||||||
|
|
||||||
* As with the previous example, create the ConfigMaps first.
|
* As with the previous example, create the ConfigMaps first.
|
||||||
|
|
||||||
{{< codenew file="configmap/configmaps.yaml" >}}
|
{{< codenew file="configmap/configmaps.yaml" >}}
|
||||||
|
|
||||||
Create the ConfigMap:
|
Create the ConfigMap:
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
kubectl create -f https://kubernetes.io/examples/configmap/configmaps.yaml
|
kubectl create -f https://kubernetes.io/examples/configmap/configmaps.yaml
|
||||||
```
|
```
|
||||||
@@ -468,43 +468,43 @@ configmap/special-config-2-c92b5mmcf2 created
|
|||||||
{{< codenew file="pods/pod-multiple-configmap-env-variable.yaml" >}}
|
{{< codenew file="pods/pod-multiple-configmap-env-variable.yaml" >}}
|
||||||
|
|
||||||
Create the Pod:
|
Create the Pod:
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
kubectl create -f https://kubernetes.io/examples/pods/pod-multiple-configmap-env-variable.yaml
|
kubectl create -f https://kubernetes.io/examples/pods/pod-multiple-configmap-env-variable.yaml
|
||||||
```
|
```
|
||||||
|
|
||||||
Now, the Pod's output includes environment variables `SPECIAL_LEVEL_KEY=very` and `LOG_LEVEL=INFO`.
|
Now, the Pod's output includes environment variables `SPECIAL_LEVEL_KEY=very` and `LOG_LEVEL=INFO`.
|
||||||
|
|
||||||
## Configure all key-value pairs in a ConfigMap as container environment variables
|
## Configure all key-value pairs in a ConfigMap as container environment variables
|
||||||
|
|
||||||
{{< note >}}
|
{{< note >}}
|
||||||
This functionality is available in Kubernetes v1.6 and later.
|
This functionality is available in Kubernetes v1.6 and later.
|
||||||
{{< /note >}}
|
{{< /note >}}
|
||||||
|
|
||||||
* Create a ConfigMap containing multiple key-value pairs.
|
* Create a ConfigMap containing multiple key-value pairs.
|
||||||
|
|
||||||
{{< codenew file="configmap/configmap-multikeys.yaml" >}}
|
{{< codenew file="configmap/configmap-multikeys.yaml" >}}
|
||||||
|
|
||||||
Create the ConfigMap:
|
Create the ConfigMap:
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
kubectl create -f https://kubernetes.io/examples/configmap/configmap-multikeys.yaml
|
kubectl create -f https://kubernetes.io/examples/configmap/configmap-multikeys.yaml
|
||||||
```
|
```
|
||||||
|
|
||||||
* Use `envFrom` to define all of the ConfigMap's data as container environment variables. The key from the ConfigMap becomes the environment variable name in the Pod.
|
* Use `envFrom` to define all of the ConfigMap's data as container environment variables. The key from the ConfigMap becomes the environment variable name in the Pod.
|
||||||
|
|
||||||
{{< codenew file="pods/pod-configmap-envFrom.yaml" >}}
|
{{< codenew file="pods/pod-configmap-envFrom.yaml" >}}
|
||||||
|
|
||||||
Create the Pod:
|
Create the Pod:
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
kubectl create -f https://kubernetes.io/examples/pods/pod-configmap-envFrom.yaml
|
kubectl create -f https://kubernetes.io/examples/pods/pod-configmap-envFrom.yaml
|
||||||
```
|
```
|
||||||
|
|
||||||
Now, the Pod's output includes environment variables `SPECIAL_LEVEL=very` and `SPECIAL_TYPE=charm`.
|
Now, the Pod's output includes environment variables `SPECIAL_LEVEL=very` and `SPECIAL_TYPE=charm`.
|
||||||
|
|
||||||
|
|
||||||
## Use ConfigMap-defined environment variables in Pod commands
|
## Use ConfigMap-defined environment variables in Pod commands
|
||||||
|
|
||||||
You can use ConfigMap-defined environment variables in the `command` section of the Pod specification using the `$(VAR_NAME)` Kubernetes substitution syntax.
|
You can use ConfigMap-defined environment variables in the `command` section of the Pod specification using the `$(VAR_NAME)` Kubernetes substitution syntax.
|
||||||
|
|
||||||
@@ -524,23 +524,23 @@ produces the following output in the `test-container` container:
|
|||||||
very charm
|
very charm
|
||||||
```
|
```
|
||||||
|
|
||||||
## Add ConfigMap data to a Volume
|
## Add ConfigMap data to a Volume
|
||||||
|
|
||||||
As explained in [Create ConfigMaps from files](#create-configmaps-from-files), when you create a ConfigMap using ``--from-file``, the filename becomes a key stored in the `data` section of the ConfigMap. The file contents become the key's value.
|
As explained in [Create ConfigMaps from files](#create-configmaps-from-files), when you create a ConfigMap using ``--from-file``, the filename becomes a key stored in the `data` section of the ConfigMap. The file contents become the key's value.
|
||||||
|
|
||||||
The examples in this section refer to a ConfigMap named special-config, shown below.
|
The examples in this section refer to a ConfigMap named special-config, shown below.
|
||||||
|
|
||||||
{{< codenew file="configmap/configmap-multikeys.yaml" >}}
|
{{< codenew file="configmap/configmap-multikeys.yaml" >}}
|
||||||
|
|
||||||
Create the ConfigMap:
|
Create the ConfigMap:
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
kubectl create -f https://kubernetes.io/examples/configmap/configmap-multikeys.yaml
|
kubectl create -f https://kubernetes.io/examples/configmap/configmap-multikeys.yaml
|
||||||
```
|
```
|
||||||
|
|
||||||
### Populate a Volume with data stored in a ConfigMap
|
### Populate a Volume with data stored in a ConfigMap
|
||||||
|
|
||||||
Add the ConfigMap name under the `volumes` section of the Pod specification.
|
Add the ConfigMap name under the `volumes` section of the Pod specification.
|
||||||
This adds the ConfigMap data to the directory specified as `volumeMounts.mountPath` (in this case, `/etc/config`).
|
This adds the ConfigMap data to the directory specified as `volumeMounts.mountPath` (in this case, `/etc/config`).
|
||||||
The `command` section references the `special.level` item stored in the ConfigMap.
|
The `command` section references the `special.level` item stored in the ConfigMap.
|
||||||
|
|
||||||
@@ -565,7 +565,7 @@ If there are some files in the `/etc/config/` directory, they will be deleted.
|
|||||||
|
|
||||||
### Add ConfigMap data to a specific path in the Volume
|
### Add ConfigMap data to a specific path in the Volume
|
||||||
|
|
||||||
Use the `path` field to specify the desired file path for specific ConfigMap items.
|
Use the `path` field to specify the desired file path for specific ConfigMap items.
|
||||||
In this case, the `SPECIAL_LEVEL` item will be mounted in the `config-volume` volume at `/etc/config/keys`.
|
In this case, the `SPECIAL_LEVEL` item will be mounted in the `config-volume` volume at `/etc/config/keys`.
|
||||||
|
|
||||||
{{< codenew file="pods/pod-configmap-volume-specific-key.yaml" >}}
|
{{< codenew file="pods/pod-configmap-volume-specific-key.yaml" >}}
|
||||||
@@ -582,6 +582,10 @@ When the pod runs, the command `cat /etc/config/keys` produces the output below:
|
|||||||
very
|
very
|
||||||
```
|
```
|
||||||
|
|
||||||
|
{{< caution >}}
|
||||||
|
Like before, all previous files in the `/etc/config/` directory will be deleted.
|
||||||
|
{{< /caution >}}
|
||||||
|
|
||||||
### Project keys to specific paths and file permissions
|
### Project keys to specific paths and file permissions
|
||||||
|
|
||||||
You can project keys to specific paths and specific permissions on a per-file
|
You can project keys to specific paths and specific permissions on a per-file
|
||||||
@@ -636,9 +640,9 @@ data:
|
|||||||
```shell
|
```shell
|
||||||
kubectl get events
|
kubectl get events
|
||||||
```
|
```
|
||||||
|
|
||||||
The output is similar to this:
|
The output is similar to this:
|
||||||
```
|
```
|
||||||
LASTSEEN FIRSTSEEN COUNT NAME KIND SUBOBJECT TYPE REASON SOURCE MESSAGE
|
LASTSEEN FIRSTSEEN COUNT NAME KIND SUBOBJECT TYPE REASON SOURCE MESSAGE
|
||||||
0s 0s 1 dapi-test-pod Pod Warning InvalidEnvironmentVariableNames {kubelet, 127.0.0.1} Keys [1badkey, 2alsobad] from the EnvFrom configMap default/myconfig were skipped since they are considered invalid environment variable names.
|
0s 0s 1 dapi-test-pod Pod Warning InvalidEnvironmentVariableNames {kubelet, 127.0.0.1} Keys [1badkey, 2alsobad] from the EnvFrom configMap default/myconfig were skipped since they are considered invalid environment variable names.
|
||||||
```
|
```
|
||||||
@@ -646,11 +650,11 @@ data:
|
|||||||
- ConfigMaps reside in a specific [namespace](/docs/concepts/overview/working-with-objects/namespaces/). A ConfigMap can only be referenced by pods residing in the same namespace.
|
- ConfigMaps reside in a specific [namespace](/docs/concepts/overview/working-with-objects/namespaces/). A ConfigMap can only be referenced by pods residing in the same namespace.
|
||||||
|
|
||||||
- Kubelet doesn't support the use of ConfigMaps for pods not found on the API server. This includes pods created via the Kubelet's `--manifest-url` flag, `--config` flag, or the Kubelet REST API.
|
- Kubelet doesn't support the use of ConfigMaps for pods not found on the API server. This includes pods created via the Kubelet's `--manifest-url` flag, `--config` flag, or the Kubelet REST API.
|
||||||
|
|
||||||
{{< note >}}
|
{{< note >}}
|
||||||
These are not commonly-used ways to create pods.
|
These are not commonly-used ways to create pods.
|
||||||
{{< /note >}}
|
{{< /note >}}
|
||||||
|
|
||||||
{{% /capture %}}
|
{{% /capture %}}
|
||||||
|
|
||||||
{{% capture whatsnext %}}
|
{{% capture whatsnext %}}
|
||||||
|
|||||||
Reference in New Issue
Block a user