Como usar secrets

Aprenda a criar um Secret e configurar seus serviços e revisões de Knative serving para usar esse Secret.

Um caso de uso comum de um serviço é acessar aplicativos de terceiros por meio de nomes de usuário e senhas. Para o Google Kubernetes Engine, é uma prática recomendada armazenar esse tipo de informação confidencial em um objeto Secret do Kubernetes.

Para dar aos seus contêineres acesso a secrets, ative cada secret como um volume, o que disponibiliza as entradas do secret para o contêiner como arquivos. Ative seu secret para garantir que você tenha a versão mais recente de cada secret quando ele for lido.

Também é possível passar um secret usando uma variável de ambiente.

Como criar um secret

Nas etapas a seguir, demonstramos como criar um secret, mas há várias maneiras de criar um secret, conforme explicado no tópico Secret.

Ao criá-lo, certifique-se de criar no mesmo namespace que o cluster que está executando o serviço do Knative serving. Nestes exemplos, o namespace default é usado.

Para criar um secret no namespace default do cluster:

  • Crie um secret usando um arquivo:

    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 usando um comando kubectl:

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

Como disponibilizar um secret para um serviço

É possível associar secrets a um serviço usando o console do Google Cloud ou as ferramentas de linha de comando ao implantar um novo serviço ou atualizar um atual e implantar uma revisão:

Console

  1. Acesse o Knative serving no console do Google Cloud:

    Acessar o Knative serving

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

  3. Em Configurações avançadas, clique em Variáveis e secrets.

  4. Em Referenciar um secret, selecione o secret que você quer no menu suspenso.

    • No menu suspenso Método de referência, selecione a maneira como você quer usar o secret, montado como um volume ou exposto como variáveis de ambiente.
    • Se você estiver usando a montagem como volume, especifique o caminho e clique em Concluído.
    • Se você estiver expondo como variáveis de ambiente:
      1. forneça o Nome da variável e selecione o valor de secret correspondente no menu suspenso Chave;
      2. clique em Adicionar para adicionar outro valor de secret;
      3. forneça o Nome da variável e selecione o valor de secret correspondente no menu suspenso Chave;
      4. Clique em Concluído.

  5. Clique em Avançar para acessar a próxima seção.

  6. Na seção Configurar como este serviço é acionado, selecione qual conectividade você quer usar para invocar o serviço.

  7. Clique em Criar para implantar a imagem no Knative serving e aguarde até que a implantação seja concluída.

gcloud

Use a Google Cloud CLI para associar os secrets a novos serviços ou atualizar serviços existentes:

  • Para os serviços atuais, atualize um secret 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
    

    Substitua:

    • SERVICE pelo nome do serviço;
    • KEY1=VALUE1,KEY2=VALUE2 com uma lista separada por vírgula de pares de nome e valor para cada secret. Para cada KEY, você especifica o caminho, começando com uma barra / para ativar um secret como um arquivo. Se preferir, exclua a barra para ativar o secret como uma variável de ambiente. Para cada VALUE, especifique o nome do secret. Como especificar vários parâmetros:
    • Opções de parâmetros de comando

      Para especificar vários conjuntos de pares de chave-valor, é possível especificar vários parâmetros de legibilidade. Exemplo:
      [...]
      --update-secrets "KEY=VALUE1" \
      --update-secrets "KEY=VALUE2" \
      --update-secrets "KEY=VALUE3"
      
  • Para novos serviços, associe um secret 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
    

    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írgula de pares de nome e valor para cada secret. Para cada KEY, você especifica o caminho, começando com uma barra / para ativar um secret como um arquivo. Se preferir, exclua a barra para ativar o secret como uma variável de ambiente. Para cada VALUE, especifique o nome do secret. Como especificar vários parâmetros:
    • Opções de parâmetros de comando

      Para especificar vários conjuntos de pares de chave-valor, é possível especificar vários parâmetros de legibilidade. Exemplo:
      [...]
      --update-secrets "KEY=VALUE1" \
      --update-secrets "KEY=VALUE2" \
      --update-secrets "KEY=VALUE3"