En esta página, se explica cómo implementar una aplicación en Kubernetes con Cloud Build.
Cloud Build proporciona un compilador de gke-deploy
que te permite implementar una aplicación en contenedores en un clúster de GKE.
gke-deploy
es un wrapper en torno a kubectl
, la interfaz de línea de comandos para Kubernetes. Aplica las prácticas recomendadas de Google para implementar aplicaciones en Kubernetes de la siguiente manera:
Actualiza el archivo de recursos de Kubernetes de la aplicación para usar el resumen de la imagen del contenedor en lugar de una etiqueta
Agrega etiquetas recomendadas al archivo de recursos de Kubernetes
Recupera las credenciales de los clústeres de GKE en los que estés implementando la imagen.
Esperando que el archivo de recursos de Kubernetes que se envió esté listo
Si deseas implementar tus aplicaciones directamente mediante kubectl
y no necesitas funcionalidad adicional, Cloud Build también proporciona un compilador de kubectl
que puedes usar para implementar tu aplicación en un clúster de GKE.
Antes de comenzar
Crea un Clúster de GKE, si todavía no tienes uno.
Ten tu aplicación en contenedores en forma de código fuente y un
Dockerfile
listo.Necesitarás al menos un archivo de recursos de Kubernetes que describa los recursos de Kubernetes usados para ejecutar tu aplicación. Si no tienes archivos de recursos de Kubernetes, sigue estos pasos a fin de generar uno para tu aplicación:
- Abre la página Clústeres de Kubernetes Engine en Google Cloud Console.
- En la página de clústeres de Kubernetes Engine, haz clic en Implementar.
- Selecciona tu contenedor y haz clic en Continuar. Verás la sección Configuración.
- En YAML de configuración, haz clic en Ver YAML para obtener un ejemplo del archivo de configuración de Kubernetes.
Permisos de IAM obligatorios
Agrega la función de programador de Google Kubernetes Engine a tu cuenta:
Abre la página Configuración (Settings) de Cloud Build:
Abrir la página Configuración (Settings) de Cloud Build
Verás la página Permisos de cuenta de servicio (Service account permissions):
Configura el estado de la función Programador de Kubernetes Engine (Kubernetes Engine Developer) como Habilitado (Enabled).
Implementa una imagen de contenedor compilada previamente
Para implementar una versión específica de tu aplicación con gke-deploy
, sigue estos pasos:
Asegúrate de que el archivo de configuración de Kubernetes haga referencia a la etiqueta de imagen del contenedor o al resumen correctos.
Agrega el paso
gke-deploy
en tu archivo de configuración de compilación:YAML
steps: ... # deploy container image to GKE - name: "gcr.io/cloud-builders/gke-deploy" args: - run - --filename=kubernetes-resource-file - --location=location - --cluster=cluster
JSON
{ "steps": [ { "name": "gcr.io/cloud-builders/gke-deploy", "args": [ "run", "--filename=kubernetes-resource-file", "--location=location", "--cluster=cluster" ] } ] }
Aquí:
- kubernetes-resource-file es la ruta de acceso del archivo de recursos de Kubernetes o la ruta del directorio que contiene tus archivos de recursos de Kubernetes.
- cluster es el nombre del clúster de GKE en el que se implementará la aplicación.
- location es la región o zona del clúster
Comienza la compilación con el siguiente comando:
gcloud builds submit --project=project-id --config build-config
Aquí:
- project-id es el ID del proyecto.
- build-config es el nombre de tu archivo de configuración de compilación.
Compila e implementa una nueva imagen de contenedor
Para compilar una nueva imagen de contenedor y, luego, implementarla, haz lo siguiente:
Actualiza el archivo de configuración de Kubernetes con la nueva imagen de contenedor mediante el atributo
--image
:YAML
steps: # build the container image - name: "gcr.io/cloud-builders/docker" args: ["build", "-t", "gcr.io/project-id/image:tag", "."] # push container image - name: "gcr.io/cloud-builders/docker" args: ["push", "gcr.io/project-id/image:tag"] # deploy container image to GKE - name: "gcr.io/cloud-builders/gke-deploy" args: - run - --filename=kubernetes-resource-file - --image=gcr.io/project-id/image:tag - --location=location - --cluster=cluster
JSON
{ "steps": [ { "name": "gcr.io/cloud-builders/docker", "args": [ "build", "-t", "gcr.io/project-id/image:tag", "." ] }, { "name": "gcr.io/cloud-builders/docker", "args": [ "push", "gcr.io/project-id/image:tag" ] }, { "name": "gcr.io/cloud-builders/gke-deploy", "args": [ "run", "--filename=kubernetes-resource-file", "--image=gcr.io/project-id/image:tag", "--location=location", "--cluster=cluster" ] } ] }
Aquí:
- project-id es el ID del proyecto.
- image es el nombre deseado de la imagen de contenedor, suele ser el nombre de la aplicación.
- tag es la etiqueta de la imagen del contenedor.
- Si compilas una imagen de contenedor nueva con cada confirmación, se recomienda usar el SHA corto de confirmación como una etiqueta. Cloud Build lo pone a disposición como una sustitución predeterminada,
$SHORT_SHA
.
- Si compilas una imagen de contenedor nueva con cada confirmación, se recomienda usar el SHA corto de confirmación como una etiqueta. Cloud Build lo pone a disposición como una sustitución predeterminada,
- kubernetes-resource-file es la ruta de acceso del archivo de recursos de Kubernetes o la ruta del directorio que contiene tus archivos de recursos de Kubernetes.
- cluster es el nombre del clúster de GKE en el que se implementará la aplicación.
- location es la región o zona en la que se implementará el clúster.
Comienza la compilación con el siguiente comando:
gcloud builds submit --project=project-id --config build-config
Aquí:
- project-id es el ID del proyecto.
- build-config es el nombre de tu archivo de configuración de compilación.
Automatiza implementaciones
Puedes automatizar la implementación de tu aplicación en GKE si creas un activador en Cloud Build. Puedes configurar activadores para compilar y, luego, implementar imágenes cada vez que envíes cambios a tu código.
Para crear un activador de compilación, sigue estos pasos:
Abre la página Activadores en Google Cloud Console:
Selecciona el proyecto en el menú desplegable del selector de proyectos, que se ubica en la parte superior de la página.
Haz clic en Abrir.
Haz clic en Crear activador.
En la página Crear activador, ingresa la siguiente configuración:
Ingresa un nombre para el activador.
Selecciona el evento del repositorio para iniciar el activador.
Selecciona el repositorio que contiene el código fuente y el archivo de configuración de compilación.
Especifica la regex de la rama o el nombre de la etiqueta que iniciará el activador.
Elige una Configuración de compilación para tu activador.
Si eliges un archivo de configuración de Cloud Build, puedes especificar Variables de sustitución cuando proporciones un nombre de variable y el valor que deseas asociar con esa variable. En el siguiente ejemplo, la variable de sustitución
_CLOUDSDK_CONTAINER_CLUSTER
definida por el usuario especifica el clúster en el que se implementará, y la variable de sustitución definida_CLOUDSDK_COMPUTE_ZONE
por el usuario especifica su ubicación. Si deseas implementar en un clúster diferente, puedes usar la misma configuración de compilación y solo tienes que cambiar los valores de las variables de sustitución con el siguiente comando:YAML
steps: ... # deploy container image to GKE - name: "gcr.io/cloud-builders/gke-deploy" args: - run - --filename=kubernetes-resource-file - --image=gcr.io/project-id/image:tag - --location=${_CLOUDSDK_COMPUTE_ZONE} - --cluster=${_CLOUDSDK_CONTAINER_CLUSTER}
JSON
{ "steps": [ { "name": "gcr.io/cloud-builders/gke-deploy", "args": [ "run", "--filename=kubernetes-resource-file", "--image=gcr.io/project-id/image:tag", "--location=${_CLOUDSDK_COMPUTE_ZONE}", "--cluster=${_CLOUDSDK_CONTAINER_CLUSTER}" ] } ] }
Aquí:
- kubernetes-resource-file es la ruta de acceso al archivo de configuración de Kubernetes o la ruta de acceso al directorio que contiene tus archivos de configuración de Kubernetes.
- project-id es el ID del proyecto.
- image es el nombre deseado de la imagen de contenedor, suele ser el nombre de la aplicación.
- tag es la etiqueta de la imagen de contenedor.
Si quieres obtener más información sobre cómo definir sustituciones para los archivos de configuración de compilación, consulta Usa sustituciones definidas por el usuario.
Haz clic en Crear para guardar el activador de compilación.
Cuando envíes código a tu repositorio, Cloud Build activará una compilación de manera automática. Para obtener más información sobre los activadores de compilación, consulta Crea y administra activadores de compilación.
¿Qué sigue?
- Obtén más información sobre cómo ejecutar compilaciones de forma manual.
- Obtén información para configurar implementaciones que requieren una invocación manual mediante la creación de activadores manuales.
- Aprende a crear una canalización de CI/CD al estilo de GitOps que se implementa en GKE con Cloud Build.
- Obtén más información sobre las opciones de
gke-deploy
adicionales. - Obtén información sobre compiladoras de Cloud adicionales.