Usar segredos

Saiba como criar um segredo e configurar os serviços e as revisões do Knative Serving para usar esse segredo.

Um exemplo de utilização comum de um serviço é aceder a aplicações de terceiros através de nomes de utilizador e palavras-passe. Para o Google Kubernetes Engine, é uma prática recomendada armazenar este tipo de informações confidenciais num objeto secreto do Kubernetes.

Para fornecer aos seus contentores acesso a segredos, pode montar cada segredo como um volume, o que torna as entradas no segredo disponíveis para o contentor como ficheiros. Deve montar o seu segredo para garantir que recebe a versão mais recente de cada segredo quando é lido.

Também pode transmitir um segredo através de variáveis de ambiente.

Criar um Secret

Os passos seguintes demonstram simplesmente como criar um segredo, mas existem várias formas de criar um segredo, conforme explicado no tópico Segredo.

Quando criar um segredo, certifique-se de que o cria no mesmo espaço de nomes que o cluster que está a executar o seu serviço Knative serving. Nestes exemplos, é usado o espaço de nomes default.

Para criar um segredo no espaço de nomes default do cluster:

  • Crie um Secret com um ficheiro:

    echo -n 'devuser' > ./username.txt
    echo -n 'S!B\*d$zDsb' > ./password.txt
    kubectl create secret generic user-creds --from-file=./username.txt --from-file=./password.txt
    
  • Crie um Secret apenas com um comando kubectl:

    kubectl create secret generic user-creds --from-literal=username=devuser --from-literal=password='S!B\*d$zDsb'
    

Disponibilizar um segredo a um serviço

Pode associar segredos a um serviço através da Google Cloud consola ou das ferramentas de linha de comandos quando implementa um novo serviço ou atualiza um serviço existente e implementa uma revisão:

Consola

  1. Aceda ao Knative serving na Google Cloud consola:

    Aceda ao Knative serving

  2. 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.

  3. Em Definições avançadas, clique em Variáveis e segredos.

  4. Em Referenciar um segredo, selecione o segredo pretendido no menu pendente.

    • No menu pendente Método de referência, selecione a forma como quer usar o seu segredo, montado como um volume ou exposto como variáveis de ambiente.
    • Se estiver a usar a montagem como um volume, especifique o caminho e, de seguida, clique em Concluído.
    • Se estiver a expor como variáveis de ambiente:
      1. Indique o Nome da variável e selecione o valor secreto correspondente no menu pendente Chave.
      2. Clique em Adicionar para adicionar outro valor secreto.
      3. Indique o Nome da variável e selecione o valor secreto correspondente no menu pendente Chave.
      4. Clique em Concluído.

  5. Clique em Seguinte para continuar para a secção seguinte.

  6. Na secção Configure como este serviço é acionado, selecione a conetividade que quer usar para invocar o serviço.

  7. Clique em Criar para implementar a imagem no Knative Serving e aguarde que a implementação termine.

gcloud

Pode usar a CLI do Google Cloud para associar segredos a novos serviços ou para atualizar serviços existentes:

  • Para serviços existentes, atualize um segredo executando o comando gcloud run services update com um dos seguintes parâmetros:

    Exemplo:

    gcloud run services update SERVICE --update-secrets 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 segredo. Para cada KEY que especificar o caminho, comece com uma barra invertida / para montar um segredo como um ficheiro. Opcionalmente, pode excluir a barra invertida para montar o segredo como uma variável de ambiente. Para cada VALUE, especifique o nome do segredo. Como especificar vários parâmetros.
    • Opções de parâmetros de comandos

      Para especificar vários conjuntos de pares de chave-valor, pode especificar vários parâmetros para facilitar a leitura. Exemplo:
      [...]
      --update-secrets "KEY=VALUE1" \
      --update-secrets "KEY=VALUE2" \
      --update-secrets "KEY=VALUE3"
  • Para novos serviços, associe um segredo executando o comando gcloud run deploy com o parâmetro --set-secrets:

    gcloud run deploy SERVICE --image=IMAGE_URL --set-secrets 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 segredo. Para cada KEY que especificar o caminho, comece com uma barra invertida / para montar um segredo como um ficheiro. Opcionalmente, pode excluir a barra invertida para montar o segredo como uma variável de ambiente. Para cada VALUE, especifique o nome do segredo. Como especificar vários parâmetros.
    • Opções de parâmetros de comandos

      Para especificar vários conjuntos de pares de chave-valor, pode especificar vários parâmetros para facilitar a leitura. Exemplo:
      [...]
      --update-secrets "KEY=VALUE1" \
      --update-secrets "KEY=VALUE2" \
      --update-secrets "KEY=VALUE3"