Redigera

Dela via


Gridwich CI/CD-pipeline

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

Gridwich kräver flera resurser inom och utanför Azure för att kunna kommunicera säkert med varandra. Det här kravet innebär utmaningar för kontinuerlig integrering och kontinuerlig leverans (CI/CD) med Microsoft Entra-behörigheter, portar, resursskapande, åtgärdsordning och tidskrävande funktionsdistribution. Följande vägledande principer tar itu med dessa utmaningar:

  • En enskild byggartefakt påverkar alla miljöer i samma pipeline.
  • Icke-gated miljöer är disponibla.
  • Terraform skapar deklarativt idempotenta miljöer.
  • Terraform släpper inte programvara.
  • Skapande av infrastruktur och programvaruversion är distinkta steg i pipelinen.
  • CI/CD-pipelinen tilldelar inte Microsoft Entra-behörigheter.
  • Pipelinen betraktar allt som kod.
  • Pipelinen använder återanvändbara komponenter som fokuserar på sammansättning.

Följande överväganden gäller ovanstående principer.

Enskild artefakt, flera miljöer

Gridwich-pipelinen skalas till flera miljöer, men det finns bara en artefakt som pipelinen befordrar från en miljö till en annan.

Programvaruversion jämfört med skapande av infrastruktur

I Gridwich är programvarulansering och infrastrukturdistribution två separata ansvarsområden. En enda pipeline hanterar båda ansvarsområdena i olika steg med hjälp av följande allmänna mönster:

Programvaruversioner > Infrastrukturdistribution > Programvaruversion > Programvarukonfiguration > Anpassad skriptdistribution

Den vägledande principen att infrastruktur och programvaruversion är två olika ansvarsområden gör det svårare att distribuera Event Grid-prenumerationer. När Azure skapar en Event Grid webhook-prenumeration skickar den en valideringshändelse för att kontrollera om den registrerande slutpunkten accepterar Event Grid-händelser. För att klara verifieringskontrollen måste Azure-funktionen släppas och köras innan Terraform kan skapa Event Grid-prenumerationsresurserna.

För att lösa det här problemet finns det två Terraform-jobb i CI/CD-pipelinen:

Diagram showing the Terraform sandwich jobs.

  • Terraform 1 skapar alla resurser förutom Azure Event Grid-prenumerationerna.
  • Terraform 2 skapar Event Grid-prenumerationerna när programvaran är igång.

Eftersom Terraform för närvarande saknar möjligheten att exkludera en specifik modul måste Terraform 1-jobbet uttryckligen rikta in sig på alla moduler utom Event Grid-prenumerationerna. Det här kravet är potentiellt felbenäget och ett aktuellt GitHub-problem på Terraform spårar det här problemet.

Skript efter distribution

CI/CD-pipelinen utför inte åtgärder som behöver utökade privilegier, men använder administratörsskriptmallar för att generera en uppsättning administratörsskript som pipelineartefakter. En administratör med förhöjd behörighet måste köra dessa administratörsskript när en ny Gridwich-miljö skapas. Mer information finns i Köra Azure-administratörsskript.

Terraform- och programvaruversioner kan inte slutföra vissa Gridwich-åtgärder, inklusive:

  • Kopiera certifikat till Azure Key Vault
  • Aktivera lagringsanalys i Azure Storage

Azure CLI-skriptet azcli-last-steps-template.yml innehåller de här sista stegen.

Allt som kod och återanvändning av kod

En fördel med metoden "allt som kod" är återanvändning av komponenter.

Nästa steg