Gridwich vereist meerdere resources binnen en buiten Azure om veilig met elkaar te communiceren. Deze vereiste vormt continue integratie en continue levering (CI/CD) uitdagingen met Microsoft Entra-machtigingen, poorten, het maken van resources, de volgorde van de werking en de implementatie van langlopende functies. De volgende richtlijnen zijn gericht op deze uitdagingen:
- Eén buildartefact is van invloed op alle omgevingen in dezelfde pijplijn.
- Niet-gated omgevingen zijn wegwerpbaar.
- Terraform maakt declaratief idempotente omgevingen.
- Terraform brengt geen software vrij.
- Het maken van infrastructuur en softwarerelease zijn afzonderlijke fasen in de pijplijn.
- De CI/CD-pijplijn wijst geen Microsoft Entra-machtigingen toe.
- De pijplijn beschouwt alles als code.
- De pijplijn maakt gebruik van herbruikbare onderdelen die zijn gericht op de composabiliteit.
De volgende overwegingen hebben betrekking op de voorgaande principes.
Eén artefact, meerdere omgevingen
De Gridwich-pijplijn wordt geschaald naar meerdere omgevingen, maar er is slechts één artefact, dat door de pijplijn van de ene omgeving naar de volgende wordt gepromoot.
Softwarerelease versus het maken van infrastructuur
In Gridwich zijn softwarerelease en infrastructuurimplementatie twee afzonderlijke verantwoordelijkheden. Eén pijplijn verwerkt beide verantwoordelijkheden in verschillende fasen, met behulp van het volgende algemene patroon:
Software-builds > infrastructuurimplementatie softwarerelemplementatie > > softwareconfiguratie > aangepaste scriptimplementatie
Het leidende principe dat infrastructuur en softwarerelease twee verschillende verantwoordelijkheden zijn, maakt het implementeren van Event Grid-abonnementen moeilijker. Wanneer Azure een Event Grid-webhookabonnement maakt, wordt er een validatie-gebeurtenis verzonden om te controleren of het registratie-eindpunt Event Grid-gebeurtenissen accepteert. Als u deze validatiecontrole wilt doorstaan, moet de Azure-functie worden vrijgegeven en uitgevoerd voordat Terraform de Event Grid-abonnementsbronnen kan bouwen.
Er zijn twee Terraform-taken in de CI/CD-pijplijn om dit probleem op te lossen:
- Terraform 1 maakt alle resources, met uitzondering van de Azure Event Grid-abonnementen.
- Terraform 2 maakt de Event Grid-abonnementen nadat de software actief is.
Omdat Terraform momenteel niet in staat is om een specifieke module uit te sluiten, moet de Terraform 1-taak expliciet gericht zijn op alle modules behalve de Event Grid-abonnementen. Deze vereiste is mogelijk foutgevoelig en een huidig GitHub-probleem in Terraform houdt dit probleem bij.
Scripts na implementatie
De CI/CD-pijplijn voert geen bewerkingen uit waarvoor verhoogde bevoegdheden nodig zijn, maar gebruikt beheerscriptsjablonen om een set beheerscripts te genereren als pijplijnartefacten. Een beheerder met verhoogde bevoegdheden moet deze beheerdersscripts uitvoeren wanneer er een nieuwe Gridwich-omgeving wordt gemaakt. Zie Azure-beheerscripts uitvoeren voor meer informatie.
Terraform- en softwarereleases kunnen bepaalde Gridwich-bewerkingen niet voltooien, waaronder:
- Certificaten kopiëren naar Azure Key Vault
- Opslaganalyse inschakelen in Azure Storage
Het Azure CLI-script azcli-last-steps-template.yml biedt deze laatste stappen.
Alles als code en code hergebruiken
Een voordeel van de praktijk 'alles als code' is hergebruik van onderdelen.
- Voor Terraform is Gridwich sterk afhankelijk van Terraform-modules om de composabiliteit en herbruikbaarheid te verbeteren.
- Voor YAML voor Azure Pipelines maakt Gridwich gebruik van pijplijnsjablonen.