Saiba como criar e usar variáveis de ambiente no Knative serving.
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 serviço Knative. 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 usando o console do Google Cloud, a Google Cloud CLI ou um arquivo YAML ao implantar um novo serviço ou atualizar um serviço atual e implantar uma revisão:
Console
Acesse o Knative serving no console do Google Cloud:
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 e secrets.
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 Avançar para acessar a próxima seção.
Na seção Configurar como este serviço é acionado, selecione qual conectividade você quer usar para invocar o serviço.
Clique em Criar para implantar a imagem no Knative serving e aguarde até que a implantação seja concluída.
Linha de comando
Use a Google Cloud CLI para definir variáveis de ambiente para novos serviços ou para atualizar serviços existentes:
Para serviços atuais, atualize as variáveis de ambiente executando o comando
gcloud run services update
com um dos seguintes parâmetros:Exemplo:
gcloud run 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:
-
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 run deploy
com o parâmetro--set-env-vars
:gcloud run deploy 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/cloudrun/hello
; - 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:
-
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
Faça o download da configuração de um serviço existente para um
arquivo YAML com o comando gcloud run services describe
usando a
sinalização --format=export
.
Em seguida, modifique o arquivo YAML e implante
essas alterações com o comando gcloud run services replace
.
Modifique apenas os atributos especificados.
Faça o download da configuração do serviço em um arquivo chamado
service.yaml
no espaço de trabalho local:gcloud run services describe SERVICE --format export > service.yaml
Substitua SERVICE pelo nome do seu serviço Knative serving.
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
Substituir
- SERVICE pelo nome do serviço do Knative serving
- 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 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 Knative serving, o valor definido no serviço terá precedência.
Como ativar links de serviço do Kubernetes
Para usar links de serviço do Kubernetes, ative o suporte manualmente. Devido aos problemas de desempenho vistos em namespaces com milhares de serviços e revisões, os links de serviço do Kubernetes foram desativados por padrão a partir de janeiro de 2021.
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"}}