Como usar ConfigMaps

Saiba como criar um ConfigMap e configurar os serviços e as revisões do Knative serving para usar esse ConfigMap.

Um caso de uso comum para um serviço é usar ConfigMaps para separar o código do aplicativo da configuração. O ConfigMap é semelhante a Secret, exceto pelo uso de um Secret para informações confidenciais e de um ConfigMap para armazenar dados não confidenciais, como strings de conexão, credenciais públicas, nomes de host e URLs. Saiba mais sobre o uso de ConfigMaps na documentação do Google Kubernetes Engine.

Ao ativar contêineres para acessar ConfigMaps, é possível escolher uma destas opções:

  • Monte o ConfigMap como um volume, com entradas do ConfigMap disponíveis como arquivos no volume montado. Isso é recomendado porque garante que você acesse a versão mais recente do ConfigMap ao lê-lo.
  • Passe o ConfigMap usando variáveis de ambiente.

Como criar um ConfigMap

Há várias maneiras de criar um ConfigMap, conforme descrito na página ConfigMaps da documentação do GKE. Para sua conveniência, as etapas a seguir mostram uma maneira simples de criar um ConfigMap.

Ao criar um ConfigMap, certifique-se de criá-lo no mesmo namespace que o cluster que está executando o serviço do Knative serving. Estas instruções usam o namespace default.

É possível criar um ConfigMap a partir da linha de comando:

kubectl create configmap NAME DATA

Substitua:

  • NAME é o nome do objeto ConfigMap.
  • DATA pode ser:

    • A sinalização e o caminho --from-file para cada diretório que contém um ou mais arquivos de configuração
    • A sinalização --from-literal e o par de chave-valor para cada um que você quiser adicionar ao ConfigMap;

Por exemplo:

kubectl create configmap special-config --from-literal=special.how=very --from-literal=special.type=charm

O ConfigMap é criado e enviado onde está disponível para clusters no namespace default.

Como disponibilizar um ConfigMap para um serviço

Depois de criado, é possível disponibilizar o ConfigMap para o serviço do Knative serving como volume ou variáveis de ambiente. Para isso, use o console do Google Cloud ou a CLI do Google Cloud ao implantar um novo serviço ou atualizar um que já existe e implantar uma revisão:

Console

  1. Acesse o Knative serving no console do Google Cloud:

    Acessar o Knative serving

  2. Clique em Criar serviço se estiver configurando um novo serviço em que fará uma implantação. Se você estiver configurando um serviço atual, clique nele e em Editar e implantar uma nova revisão.

  3. Em Configurações avançadas, clique em Variáveis e secrets.

  4. Em Fazer referência a um ConfigMap, selecione o ConfigMap desejado no menu suspenso.

    • No menu suspenso Método de referência, selecione a maneira como você quer usar o ConfigMap, montado como um volume ou exposto como variáveis de ambiente.
    • Se você estiver usando a montagem como volume, especifique o caminho e clique em Concluído.
    • Se você estiver expondo como variáveis de ambiente:
      1. Forneça o Nome da variável e selecione o valor do ConfigMap correspondente no menu suspenso Chave.
      2. Clique em Adicionar para adicionar outro valor do ConfigMap.
      3. Forneça o Nome da variável e selecione o valor do ConfigMap correspondente no menu suspenso Chave.
      4. Clique em Concluído.

  5. Clique em Avançar para acessar a próxima seção.

  6. Na seção Configurar como este serviço é acionado, selecione qual conectividade você quer usar para invocar o serviço.

  7. Clique em Criar para implantar a imagem no Knative serving e aguarde até que a implantação seja concluída.

Linha de comando

Use a Google Cloud CLI para definir ConfigMaps para novos serviços ou atualizar os que já existem:

  • Para serviços atuais, atualize um ConfigMap executando o comando gcloud run services update com um dos parâmetros a seguir:

    Exemplo:

    gcloud run services update SERVICE --update-config-maps KEY1=VALUE1,KEY2=VALUE2

    Substitua:

    • SERVICE pelo nome do serviço;
    • KEY1=VALUE1,KEY2=VALUE2 com uma lista separada por vírgulas dos pares de nome e valor para cada ConfigMap. Para cada KEY, é possível especificar um caminho de ativação ou fornecer uma variável de ambiente. Especifique um caminho de ativação começando com uma barra /. Todas as outras chaves correspondem às variáveis de ambiente. Para cada VALUE, especifique o nome do ConfigMap. Como especificar vários parâmetros.
    • Opções de parâmetros de comando

      Para especificar vários conjuntos de pares de chave-valor, é possível especificar vários parâmetros de legibilidade. Exemplo:
      [...]
      --update-config-maps "KEY=VALUE1" \
      --update-config-maps "KEY=VALUE2" \
      --update-config-maps "KEY=VALUE3"
  • Para novos serviços, defina o ConfigMap executando o comando gcloud run deploy com o parâmetro --set-config-maps:

    gcloud run deploy SERVICE --image=IMAGE_URL --set-config-maps KEY1=VALUE1,KEY2=VALUE2

    Substitua:

    • IMAGE_URL por uma referência à imagem de contêiner. Por exemplo, gcr.io/cloudrun/hello;
    • SERVICE pelo nome do serviço;
    • KEY1=VALUE1,KEY2=VALUE2 com uma lista separada por vírgulas dos pares de nome e valor para cada ConfigMap. Para cada KEY, é possível especificar um caminho de ativação ou fornecer uma variável de ambiente. Especifique um caminho de ativação começando com uma barra /. Todas as outras chaves correspondem às variáveis de ambiente. Para cada VALUE, especifique o nome do ConfigMap. Como especificar vários parâmetros.
    • Opções de parâmetros de comando

      Para especificar vários conjuntos de pares de chave-valor, é possível especificar vários parâmetros de legibilidade. Exemplo:
      [...]
      --update-config-maps "KEY=VALUE1" \
      --update-config-maps "KEY=VALUE2" \
      --update-config-maps "KEY=VALUE3"