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
.
- um caminho para um diretório que contém um ou mais arquivos de configuração, indicado pela sinalização
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.