Administra los manifiestos en Google Cloud Deploy

En esta página, se describe cómo configurar Google Cloud Deploy para renderizar la configuración de cada destino en una canalización de entrega.

Google Cloud Deploy usa Skaffold para renderizar tus manifiestos de Kubernetes. El servicio admite la renderización de manifiestos sin procesar y herramientas de administración de manifiestos más avanzadas, como Helm, Kustomize y kpt.

El proceso de renderización tiene dos etapas:

  1. La herramienta de administración de manifiestos genera el manifiesto.

  2. Skaffold sustituye las referencias de imagen en el manifiesto por las imágenes que deseas implementar en la versión.

En esta página, se incluyen ejemplos de configuración mediante Helm y Kustomize.

Usa Skaffold para generar tu configuración

Si aún no tienes un archivo de configuración de Skaffold (skaffold.yaml), puedes usar Skaffold a fin de generar uno, según lo que haya en tu repositorio.

  1. Instala Skaffold mediante el SDK de Cloud:

    gcloud components install skaffold

  2. Ejecuta skaffold init en el repositorio que contiene tus manifiestos:

    skaffold init --skip-build

Mediante este comando, se crea un archivo skaffold.yaml en tu repositorio. El archivo hace referencia a los manifiestos en ese repositorio. Los contenidos se verían de la siguiente manera:

apiVersion: skaffold/v2beta15
kind: Config
metadata:
 name: sample-app
deploy:
 kubectl:
   manifests:
   - k8s-manifests/deployment.yaml
   - k8s-manifests/rbac.yaml
   - k8s-manifests/redis.yaml
   - k8s-manifests/service.yaml

Renderiza los manifiestos sin procesar

Los manifiestos sin renderizar son manifiestos que no se administran mediante una herramienta como Helm o Kustomize, y, por lo tanto, no necesitan ningún procesamiento previo antes de hidratarse e implementarse en un clúster.

De forma predeterminada, Google Cloud Deploy usa skaffold render para renderizar los manifiestos de Kubernetes y reemplaza los nombres de imagen sin etiquetar por los nombres de las imágenes etiquetadas de las imágenes de contenedor que implementas. Luego, cuando asciendes la versión, Google Cloud Deploy usa skaffold apply para aplicar los manifiestos e implementar las imágenes en tu clúster de Google Kubernetes Engine.

Una estrofa deploy de una configuración básica se ve de la siguiente manera:

deploy:
  kubectl:
    manifests:
      - PATH_TO_MANIFEST

Consulta la documentación de Skaffold para obtener más información sobre qué valores se pueden pasar aquí.

Renderiza mediante Helm

Puedes usar Google Cloud Deploy para renderizar tus gráficos de Helm. Para hacerlo, debes incluir los detalles del gráfico de Helm en una estrofa deploy en un perfil de Skaffold.

Cada definición tiene el siguiente aspecto:

apiVersion: skaffold/v2beta16
kind: Config
deploy:
 helm:
   releases:
     - name: RELEASE_NAME
       chartPath: PATH_TO_HELM_CHART
       artifactOverrides:
         image: IMAGE_NAME

Aquí:

RELEASE_NAME es el nombre de la instancia del gráfico de Helm para esta versión.

PATH_TO_HELM_CHART es la ruta local a un gráfico de Helm empaquetado o un directorio de gráficos de Helm sin empaquetar.

IMAGE_NAME es el nombre de la imagen de contenedor que deseas implementar.

Tu gráfico de Helm debe tener un parámetro de valor image que defina la imagen que se implementará en el gráfico.

Puedes usar opciones de configuración de Helm adicionales, como se describe en la documentación de Skaffold.

Renderiza mediante Kustomize

Puedes usar Kustomize con Google Cloud Deploy. Para hacerlo, apunta a los archivos de Kustomization desde la estrofa deploy en la configuración de tu perfil skaffold.yaml.

Debes incluir una configuración de Kustomize separada para cada destino para el que usas Kustomize, en cada profile correspondiente en tu skaffold.yaml.

Cada definición tiene el siguiente aspecto:

apiVersion: skaffold/v2beta16
kind: Config
metadata:
 name: getting-started-kustomize
deploy:
 kustomize:
   paths:
     - PATH_TO_KUSTOMIZE

Aquí:

PATH_TO_KUSTOMIZE apunta a tus archivos de Kustomization. El valor predeterminado es ["."].

Puedes usar opciones de configuración adicionales de Kustomize, como se describe en la documentación de Skaffold.

Configura diferentes manifiestos por destino

A menudo, cada destino necesita una configuración un poco diferente. Por ejemplo, es posible que tengas más réplicas en tus implementaciones de producción que en tus implementaciones de etapa de pruebas.

Puedes renderizar un conjunto diferente de manifiestos para cada destino si proporcionas cada variación como un perfil de Skaffold diferente.

Perfiles con manifiestos sin procesar

Cuando trabajas con manifiestos sin procesar, puedes apuntar Google Cloud Deploy a un archivo diferente, según el destino. Puedes configurarlo de la siguiente manera:

apiVersion: skaffold/v2beta16
kind: Config
metadata:
 name: getting-started-kustomize
profiles:
 - name: prod
   deploy:
     kubectl:
       manifests:
         - prod.yaml
 - name: staging
   deploy:
     kubectl:
       manifests:
         - staging.yaml

Perfiles con Kustomize

A continuación, se muestra un ejemplo de skaffold.yaml que tiene diferentes perfiles para la etapa de pruebas y la producción mediante Kustomize, en el que cada perfil apunta a una Kustomization diferente:

apiVersion: skaffold/v2beta16
kind: Config
profiles:
 - name: prod
   deploy:
     kustomize:
       paths:
         - environments/prod
 - name: staging
   deploy:
     kustomize:
       paths:
         - environments/staging

Perfiles a los que se hace referencia en la canalización de entrega

Estos perfiles, definidos en skaffold.yaml, se mencionan en la configuración de canalización de entrega, por destino:

serialPipeline:
 stages:
 - targetId: staging-target
   profiles:
   - staging
 - targetId: prod-target
   profiles:
   - prod

¿Qué sigue?