ConfigMap


Nesta página, descrevemos o objeto ConfigMap do Kubernetes e seu uso no Google Kubernetes Engine (GKE).

Visão geral

Os ConfigMaps vinculam artefatos de configuração não confidenciais, como arquivos de configuração, argumentos de linha de comando e variáveis de ambiente a contêineres do pod e componentes do sistema no ambiente de execução.

Um ConfigMap separa as configurações do pod e dos componentes, o que ajuda a manter as cargas de trabalho portáteis. Isso facilita a alteração e o gerenciamento das configurações e evita fixar no código dados de configuração das especificações do pod.

Criar um ConfigMap

É possível criar um ConfigMap usando o seguinte comando:

kubectl create configmap NAME DATA

Substitua:

  • NAME: o nome do objeto ConfigMap.
  • DATA: os dados de configuração do ConfigMap, que podem ser um dos seguintes:

    • um caminho para um diretório que contém um ou mais arquivos de configuração, indicado pela sinalização --from-file.
    • pares de chave-valor, cada um deles especificado por sinalizações --from-literal.

Para mais informações sobre kubectl create, consulte a documentação de referência (em inglês).

Você também pode criar um ConfigMap definindo um objeto ConfigMap em um arquivo de manifesto YAML e implantando o objeto por meio de kubectl create -f FILE_NAME.

Criar um ConfigMap a partir de arquivos

Para criar um ConfigMap com base em um ou mais arquivos, use --from-file. É possível especificar arquivos em qualquer formato de texto simples, como .properties, .txt ou .env, desde que os arquivos contenham pares de chave-valor.

Como prática recomendada, armazene os arquivos do ConfigMap no Git. Isso permite que você aproveite um pipeline de integração e entrega contínuas (CI/CD).

Para transmitir um único arquivo ou vários, execute o seguinte comando:

kubectl create configmap NAME \
    --from-file FILE_PATH_1 \
    --from-file FILE_PATH_2

Substitua:

  • NAME: o nome do objeto ConfigMap.
  • FILE_PATH_1: o caminho para o arquivo, por exemplo, path/to/file.properties.
  • FILE_PATH_2: o caminho para um segundo arquivo, por exemplo, path/to/file2.properties.

Para transmitir um diretório que contenha vários arquivos, execute o seguinte comando:

kubectl create configmap NAME \
    --from-file DIRECTORY

Substitua:

  • NAME: o nome do objeto ConfigMap.
  • DIRECTORY: o caminho do diretório, por exemplo, path/to/directory.

Quando você cria um ConfigMap com base em arquivos, a chave assume como padrão o nome de base do arquivo, e o valor assume como padrão o conteúdo do arquivo. Você também pode especificar uma chave alternativa.

Quando você cria um ConfigMap com base em diretórios, cada arquivo com um nome base que é uma chave válida no diretório é empacotado no ConfigMap. kubectl ignora arquivos não regulares, como links simbólicos, dispositivos e barras verticais. kubectl também ignora subdiretórios porque kubectl create configmap não se repete em subdiretórios.

Por exemplo, o comando a seguir cria um ConfigMap chamado game-data a partir de um diretório game-configs, que contém dois arquivos properties: game.properties e ui.properties.

kubectl create configmap game-data \
    --from-file game-configs/

Executar kubectl get configmap game-data -o yaml retorna a saída a seguir:

apiVersion: v1
data:
  game.properties: |
    enemies=aliens
    lives=3
    ...
  ui.properties: |
    color.good=purple
    color.bad=yellow
    allow.textmode=true
    ...
kind: ConfigMap
metadata:
  creationTimestamp: ...
  name: game-data
  namespace: default
  resourceVersion: ...
  selfLink: /api/v1/namespaces/default/configmaps/game-data
  uid: ...

Criar um ConfigMap a partir de valores literais

Para criar um ConfigMap com base em valores literais, use --from-literal.

Por exemplo, o seguinte comando cria um ConfigMap chamado LITERAL_DATA com dois pares de chave-valor:

kubectl create configmap LITERAL_DATA \
    --from-literal key1=VALUE_1 \
    --from-literal key2=VALUE_2

Especifique --from-literal em cada par de chave-valor.

Executar kubectl get configmap literal-data -o yaml retorna a saída a seguir:

apiVersion: v1
data:
  key1: VALUE_1
  key2: VALUE_2
kind: ConfigMap
metadata:
  creationTimestamp: ...
  name: LITERAL_DATA
  namespace: default
  resourceVersion: ....
  selfLink: /api/v1/namespaces/default/configmaps/literal-data
  uid: ...

Usar um ConfigMap

Para usar um ConfigMap com suas cargas de trabalho, especifique uma variável de ambiente que faça referência aos valores do ConfigMap ou ative um volume que contenha o ConfigMap. Para mais informações, consulte Configurar um pod para usar um ConfigMap.

A seguir