ConfigMap

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

Visão geral

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 a fixação no código dos dados de configuração para as 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 usar informações confidenciais nos clusters, você precisa utilizar 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).

É possível também criar um ConfigMap definindo um objeto ConfigMap em um arquivo de manifesto YAML e implantando o objeto por meio de kubectl create -f filename.

Com 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.

É 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. Também é possível especificar uma chave alternativa.

Para ConfigMaps baseados em diretórios, cada arquivo com um nome de base de chave válida no diretório é empacotado no ConfigMap. kubectl ignora arquivos não regulares, como links simbólicos, dispositivos e barras verticais. Os subdiretórios também são ignorados. kubectl create configmap não se propaga para os subdiretórios.

Por exemplo, o seguinte comando cria um ConfigMap chamado game-data com base em 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/
    

A execução de kubectl get configmap game-data -o yaml retorna a seguinte resposta:

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.

A execução de kubectl get configmap literal-data -o yaml retorna a seguinte resposta:

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 mais sobre como usar ConfigMaps, consulte Configurar um pod para usar um ConfigMap.

A seguir