Configurar variáveis de ambiente para serviços

Esta página descreve como configurar variáveis de ambiente para seu serviço do Cloud Run.

É possível usar variáveis de ambiente para a configuração do serviço, mas não recomendamos que elas sejam usadas para armazenar segredos, como credenciais de banco de dados ou chaves de API. Os valores sensíveis precisam ser armazenados fora do código-fonte e das variáveis de ambiente externas. Para armazenar secrets, recomendamos o uso do Secret Manager. Para configurar serviços para acessar secrets armazenados no Secret Manager, consulte Configurar secrets.

Qualquer mudança na configuração leva à criação de uma nova revisão. As próximas revisões também recebem essa configuração de modo automático, a menos que você faça atualizações explícitas para alterar esse comportamento.

Funções exigidas

Para receber as permissões necessárias para configurar e implantar os serviços do Cloud Run, peça ao administrador para conceder a você os seguintes papéis do IAM:

Para uma lista de papéis e permissões do IAM associados ao Cloud Run, consulte Papéis do IAM do Cloud Run e Permissões do IAM do Cloud Run. Se o serviço do Cloud Run interagir com APIsGoogle Cloud , como as bibliotecas de cliente do Cloud, consulte o guia de configuração de identidade de serviço. Para mais informações sobre como conceder papéis, consulte permissões de implantação e gerenciar acesso.

Número máximo de variáveis e limites de ambiente

É possível definir no máximo 1.000 variáveis de ambiente para um serviço do Cloud Run.

O comprimento máximo da variável é 32 KB.

Defina as variáveis de ambiente

É possível definir variáveis de ambiente para serviços novos e atuais. A flag --set-env-vars é uma ação destrutiva que exclui variáveis de ambiente definidas anteriormente que não estão incluídas na nova lista de variáveis de ambiente.

As variáveis de ambiente estão vinculadas a uma revisão de serviço específica e não são visíveis para outros serviços no projeto Google Cloud .

É possível definir variáveis de ambiente usando o Google Cloud console, a CLI gcloud ou um arquivo YAML ao criar um novo serviço ou implantar uma nova revisão:

Console

  1. No Google Cloud console, acesse o Cloud Run:

    Acessar o Cloud Run

  2. Selecione Services no menu e clique em Deploy container para configurar um novo serviço. Se você estiver configurando um serviço atual, clique nele e em Editar e implantar nova revisão.

  3. Se você estiver configurando um novo serviço, preencha a página inicial de configurações de serviço e clique em Contêineres, volumes, Rede e segurança para expandir a página de configuração do serviço.

  4. Clique na guia Contêiner.

    imagem

    • Clique em Adicionar variável para adicionar uma nova variável e especifique o nome e o valor dela nos campos Nome e Valor.
  5. Clique em Criar ou Implantar.

gcloud

Para especificar variáveis de ambiente ao implantar seu serviço, use a flag --set-env-vars:

gcloud run deploy SERVICE --image IMAGE_URL --set-env-vars KEY1=VALUE1,KEY2=VALUE2

Substitua:

  • SERVICE pelo nome do serviço;
  • KEY1=VALUE1,KEY2=VALUE2, com a lista separada por vírgulas de nomes e valores de variáveis.
  • IMAGE_URL por uma referência à imagem de contêiner. Por exemplo, us-docker.pkg.dev/cloudrun/container/hello:latest. Se você usa o Artifact Registry, o repositório REPO_NAME já precisará ter sido criado. O URL tem o formato LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG

Para especificar variáveis de ambiente ao atualizar um serviço, use a flag --set-env-vars:

gcloud run services update SERVICE --image IMAGE_URL --set-env-vars KEY1=VALUE1,KEY2=VALUE2

Definir muitas variáveis de ambiente

Se você tiver muitas variáveis de ambiente que não podem ser listadas no formato KEY1=VALUE1,KEY2=VALUE2, repita a flag --set-env-vars várias vezes:
   [...]
   --set-env-vars "KEY1=VALUE1" \
   --set-env-vars "KEY2=VALUE2" \
   --set-env-vars "KEY3=VALUE3"

Escape de caracteres de vírgula

Como o caractere de vírgula , é usado para dividir variáveis de ambiente, caso a variável de ambiente contenha caracteres de vírgula como valores, você precisará fazer o escape desses delimitadores especificando um caractere de delimitador diferente, por exemplo, @:
--set-env-vars "^@^KEY1=value1,value2,value3@KEY2=..."

YAML

  1. Se você estiver criando um novo serviço, pule esta etapa. Se você estiver atualizando um serviço existente, faça o download da configuração YAML correspondente:

    gcloud run services describe SERVICE --format export > service.yaml
  2. Atualize os atributos name e value no atributo env em containers::

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

    Substituir

    • SERVICE pelo nome do serviço do Cloud Run;
    • IMAGE_URL por uma referência à imagem de contêiner. Por exemplo, us-docker.pkg.dev/cloudrun/container/hello:latest. Se você usa o Artifact Registry, o repositório REPO_NAME já precisará ter sido criado. O URL tem o formato LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
    • KEY-1, VALUE-1 pela variável de ambiente e valor. Se quiser, adicione mais variáveis e valores conforme necessário.
    • REVISION por um novo nome de revisão ou excluí-lo (se houver). Se você fornecer um novo nome de revisão, ele precisará atender aos seguintes critérios:
      • Começa com SERVICE-
      • Contém apenas letras minúsculas, números e -
      • Não termina com um -
      • Não excede 63 caracteres
  3. Crie ou atualize o serviço usando o seguinte comando:

    gcloud run services replace service.yaml

Terraform

Para saber como aplicar ou remover uma configuração do Terraform, consulte Comandos básicos do Terraform.

Adicione o seguinte a um recurso google_cloud_run_v2_service na configuração do Terraform:

resource "google_cloud_run_v2_service" "default" {
  name     = "cloudrun-service-env-var"
  location = "us-central1"

  deletion_protection = false # set to "true" in production

  template {
    containers {
      image = "us-docker.pkg.dev/cloudrun/container/hello"

      # Environment variables
      env {
        name  = "foo"
        value = "bar"
      }
      env {
        name  = "baz"
        value = "quux"
      }
    }
  }
}

O recurso google_cloud_run_v2_service anterior especifica a variável de ambiente foo como bar e baz como quux. Atualize as variáveis de ambiente conforme necessário.

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, o valor definido no serviço terá precedência.

Atualizar variáveis de ambiente

É possível atualizar variáveis de ambiente para serviços atuais. Essa é uma abordagem não destrutiva que altera ou adiciona variáveis de ambiente, mas não exclui as variáveis de ambiente definidas anteriormente.

Console

Para atualizar variáveis de ambiente usando o console Google Cloud :

  1. No Google Cloud console, acesse o Cloud Run:

    Acessar o Cloud Run

  2. Selecione seu serviço na lista e clique em Editar e implantar uma nova revisão.

  3. Clique na guia Contêiner.

  4. Na guia Variáveis e secrets, edite os campos Nome ou Valor e clique em Concluído.

  5. Clique em Implantar.

gcloud

Para atualizar as variáveis de ambiente de um serviço, use a flag --update-env-vars:

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

Substitua:

  • SERVICE pelo nome do serviço;
  • KEY1=VALUE1,KEY2=VALUE2, com a lista separada por vírgulas de nomes e valores de variáveis.

Para atualizar as variáveis de ambiente de um serviço multirregional, use o comando gcloud beta run multi-region-services update.

Ver as configurações das variáveis de ambiente

Para ver as configurações atuais das variáveis de ambiente do serviço do Cloud Run:

Console

  1. No Google Cloud console, acesse o Cloud Run:

    Acessar o Cloud Run

  2. Clique no serviço de seu interesse para abrir a página Detalhes do serviço.

  3. Clique na guia Revisões.

  4. No painel de detalhes à direita, a configuração de variáveis de ambiente está listada na guia Contêiner.

gcloud

  1. Use o comando a seguir:

    gcloud run services describe SERVICE
  2. Localize a configuração de variáveis de ambiente na configuração retornada.

Excluir variáveis de ambiente

É possível excluir variáveis de ambiente para serviços atuais.

Console

Para excluir variáveis de ambiente usando o console Google Cloud :

  1. No Google Cloud console, acesse o Cloud Run:

    Acessar o Cloud Run

  2. Selecione seu serviço na lista e clique em Editar e implantar uma nova revisão.

  3. Clique na guia Contêiner.

  4. Na guia Variáveis e secrets, mova o cursor para a esquerda do campo Valor da variável de ambiente que você está removendo para exibir o ícone Excluir e clique nele.

  5. Clique em Concluído.

  6. Clique em Implantar.

gcloud

Para remover seletivamente as variáveis de ambiente de um serviço,use a flag --remove-env-vars:

gcloud run services update SERVICE --remove-env-vars KEY1,KEY2

Substitua:

  • SERVICE pelo nome do serviço;
  • KEY1,KEY2, com a lista de nomes de variáveis separada por vírgulas.

Como alternativa, limpe todas as variáveis de ambiente definidas anteriormente com a flag --clear-env-vars:

gcloud run services update SERVICE --clear-env-vars

Substitua:

  • SERVICE pelo nome do serviço;

Práticas recomendadas

A seção a seguir destaca algumas das práticas recomendadas para configurar variáveis de ambiente.

Variáveis de ambiente reservadas para serviços

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 seu contêiner pelo Cloud Run. Não configure isso.

Outras variáveis de ambiente reservadas ao implantar funções

O Cloud Run define automaticamente as seguintes variáveis de ambiente de execução ao implantar funções:

  • FUNCTION_TARGET: a função a ser executada.
  • FUNCTION_SIGNATURE_TYPE: o tipo da função: http para funções HTTP e event para funções orientadas a eventos.

Algumas outras variáveis de ambiente são definidas automaticamente, dependendo do ambiente de execução usado pela função. Eles são baseados no sistema operacional do ambiente de execução, por exemplo, DEBIAN_FRONTEND, SHLVL ou PATH, e no ambiente de execução da linguagem por exemplo, NODE_ENV, VIRTUAL_ENV ou GOPATH.

As variáveis de ambiente fornecidas pelo ambiente (exceto as definidas automaticamente) podem ser alteradas em futuras versões do ambiente de execução. Como prática recomendada, não dependa de ou modifique variáveis de ambiente que você não tenha definido explicitamente.

Modificar variáveis de ambiente que são fornecidas pelo ambiente pode levar a resultados imprevisíveis. As tentativas de modificar essas variáveis de ambiente podem ser bloqueadas ou, o que seria pior, levar a consequências não intencionais, como funções que não podem ser iniciadas. Como prática recomendada, considere prefixar qualquer variável de ambiente com uma chave exclusiva para evitar conflitos.

Variáveis de ambiente inválidas

Não é possível usar as seguintes variáveis de ambiente:

Chave Descrição
Vazia ('') As chaves não podem ser uma string vazia.
= As chaves não podem conter o caractere "=".
X_GOOGLE_ As chaves não podem conter o prefixo X_GOOGLE_.

Código de amostra

Para ver um exemplo de código que mostra como acessar as variáveis de ambiente no código, consulte Como processar a configuração confidencial com o Secret Manager no tutorial de autenticação de usuário final.

A seguir

Você pode usar variáveis de ambiente para definir a configuração do buildpack. Para detalhes específicos da linguagem, consulte a documentação de Buildpacks para:

Se você estiver implantando da origem e precisar personalizar variáveis no momento do build, consulte Definir variáveis de ambiente de build.