Usar secretos

Aprende a crear un secreto y a configurar tus servicios y revisiones de Knative Serving para que lo usen.

Un caso práctico habitual de un servicio es acceder a aplicaciones de terceros mediante nombres de usuario y contraseñas. En Google Kubernetes Engine, se recomienda almacenar este tipo de información sensible en un objeto Secret de Kubernetes.

Para proporcionar acceso a los secretos a tus contenedores, puedes montar 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 que obtienes la última versión de cada secreto cuando se lee.

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

Crear un secreto

En los siguientes pasos se muestra cómo crear un secreto, pero hay varias formas de hacerlo, como se explica en el tema Secreto.

Cuando crees un secreto, asegúrate de hacerlo en el mismo espacio de nombres que el clúster que ejecuta tu servicio de Knative Serving. En estos ejemplos, se usa el espacio de nombres default.

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

  • Crear un secreto 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 secreto usando solo un comando kubectl:

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

Poner un secreto a disposición de un servicio

Puedes asociar secretos a un servicio mediante la Google Cloud consola o las herramientas de línea de comandos cuando implementes un servicio o actualices uno ya creado e implementes una revisión:

Consola

  1. Ve a Knative Serving en la Google Cloud consola:

    Ir a Knative serving

  2. Haga clic en Crear servicio si va a configurar un servicio nuevo que va a implementar. Si va a configurar un servicio que ya tiene, haga clic en él y, a continuación, en Editar y desplegar nueva revisión.

  3. En Configuración avanzada, haz clic en Variables y secretos.

  4. En Referencia a un secreto, selecciona el secreto que quieras en el menú desplegable.

    • En el menú desplegable Método de referencia, selecciona la forma en que quieres usar tu secreto, montado como un volumen o expuesto como variables de entorno.
    • Si vas a usar el montaje como volumen, especifica la ruta y haz clic en Hecho.
    • Si vas a exponer las variables como variables de entorno:
      1. Indica el Nombre de la variable y selecciona el valor secreto correspondiente en el menú desplegable Clave.
      2. Haz clic en Añadir para añadir otro valor secreto.
      3. Indica el Nombre de la variable y selecciona el valor secreto correspondiente en el menú desplegable Clave.
      4. Haz clic en Listo.

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

  6. En la sección Configurar la activación del servicio, selecciona la conectividad que quieras usar para invocar el servicio.

  7. Haz clic en Crear para desplegar la imagen en Knative Serving y espera a que se complete el despliegue.

gcloud

Puedes usar la CLI de Google Cloud para asociar secretos con servicios nuevos o para actualizar servicios que ya tengas:

  • En el caso de los servicios que ya existen, actualiza un secreto ejecutando el comando gcloud run services update con uno de los siguientes parámetros:

    Ejemplo:

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

    Sustituye:

    • SERVICE con el nombre de tu servicio.
    • KEY1=VALUE1,KEY2=VALUE2 con una lista separada por comas de pares de nombre y valor de cada secreto. Para cada KEY que especifiques, indica la ruta empezando por una barra diagonal / para montar un secreto como un archivo. También puedes excluir la barra para montar el secreto como una variable de entorno. En cada VALUE, especifica el nombre del secreto. Cómo especificar varios parámetros
    • Opciones de parámetros de comandos

      Para especificar varios conjuntos de pares clave-valor, puedes especificar varios parámetros para mejorar la legibilidad. Ejemplo:
      [...]
      --update-secrets "KEY=VALUE1" \
      --update-secrets "KEY=VALUE2" \
      --update-secrets "KEY=VALUE3"
  • En el caso de los servicios nuevos, asocia un secreto ejecutando el comando gcloud run deploy con el parámetro --set-secrets:

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

    Sustituye:

    • IMAGE_URL con una referencia a la imagen del contenedor, por ejemplo, gcr.io/cloudrun/hello.
    • SERVICE con el nombre de tu servicio.
    • KEY1=VALUE1,KEY2=VALUE2 con una lista separada por comas de pares de nombre y valor de cada secreto. Para cada KEY que especifiques, indica la ruta empezando por una barra diagonal / para montar un secreto como un archivo. También puedes excluir la barra para montar el secreto como una variable de entorno. En cada VALUE, especifica el nombre del secreto. Cómo especificar varios parámetros
    • Opciones de parámetros de comandos

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