⎈ k8s knowledge compiler

Configure a Pod to Use a ConfigMap [page]deterministic

tasks

Many applications rely on configuration which is used during either application initialization or runtime. Most times, there is a requirement to adjust values assigned to configuration parameters. ConfigMaps are a Kubernetes mechanism that let you inject configuration data into application [pods](#gloss:pod).

The ConfigMap concept allow you to decouple configuration artifacts from image content to keep containerized applications portable. For example, you can download and run the same [container image](#gloss:image) to spin up containers for the purposes of local development, system test, or running a live end-user workload.

This page provides a series of usage examples demonstrating how to create ConfigMaps and configure Pods using data stored in ConfigMaps.

##

You need to have the `wget` tool installed. If you have a different tool such as `curl`, and you do not have `wget`, you will need to adapt the step that downloads example data.

## Create a ConfigMap

You can use either `kubectl create configmap` or a ConfigMap generator in `kustomization.yaml` to create a ConfigMap.

### Create a ConfigMap using `kubectl create configmap`

Use the `kubectl create configmap` command to create ConfigMaps from [directories](#create-configmaps-from-directories), [files](#create-configmaps-from-files), or [literal values](#create-configmaps-from-literal-values):

```shell kubectl create configmap <map-name> <data-source> ```

where \<map-name> is the name you want to assign to the ConfigMap and \<data-source> is the directory, file, or literal value to draw the data from. The name of a ConfigMap object must be a valid [DNS subdomain name](/docs/concepts/overview/working-with-objects/names#dns-subdomain-names).

When you are creating a ConfigMap based on a file, the key in the \<data-source> defaults to the basename of the file, and the value defaults to the file content.

You can use [`kubectl describe`](/docs/reference/generated/kubectl/kubectl-commands/#describe) or [`kubectl get`](/docs/reference/generated/kubectl/kubectl-commands/#get) to retrieve information about a ConfigMap.

#### Create a ConfigMap from a directory {#create-configmaps-from-directories}

You can use `kubectl create configmap` to create a ConfigMap from multiple files in the same directory. When you are creating a ConfigMap based on a directory, kubectl identifies files whose filename is a valid key in the directory and packages each of those files into the new ConfigMap. Any directory entries except regular files are ignored (for example: subdirectories, symlinks, devices, pipes, and more).

> Note: Each filename being used for ConfigMap creation must consist of only acceptable characters, which are: letters (`A` to `Z` and `a` to `z`), digits (`0` to `9`), '-', '_', or '.'. If you use `kubectl create configmap` with a directory where any of the file names contains an unacceptable character, the `kubectl` command may fail.

The `kubectl` command does not print an error when it encounters an invalid filename.

Create the local directory:

```shell mkdir -p configure-pod-container/configmap/ ```

Now, download the sample configuration and create the ConfigMap:

```shell # Download the sample files into `configure-pod-container/configmap/` directory wget https://kubernetes.io/examples/configmap/game.properties -O configure-pod-container/configmap/game.properties wget https://kubernetes.io/examples/configmap/ui.properties -O configure-pod-container/configmap/ui.properties

# Create the ConfigMap kubectl create configmap game-config --from-file=configure-pod-container/configmap/ ```

The above command packages each file, in this case, `game.properties` and `ui.properties` in the `configure-pod-container/configmap/` directory into the game-config ConfigMap. You can display details of the ConfigMap using the following command:

```shell kubectl describe configmaps game-config ```

The output is similar to this: ``` Name: game-config Namespace: …(trimmed)

Sources

tasks/configure-pod-container/configure-pod-configmap.md · docConfigure a Pod to Use a ConfigMap

Related (25)

references Podpods conf=1
references Imagecontainer image conf=1
references Namespacenamespace conf=1
references Static Podstatic pods conf=1
part_of {{% heading "prerequisites" %}}describes conf=1
part_of Create a ConfigMapdescribes conf=1
part_of Interim cleanupdescribes conf=1
part_of Add ConfigMap data to a Volumedescribes conf=1
part_of Understanding ConfigMaps and Podsdescribes conf=1
part_of Optional ConfigMapsdescribes conf=1
part_of Restrictionsdescribes conf=1
part_of {{% heading "cleanup" %}}describes conf=1
part_of {{% heading "whatsnext" %}}describes conf=1
part_of Create a ConfigMap from generatordescribes conf=1
part_of Optional referencesdescribes conf=1

← all Docs