ConfigMap

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

Visão geral

Os ConfigMaps vinculam arquivos de configuração, argumentos de linha de comando, variáveis de ambiente, números de porta e outros artefatos de configuração aos contêineres e componentes do sistema dos pods no ambiente de execução. Os ConfigMaps permitem separar as configurações dos pods e componentes, o que ajuda a manter suas 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.

Os ConfigMaps são úteis para armazenar e compartilhar informações de configuração não confidenciais e não criptografadas. Para inserir informações confidenciais nos clusters, você precisa usar secrets.

Como criar um ConfigMap

Você cria um ConfigMap usando o seguinte comando:

kubectl create configmap name data

em que:

  • name é o nome do objeto ConfigMap.
  • data pode ser:

    • 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 filename.

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.

Armazenar arquivos do ConfigMap no Git é uma prática recomendada. Isso permite que você aproveite um pipeline de integração e entrega contínuas (CI/CD). Para saber mais sobre como usar esse fluxo de trabalho, consulte Entrega contínua no estilo GitOps com o Cloud Build.

É possível especificar um ou vários arquivos:

kubectl create configmap name --from-file path/to/file.properties --from-file path/to/file2.properties

Também é possível especificar um diretório que contenha vários arquivos:

kubectl create configmap name --from-file 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.

Os ConfigMaps baseados em diretórios englobam todos os arquivos que têm uma chave válida como nome de base no diretório. kubectl ignora arquivos não regulares, como links simbólicos, dispositivos e barras verticais. Os subdiretórios também são ignorados e kubectl create configmap não se propaga nos 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: ...

Com 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=value1 --from-literal key2=value2

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: value1
  key2: value2
kind: ConfigMap
metadata:
  creationTimestamp: ...
  name: literal-data
  namespace: default
  resourceVersion: ....
  selfLink: /api/v1/namespaces/default/configmaps/literal-data
  uid: ...

Como usar ConfigMaps

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 saber sobre o uso de ConfigMaps, consulte Configurar um pod para usar um ConfigMap.

A seguir