Configurar secretos para tareas

Es posible que tu trabajo requiera claves de API, contraseñas, certificados u otra información sensible para sus dependencias. En Cloud Run, Google recomienda almacenar esta información sensible en un secreto que crees en Secret Manager.

Puedes hacer que un secreto esté disponible para tus contenedores de una de las siguientes formas:

  • Cuando montas cada secreto como un volumen, Cloud Run hace que el secreto esté disponible para el contenedor como archivos. Al leer un volumen, Cloud Run siempre obtiene el valor del secreto de Secret Manager para usar el valor con la versión más reciente. Este método también funciona bien con la rotación de secretos.
  • Transfiere un secreto mediante variables de entorno. Las variables de entorno se resuelven en el momento de iniciar la instancia, por lo que, si utilizas este método, Google te recomienda que fijes el secreto a una versión concreta en lugar de usar latest como versión.

Para obtener más información, consulta las prácticas recomendadas de Secret Manager.

Cómo se comprueban los secretos en el momento de la implementación y durante el tiempo de ejecución

Durante la creación del trabajo, Cloud Run comprueba todos los secretos que utilices. Esta comprobación asegura que la cuenta de servicio que ejecuta el contenedor tenga permiso para acceder a estos secretos.

Durante el tiempo de ejecución, cuando se inician las instancias:

  • Si el secreto es una variable de entorno, Cloud Run recupera el valor del secreto antes de iniciar la instancia. Si el proceso de recuperación de secretos falla, la instancia no se inicia.
  • Si montas el secreto como un volumen, Cloud Run no realizará ninguna comprobación durante el inicio de la instancia. Sin embargo, durante el tiempo de ejecución, si no se puede acceder a un secreto, los intentos de leer el volumen montado fallarán.

Propiedad del volumen

La propiedad de un volumen secreto de Cloud Run varía en función del entorno de ejecución y del tipo de implementación.

Cuando montas un volumen de secretos con el entorno de ejecución de segunda generación, que es siempre el caso de los trabajos, la raíz es la propietaria del volumen.

Antes de empezar

  1. Enable the Secret Manager API.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the API

  2. Usa un secreto que ya tengas o crea uno en Secret Manager, tal como se describe en el artículo Crear un secreto.

Roles obligatorios

Para obtener los permisos que necesitas para configurar secretos, pide a tu administrador que te conceda los siguientes roles de gestión de identidades y accesos:

Para permitir que Cloud Run acceda al secreto, la identidad de servicio debe tener el siguiente rol:

Para obtener instrucciones sobre cómo añadir la identidad de servicio principal al rol Lector de recursos de Secret Manager, consulta el artículo Gestionar el acceso a los secretos.

Para ver una lista de los roles y permisos de gestión de identidades y accesos asociados a Cloud Run, consulta los artículos sobre roles de gestión de identidades y accesos de Cloud Run y permisos de gestión de identidades y accesos de Cloud Run. Si tu trabajo de Cloud Run interactúa con APIs deGoogle Cloud , como las bibliotecas de cliente de Cloud, consulta la guía de configuración de la identidad de servicio. Para obtener más información sobre cómo conceder roles, consulta los artículos sobre permisos de implementación y gestión del acceso.

Hacer que un secreto sea accesible para Cloud Run

Puedes hacer que un secreto sea accesible para tu trabajo con la Google Cloud consola, la CLI de Google Cloud o YAML:

Consola

  1. En la Google Cloud consola, ve a la página de trabajos de Cloud Run:

    Ir a Cloud Run

  2. Seleccione Trabajos en el menú y haga clic en Implementar contenedor para rellenar la página de configuración inicial del trabajo. Si vas a configurar un trabajo que ya existe, selecciona el trabajo y haz clic en Editar.

  3. Haz clic en Contenedores, volúmenes, conexiones y seguridad para desplegar la página de propiedades del trabajo.

  4. Haz clic en la pestaña Variables y secretos.

    imagen

    • En la pestaña Variables y secretos:

      • Para exponer el secreto como una variable de entorno, sigue estos pasos:

        1. Haz clic en la pestaña Contenedores.
        2. En la pestaña Variables y secretos, haga clic en Hacer referencia a un secreto.
        3. En el campo Nombre 1, introduce el nombre de la variable de entorno.
        4. En la lista Secreto, selecciona el secreto que quieras usar.
        5. En la lista Versión 1, selecciona la versión del secreto al que quieras hacer referencia.
        6. Haz clic en Listo.
        7. Haz clic en Crear o en Implementar.
      • Para montar un secreto como volumen, sigue estos pasos:

        1. Haz clic en la pestaña Volúmenes y selecciona Añadir volumen.
        2. En la lista Tipo de volumen, selecciona Secreto.
        3. En el campo Nombre del volumen, introduce un nombre o acepta el predeterminado.
        4. En la lista Secreto, selecciona el secreto que quieras usar.
        5. En el campo Ruta 1, introduce el nombre del archivo que quieras montar.
        6. En la lista Versión 1, selecciona la versión del secreto al que quieras hacer referencia. De forma predeterminada, se selecciona la versión más reciente. Puedes seleccionar una versión específica si quieres.
        7. Haz clic en Listo.
        8. Vaya a la pestaña Contenedores para montar su secreto en el contenedor.
        9. En la pestaña Volúmenes montados, haz clic en Montar volumen.
        10. En la lista Nombre 1, selecciona el nombre del volumen.
        11. En el campo Ruta de montaje 1, introduce la ruta de montaje de este secreto. Este es el directorio en el que se colocan todas las versiones de tu secreto.
        12. Haz clic en Listo.
        13. Haz clic en Crear o en Implementar.
  5. Haz clic en Crear o en Actualizar.

gcloud

  • Para especificar el secreto en una variable de entorno al crear un trabajo:

    gcloud run jobs create JOB_NAME \
    --image IMAGE_URL \
    --set-secrets ENV_VAR_NAME=SECRET_NAME:VERSION

    Haz los cambios siguientes:

    • JOB_NAME: el nombre de tu trabajo.
    • ENV_VAR_NAME: el nombre de la variable de entorno que se va a usar para el secreto.
    • SECRET_NAME: el nombre del secreto en el mismo proyecto. Por ejemplo, mysecret.
    • VERSION: la versión del secreto. Usa latest para la versión más reciente o un número (por ejemplo, 2).
    • IMAGE_URL: una referencia a la imagen del contenedor, por ejemplo, us-docker.pkg.dev/cloudrun/container/job:latest.

    Puede especificar varios pares de variables de entorno y secretos mediante una lista delimitada por comas.

  • Para especificar el secreto en una variable de entorno al actualizar un trabajo, sigue estos pasos:

    gcloud run jobs update JOB_NAME \
    --set-secrets ENV_VAR_NAME=SECRET_NAME:VERSION
  • Para activar el secreto como volumen al crear un trabajo, sigue estos pasos:

    gcloud run jobs create JOB_NAME \
    --image IMAGE_URL \
    --set-secrets=PATH=SECRET_NAME:VERSION

    Haz los cambios siguientes:

    • JOB_NAME: el nombre de tu trabajo.
    • IMAGE_URL: una referencia a la imagen del contenedor, por ejemplo, us-docker.pkg.dev/cloudrun/container/job:latest.
    • PATH: la ruta de montaje del volumen y el nombre de archivo del secreto. Debe empezar por una barra diagonal. Por ejemplo, /etc/secrets/dbconfig/password, donde /etc/secrets/dbconfig/ es la ruta de montaje del volumen y password es el nombre de archivo del secreto.
    • SECRET_NAME: el nombre del secreto en el mismo proyecto. Por ejemplo, mysecret.
    • VERSION: la versión del secreto. Usa latest para obtener la versión más reciente o un número (por ejemplo, 2).
  • Para actualizar un secreto en un trabajo que ya tienes, sigue estos pasos:

    gcloud run jobs update JOB_NAME \
    --update-secrets=PATH=SECRET_NAME:VERSION

YAML

Debido a las restricciones relacionadas con la compatibilidad de las APIs, las ubicaciones de los secretos deben almacenarse en una anotación.

  1. Si vas a crear un trabajo, sáltate este paso. Si vas a actualizar una tarea, descarga su configuración YAML:

    gcloud run jobs describe JOB_NAME --format export > job.yaml
  2. En el caso de los secretos expuestos como variables de entorno:

    apiVersion: run.googleapis.com/v1
    kind: Job
    metadata:
      name: JOB
    spec:
      template:
        spec:
          template:
            spec:
              containers:
              - env:
                - name: SECRET_NAME
                  valueFrom:
                    secretKeyRef:
                      key: VERSION
                      name: SECRET_LOOKUP_NAME
                image: IMAGE_URL 

    Haz los cambios siguientes:

    • JOB: el nombre de tu trabajo.
    • IMAGE_URL: una referencia a la imagen del contenedor, por ejemplo, us-docker.pkg.dev/cloudrun/container/job:latest.
    • SECRET_NAME: el nombre del secreto (por ejemplo, mysecret).
    • VERSION: la versión del secreto. Usa latest para obtener la versión más reciente o un número (por ejemplo, 2).
    • SECRET_LOOKUP_NAME: cualquier nombre que tenga una sintaxis de nombre de secreto válida, como my-secret. Puede ser la misma que la de SECRET_NAME.
  3. En el caso de los secretos montados como rutas de archivos:

    apiVersion: run.googleapis.com/v1
    kind: Job
    metadata:
      name: JOB_NAME
    spec:
      template:
        spec:
          template:
            spec:
              containers:
              - image: IMAGE_URL
                volumeMounts:
                - mountPath: MOUNT_PATH
                  name: VOLUME_NAME
              volumes:
              - name: VOLUME_NAME
                secret:
                  items:
                  - key: VERSION
                    path: FILENAME
                  secretName: SECRET_LOOKUP_NAME

    Haz los cambios siguientes:

    • JOB_NAME: el nombre de tu trabajo.
    • IMAGE_URL: una referencia a la imagen del contenedor, por ejemplo, us-docker.pkg.dev/cloudrun/container/job:latest.
    • PATH: la ruta de montaje del volumen y el nombre de archivo del secreto. Debe empezar por una barra diagonal. Por ejemplo, /etc/secrets/dbconfig/password, donde /etc/secrets/dbconfig/ es la ruta de montaje del volumen y password es el nombre de archivo del secreto.
    • PROJECT_NUMBER: el número del proyecto en el que se creó el secreto.
    • SECRET_NAME: el nombre del secreto (por ejemplo, mysecret).
    • VERSION: la versión del secreto. Usa latest para obtener la versión más reciente o un número (por ejemplo, 2).
    • SECRET_LOOKUP_NAME: cualquier nombre que tenga una sintaxis de nombre de secreto válida, como my-secret. Puede ser la misma que la de SECRET_NAME.
    • VOLUME_NAME: cualquier nombre, por ejemplo, my-volume. Puede ser la misma URL que la que se indica en SECRET_NAME.

Terraform

Para saber cómo aplicar o quitar una configuración de Terraform, consulta Comandos básicos de Terraform.

Añade lo siguiente a un recurso google_cloud_run_v2_job en tu configuración de Terraform:

Para los secretos expuestos como variables de entorno:

resource "google_cloud_run_v2_job" "default" {
  name     = "JOB_NAME"
  location = "REGION"

  template {
    template {
      containers {
        image = "IMAGE_URL"

        env {
          name = "SECRET_NAME"

          value_source {
            secret_key_ref {
              secret = "SECRET_NAME"
              version = "VERSION"
            }
          }
        }
      }
    }
  }
}

Haz los cambios siguientes:

  • JOB_NAME: el nombre de tu tarea de Cloud Run.
  • REGION: la Google Cloud región. Por ejemplo, europe-west1.
  • IMAGE_URL: una referencia a la imagen del contenedor, por ejemplo, us-docker.pkg.dev/cloudrun/container/job:latest.
  • SECRET_NAME: el nombre del secreto (por ejemplo, mysecret).
  • VERSION: la versión del secreto. Usa latest para la versión más reciente o un número (por ejemplo, 2).

Para los secretos montados como rutas de archivo:

resource "google_cloud_run_v2_job" "default" {
  name     = "JOB_NAME"
  location = "REGION"

  template {
    template {
      containers {
        image = "IMAGE_URL"

        volume_mounts {
          name       = "VOLUME_NAME"
          mount_path = "MOUNT_PATH"
        }
      }

      volumes {
        name = "VOLUME_NAME"
        secret {
          secret = "SECRET_NAME"
        }
      }
    }
  }
}

Haz los cambios siguientes:

  • JOB_NAME: el nombre de tu tarea de Cloud Run.
  • REGION: la Google Cloud región. Por ejemplo, europe-west1.
  • IMAGE_URL: una referencia a la imagen del contenedor, por ejemplo, us-docker.pkg.dev/cloudrun/container/job:latest.
  • VOLUME_NAME: cualquier nombre, por ejemplo, my-volume. Puede ser la misma URL que la que se indica en SECRET_NAME.
  • MOUNT_PATH: la ruta de montaje del volumen y el nombre de archivo del secreto. Debe empezar por una barra diagonal. Por ejemplo, /etc/secrets/dbconfig/password, donde /etc/secrets/dbconfig/ es la ruta de montaje del volumen y password es el nombre de archivo del secreto.
  • SECRET_NAME: el nombre del secreto (por ejemplo, mysecret).

Hacer referencia a secretos de otros proyectos

Puedes hacer referencia a un secreto de otro proyecto si la cuenta de servicio de tu proyecto tiene permiso para acceder al secreto.

Consola

  1. En la Google Cloud consola, ve a la página de trabajos de Cloud Run:

    Ir a Cloud Run

  2. Seleccione Trabajos en el menú y haga clic en Implementar contenedor para rellenar la página de configuración inicial del trabajo. Si vas a configurar un trabajo que ya existe, selecciona el trabajo y haz clic en Editar.

  3. Haz clic en Contenedores, volúmenes, conexiones y seguridad para desplegar la página de propiedades del trabajo.

  4. Haz clic en la pestaña Variables y secretos.

    imagen

    • En la pestaña Variables y secretos:

      • Para exponer el secreto como una variable de entorno, sigue estos pasos:

        1. Haz clic en la pestaña Contenedores.
        2. En la pestaña Variables y secretos, haga clic en Hacer referencia a un secreto.
        3. En el campo Nombre 1, introduce el nombre de la variable de entorno.
        4. En la lista Secreto, haz clic en Introducir secreto manualmente.
        5. Introduce el ID de recurso del secreto con el siguiente formato:

          projects/PROJECT_NUMBER/secrets/SECRET_NAME
          

          Haz los cambios siguientes:

          • PROJECT_NUMBER con el número de tu proyecto Google Cloud . Para obtener instrucciones detalladas sobre cómo encontrar el número de tu proyecto, consulta el artículo Crea y gestiona proyectos.

          • SECRET_NAME: nombre del secreto en Secret Manager.

        6. En la lista Versión 1, selecciona la versión del secreto al que quieras hacer referencia.

        7. Haz clic en Listo.

        8. Haz clic en Crear o en Implementar.

      • Para montar un secreto como volumen, sigue estos pasos:

        1. Haz clic en la pestaña Volúmenes y selecciona Añadir volumen.
        2. En la lista Tipo de volumen, selecciona Secreto.
        3. En el campo Nombre del volumen, introduce un nombre o acepta el predeterminado.
        4. En la lista Secreto, haz clic en Introducir secreto manualmente.
        5. Introduce el ID de recurso del secreto con el siguiente formato:

          projects/PROJECT_NUMBER/secrets/SECRET_NAME
          

          Haz los cambios siguientes:

          • PROJECT_NUMBER con el número de tu proyecto Google Cloud . Para obtener instrucciones detalladas sobre cómo encontrar el número de tu proyecto, consulta el artículo Crea y gestiona proyectos.

          • SECRET_NAME: nombre del secreto en Secret Manager.

        6. En el campo Ruta 1, introduce el nombre del archivo que quieras montar.

        7. En la lista Versión 1, selecciona la versión del secreto al que quieras hacer referencia. De forma predeterminada, se selecciona la versión más reciente. Puedes seleccionar una versión específica si quieres.

        8. Haz clic en Listo.

        9. Vaya a la pestaña Contenedores para montar su secreto en el contenedor.

        10. En la pestaña Volúmenes montados, haz clic en Montar volumen.

        11. En la lista Nombre 1, selecciona el nombre del volumen.

        12. En el campo Ruta de montaje 1, introduce la ruta de montaje de este secreto. Este es el directorio en el que se colocan todas las versiones de tu secreto.

        13. Haz clic en Listo.

        14. Haz clic en Crear o en Implementar.

  5. Haz clic en Crear o en Actualizar.

gcloud

  • Para montar un secreto como volumen al actualizar un trabajo, sigue estos pasos:

    gcloud run jobs update JOB_NAME \
    --image IMAGE_URL \
    --update-secrets=PATH=projects/PROJECT_NUMBER/secrets/SECRET_NAME:VERSION
    • JOB_NAME: el nombre de tu trabajo.
    • IMAGE_URL: una referencia a la imagen del contenedor, por ejemplo, us-docker.pkg.dev/cloudrun/container/job:latest.
    • PATH: la ruta de montaje del volumen y el nombre de archivo del secreto. Debe empezar por una barra diagonal. Por ejemplo, /etc/secrets/dbconfig/password, donde /etc/secrets/dbconfig/ es la ruta de montaje del volumen y password es el nombre de archivo del secreto.
    • PROJECT_NUMBER: el número del proyecto en el que se creó el secreto.
    • SECRET_NAME: el nombre del secreto (por ejemplo, mysecret).
    • VERSION: la versión del secreto. Usa latest para obtener la versión más reciente o un número (por ejemplo, 2).

YAML

  1. Si vas a crear un trabajo, sáltate este paso. Si vas a actualizar una tarea, descarga su configuración YAML:

    gcloud run jobs describe JOB_NAME --format export > job.yaml

Debido a las restricciones relacionadas con la compatibilidad de las APIs, las ubicaciones de los secretos deben almacenarse en una anotación.

  1. En el caso de los secretos expuestos como variables de entorno:

    apiVersion: run.googleapis.com/v1
    kind: Job
    metadata:
      name: JOB
    spec:
      template:
        metadata:
          annotations:
            run.googleapis.com/secrets: SECRET_LOOKUP_NAME:projects/PROJECT_NUMBER/secrets/SECRET_NAME
        spec:
          template:
            spec:
              containers:
              - env:
                - name: SECRET_NAME
                  valueFrom:
                    secretKeyRef:
                      key: VERSION
                      name: SECRET_LOOKUP_NAME
                image: IMAGE_URL 

    Haz los cambios siguientes:

    • JOB: el nombre de tu trabajo.
    • IMAGE_URL: una referencia a la imagen del contenedor, por ejemplo, us-docker.pkg.dev/cloudrun/container/job:latest.
    • SECRET_NAME: el nombre del secreto (por ejemplo, mysecret).
    • VERSION: la versión del secreto. Usa latest para obtener la versión más reciente o un número (por ejemplo, 2).
    • PROJECT_NUMBER: el número del proyecto en el que se creó el secreto.
    • SECRET_LOOKUP_NAME: cualquier nombre que tenga una sintaxis de nombre de secreto válida, como my-secret. Puede ser la misma que la de SECRET_NAME.
  2. En el caso de los secretos montados como rutas de archivos:

    apiVersion: run.googleapis.com/v1
    kind: Job
    metadata:
      name: JOB_NAME
    spec:
      template:
        metadata:
          annotations:
            run.googleapis.com/secrets: SECRET_LOOKUP_NAME:projects/PROJECT_NUMBER/secrets/SECRET_NAME
        spec:
          template:
            spec:
              containers:
              - image: IMAGE_URL
                volumeMounts:
                - mountPath: MOUNT_PATH
                  name: VOLUME_NAME
              volumes:
              - name: VOLUME_NAME
                secret:
                  items:
                  - key: VERSION
                    path: FILENAME
                  secretName: SECRET_LOOKUP_NAME

    Haz los cambios siguientes:

    • JOB_NAME: el nombre de tu trabajo.
    • IMAGE_URL: una referencia a la imagen del contenedor, por ejemplo, us-docker.pkg.dev/cloudrun/container/job:latest.
    • PATH: la ruta de montaje del volumen y el nombre de archivo del secreto. Debe empezar por una barra diagonal. Por ejemplo, /etc/secrets/dbconfig/password, donde /etc/secrets/dbconfig/ es la ruta de montaje del volumen y password es el nombre de archivo del secreto.
    • PROJECT_NUMBER: el número del proyecto en el que se creó el secreto.
    • SECRET_NAME: el nombre del secreto (por ejemplo, mysecret).
    • VERSION: la versión del secreto. Usa latest para obtener la versión más reciente o un número (por ejemplo, 2).
    • SECRET_LOOKUP_NAME: cualquier nombre que tenga una sintaxis de nombre de secreto válida. Por ejemplo, my-secret puede ser el mismo que SECRET_NAME.
    • VOLUME_NAME: cualquier nombre (por ejemplo, my-volume). Puede ser el mismo que SECRET_NAME.

Terraform

Para saber cómo aplicar o quitar una configuración de Terraform, consulta Comandos básicos de Terraform.

Añade lo siguiente a un recurso google_cloud_run_v2_job en tu configuración de Terraform:

Para los secretos expuestos como variables de entorno:

resource "google_cloud_run_v2_job" "default" {
  name     = "JOB_NAME"
  location = "REGION"

  template {
    template {
      containers {
        image = "IMAGE_URL"
        env {
          name = "SECRET_NAME"
          value_source {
            secret_key_ref {
              secret = "projects/PROJECT_ID/secrets/SECRET_NAME"
              version = "VERSION"
            }
          }
        }
      }
    }
  }
}

Haz los cambios siguientes:

  • JOB_NAME: el nombre de tu tarea de Cloud Run.
  • REGION: la Google Cloud región. Por ejemplo, europe-west1.
  • IMAGE_URL: una referencia a la imagen del contenedor, por ejemplo, us-docker.pkg.dev/cloudrun/container/job:latest.
  • SECRET_NAME: el nombre del secreto (por ejemplo, mysecret).
  • PROJECT_ID: el ID del proyecto en el que se creó el secreto.
  • VERSION: la versión del secreto. Usa latest para la versión más reciente o un número (por ejemplo, 2).

Para los secretos montados como rutas de archivo:

resource "google_cloud_run_v2_job" "default" {
  name     = "JOB_NAME"
  location = "REGION"

  template {
    template {
      containers {
        image = "IMAGE_URL"

        volume_mounts {
          name       = "VOLUME_NAME"
          mount_path = "MOUNT_PATH"
        }
      }

      volumes {
        name = "VOLUME_NAME"
        secret {
          secret = "projects/PROJECT_ID/secrets/SECRET_NAME"
        }
      }
    }
  }
}

Haz los cambios siguientes:

  • JOB_NAME: el nombre de tu tarea de Cloud Run.
  • REGION: la región Google Cloud , por ejemplo, europe-west1.
  • IMAGE_URL: una referencia a la imagen del contenedor, por ejemplo, us-docker.pkg.dev/cloudrun/container/job:latest.
  • VOLUME_NAME: cualquier nombre (por ejemplo, my-volume). Puede ser el mismo que SECRET_NAME.
  • MOUNT_PATH: la ruta de montaje del volumen y el nombre de archivo del secreto. Debe empezar por una barra diagonal. Por ejemplo, /etc/secrets/dbconfig/password, donde /etc/secrets/dbconfig/ es la ruta de montaje del volumen y password es el nombre de archivo del secreto.
  • PROJECT_ID: el ID del proyecto en el que se creó el secreto.
  • SECRET_NAME: el nombre del secreto (por ejemplo, mysecret).

Ver ajustes de secretos

Para ver la configuración actual de secretos de tu trabajo de Cloud Run, sigue estos pasos:

Consola

  1. En la Google Cloud consola, ve a la página de trabajos de Cloud Run:

    Ir a tareas de Cloud Run

  2. Haz clic en el trabajo que te interese para abrir la página Detalles del trabajo.

  3. Haz clic en Ver y editar configuración de trabajo.

  4. Busca el ajuste de secretos en los detalles de la configuración.

gcloud

  1. Usa el siguiente comando:

    gcloud run jobs describe JOB_NAME
  2. Localiza el ajuste de secretos en la configuración devuelta.

Rutas no permitidas y limitaciones

Se aplican las siguientes limitaciones al montar secretos:

  • Cloud Run no te permite montar secretos en /dev, /proc ni /sys, ni en sus subdirectorios.
  • Cloud Run no permite montar varios secretos en la misma ruta, ya que no se pueden montar dos volúmenes en la misma ubicación.

Anular un directorio

Si el secreto se monta como un volumen en Cloud Run y ya existe el último directorio de la ruta de montaje del volumen, no se podrá acceder a ningún archivo ni carpeta del directorio.

Por ejemplo, si se monta un secreto llamado my-secret en la ruta /etc/app_data, se sobrescribirá todo el contenido del directorio app_data y el único archivo visible será /etc/app_data/my-secret.

Para evitar que se sobrescriban archivos en un directorio, crea un directorio para montar el secreto (por ejemplo, /etc/app_data/secrets) de forma que la ruta de montaje del secreto sea /etc/app_data/secrets/my-secret.