Validar los parámetros de configuración
En esta página, se muestra cómo validar las configuraciones con Cloud Build cuando se usan clústeres de 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 mediante la ejecución del comando nomos vet
.
Antes de comenzar
Para seguir esta guía, primero debes completar la Guía de inicio rápido del Sincronizador de configuración.
Configura Cloud Build
Habilita la API de Cloud Build
gcloud
Para habilitar la API de Cloud Build, ejecuta el siguiente comando:
gcloud services enable cloudbuild.googleapis.com
Console
Otorga permiso a la cuenta de servicio de Cloud Build para acceder a tu clúster de GKE
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
Console
Abre la página IAM en la consola.
En la columna miembro, busque la cuenta de servicio de Cloud Build:
[PROJECT_NUMBER]@cloudbuild.gserviceaccount.com
Haz clic en el ícono de lápiz en esa fila.
Haz clic en Agregar otra función, selecciona Desarrollador de Kubernetes Engine 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
ZONE
es la zona en que se ejecuta el clúster, CLUSTER_NAME
es el nombre del clúster y POLICY_DIR
es la ruta dentro del repositorio de git que representa el nivel superior del repositorio para sincronizar.
Esta configuración consta de tres pasos:
- Ejecuta
kubectl config current-context
para generar el archivo kubeconfig necesario a fin de autenticar en el clúster de GKEmy-cluster
. El usuario raíz genera este archivo con permisos restringidos. - Ejecuta
chmod 444 /kube/config
para que este archivo sea legible en el siguiente paso. - Ejecuta
nomos vet
en el repositorio de Git, que se clona automáticamente en/workspace
. Si usas un repositorio no estructurado, ejecutanomos 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 Cloud Source Repo. Usa el archivo de configuración de Cloud Build del paso anterior:
Abre la página Activadores en la consola.
Haz clic en Conectar repositorio.
Selecciona GitHub (duplicado) y, luego, haz clic en Continuar.
Selecciona tu repositorio y haz clic en Conectar repositorio.
Haz clic en Agregar activador.
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 Haz clic en Crear para guardar el activador de compilación.
Prueba el activador de compilación
Para probar la configuración, ejecuta el activador manualmente.
Abre la página Activadores en la consola.
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 MOSTRAR”.
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.
Por ejemplo, actualiza la configuración de Cloud Build en tu repositorio con el siguiente archivo. Observa la sangría no válida en 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.
¿Qué sigue?
- Obtén información sobre Cloud Build.
- Detener temporalmente la sincronización de configuraciones