Usa Secrets

Aprende a crear un Secret y configurar los servicios de entrega y las revisiones de Knative para que lo usen.

Un caso de uso común para un servicio es acceder a aplicaciones de terceros a través de nombres de usuario y contraseñas. Para Google Kubernetes Engine, se recomienda almacenar este tipo de información sensible en un objeto Secret de Kubernetes.

Para proporcionar a tus contenedores acceso a los secretos, puedes activar cada secreto como un volumen, lo que hace que las entradas del secreto estén disponibles para el contenedor como archivos. Debes activar tu secreto para asegurarte de obtener la versión más reciente de cada secreto cuando se lea.

También puedes pasar un secreto mediante variables de entorno.

Crea un objeto secreto

En los pasos siguientes, simplemente se demuestra cómo crear un Secret, pero existen varias formas de crear un Secret, como se explica en el tema Secret.

Cuando crees un Secret, asegúrate de crearlo en el mismo espacio de nombres que el clúster que ejecuta el servicio de entrega de Knative. En estas instrucciones, se usa el espacio de nombres default.

Para crear un Secret en el espacio de nombres default de tu clúster, sigue estos pasos:

  • Crea un Secret con un archivo:

    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
    
  • Crea un Secret solo con el comando kubectl:

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

Haz que un Secret esté disponible para un servicio

Puedes asociar secretos con un servicio mediante la consola de Google Cloud o las herramientas de línea de comandos cuando implementas un servicio nuevo o actualizas un servicio existente e implementas una revisión:

Console

  1. Ve a la entrega de Knative en la consola de Google Cloud:

    Ir a la entrega de Knative

  2. Haz clic en Crear servicio si quieres configurar un servicio nuevo en el que realizarás la implementación. Si quieres configurar un servicio existente, haz clic en el servicio y, luego, haz clic en Implementar y editar una nueva revisión.

  3. En Configuración avanzada, haz clic en Variables and Secrets.

  4. En Reference a Secret (Crear una referencia a un secreto), selecciona el secreto deseado en el menú desplegable.

    • En el menú desplegable Reference Method (Método de referencia), selecciona la forma en la que deseas usar el secreto, activado como un volumen o expuesto como variables de entorno.
    • Si usas la opción de activarlo como un volumen, especifica la ruta de acceso y haz clic en Listo.
    • Si deseas exponer como variables de entorno, sigue estos pasos:
      1. Proporciona el Nombre de la variable y selecciona el valor de secreto correspondiente en el menú desplegable Clave.
      2. Haz clic en Agregar para agregar otro valor de secreto.
      3. Proporciona el Nombre de la variable y selecciona el valor de secreto correspondiente en el menú desplegable Clave.
      4. Haga clic en Listo.

  5. Haz clic en Siguiente para pasar a la siguiente sección.

  6. En la sección Configura la forma en que se activa el servicio, selecciona la conectividad que deseas usar para invocar el servicio.

  7. Haz clic en Crear para implementar la imagen en la entrega de Knative y espera a que finalice la implementación.

gcloud

Puedes usar Google Cloud CLI para asociar Secrets con servicios nuevos o actualizar los existentes:

  • Para los servicios existentes, ejecuta el comando gcloud run services update con uno de los siguientes parámetros a fin de actualizar un Secret:

    Ejemplo:

    gcloud run services update SERVICE --update-secrets KEY1=VALUE1,KEY2=VALUE2
    

    Reemplaza lo siguiente:

    • SERVICE por el nombre de tu servicio
    • KEY1=VALUE1,KEY2=VALUE2 por una lista de pares de valores y nombres separados por comas para cada Secret. Para cada KEY, debes especificar la ruta de acceso comenzando con una barra diagonal / a fin de activar un Secret como un archivo. De manera opcional, puedes excluir la barra diagonal para activar el Secret como una variable de entorno. Para cada VALUE, especifica el nombre del secreto. Cómo especificar varios parámetros.
    • Opciones de parámetros de comando

      A fin de especificar varios conjuntos de pares clave-valor, puedes especificar varios parámetros para facilitar la lectura. Ejemplo:
      [...]
      --update-secrets "KEY=VALUE1" \
      --update-secrets "KEY=VALUE2" \
      --update-secrets "KEY=VALUE3"
      
  • Para los servicios nuevos, asocia el comando gcloud run deploy con el parámetro --set-secrets a fin de configurar un Secret:

    gcloud run deploy SERVICE --image=IMAGE_URL --set-secrets KEY1=VALUE1,KEY2=VALUE2
    

    Reemplaza lo siguiente:

    • IMAGE_URL por una referencia a la imagen del contenedor, como gcr.io/cloudrun/hello
    • SERVICE por el nombre de tu servicio
    • KEY1=VALUE1,KEY2=VALUE2 por una lista de pares de valores y nombres separados por comas para cada Secret. Para cada KEY, debes especificar la ruta de acceso comenzando con una barra diagonal / a fin de activar un Secret como un archivo. De manera opcional, puedes excluir la barra diagonal para activar el Secret como una variable de entorno. Para cada VALUE, especifica el nombre del secreto. Cómo especificar varios parámetros.
    • Opciones de parámetros de comando

      A fin de especificar varios conjuntos de pares clave-valor, puedes especificar varios parámetros para facilitar la lectura. Ejemplo:
      [...]
      --update-secrets "KEY=VALUE1" \
      --update-secrets "KEY=VALUE2" \
      --update-secrets "KEY=VALUE3"