Usar ConfigMaps

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

Um exemplo de utilização comum de um serviço é usar ConfigMaps para separar o código da aplicação da configuração. O ConfigMap é semelhante ao Secret, exceto que usa um Secret para informações confidenciais e usa um ConfigMap para armazenar dados não confidenciais, como strings de ligação, credenciais públicas, nomes de anfitriões e URLs. Pode saber mais sobre a utilização de ConfigMaps na documentação do Google Kubernetes Engine.

Quando permite que os contentores acedam a ConfigMaps, pode escolher uma destas opções:

  • Monte o ConfigMap como um volume, com as entradas do ConfigMap disponíveis como ficheiros no volume montado. Isto é recomendado porque garante que recebe a versão mais recente do ConfigMap quando o lê.
  • Transmita o ConfigMap através de variáveis de ambiente.

Criar um ConfigMap

Existem várias formas de criar um ConfigMap, conforme descrito na página ConfigMaps da documentação do GKE. Para sua conveniência, os passos seguintes mostram uma forma simples de criar um ConfigMap.

Quando criar um ConfigMap, certifique-se de que o cria no mesmo espaço de nomes que o cluster que está a executar o seu serviço Knative serving. Estas instruções usam o espaço de nomes default.

Pode criar um ConfigMap a partir da linha de comandos:

kubectl create configmap NAME DATA

Substituição:

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

    • O indicador --from-file e o caminho para cada diretório que contém um ou mais ficheiros de configuração.
    • O parâmetro --from-literal e o par de chave-valor para cada um que quer adicionar ao ConfigMap.

Por exemplo:

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

O ConfigMap é criado e carregado onde está disponível para clusters no espaço de nomes default.

Disponibilizar um ConfigMap a um serviço

Depois de criar um ConfigMap, pode disponibilizá-lo ao seu serviço Knative serving como um volume ou como variáveis de ambiente através da Google Cloud consola ou da CLI Google Cloud Google Cloud quando implementar um novo serviço ou atualizar um serviço existente e implementar uma revisão:

Consola

  1. Aceda ao Knative serving na Google Cloud consola:

    Aceda ao Knative serving

  2. Clique em Criar serviço se estiver a configurar um novo serviço para o qual está a implementar. Se estiver a configurar um serviço existente, clique no serviço e, de seguida, em Editar e implementar nova revisão.

  3. Em Definições avançadas, clique em Variáveis e segredos.

  4. Em Referenciar um ConfigMap, selecione o ConfigMap pretendido no menu pendente.

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

  5. Clique em Seguinte para continuar para a secção seguinte.

  6. Na secção Configure como este serviço é acionado, selecione a conetividade que quer usar para invocar o serviço.

  7. Clique em Criar para implementar a imagem no Knative Serving e aguarde que a implementação termine.

Linha de comandos

Pode usar a Google Cloud CLI para definir ConfigMaps para novos serviços ou para atualizar serviços existentes:

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

    Exemplo:

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

    Substituição:

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

      Para especificar vários conjuntos de pares de chave-valor, pode especificar vários parâmetros para facilitar a leitura. 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

    Substituição:

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

      Para especificar vários conjuntos de pares de chave-valor, pode especificar vários parâmetros para facilitar a leitura. Exemplo:
      [...]
      --update-config-maps "KEY=VALUE1" \
      --update-config-maps "KEY=VALUE2" \
      --update-config-maps "KEY=VALUE3"