Editar

Share via


Canalización de CI/CD de Gridwich

Microsoft Entra ID
Azure Event Grid
Azure Functions
Azure Key Vault
Azure Pipelines

Gridwich precisa que varios recursos, tanto dentro como fuera de Azure, se comuniquen entre sí de forma segura. Este requisito plantea desafíos de integración continua y entrega continua (CI/CD) con permisos, puertas, creación de recursos, orden de operación e implementación de funciones de larga duración de Microsoft Entra. De estos desafíos se ocupan los siguientes principios:

  • Un solo artefacto de compilación afecta a todos los entornos de la misma canalización.
  • Los entornos no validados son descartables.
  • Terraform crea entornos idempotentes mediante declaración.
  • Terraform no lanza software.
  • La creación de infraestructuras y el lanzamiento de software son fases distintas de la canalización.
  • La canalización de CI/CD no asigna permisos de Microsoft Entra.
  • La canalización considera que todo es código.
  • La canalización utiliza componentes reutilizables centrados en la capacidad de composición.

Las siguientes consideraciones se refieren a los principios anteriores.

Un solo artefacto, varios entornos

La canalización de Gridwich se escala a varios entornos, pero solo hay un artefacto, que la canalización promueve de un entorno a otro.

Lanzamiento de software frente a creación de infraestructura

En Gridwich, el lanzamiento de software y la implementación de la infraestructura son dos responsabilidades independientes. Una sola canalización controla ambas responsabilidades en varias fases, según el siguiente patrón general:

Compilaciones de software > Implementación de la infraestructura > Lanzamiento de software > Configuración de software > Implementación de scripts personalizados

El principio que determina que la infraestructura y el lanzamiento de software son dos responsabilidades distintas hace que la implementación de suscripciones de Event Grid resulte más difícil. Cuando Azure crea una suscripción de webhook de Event Grid, envía un evento de validación para comprobar si el punto de conexión de registro acepta eventos de Event Grid. Para superar esta comprobación de validación, la función de Azure debe haberse lanzado y estar en ejecución antes de que Terraform pueda compilar los recursos de la suscripción de Event Grid.

Para solucionar este problema, hay dos trabajos de Terraform en la canalización de CI/CD:

Diagram showing the Terraform sandwich jobs.

  • Terraform 1 crea todos los recursos excepto las suscripciones de Azure Event Grid.
  • Terraform 2 crea las suscripciones de Event Grid después de que el software esté en funcionamiento.

Como actualmente Terraform no tiene la capacidad de excluir un módulo específico, el trabajo Terraform 1 debe tener como destino explícitamente todos los módulos excepto las suscripciones de Event Grid. Este requisito puede favorecer los errores; hay una incidencia sobre Terraform en GitHub que realiza un seguimiento de este problema.

Scripts posteriores a la implementación

La canalización de CI/CD no realiza operaciones que necesiten privilegios elevados, pero usa plantillas de script de administración para generar un conjunto de estos scripts como artefactos de canalización. Un administrador con privilegios elevados debe ejecutar estos scripts de administración cada vez que se crea un nuevo entorno de Gridwich. Para obtener más información, consulte Ejecución de scripts de administración de Azure.

Terraform y los lanzamientos de software no pueden completar ciertas operaciones de Gridwich, como las siguientes:

  • Copia de certificados en Azure Key Vault
  • Habilitación del análisis de almacenamiento en Azure Storage

El script azcli-last-steps-template.yml de la CLI de Azure proporciona estos últimos pasos.

Todo es código y la reutilización de código

Una ventaja de la práctica "todo es código" es la reutilización de componentes.

Pasos siguientes