En esta página, se describe cómo usar Google Cloud Deploy para poner tu aplicación en los entornos de ejecución de destino deseados. Antes de hacerlo, debes crear tu canalización de entrega y objetivos.
Antes de comenzar
En esta sección, se describe lo que necesitas para implementar tu aplicación con Google Cloud Deploy.
Asegúrate de que tu cuenta de servicio de ejecución tenga las funciones y permisos de IAM necesarios.
Crea tu canalización de entrega y objetivos.
Google Cloud Deploy puede realizar implementaciones en clústeres de Google Kubernetes Engine, Cloud Run y Anthos. La configuración de destino difiere según cuál de estas implementes.
Ten tus imágenes de contenedor y manifiestos.
Necesitas una o más imágenes de contenedor para implementar y uno o más manifiestos de Kubernetes (para implementar en GKE) o archivos YAML de servicio (para implementar en Cloud Run).
Necesitas una canalización de integración continua o algún otro proceso para compilar y ubicar las imágenes. Tu herramienta de CI puede ser Cloud Build, Jenkins o cualquier elemento que dé como resultado imágenes de contenedor que puedes proporcionar a tu canalización de entrega de Google Cloud Deploy.
Ten un archivo de configuración
skaffold.yaml
.Google Cloud Deploy llama a
skaffold render
para procesar los manifiestos de Kubernetes con este archivo y askaffold apply
para implementarlos en tu destino. Para ello, Skaffold requiere al menos unskaffold.yaml
mínimo. Puedes obtener uno de los dos métodos siguientes:Crea el tuyo.
Ten en cuenta que el archivo
skaffold.yaml
debe hacer referencia al espacio de nombres correspondiente a una versión de Skaffold compatible en la primera línea, como en este ejemplo:`apiVersion: skaffold/v2beta28`
Generalo para ti.
Si aún no tienes un archivo
skaffold.yaml
, puedes hacer que Google Cloud Deploy cree uno por ti. Este archivo es adecuado para la integración, el aprendizaje o la demostración de Google Cloud Deploy y no debe usarse para las cargas de trabajo de producción.
Consulta Cómo usar Skaffold con Google Cloud Deploy para obtener más detalles. Además, en Administra manifiestos en Google Cloud Deploy, encontrarás más detalles sobre el uso de Skaffold y Google Cloud Deploy con herramientas de administración de manifiestos, como Helm, Kustomize y kpt.
Configura Google Cloud Deploy para el entorno de ejecución que prefieras
Google Cloud Deploy puede implementar tu aplicación en cualquiera de los siguientes entornos de ejecución:
Invoca la canalización de entrega para crear una versión
Después de configurar Google Cloud Deploy para que se implemente en el entorno de ejecución, puedes enviar la aplicación para que se implemente de acuerdo con la canalización de entrega que creaste.
Ejecuta el proceso habitual de integración continua (CI) y crea los artefactos implementables.
Inicia la canalización de entrega mediante una llamada a Google Cloud Deploy para crear una versión.
Ejecuta el siguiente comando desde el directorio que contiene la configuración de Skaffold:
gcloud deploy releases create RELEASE_NAME --delivery-pipeline=PIPELINE_NAME --region=REGION
Aquí:
RELEASE_NAME
es un nombre para esta versión. El nombre debe ser único entre todas las versiones de esta canalización de entrega.Puedes especificar nombres de versiones dinámicas si incluyes
'$DATE'
,'$TIME'
o ambos. Por ejemplo, si invocas este comando a las 3:07 p.m. UTC,'rel-$TIME'
se resuelve enrel-1507
.'$DATE'
y'$TIME'
deben estar entre comillas simples, y la hora es UTC en la máquina en la que invocas el comando.PIPELINE_NAME
es el nombre de la canalización de entrega que administrará la implementación de esta versión a través del progreso de los destinos. Este nombre debe coincidir con el camponame
en la definición de la canalización.REGION
es el nombre de la región en la que creas la versión, por ejemplo,us-central1
. Este campo es obligatorio.
Este comando sube un archivo comprimido que contiene tus archivos de configuración a un bucket de Cloud Storage y crea la actualización. Google Cloud Deploy también crea un lanzamiento y, luego, implementa tu imagen en el primer destino definido en la canalización de entrega.
Además de los parámetros que se muestran con este comando, puedes incluir cualquiera de las siguientes opciones:
--images=<name=path/name:$IMAGE_SHA>,<name=path/name:$IMAGE_SHA>
Una colección de reemplazos de ruta de acceso de imagen a nombre completo.
--build-artifacts=<path/file>
Una referencia a un archivo de salida de artefactos de compilación de Skaffold, que se puede pasar para representar los reemplazos de rutas de acceso completas de imágenes
Estas dos opciones son mutuamente excluyentes.
También puedes incluir una de las siguientes marcas para que Google Cloud Deploy genere un archivo skaffold.yaml
:
--from-k8s-manifest=K8S_MANIFEST
La configuración de Skaffold generada se basa en el manifiesto de Kubernetes que pasas esta marca. Si usas esta marca con las marcas
--skaffold-file
o--source
, se genera un error. Consulta Genera tuskaffold.yaml
para obtener más detalles.--from-run-manifest=RUN_MANIFEST
La configuración de Skaffold generada se basa en el servicio YAML de Cloud Run que pasas esta marca. Si usas esta marca con las marcas
--skaffold-file
o--source
, se genera un error. Consulta Genera tuskaffold.yaml
para obtener más detalles.
Estas dos opciones son mutuamente excluyentes.
Cambia el tiempo de espera de la implementación
Para las implementaciones en clústeres de destino de GKE y Anthos, hay tres tiempos de espera separados que afectan el tiempo que el sistema espera para que Kubernetes informe una implementación estable:
Cloud Build tiene un tiempo de espera de 1 hora en las operaciones que realiza Cloud Build para Google Cloud Deploy.
Puedes cambiar este tiempo de espera en la configuración del entorno de ejecución.
Skaffold tiene un tiempo de espera de la verificación de estado (
deploy.statusCheckDeadlineSeconds
), que es la cantidad de tiempo, en segundos, hasta que se estabilice la implementación.El valor predeterminado es de 600 segundos (10 minutos). Para usar este tiempo de espera,
deploy.statusCheck
debe configurarse comotrue
. De forma predeterminada, lo es. SistatusCheck
esfalse
, no hay verificación de estado, el lanzamiento se marca como exitoso después de quekubectl apply
finaliza correctamente.Para los recursos de Kubernetes de
kind: Deployment
, existeDeployment.spec.progressDeadlineSeconds
, que es la cantidad de tiempo que Kubernetes espera que el Deployment informe como estable.Este tiempo de espera solo se aplica a los recursos de
Deployment
. Estos son los dos primeros tiempos de espera que se combinan:Si no se configura
Deployment.spec.progressDeadlineSeconds
, en Kubernetes, el tiempo de espera de la verificación de estado de Skaffold es el tiempo de espera efectivo, ya sea el predeterminado o establecido de forma explícita.Si
Deployment.spec.progressDeadlineSeconds
, en Kubernetes está configurado, Skaffold ignora su propio tiempo de espera de la verificación de estado, y el plazo de progreso de Kubernetes es el tiempo de espera efectivo. Sin embargo, si el tiempo de espera de Kubernetes se establece de forma explícita en600
(10 minutos), Skaffold asume que es el valor predeterminado (no establecido) y lo ignora, y se usa el tiempo de espera de Skaffold (si está configurado).Si no se establece ninguno, el tiempo de espera efectivo es el predeterminado de Skaffold de
600
(10 minutos).
Además de los
Deployment
, otros recursos de Kubernetes pueden tener tiempos de espera, que no influyen en el tiempo de espera de estabilidad. Si hay alguno, revísalos para asegurarte de que no entren en conflicto con el tiempo de espera de estabilidad.Si se agota el tiempo de espera de Skaffold (o Cloud Build), la implementación de GKE continúa ejecutándose. Google Cloud Deploy muestra una falla, pero aún puede tener éxito o fallar en el clúster de GKE.
Para cambiar el tiempo de espera de estabilidad de la implementación, sigue estos pasos:
Asegúrate de que
deploy.statusCheck
esté configurado comotrue
enskaffold.yaml
.true
es la configuración predeterminada. Cuandotrue
, Skaffold espera que las verificaciones de estado informen una implementación estable, sujeta al valor de tiempo de espera en el paso siguiente.En
skaffold.yaml
, configurastatusCheckDeadlineSeconds
como la cantidad de segundos que deseas esperar.deploy: ... statusCheck: true statusCheckDeadlineSeconds: 600 ...
El valor predeterminado es
600
(10 minutos). Skaffold espera esta cantidad de tiempo para una implementación estable. Si se excede este tiempo antes de que la implementación sea estable, la implementación fallará.En tu manifiesto de Kubernetes, para los recursos de
kind: Deployment
, estableceDeployment.spec.progressDeadlineSeconds
en el mismo valor que estableciste parastatusCheckDeadlineSeconds
.
¿Qué sigue?
Obtén información sobre cómo implementar en GKE.
Obtén más información sobre cómo realizar implementaciones en Cloud Run.
Obtén más información sobre la implementación en Anthos.
Obtén más información sobre cómo crear tu canalización de entrega y objetivos
Obtén información sobre cómo promocionar una versión.