Validar los parámetros de configuración

En este instructivo, se muestra cómo validar las configuraciones con Cloud Build cuando se usan 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 en la configuración de tu canalización de CI/CD y, también, verificar la validez de tus configuraciones ejecutando el 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 la configuración de tu repositorio.
  • Crea un activador de Cloud Build para que se verifiquen tus configuraciones cada vez que haya 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 Google Cloud nuevos cumplan con los requisitos 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. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Make sure that billing is enabled for your Google Cloud project.

  4. Enable the Cloud Build API.

    Enable the API

  5. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  6. Make sure that billing is enabled for your Google Cloud project.

  7. Enable the Cloud Build API.

    Enable the API

  8. Crea un clúster de GKE Enterprise que cumpla con los requisitos del Sincronizador de configuración o accede a uno. Para obtener detalles sobre cómo crear un clúster de este tipo, consulta Comienza a usar el Sincronizador de configuración.
  9. 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 el rol 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
    

    Console

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

      Ve a la página IAM

    2. En la columna miembro, 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 otra función.

    5. En la lista Seleccionar un rol, selecciona 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 guárdalo 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 el clúster.
    • CLUSTER_NAME: Es el nombre de tu clúster.
    • POLICY_DIR: 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 para autenticarte 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 de 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 "Comenzó 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.

    Realiza una limpieza

    Borra el proyecto

      Delete a Google Cloud project:

      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?