Gridwich requiert plusieurs ressources dans et en dehors d’Azure pour communiquer entre elles en toute sécurité. Cette exigence pose des problèmes d’intégration continue et de livraison continue (CI/CD) avec les autorisations Microsoft Entra, les barrières, la création de ressources, l’ordre de fonctionnement et le déploiement de fonctions de longue durée. Les principes de guidage suivants répondent à ces défis :
- Un seul artefact de build affecte tous les environnements dans le même pipeline.
- Les environnements non contrôlés sont jetables.
- Terraform crée de manière déclarative des environnements idempotents.
- Terraform ne met pas le logiciel en production.
- La création d’infrastructure et la mise en production de logiciel sont des étapes distinctes dans le pipeline.
- Le pipeline CI/CD n’affecte pas les autorisations Microsoft Entra.
- Le pipeline considère tout comme du code.
- Le pipeline utilise des composants réutilisables qui se concentrent sur la composabilité.
Les considérations ci-après sont liées aux principes précédents.
Artefact unique, environnements multiples
Le pipeline Gridwich s’adapte à plusieurs environnements, mais il n’existe qu’un artefact, que le pipeline promeut d’un environnement à l’autre.
Mise en place de logiciels et création d’infrastructure
Dans Gridwich, la version de logiciel et le déploiement d’infrastructure sont deux responsabilités distinctes. Un seul pipeline gère les deux responsabilités à différentes étapes, en utilisant le modèle général suivant :
Builds logicielles > Déploiement d’infrastructure > Version logicielle > Configuration logicielle > Déploiement de script personnalisé
Le principe de la mise en place d’une infrastructure et d’un logiciel à deux responsabilités distinctes complique le déploiement des abonnements Event Grid. Quand Azure crée un abonnement de webhook Event Grid, il envoie un événement de validation pour vérifier si le point de terminaison d’inscription accepte les événements Event Grid. Pour réussir ce contrôle de validation, la fonction Azure doit être mise en production et en cours d’exécution afin que Terraform puisse créer les ressources d’abonnement Event Grid.
Pour résoudre ce problème, il existe deux tâches Terraform dans le pipeline CI/CD :
- Terraform 1 crée toutes les ressources à l’exception des abonnements Azure Event Grid.
- Terraform 2 crée les abonnements Event Grid une fois que le logiciel est en cours d’exécution.
Étant donné que Terraform ne peut pas exclure un module spécifique, la tâche Terraform 1 doit explicitement cibler tous les modules, à l’exception des abonnements Event Grid. Cette exigence peut être sujette aux erreurs et un signalement GitHub en cours sur Terraform effectue le suivi de ce problème.
Scripts de post-déploiement
Le pipeline CI/CD n’effectue pas d’opérations nécessitant des privilèges élevés, mais utilise des modèles de script d’administration pour générer un ensemble de scripts d’administration en tant qu’artefacts de pipeline. Un administrateur avec des privilèges élevés doit exécuter ces scripts d’administration à chaque fois qu’un nouvel environnement Gridwich est créé. Pour plus d’informations, consultez Exécuter des scripts d’administration Azure.
Les versions de Terraform et de logiciels ne permettent pas de réaliser certaines opérations de Gridwich, notamment :
- Copie de certificats vers Azure Key Vault
- Activation de Storage Analytics dans le Stockage Azure
Le script Azure CLI azcli-last-steps-template.yml fournit ces dernières étapes.
Tout en tant que code et réutilisation de code
La réutilisation des composants constituent l’un des avantages de la pratique « tout en tant que code ».
- Pour Terraform, Gridwich s’appuie fortement sur les modules Terraform pour améliorer la composition et la réutilisation.
- Pour Azure Pipelines YAML, Gridwich utilise des modèles de pipeline.