Saiba como criar e usar variáveis de ambiente no Knative serving.
Quando define variáveis de ambiente, estas são injetadas no contentor e ficam acessíveis ao seu código.
As variáveis de ambiente são definidas como pares de chave/valor. Por exemplo, suponhamos que está a executar um serviço que ativa o registo adicional quando lê LOGGING_VERBOSE: true
no ambiente. Neste cenário, define o par de chave/valor da variável de ambiente como LOGGING_VERBOSE=true
. Os comandos exatos ou a IU são apresentados nas secções seguintes.
Nomes reservados
As variáveis de ambiente definidas no
contrato de tempo de execução do contentor
estão reservadas e não podem ser definidas. Em particular, a variável de ambiente PORT
é injetada no contentor pelo Knative Serving. Não deve defini-lo
manualmente.
Definir variáveis de ambiente num serviço
Qualquer alteração de configuração leva à criação de uma nova revisão. As revisões subsequentes também vão receber automaticamente esta definição de configuração, a menos que faça atualizações explícitas para a alterar.
Pode definir variáveis de ambiente através da Google Cloud consola, da CLI Google Cloud ou de um ficheiro YAML quando implementa um novo serviço ou atualiza um serviço existente e implementa uma revisão:
Consola
Aceda ao Knative serving na Google Cloud consola:
Clique em Criar serviço se estiver a configurar um novo serviço para o qual está a implementar. Se estiver a configurar um serviço existente, clique no serviço e, de seguida, em Editar e implementar nova revisão.
Em Definições avançadas, clique em Variáveis e segredos.
Faça o seguinte:
- Se estiver a adicionar uma variável, clique em Adicionar variável e especifique o nome que quer para a variável e o respetivo valor nas caixas de texto Nome e Valor.
- Se estiver a alterar um valor de uma variável, substitua o valor atual na caixa de texto Valor pelo valor pretendido.
- Se estiver a remover uma ou mais variáveis de ambiente, passe o cursor do rato à esquerda da caixa de texto Valor da variável que está a remover para apresentar o ícone do lixo e clique nele.
Clique em Seguinte para continuar para a secção seguinte.
Na secção Configure como este serviço é acionado, selecione a conetividade que quer usar para invocar o serviço.
Clique em Criar para implementar a imagem no Knative Serving e aguarde que a implementação termine.
Linha de comandos
Pode usar a CLI do Google Cloud para definir variáveis de ambiente para novos serviços ou para atualizar serviços existentes:
Para serviços existentes, 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
Substituição:
- SERVICE com o nome do seu 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 (
,
), tem de escapar cada CHAVE=VALOR com um delimitador diferente. Por exemplo, se usar@
:--set-env-vars "^@^KEY1=value,with,commas@KEY2=anothervalue@KEY3..."
-
Para especificar vários conjuntos de pares de chave-valor, pode especificar vários parâmetros para facilitar a leitura. Exemplo:
[...] --set-env-vars "KEY=VALUE1" \ --set-env-vars "KEY=VALUE2" \ --set-env-vars "KEY=VALUE3"
Opções de parâmetros de comandos
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
Substituição:
- IMAGE_URL com uma referência à imagem do contentor, por exemplo,
gcr.io/cloudrun/hello
. - SERVICE com o nome do seu 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 (
,
), tem de escapar cada CHAVE=VALOR com um delimitador diferente. Por exemplo, se usar@
:--set-env-vars "^@^KEY1=value,with,commas@KEY2=anothervalue@KEY3..."
-
Para especificar vários conjuntos de pares de chave-valor, pode especificar vários parâmetros para facilitar a leitura. Exemplo:
[...] --set-env-vars "KEY=VALUE1" \ --set-env-vars "KEY=VALUE2" \ --set-env-vars "KEY=VALUE3"
Opções de parâmetros de comandos
- IMAGE_URL com uma referência à imagem do contentor, por exemplo,
YAML
Pode transferir a configuração de um serviço existente para um ficheiro YAML com o comando gcloud run services describe
usando a flag --format=export
.
Em seguida, pode modificar esse ficheiro YAML e implementar essas alterações com o comando gcloud run services replace
.
Tem de garantir que modifica apenas os atributos especificados.
Transfira a configuração do seu serviço para um ficheiro denominado
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 de fornecimento do Knative.
No ficheiro 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 com o nome do seu serviço Knative serving
- KEY-1, VALUE-1 com a variável de ambiente e o valor. Opcionalmente, adicione mais variáveis e valores conforme pretendido.
Substitua o serviço pela respetiva nova configuração através do seguinte comando:
gcloud run services replace service.yaml
Definir variáveis de ambiente predefinidas no contentor
Pode usar a declaração ENV
no Dockerfile para definir valores predefinidos para variáveis de ambiente:
ENV KEY1=VALUE1,KEY2=VALUE2
Ordem de precedência: variáveis do contentor vs. variáveis de serviço
Se definir uma variável de ambiente predefinida no contentor e também definir uma variável de ambiente com o mesmo nome no serviço de implementação do Knative, o valor definido no serviço tem precedência.
Ativar links de serviços do Kubernetes
Para usar os links de serviços do Kubernetes, tem de ativar manualmente o suporte. Devido aos problemas de desempenho observados em espaços de nomes com milhares de serviços e revisões, os links de serviços do Kubernetes foram desativados por predefinição a partir de janeiro de 2021.
Para ativar os links de serviços do Kubernetes, execute o seguinte comando para definir
data.enable-service-links
como true
no seu knative-serving/config-defaults
ConfigMap:
kubectl patch cm -n knative-serving config-defaults -p '{"data":{"enable-service-links":"true"}}