Incluyendo políticas como código para validar su despliegue de IBM Schematics

En este code pattern preparará un pipeline para el despliegue de recursos en la nube, utilizando IBM Schematics, IBM Continuous Delivery (Tekton), IBM Toolchain y Rego.

Cuando haya completado este code pattern, entenderá como:

  • Crear un workspace de IBM Schematics para ejecutar la creacion de recursos con Terraform.
  • Crear un Delivery Pipeline con multiples repositorios.
  • Escribir politicas mediante Rego.
  • Validación del cumplimiento de politicas con Conftest.

Diagrama de flujo del proyecyo en IBM Schematics

Flujo

Este flujo simulará la interacción de un pipeline con repositorios gestionados por diferentes roles dentro de la organización.

  • Las politicas serán gestionadas por un ingeniero de seguridad en su propio repositorio.
  • Los pipelines serán gestionados por un ingeniero devops en un repositorio que funcionará como catalogo.
  • La plantilla de Terraform será gestionada por un desarrollador o ingeniero devops en un repositorio diferente.

El flujo consiste en lo siguiente:

  1. Las plantillas de Terraform se desarrollan dentro de la rama dev, cuando se desea desplegar estas, se hace un pull request hacia la rama master.
  2. El pull request lanzará un pipeline de IBM Continuous Delivery.
  3. El pipeline clonará los repositorios de deployment y de politicas.
  4. El pipeline generará el plan de terraform de forma local y lo exportará como JSON
  5. El pipeline utilizará Conftest para validar que el plan cumpla con las políticas definidas.
  6. Si el plan cumple con las políticas, se hará un merge hacia la rama master, y se generará un commit.
  7. El commit lanzará otro pipeline de IBM Continuous Delivery.
  8. El pipeline utlizará el CLI de IBM Cloud para actualizar el workspace de IBM Schematics, Generar el plan y finalmente desplegarlo.

Arquitectura

Los recursos que va a desplegar con IBM Schematics serán los siguientes:

Diagrama de flujo de la arquitectura del proyecto completo

1 VPC.
2 Subnets.
2 Public Gateways.
1 Public Load Balancer.
1 Security Group
1 Instance group para manejar las instancias.
1 Instancia de Cloudant

Pasos

  1. Clone el repositorio
  2. Distribuya el contenido en 3 nuevos repositorios
  3. Cree un workspace de IBM Schematics
  4. Configuración del Toolchain
  5. Configure el Pipeline para los Pull Requests
  6. Configure el Pipeline para los commits
  7. Interactue con el Flujo