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
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.
Em Configurações avançadas, clique em Variáveis.
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.
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 cadaKEY
e o valor dessa variável de ambiente paraVALUE
. Como especificar vários parâmetros:-
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"
Opções de parâmetros de comando
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 cadaKEY
e o valor dessa variável de ambiente paraVALUE
. Como especificar vários parâmetros:-
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"
Opções de parâmetros de comando
- IMAGE_URL por uma referência à imagem de contêiner. Por
exemplo,
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.
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.
Em seu arquivo local, atualize os atributos
name
evalue
no atributoenv
emcontainers:
: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.
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.
Como ativar links de serviço do Kubernetes no Cloud Run for Anthos
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"}}