Administrar manifiestos en Cloud Deploy

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

Cloud Deploy usa Skaffold para renderizar tus recursos de Kubernetes manifiestos. 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 la 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 con Google Cloud CLI:

    gcloud components install skaffold

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

    skaffold init --skip-build

Este comando crea un archivo skaffold.yaml en tu repositorio. Ese archivo hace referencia a los manifiestos de ese repositorio. El contenido se ve de la siguiente manera:

apiVersion: skaffold/v4beta7
kind: Config
metadata:
  name: sample-app
manifests:
  rawYaml:
    - 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, Cloud Deploy usa skaffold render para renderizar tus manifiestos de Kubernetes, reemplazando los nombres de imágenes sin etiquetar con el los nombres de las imágenes etiquetadas de las imágenes de contenedor que estás implementando. Luego, cuando promover el lanzamiento, Cloud Deploy usa skaffold apply para aplicar los manifiestos e implementar las imágenes en tu instancia de Google Kubernetes Engine clúster.

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

manifests:
  rawYaml:
    - 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 Cloud Deploy para renderizar tu Helm gráficos. Para ello, debes incluir los detalles del gráfico de Helm en una estrofa deploy en una Perfil de Skaffold.

Cada una de esas definiciones se ve así:

apiVersion: skaffold/v4beta7
kind: Config
manifests:
  helm:
    releases:
      - name: RELEASE_NAME
        chartPath: PATH_TO_HELM_CHART

Aquí:

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

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

Puedes usar opciones de configuración adicionales de Helm, como se describe en Documentación de Skaffold

Renderiza mediante Kustomize

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

Debes incluir una configuración de Kustomize distinta para cada destino con Kustomize, en cada profile correspondiente en tu skaffold.yaml.

Cada una de esas definiciones se ve así:

apiVersion: skaffold/v4beta7
kind: Config
manifests:
  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 el Documentación de Skaffold

Cómo configurar manifiestos diferentes por destino

A menudo, cada destino necesita una configuración ligeramente diferente. Por ejemplo: es posible que tengas más réplicas en las implementaciones de producción que en las de la etapa de pruebas de Google Cloud.

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 Cloud Deploy a un un archivo diferente, según el objetivo. Podrías configurarlo de la siguiente manera:

apiVersion: skaffold/v4beta7
kind: Config
profiles:
  - name: prod
    manifests:
      rawYaml:
        - prod.yaml
  - name: staging
    manifests:
      rawYaml:
        - 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/v4beta7
kind: Config
profiles:
  - name: prod
    manifests:
      kustomize:
        paths:
          - environments/prod
  - name: staging
    manifests:
      kustomize:
        paths:
          - environments/staging

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

Se hace referencia a estos perfiles, definidos en skaffold.yaml, en la publicación configuración de la canalización, por destino:

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

¿Qué sigue?