Desplegar una aplicación en Cloud Run con Cloud Deploy
En esta página se muestra cómo usar Cloud Deploy para entregar una imagen de aplicación de muestra llamada hello en una secuencia de dos servicios o dos trabajos de Cloud Run.
En esta guía de inicio rápido, harás lo siguiente:
Crear una configuración de Skaffold
Crea archivos de configuración para dos servicios o dos tareas de Cloud Run.
Estos archivos definen los servicios o los trabajos y especifican las imágenes de contenedor (prediseñadas) que se van a implementar.
Define tu flujo de trabajo de entrega y tus destinos de implementación de Cloud Deploy, que apuntan a los dos servicios o a los dos trabajos.
Instancia tu flujo de procesamiento de entrega creando una versión, que se desplegará automáticamente en el primer destino.
Promociona la versión al segundo destino.
Consulta ambos lanzamientos en la Google Cloud consola.
Antes de empezar
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
Si vas a usar un proyecto que ya tengas para seguir esta guía, comprueba que tienes los permisos necesarios para completar la guía. Si has creado un proyecto, ya tienes los permisos necesarios.
Verify that billing is enabled for your Google Cloud project.
Enable the Cloud Deploy, Cloud Build, Cloud Run, and Cloud Storage APIs.
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.
Install the Google Cloud CLI.
Si utilizas un proveedor de identidades (IdP) externo, primero debes iniciar sesión en la CLI de gcloud con tu identidad federada.
Para inicializar gcloud CLI, ejecuta el siguiente comando:
gcloud initIn the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
Si vas a usar un proyecto que ya tengas para seguir esta guía, comprueba que tienes los permisos necesarios para completar la guía. Si has creado un proyecto, ya tienes los permisos necesarios.
Verify that billing is enabled for your Google Cloud project.
Enable the Cloud Deploy, Cloud Build, Cloud Run, and Cloud Storage APIs.
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.
Install the Google Cloud CLI.
Si utilizas un proveedor de identidades (IdP) externo, primero debes iniciar sesión en la CLI de gcloud con tu identidad federada.
Para inicializar gcloud CLI, ejecuta el siguiente comando:
gcloud initRoles obligatorios
Para obtener los permisos que necesitas para crear un flujo de trabajo de lanzamiento y un lanzamiento de Cloud Deploy, pide a tu administrador que te conceda el rol de gestión de identidades y accesos Ejecutor de trabajos de Cloud Deploy (roles/clouddeploy.jobrunner) en tu proyecto.
Para asegurarte de que la cuenta de servicio de Cloud Deploy tiene los permisos necesarios para ejecutar operaciones de Cloud Deploy y desplegar en Cloud Run, pide a tu administrador que le conceda los siguientes roles de gestión de identidades y accesos en tu proyecto:
-
Cloud Run Developer (
roles/run.developer) -
Usuario de cuenta de servicio de gestión de identidades y accesos (
roles/iam.serviceAccountUser)
Para obtener más información sobre cómo conceder roles, consulta el artículo Gestionar acceso a proyectos, carpetas y organizaciones.
Es posible que tu administrador también pueda conceder a la cuenta de servicio de Cloud Deploy los permisos necesarios a través de roles personalizados u otros roles predefinidos.
Preparar la configuración de Skaffold
Cloud Deploy usa Skaffold para proporcionar los detalles de qué desplegar y cómo hacerlo correctamente en tus destinos.
En esta guía de inicio rápido, crearás un archivo skaffold.yaml, que identifica el servicio o la definición de trabajo de Cloud Run que se usará para desplegar la aplicación de ejemplo.
Abre una ventana de terminal.
Crea un directorio llamado
deploy-run-quickstarty accede a él.mkdir deploy-run-quickstart cd deploy-run-quickstartCrea un archivo llamado
skaffold.yamlcon el siguiente contenido:Servicios
apiVersion: skaffold/v4beta7 kind: Config metadata: name: deploy-run-quickstart profiles: - name: dev manifests: rawYaml: - run-service-dev.yaml - name: prod manifests: rawYaml: - run-service-prod.yaml deploy: cloudrun: {}Empleo
apiVersion: skaffold/v4beta7 kind: Config metadata: name: deploy-run-quickstart profiles: - name: dev manifests: rawYaml: - run-job-dev.yaml - name: prod manifests: rawYaml: - run-job-prod.yaml deploy: cloudrun: {}Este archivo es una configuración mínima de Skaffold que identifica tus servicios o trabajos de Cloud Run. Consulta la referencia de
skaffold.yamlpara obtener más información sobre este archivo.
Preparar los servicios o los trabajos de Cloud Run
En esta guía de inicio rápido, crearás dos servicios de Cloud Run o dos trabajos de Cloud Run diferentes en el mismo proyecto. Cloud Deploy también permite desplegar en varios proyectos. También usamos perfiles de Skaffold para que sea posible tener dos servicios o trabajos en el mismo proyecto. Si usas diferentes proyectos, puede que no necesites usar perfiles de Skaffold.
Servicios
Crea un archivo llamado
run-service-dev.yamlcon el siguiente contenido:apiVersion: serving.knative.dev/v1 kind: Service metadata: name: deploy-run-service-dev spec: template: spec: containers: - image: my-app-imageEste archivo define un servicio de Cloud Run. Como su nombre indica,
deploy-run-service-devdeves tu servicio y corresponde al primer objetivo de la progresión de tu canal de distribución.Crea un archivo llamado
run-service-prod.yamlcon el siguiente contenido:apiVersion: serving.knative.dev/v1 kind: Service metadata: name: deploy-run-service-prod spec: template: spec: containers: - image: my-app-imageEste archivo define otro servicio de Cloud Run y, como indica el nombre
deploy-run-service-prod, se trata de tu servicioprod, que corresponde al segundo destino de la progresión de tu canal de distribución.
Estos archivos son definiciones de servicios de Cloud Run, que se usan para desplegar la aplicación. La imagen del contenedor que se va a desplegar se define aquí como un marcador de posición, my-app-image, que se sustituye por la imagen específica cuando creas la versión.
Empleo
Crea un archivo llamado
run-job-dev.yamlcon el siguiente contenido:apiVersion: run.googleapis.com/v1 kind: Job metadata: name: deploy-run-job-dev spec: template: spec: template: spec: containers: - image: my-app-imageEste archivo define un trabajo de Cloud Run. Como indica el nombre, este es tu
deploy-run-job-devdevy corresponde al primer objetivo de la progresión de tu canal de distribución.Crea un archivo llamado
run-job-prod.yamlcon el siguiente contenido:apiVersion: run.googleapis.com/v1 kind: Job metadata: name: deploy-run-job-prod spec: template: spec: template: spec: containers: - image: my-app-imageEste archivo define otro trabajo de Cloud Run. Como indica el nombre, esta es tu
prodtarea y corresponde al segundo objetivo de tu proceso de entrega.deploy-run-job-prod
Estos archivos son definiciones de trabajos de Cloud Run, que se usan para desplegar la aplicación. La imagen de contenedor que se va a desplegar se define aquí como un marcador de posición, my-app-image, que se sustituye por la imagen específica cuando creas la versión.
Crea tu flujo de procesamiento y tus objetivos
Puedes definir tu canalización y tus destinos en un archivo o en archivos independientes. En esta guía de inicio rápido, crearás un solo archivo.
En el directorio
deploy-run-quickstart, crea un archivo nuevo:clouddeploy.yaml, con el siguiente contenido:apiVersion: