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:
-
Desenvolvedor do Cloud Run (
roles/run.developer
) no serviço do Cloud Run -
Usuário da conta de serviço (
roles/iam.serviceAccountUser
) na identidade do serviço
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
No Google Cloud console, acesse o Cloud Run:
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.
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.
Clique na guia Contêiner.
- Clique em Adicionar variável para adicionar uma nova variável e especifique o nome e o valor dela nos campos Nome e Valor.
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 formatoLOCATION-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 formatoKEY1=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
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
Atualize os atributos
name
evalue
no atributoenv
emcontainers:
: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 formatoLOCATION-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
- Começa com
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 recursogoogle_cloud_run_v2_service
na configuração do Terraform: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 :
No Google Cloud console, acesse o Cloud Run:
Selecione seu serviço na lista e clique em Editar e implantar uma nova revisão.
Clique na guia Contêiner.
Na guia Variáveis e secrets, edite os campos Nome ou Valor e clique em Concluído.
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
No Google Cloud console, acesse o Cloud Run:
Clique no serviço de seu interesse para abrir a página Detalhes do serviço.
Clique na guia Revisões.
No painel de detalhes à direita, a configuração de variáveis de ambiente está listada na guia Contêiner.
gcloud
Use o comando a seguir:
gcloud run services describe SERVICE
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 :
No Google Cloud console, acesse o Cloud Run:
Selecione seu serviço na lista e clique em Editar e implantar uma nova revisão.
Clique na guia Contêiner.
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.Clique em Concluído.
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 eevent
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.