Cet article fournit des recommandations pour construire un pipeline de déploiement d’applications pour les applications conteneurisées sur Azure Kubernetes Service activé par Azure Arc. Les applications peuvent être exécutées sur Azure Stack HCI ou sur Windows Server. Plus précisément, l’aide concerne les déploiements qui utilisent Azure Arc et GitOps.
Important
Les informations de cet article s’appliquent à AKS sur Azure Stack HCI version 22H2 et AKS-HCI sur Windows Server. La version la plus récente d’AKS s’exécute sur Azure Stack HCI 23H2. Pour plus d’informations sur la dernière version, consultez la documentation AKS sur Azure Stack HCI version 23H2.
Architecture
Téléchargez un fichier Visio de cette architecture.
Workflow
L’architecture illustre une mise en œuvre qui déploie des applications conteneurisées sur des clusters AKS qui s’exécutent sur Azure Stack HCI ou Windows Server. Ce système utilise GitOps pour gérer l’infrastructure en tant que code (IaC).
- Un opérateur met en place une infrastructure locale sur Azure Stack HCI ou sur du matériel Windows Server capable d’héberger un cluster AKS.
- Localement, un administrateur déploie un cluster AKS sur l’infrastructure Azure Stack HCI ou Windows Server et connecte le cluster à Azure en utilisant Azure Arc. Pour activer GitOps, l’administrateur déploie également l’extension Flux et sa configuration sur le cluster AKS.
- Les configurations GitOps facilitent l’utilisation de l’infrastructure en tant que code. Ces configurations GitOps représentent l’état souhaité du cluster AKS et utilisent les informations fournies par l’administration locale. L’administration locale fait référence aux outils, interfaces et pratiques de gestion qui sont fournis par le cluster AKS déployé sur Azure Stack HCI ou Windows Server.
- L’administrateur envoie (push) des configurations GitOps à un référentiel Git. Vous pouvez également utiliser un référentiel Helm ou Kustomize. Les composants Flux du cluster AKS surveillent les modifications du référentiel, détectent et appliquent les mises à jour si nécessaire.
- L’extension Flux dans le cluster AKS reçoit une notification du flux GitOps lorsque des modifications sont apportées aux configurations dans les référentiels. Elle déclenche automatiquement le déploiement de la configuration souhaitée à l’aide de graphiques Helm ou de Kustomize.
- Les modifications d’application sous la forme d’une configuration ou d’un code nouveaux ou mis à jour sont envoyées (push) aux référentiels désignés, y compris les mises à jour d’images conteneurs correspondantes. Ces mises à jour d’images conteneurs sont envoyées (push) à des registres de conteneurs privés ou publics.
- L’opérateur Flux du cluster AKS détecte les changements dans les référentiels et initie leur déploiement sur le cluster.
- Les modifications sont implémentées de manière propagée sur le cluster pour garantir un temps d’arrêt minimal, puis préserver l’état souhaité du cluster.
Composants
- Azure Stack HCI est une solution d’infrastructure hyperconvergée (HCI) qui vous permet d’exécuter des charges de travail virtualisées localement. Cette solution utilise une combinaison de technologies de calcul à définition logicielle, de stockage et de mise en réseau. Elle repose sur Windows Server et s’intègre aux services Azure pour fournir une expérience de cloud hybride.
- AKS sur Azure Stack HCI permet aux développeurs et aux administrateurs d’utiliser AKS pour déployer, puis gérer des applications conteneurisées sur Azure Stack HCI.
- Azure Arc est une solution de gestion cloud hybride qui vous permet de gérer des serveurs, des clusters Kubernetes et des applications dans des environnements locaux, multiclouds et de périphérie. Cette solution offre une expérience de gestion unifiée en vous permettant de gérer les ressources dans différents environnements à l’aide de services de gestion Azure comme Azure Policy, Microsoft Defender pour le cloud et Azure Monitor.
- Les référentiels Git, Helm et Bitbucket (publics et privés) peuvent héberger des configurations GitOps, notamment des référentiels Azure DevOps et GitHub.
- Les registres de conteneurs (publics et privés), y compris Azure Container Registry et Docker Hub, hébergent des images conteneurs.
- Azure Pipelines est un service d’intégration continue (CI) et de livraison continue (CD) qui automatise les mises à jour des référentiels et des registres.
- Flux est un outil de déploiement GitOps open source que les clusters Kubernetes avec Azure Arc peuvent utiliser. Vous pouvez utiliser la connexion Azure Arc pour implémenter les composants de cluster qui effectuent suivent les modifications apportées aux référentiels Git, Helm ou Kustomize que vous désignez, puis les appliquer au cluster local. L’opérateur Flux examine périodiquement (ou sur la base d’un déclencheur) la configuration de cluster existante pour vérifier qu’elle correspond à celle qui se trouve dans le référentiel. S’il détecte des différences, Flux les corrige en appliquant ou, en cas de dérive de configuration, en réappliquant la configuration souhaitée.
Détails du scénario
L’exécution de conteneurs à grande échelle nécessite un orchestrateur pour automatiser la planification, le déploiement, la mise en réseau, la mise à l’échelle, le monitoring de l’intégrité et la gestion des conteneurs. Kubernetes est un orchestrateur couramment utilisé pour les nouveaux déploiements conteneurisés. À mesure que le nombre de clusters et d’environnements Kubernetes augmente, leur gestion individuelle peut être compliquée. L’utilisation de services avec Azure Arc comme Kubernetes avec Azure Arc, GitOps, Azure Monitor et Azure Policy réduit la charge administrative, puis permet de relever ce défi.
Considérations
Ces considérations implémentent les piliers d’Azure Well-Architected Framework qui est un ensemble de principes directeurs qui permettent d’améliorer la qualité d’une charge de travail. Pour plus d’informations, consultez Microsoft Azure Well-Architected Framework.
L’infrastructure Well-Architected Framework fournit des principes directeurs qui vous aident à évaluer, puis à optimiser les avantages des solutions basées sur le cloud. Étant donné l’intégration inhérente des déploiements AKS locaux avec les technologies Azure, il convient d’appliquer des recommandations d’infrastructure à votre conception et à l’implémentation de GitOps.
Fiabilité
La fiabilité permet de s’assurer que votre application tient vos engagements auprès de vos clients. Pour plus d’informations, consultez la page Vue d’ensemble du pilier de fiabilité.
- Utilisez les fonctionnalités de haute disponibilité de Kubernetes pour garantir une fiabilité élevée dans les solutions basées sur GitOps.
- Utilisez Flux v2 pour augmenter davantage la disponibilité des applications dans les déploiements qui s’étendent sur plusieurs emplacements ou clusters.
- Utilisez des déploiements automatisés pour réduire le risque d’erreur humaine.
- Intégrez un pipeline CI/CD à votre architecture pour améliorer l’efficacité des tests automatisés.
- Suivez toutes les modifications apportées au code pour pouvoir identifier, puis résoudre rapidement les problèmes. Pour suivre ces modifications des opérations, utilisez les fonctionnalités intégrées de GitHub ou d’Azure DevOps. Vous pouvez utiliser ces outils pour implémenter des stratégies et une automatisation pour veiller à ce que les modifications soient suivies, suivent le processus d’approbation approprié et soient gérables.
Sécurité
La sécurité fournit des garanties contre les attaques délibérées, et contre l’utilisation abusive de vos données et systèmes importants. Pour plus d’informations, consultez Vue d’ensemble du pilier Sécurité.
Découvrez les avantages de l’architecture en matière de sécurité. Avec les pipelines Flux v2, Kustomize, GitOps et DevOps, les modifications d’opérations sont appliquées via l’automatisation. Vous pouvez contrôler et auditer le code qui implémente ces pratiques opérationnelles en tirant parti de mécanismes tels que la protection de branche, les révisions de demande de tirage (pull request) et l’historique immuable. L’approche IaC supprime la nécessité de gérer les autorisations pour accéder à l’infrastructure, puis prend en charge le principe du privilège minimum. La prise en charge des flux pour l’étendue de la configuration basée sur les espaces de noms facilite les scénarios multilocataires.
Découvrez le chiffrement. Pour garantir la sécurité des données, le service de configuration de cluster stocke les données de ressource de configuration Flux dans une base de données Azure Cosmos DB, puis les chiffre au repos.
Nous vous recommandons d’utiliser des points de terminaison privés. GitOps prend en charge Azure Private Link pour la connectivité aux services liés à Azure Arc.
Utiliser des stratégies Azure et Azure Arc
Azure Arc étend la portée de la gestion des ressources au-delà d’Azure. La portée étendue offre une gamme d’avantages qui s’appliquent aux serveurs physiques et virtuels. Dans le contexte d’AKS, ces avantages sont les suivants :
- Gouvernance. Azure Arc peut appliquer la gouvernance du runtime, gouvernance qui affecte les clusters AKS et leurs pods en utilisant Azure Policy pour Kubernetes et la création de rapports centralisés sur la conformité à la stratégie correspondante. Cette capacité vous permet par exemple d’imposer l’utilisation de HTTPS pour le trafic entrant ciblant le cluster Kubernetes ou de garantir que les conteneurs écoutent seulement des ports spécifiques que vous désignez.
- Opérations améliorées. Azure Arc offre une prise en charge améliorée de la configuration automatisée de cluster via GitOps.
Azure Policy facilite la gestion centralisée de GitOps via la définition de stratégie Déployer GitOps sur un cluster Kubernetes intégrée. Une fois attribuée, cette stratégie applique automatiquement toute configuration basée sur GitOps que vous choisissez aux clusters Kubernetes avec Azure Arc que vous désignez, si leurs ressources Azure Resource Manager se trouvent dans l’étendue de l’affectation.
Optimisation des coûts
L’optimisation des coûts consiste à réduire les dépenses inutiles et à améliorer l’efficacité opérationnelle. Pour plus d’informations, consultez Vue d’ensemble du pilier d’optimisation des coûts.
Utilisez l’automatisation fournie par GitOps pour réduire votre charge de gestion et de maintenance. Le modèle opérationnel simplifié nécessite moins d’efforts de gestion et entraîne une réduction des coûts d’exploitation.
Utilisez l’AKS activé par Arc. AKS Arc fournit un support intégré pour la mise à l’échelle automatique des ressources informatiques et l’augmentation de la densité de la charge de travail inhérente à la conteneurisation. La mise à l’échelle automatique peut vous aider à dimensionner correctement votre infrastructure physique, puis à accélérer les initiatives de consolidation des centres de données, ce qui peut vous aider à économiser de l’argent.
Excellence opérationnelle
L’excellence opérationnelle couvre les processus d’exploitation qui déploient une application et maintiennent son fonctionnement en production. Pour plus d’informations, consultez Vue d’ensemble du pilier Excellence opérationnelle.
Utilisez des référentiels GitOps pour fournir une source unique de vérité qui stocke toutes les données d’infrastructure de cluster et d’application AKS. Ces référentiels peuvent servir de seul composant qui applique des modifications au cluster.
Tirez parti de l’intégration de GitOps avec l’approche DevOps de l’infrastructure pour réduire le temps nécessaire à la livraison de nouvelles versions de logiciels. Nous vous recommandons également d’utiliser Azure Resource Manager et Azure Arc pour générer un modèle opérationnel cohérent pour les charges de travail conteneurisées basées sur le cloud et locales. Pour contrôler les configurations GitOps à différents niveaux, utilisez Azure Policy avec les fonctionnalités des opérateurs Flux. Ainsi, vous pouvez établir le contrôle au niveau de l’entreprise, au niveau d’un cluster AKS individuel ou même au niveau d’espaces de noms spécifiques au sein d’un cluster.
Créez des configurations GitOps étendues à un cluster (ou à plusieurs clusters) pour implémenter une ligne de base pour les composants de l’infrastructure conteneurisée, tels que les contrôleurs d’entrée, les maillages de services, les produits de sécurité et les solutions de monitoring. Cela peut vous aider à rendre vos clusters conformes aux exigences de l’infrastructure de la ligne de base.
Créez des configurations GitOps au niveau de l’espace de noms qui vous permettent de contrôler les ressources de vos charges de travail à un niveau plus granulaire (par exemple, les pods, les services et les itinéraires d’entrée), puis de rendre par conséquent vos charges de travail conformes aux normes d’application. En suivant ces directives, vous pouvez vous assurer que votre déploiement et votre gestion des applications AKS Arc restent efficaces, efficients et rentables.
Utiliser GitOps
GitOps convient parfaitement à la gestion des clusters AKS. Kubernetes est basé sur le modèle déclaratif. L’état du cluster et ses composants sont décrits dans le code. GitOps stocke ce code dans un référentiel Git, puis l’utilise pour définir l’état souhaité de l’environnement cible.
Les modifications de code sont soumises à la gestion de version, à l’audit et aux révisions et approbations facultatives. Vous pouvez utiliser des évaluations et des approbations pour déclencher automatiquement des mises à jour de l’infrastructure AKS et des charges de travail conteneurisées. GitOps utilise un modèle de tirage (pull), dans lequel un ensemble spécialisé de composants de cluster interroge l’état du référentiel. Lorsqu’une modification est détectée, un composant GitOps hébergé par AKS récupère, puis applique la nouvelle configuration.
GitOps réduit considérablement le besoin de gestion directe des clusters, ce qui engendre un modèle opérationnel simplifié et une sécurité accrue. GitOps prend en charge le principe du privilège minimum. Par exemple, GitOps supprime la nécessité de modifier les clusters manuellement via kubectl, de sorte que moins de privilèges sont requis. GitOps fournit également des commentaires précoces sur les modifications de stratégie proposées. Les commentaires précoces sont particulièrement précieux pour les développeurs, car ils les aident à réduire le risque et les coûts associés aux bogues.
GitOps simplifie la standardisation des configurations de cluster dans toute votre organisation pour répondre aux exigences de conformité et de gouvernance. Vous pouvez définir une configuration de base à appliquer à chaque cluster et à ses composants, y compris, par exemple, les stratégies réseau, les liaisons de rôles et les stratégies de sécurité des pods. Pour implémenter cette configuration sur tous les clusters avec Azure Arc, vous pouvez utiliser Azure Policy, en ciblant des groupes de ressources ou des abonnements. Ces stratégies s’appliquent automatiquement aux ressources existantes ainsi qu’aux ressources créées après l’affectation de stratégie.
GitOps lie votre cluster à un ou plusieurs référentiels Git. Vous pouvez utiliser chaque référentiel pour décrire différents aspects de la configuration de cluster. Le modèle déclaratif résultant facilite l’automatisation de l’approvisionnement et de la gestion des ressources Kubernetes comme les espaces de noms ou les déploiements via leurs fichiers manifestes. Vous pouvez également utiliser des graphiques Helm, qui, avec Flux v2 et Kustomize, facilitent le déploiement automatisé d’applications conteneurisées ou de fichiers Kustomize qui décrivent des modifications propres à l’environnement.
Utiliser Flux
Flux est implémenté en tant qu’opérateur Kubernetes. Il utilise un ensemble de contrôleurs et d’API déclaratives correspondantes. Les contrôleurs gèrent un ensemble de ressources personnalisées qui fonctionnent collectivement pour fournir les fonctionnalités prévues.
GitOps est activé dans un cluster Kubernetes avec Azure Arc en tant qu’extension de cluster Microsoft.KubernetesConfiguration/extensions/microsoft.flux
. Après avoir installé l’extension de cluster microsoft.flux
, vous pouvez créer une ou plusieurs ressources fluxConfigurations
qui synchronisent le contenu de sources de configuration sur le cluster, puis rapprochent le cluster de l’état souhaité.
Par défaut, l’extension microsoft.flux
installe les contrôleurs de flux (Source, Kustomize, Helm et Notification) et les définitions de ressources personnalisées (CRD) FluxConfig, fluxconfig-agent
et fluxconfig-controller
. Vous pouvez également choisir les contrôleurs que vous souhaitez installer et éventuellement installer les contrôleurs image-automation
et image-reflector
de Flux, ce qui facilite la mise à jour, puis la récupération des images Docker.
Lorsque vous créez une ressource fluxConfigurations
, les valeurs que vous fournissez pour les paramètres, comme le référentiel Git cible, servent à créer, puis à configurer les objets Kubernetes qui activent la fonctionnalité GitOps dans le cluster.
Lorsque vous déployez, puis configurez des extensions de cluster Flux v2, le système fournit les composants et fonctionnalités suivants :
source-controller
. Surveille les sources de configurations personnalisées, telles que les référentiels Git, les référentiels Helm et les services de stockage cloud tels que les compartiments S3, puis synchronise, puis autorise ces sources.kustomize-controller
. Surveille les ressources personnalisées basées sur des définitions de ressources personnalisées Kustomization, définitions qui contiennent des manifestes Kubernetes et des fichiers YAML bruts. Applique les manifestes et les fichiers YAML au cluster.helm-controller
. Surveille les ressources personnalisées basées sur des graphiques et stockées dans des référentiels Helm révélés parsource-controller
.notification-controller
. Gère les événements entrants qui proviennent d’un référentiel Git et les événements sortants, comme ceux qui ciblent Microsoft Teams ou Slack.FluxConfig CRD
. Représente des ressources personnalisées qui définissent des objets Kubernetes spécifiques à Flux.fluxconfig-agent
. Détecte les ressources de configuration Flux nouvelles et mises à jour. Lance les mises à jour de configuration correspondantes sur le cluster. Communique les modifications d’état à Azure.fluxconfig-controller
. Surveille les ressources personnaliséesfluxconfigs
.
La version 2 de Flux fournit les fonctionnalités supplémentaires suivantes :
Catégorie | Fonctionnalité |
---|---|
Gestion de l’infrastructure et des charges de travail | Gestion des dépendances de déploiement |
Intégration avec le contrôle d’accès en fonction du rôle (RBAC) Kubernetes | |
Évaluations de l’intégrité des clusters et de leurs charges de travail | |
Mises à jour automatisées des images conteneurs vers Git, notamment l’analyse des images et la mise à jour corrective | |
Interopérabilité avec les fournisseurs d’API de cluster | |
Sécurité et gouvernance | Alertes à des systèmes externes (via des expéditeurs webhook) |
Validation pilotée par les stratégies, y compris la prise en charge d’Open Policy Agent Gatekeeper | |
Analyse, puis mise à jour corrective des images conteneurs | |
Alertes à des systèmes externes (via des expéditeurs webhook) | |
Intégration à d’autres flux GitOps | Intégration à une gamme de fournisseurs Git, notamment GitHub, GitLab et Bitbucket |
Interopérabilité avec les fournisseurs de workflow, y compris GitHub Actions |
Pour plus d’informations, consultez Configurations GitOps Flux v2 avec AKS et Kubernetes avec Azure Arc.
Efficacité des performances
L’efficacité des performances est la capacité de votre charge de travail à s’adapter à la demande des utilisateurs de façon efficace. Pour plus d’informations, consultez Vue d’ensemble du pilier d’efficacité des performances.
Les charges de travail de cluster bénéficient de la scalabilité et de l’agilité inhérentes à la plateforme Kubernetes. Flux v2 offre une agilité supplémentaire, ce qui réduit le temps nécessaire à la livraison de logiciels de bout en bout.
- Optimisez la configuration de votre cluster et de votre infrastructure Kubernetes pour vos charges de travail spécifiques. Nous vous recommandons de collaborer avec le développeur d’applications pour déterminer les paramètres requis.
- Utilisez la fonctionnalité de mise à l’échelle automatique dans Kubernetes. Pour plus d’informations, consultez la section Mise à l’échelle automatique des clusters dans l’ARC activée par Azure Arc.
- Ajoutez un cache pour optimiser l’application.
- Établissez un niveau de référence en matière de performances. Évaluez votre architecture, puis utilisez des métriques et des outils de supervision pour identifier les problèmes ou goulots d’étranglement qui affectent le niveau de performance.
Contributeurs
Cet article est géré par Microsoft. Il a été écrit à l’origine par les contributeurs suivants.
Auteurs principaux :
- Sarah Cooley | Responsable de programme principal
- Mike Kostersitz | Principal Program Manager Lead
Autres contributeurs :
- Mick Alberts | Rédacteur technique
- Nate Waters | Product Marketing Manager
Pour afficher les profils LinkedIn non publics, connectez-vous à LinkedIn.
Étapes suivantes
- Démarrage rapide : Configurer AKS Arc à l’aide du Windows Admin Center
- Démarrage rapide : Créez un cluster Kubernetes local sur AKS Arc à l’aide du Windows Admin Center
- Démarrage rapide : Configurer un hôte Azure Kubernetes Service sur Azure Stack HCI et Windows Server et déployer un cluster de charge de travail à l’aide de PowerShell
- Configurations GitOps Flux v2 avec AKS et Kubernetes avec Azure Arc
- Didacticiel : Utiliser GitOps avec Flux v2 dans les clusters Kubernetes ou AKS compatibles avec Azure Arc
- Tutoriel : Implémenter CI/CD avec GitOps (Flux v2)