Validar los parámetros de configuración

En este instructivo, se muestra cómo validar los archivos de configuración con Cloud Build cuando se usan los clústeres de la edición Enterprise de Google Kubernetes Engine (GKE). La misma configuración funciona en cualquier otro sistema de IC/EC basado en contenedores, como CircleCI, con cambios mínimos.

Recomendamos validar cualquier cambio de configuración en tu canalización de CI/CD, además de verificar la validez de los archivos de configuración mediante la ejecución del comando nomos vet.

Objetivos

  • Crea un archivo de configuración de Cloud Build que le indique al Sincronizador de configuración que use nomos vet en los archivos de configuración de tu repositorio.
  • Crea un activador de Cloud Build para que se verifiquen tus parámetros de configuración cada vez que se produzca un cambio en la rama de desarrollo.

Costos

En este documento, usarás los siguientes componentes facturables de Google Cloud:

Para generar una estimación de costos en función del uso previsto, usa la calculadora de precios. Es posible que los usuarios nuevos de Google Cloud califiquen para obtener una prueba gratuita.

Cuando finalices las tareas que se describen en este documento, puedes borrar los recursos que creaste para evitar que continúe la facturación. Para obtener más información, consulta Cómo realizar una limpieza.

Antes de comenzar

  1. Accede a tu cuenta de Google Cloud. Si eres nuevo en Google Cloud, crea una cuenta para evaluar el rendimiento de nuestros productos en situaciones reales. Los clientes nuevos también obtienen $300 en créditos gratuitos para ejecutar, probar y, además, implementar cargas de trabajo.
  2. En la página del selector de proyectos de la consola de Google Cloud, selecciona o crea un proyecto de Google Cloud.

    Ir al selector de proyectos

  3. Asegúrate de que la facturación esté habilitada para tu proyecto de Google Cloud.

  4. Habilita la API de Cloud Build.

    Habilita la API

  5. En la página del selector de proyectos de la consola de Google Cloud, selecciona o crea un proyecto de Google Cloud.

    Ir al selector de proyectos

  6. Asegúrate de que la facturación esté habilitada para tu proyecto de Google Cloud.

  7. Habilita la API de Cloud Build.

    Habilita la API

  8. Crear o tener acceso a un clúster de GKE Enterprise que cumpla con los requisitos del Sincronizador de configuración. Para obtener detalles sobre cómo crear un clúster de este tipo, consulta Comienza a usar el Sincronizador de configuración.

Otorga permiso a la cuenta de servicio de Cloud Build

Otorga permiso a la cuenta de servicio de Cloud Build para acceder a tu clúster de GKE Enterprise.

gcloud

Para agregar la función Kubernetes Engine Developer a la cuenta de servicio de Cloud Build, ejecuta el siguiente comando:

PROJECT_ID=$(gcloud config get-value project)
PROJECT_NUM=$(gcloud projects list --filter="$PROJECT_ID" --format="value(PROJECT_NUMBER)")
gcloud projects add-iam-policy-binding $PROJECT_ID \
    --member=serviceAccount:$PROJECT_NUM@cloudbuild.gserviceaccount.com \
    --role=roles/container.developer

Consola

  1. Abre la página de IAM en la consola de Google Cloud.

    Ve a la página IAM

  2. En la columna member, busca la fila con la cuenta de servicio de Cloud Build:

    PROJECT_NUMBER@cloudbuild.gserviceaccount.com
    
  3. En esa fila, haz clic en Editar principal.

  4. Haz clic en Agregar otro rol.

  5. En la lista Selecciona un rol, elige Kubernetes Engine Developer y, luego, haz clic en Guardar.

Crea una configuración de Cloud Build

Crea un archivo de configuración de Cloud Build y almacénalo en el directorio raíz del repositorio que contiene tus archivos de configuración (por ejemplo, my-repo/cloudbuild.yaml).

steps:
- name: 'gcr.io/cloud-builders/kubectl'
  args: ['config', 'current-context']
  volumes:
  - name: 'kube'
    path: '/kube'
  env:
  - 'KUBECONFIG=/kube/config'
  - 'CLOUDSDK_COMPUTE_ZONE=ZONE'
  - 'CLOUDSDK_CONTAINER_CLUSTER=CLUSTER_NAME'
  - 'CLOUDSDK_CONTAINER_USE_APPLICATION_DEFAULT_CREDENTIALS=true'
- name: 'bash'
  args: ['chmod', '444', '/kube/config']
  volumes:
  - name: 'kube'
    path: '/kube'
- name: 'gcr.io/config-management-release/nomos:stable'
  args: ['nomos', 'vet', '--path', '/workspace/POLICY_DIR']
  volumes:
  - name: 'kube'
    path: '/kube'
  env:
  - 'KUBECONFIG=/kube/config'
  timeout: 30s

Reemplaza lo siguiente:

  • ZONE: Es la zona en la que se ejecuta tu clúster.
  • CLUSTER_NAME: Es el nombre de tu clúster.
  • POLICY_DIR: Es la ruta de acceso dentro del repositorio de Git que representa el nivel superior del repositorio que se sincronizará.

Esta configuración consta de tres pasos:

  1. Ejecuta kubectl config current-context para generar el archivo kubeconfig necesario a fin de autenticar en el clúster de GKE my-cluster. El usuario raíz genera este archivo con permisos restringidos.
  2. Ejecuta chmod 444 /kube/config para que este archivo sea legible en el siguiente paso.
  3. Ejecuta nomos vet en el repositorio de Git, que se clona automáticamente en /workspace. Si usas un repositorio no estructurado, ejecuta nomos vet --source-format=unstructured en su lugar.

Crea un activador de compilación

En el siguiente ejemplo, se crea un activador que se ejecuta para cada confirmación en la rama principal de un repositorio de Cloud Source Repositories.

  1. Abre la página Activadores en la consola de Google Cloud.

    Ir a la página Activadores

  2. Haz clic en Conectar repositorio.

  3. Selecciona GitHub (duplicado) y, luego, haz clic en Continuar.

  4. Selecciona tu repositorio y haz clic en Conectar repositorio.

  5. Haz clic en Agregar activador.

  6. Ingresa o selecciona la entrada correspondiente en cada campo que se describe en la siguiente tabla:

    Campo Entrada
    Evento Enviar a una rama
    Rama ^master$
    Configuración Archivo de configuración de Cloud Build (YAML o JSON)
    Ubicación del archivo de configuración de Cloud Build /cloudbuild.yaml
  7. Haz clic en Crear para guardar el activador de compilación.

Prueba el activador de compilación

Ejecuta el activador para probar la configuración de forma manual:

  1. Abre la página Activadores en la consola de Google Cloud.

    Ir a la página Activadores

  2. Busca el activador que creaste y, a continuación, haz clic en Ejecutar activador.

    Aparecerá el mensaje “Se inició la compilación en la rama principal”.

  3. Haz clic en Mostrar.

    Los pasos de Cloud Build aparecen en verde si están configurados correctamente.

Configuraciones de Cloud Build no válidas

No se puede ejecutar un activador si el archivo de configuración de Cloud Build no es válido.

Para probar esto, actualiza la configuración de Cloud Build en tu repositorio con el siguiente archivo. Observa la sangría no válida en la línea 6:

steps:
- name: 'gcr.io/cloud-builders/kubectl'
  args: ['config', 'current-context']
  volumes:
  - name: 'kube'
  path: '/kube'
  env:
  - 'KUBECONFIG=/kube/config'
  - 'CLOUDSDK_COMPUTE_ZONE=ZONE'
  - 'CLOUDSDK_CONTAINER_CLUSTER=CLUSTER_NAME'
  - 'CLOUDSDK_CONTAINER_USE_APPLICATION_DEFAULT_CREDENTIALS=true'
- name: 'bash'
  args: ['chmod', '444', '/kube/config']
  volumes:
  - name: 'kube'
    path: '/kube'
- name: 'gcr.io/nomos-release/nomos:stable'
  args: ['nomos', 'vet', '--path', '/workspace/POLICY_DIR']
  volumes:
  - name: 'kube'
    path: '/kube'
  env:
  - 'KUBECONFIG=/kube/config'
  timeout: 30s

Si vuelves a ejecutar el activador de forma manual, recibes el siguiente mensaje de error, porque path: en la línea 6 no tiene la sangría correcta:

Failed to trigger build: failed unmarshalling build config cloudbuild.yaml:
unknown field "path" in cloudbuild_go_proto.BuildStep.

Para corregir esta configuración, aplica sangría en path:, en la línea 6, al mismo nivel que en name:, en la línea 5. Para obtener más información sobre la estructura de un archivo de configuración de Cloud Build, consulta Crea una configuración básica de Cloud Build.

Limpia

Borra el proyecto

    Borra un proyecto de Google Cloud:

    gcloud projects delete PROJECT_ID

Borra los recursos individuales

Para borrar los recursos individuales, completa los siguientes pasos:

  1. Borra el archivo de configuración de Cloud Build.
  2. Borra el activador de Cloud Build que creaste.
  3. Borra el clúster que usaste para este instructivo.

¿Qué sigue?