Uso de variáveis de ambiente

Saiba como criar e usar variáveis de ambiente no Cloud Run para Anthos no Google Cloud.

Quando você define variáveis de ambiente, elas são injetadas no contêiner e podem ser acessadas pelo código. As variáveis de ambiente são definidas como pares de chave-valor. Por exemplo, digamos que você esteja executando um serviço que ativa a geração de registros adicionais ao ler LOGGING_VERBOSE: true no ambiente. Nesse cenário, você define o par de chave-valor da variável de ambiente como LOGGING_VERBOSE=true. Os comandos ou IUs exatos serão mostrados nas seções a seguir.

Nomes reservados

As variáveis de ambiente definidas no contrato de ambiente de execução do contêiner são reservadas e não podem ser configuradas. Mais especificamente, a variável de ambiente PORT é injetada no contêiner pelo Cloud Run for Anthos no Google Cloud. Não configure isso.

Como configurar variáveis de ambiente em um serviço

Qualquer mudança na configuração leva à criação de uma nova revisão. As próximas revisões também recebem automaticamente essa configuração, a menos que você faça atualizações explícitas para alterá-la.

É possível definir variáveis de ambiente usando o Console do Cloud, a ferramenta de linha de comando gcloud ou um arquivo YAML ao implantar um novo serviço ou atualizar um serviço e uma implantação atuais. uma revisão:

Console

  1. Acessar o Cloud Run for Anthos no Google Cloud

  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.

    image

  4. Faça o seguinte:

    • Se você estiver adicionando uma variável, clique em Adicionar variável. Especifique o nome escolhido para ela e o respectivo o valor nas caixas de texto Nome e Valor.
    • Se você estiver alterando um valor para uma variável, substitua o valor atual na caixa de texto Valor pelo valor escolhido.
    • Se você estiver removendo uma ou mais variáveis de ambiente, passe o cursor à esquerda da caixa de texto Valor da variável que você está removendo para exibir o ícone de lixeira e clique nele.

  5. Clique em Criar ou Implantar.

Linha de comando

Use um dos seguintes comandos gcloud kuberun para definir variáveis de ambiente para novos serviços ou atualizar um serviço atual:

  • Para serviços atuais, atualize as variáveis de ambiente executando o comando gcloud kuberun core services update com um dos seguintes parâmetros:

    Exemplo:

    gcloud kuberun core services update SERVICE --update-env-vars KEY1=VALUE1,KEY2=VALUE2
    

    Substitua:

    • SERVICE pelo nome do serviço;
    • KEY1=VALUE1,KEY2=VALUE2 com uma lista separada por vírgulas de pares de nome e valor para cada variável de ambiente. Especifique o nome da variável de ambiente para cada KEY e o valor dessa variável de ambiente para VALUE. Como especificar vários parâmetros:
    • Opções de parâmetros de comando

      • Para especificar uma variável de ambiente que contenha uma vírgula (,), você precisa fazer escape de cada KEY=VALUE com um delimitador diferente. Por exemplo, se você usar @:
        --set-env-vars "^@^KEY1=value,with,commas@KEY2=anothervalue@KEY3..."
        
      • Para especificar vários conjuntos de pares de chave-valor, é possível especificar vários parâmetros de legibilidade. Exemplo:
        [...]
        --set-env-vars "KEY=VALUE1" \
        --set-env-vars "KEY=VALUE2" \
        --set-env-vars "KEY=VALUE3"
        
  • Para novos serviços, defina variáveis de ambiente executando o comando gcloud kuberun core services create com o parâmetro --set-env-vars:

    gcloud kuberun core services create SERVICE --image=IMAGE_URL --set-env-vars KEY1=VALUE1,KEY2=VALUE2
    

    Substitua:

    • IMAGE_URL por uma referência à imagem de contêiner. Por exemplo, gcr.io/myproject/my-image:latest;
    • SERVICE pelo nome do serviço;
    • KEY1=VALUE1,KEY2=VALUE2 com uma lista separada por vírgulas de pares de nome e valor para cada variável de ambiente. Especifique o nome da variável de ambiente para cada KEY e o valor dessa variável de ambiente para VALUE. Como especificar vários parâmetros:
    • Opções de parâmetros de comando

      • Para especificar uma variável de ambiente que contenha uma vírgula (,), você precisa fazer escape de cada KEY=VALUE com um delimitador diferente. Por exemplo, se você usar @:
        --set-env-vars "^@^KEY1=value,with,commas@KEY2=anothervalue@KEY3..."
        
      • Para especificar vários conjuntos de pares de chave-valor, é possível especificar vários parâmetros de legibilidade. Exemplo:
        [...]
        --set-env-vars "KEY=VALUE1" \
        --set-env-vars "KEY=VALUE2" \
        --set-env-vars "KEY=VALUE3"
        

YAML

Para usar um arquivo YAML para modificar a configuração do serviço atual, consiga uma cópia da configuração atual, modifique e salve as alterações em um arquivo local e, em seguida, implante essas alterações no serviço.

  1. Exiba como YAML e copie a configuração do serviço em um arquivo local, por exemplo, service.yaml:

    gcloud kuberun core services describe SERVICE --format yaml

    Substitua SERVICE pelo nome do serviço do Cloud Run for Anthos.

  2. Em seu arquivo local, atualize os atributos name e value no atributo env em containers::

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      name: SERVICE
    spec:
      template:
        spec:
          containers:
          - env:
            - name: KEY-1
              value: VALUE-1
            - name: KEY-N
              value: VALUE-N

    Replace

    • SERVICE pelo nome do serviço do Cloud Run for Anthos;
    • KEY-1, VALUE-1 pela variável de ambiente e valor. Se quiser, adicione variáveis e valores.
  3. Substitua o serviço pela nova configuração usando o seguinte comando:

    gcloud beta run services replace service.yaml

Como definir variáveis de ambiente padrão no contêiner

Use a instrução ENV em um Dockerfile para definir valores padrão para variáveis de ambiente:

ENV KEY1=VALUE1,KEY2=VALUE2

Ordem de precedência: variáveis de contêiner x serviço

Se você definir uma variável de ambiente padrão no contêiner e também definir uma variável de ambiente com o mesmo nome no serviço Cloud Run for Anthos, o valor definido no serviço terá precedência.

Se você usar links de serviço do Kubernetes no Cloud Run for Anthos e quiser continuar a usá-los, será necessário ativar manualmente o suporte para esse recurso antes de janeiro de 2021. Devido aos problemas de desempenho vistos em namespaces com milhares de serviços e revisões, a partir de janeiro de 2021, os links de serviço do Kubernetes serão desativados por padrão.

Para ativar os links de serviço do Kubernetes, execute o seguinte comando para definir data.enable-service-links como true no ConfigMap knative-serving/config-defaults:

kubectl patch cm -n knative-serving config-defaults -p '{"data":{"enable-service-links":"true"}}