Pipeline CI/CD di Gridwich

Microsoft Entra ID
Griglia di eventi di Azure
Funzioni di Azure
Insieme di credenziali chiave di Azure
Azure Pipelines

Gridwich richiede più risorse all'interno e all'esterno di Azure per comunicare tra loro in modo sicuro. Questo requisito pone problemi di integrazione continua e recapito continuo (CI/CD) con le autorizzazioni, i gate, la creazione di risorse, l'ordine di funzionamento e la distribuzione di funzioni a esecuzione prolungata. I principi guida seguenti affrontano queste sfide:

  • Un singolo artefatto di compilazione influisce su tutti gli ambienti nella stessa pipeline.
  • Gli ambienti non gestiti sono eliminabili.
  • Terraform crea in modo dichiarativo ambienti idempotenti.
  • Terraform non rilascia software.
  • La creazione dell'infrastruttura e la versione software sono fasi distinte nella pipeline.
  • La pipeline CI/CD non assegna le autorizzazioni di Microsoft Entra.
  • La pipeline considera tutto come codice.
  • La pipeline usa componenti riutilizzabili incentrati sulla componibilità.

Le considerazioni seguenti riguardano i principi precedenti.

Singolo artefatto, più ambienti

La pipeline di Gridwich viene ridimensionata in più ambienti, ma è presente un solo artefatto, che la pipeline promuove da un ambiente all'altro.

Rilascio software e creazione dell'infrastruttura

In Gridwich, la distribuzione del software e dell'infrastruttura sono due responsabilità separate. Una singola pipeline gestisce entrambe le responsabilità in varie fasi, usando il modello generale seguente:

> Distribuzione di software Distribuzione > dell'infrastruttura Distribuzione software > Distribuzione software Distribuzione > script personalizzati

Il principio guida che l'infrastruttura e il rilascio software sono due responsabilità distinte rende più difficile distribuire le sottoscrizioni di Griglia di eventi. Quando Azure crea una sottoscrizione webhook di Griglia di eventi, invia un evento di convalida per verificare se l'endpoint di registrazione accetta gli eventi di Griglia di eventi. Per superare questo controllo di convalida, la funzione di Azure deve essere rilasciata ed eseguita prima che Terraform possa compilare le risorse della sottoscrizione di Griglia di eventi.

Per risolvere questo problema, nella pipeline CI/CD sono presenti due processi Terraform:

Diagram showing the Terraform sandwich jobs.

  • Terraform 1 crea tutte le risorse ad eccezione delle sottoscrizioni Griglia di eventi di Azure.
  • Terraform 2 crea le sottoscrizioni di Griglia di eventi dopo che il software è operativo.

Poiché Terraform attualmente non ha la possibilità di escludere un modulo specifico, il processo Terraform 1 deve avere come destinazione esplicita tutti i moduli ad eccezione delle sottoscrizioni di Griglia di eventi. Questo requisito è potenzialmente soggetto a errori e un problema di GitHub corrente in Terraform tiene traccia di questo problema.

Script post-distribuzione

La pipeline CI/CD non esegue operazioni che richiedono privilegi elevati, ma usa modelli di script di amministrazione per generare un set di script di amministrazione come artefatti della pipeline. Un amministratore con privilegi elevati deve eseguire questi script di amministratore ogni volta che viene creato un nuovo ambiente Gridwich. Per altre informazioni, vedere Eseguire script di amministrazione di Azure.

Le versioni di Terraform e software non possono completare determinate operazioni di Gridwich, tra cui:

  • Copia dei certificati in Azure Key Vault
  • Abilitazione dell'analisi di archiviazione in Archiviazione di Azure

Lo script dell'interfaccia della riga di comando di Azure azcli-last-steps-template.yml fornisce questi ultimi passaggi.

Tutto come codice e riutilizzo del codice

Uno dei vantaggi della pratica "tutto come codice" è il riutilizzo dei componenti.

  • Per Terraform, Gridwich si basa principalmente sui moduli Terraform per migliorare la componibilità e la riutilizzabilità.
  • Per Azure Pipelines YAML, Gridwich usa modelli di pipeline.

Passaggi successivi