Modifier

Partager via


Déployer et exploiter des applications avec AKS activé par Arc sur Azure Local ou Windows Server

Azure Kubernetes Service (AKS)
Azure Local
Azure Arc
GitHub
Azure Pipelines

Les informations contenues dans cet article fournissent des recommandations pour la création d’un pipeline de déploiement d’applications en conteneur sur Azure Kubernetes Service activé par Azure Arc. Les applications peuvent s’exécuter sur Azure Local ou Windows Server. Plus précisément, les instructions concernent 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 le système d’exploitation Azure Stack HCI, version 23H2. Pour plus d’informations sur la dernière version, consultez la documentation AKS sur le système d’exploitation Azure Stack HCI, version 23H2.

Architecture

Diagramme montrant une architecture pour les clusters AKS qui s’exécutent sur Azure Local ou Windows Server.

Télécharger un fichier Visio de cette architecture.

Flux de travail

L’architecture illustre une implémentation qui déploie des applications conteneurisées sur des clusters AKS qui s’exécutent sur Azure Local ou Windows Server. Il utilise GitOps pour gérer l’infrastructure en tant que code (IaC).

  1. Un opérateur configure une infrastructure locale sur Azure Local ou sur du matériel Windows Server capable d’héberger un cluster AKS.
  2. En local, un administrateur déploie un cluster AKS sur l’infrastructure Azure Local ou Windows Server et connecte le cluster à Azure à l’aide d’Azure Arc. Pour activer GitOps, l’administrateur déploie également l’extension Flux et sa configuration sur le cluster AKS.
  3. Les configurations GitOps facilitent iaC. Ces configurations GitOps représentent l’état souhaité du cluster AKS et utilisent les informations fournies par l’administration locale. La administration locale fait référence aux outils de gestion, interfaces et pratiques fournis par le cluster AKS déployé sur Azure Local ou Windows Server.
  4. L’administrateur envoie (push) des configurations GitOps vers un dépôt Git. Vous pouvez également utiliser un référentiel Helm ou Kustomize. Les composants Flux du cluster AKS surveillent le référentiel pour les modifications, la détection et l’application des mises à jour en fonction des besoins.
  5. 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. Il déclenche automatiquement le déploiement de la configuration souhaitée à l’aide de graphiques Helm ou kustomize.
  6. Les modifications d’application sous la forme d’une configuration ou d’un code nouveau ou mis à jour sont envoyées aux référentiels désignés, y compris les mises à jour d’images conteneur correspondantes. Ces mises à jour d’images conteneur sont envoyées à des registres de conteneurs privés ou publics.
  7. L’opérateur Flux dans le cluster AKS détecte les modifications apportées aux référentiels et lance son déploiement sur le cluster.
  8. Les modifications sont implémentées de manière propagée sur le cluster pour garantir un temps d’arrêt minimal et préserver l’état souhaité du cluster.

Composants

  • azure Local est une solution d’infrastructure hyperconvergée (HCI) que vous pouvez utiliser pour exécuter des charges de travail virtualisées en local. Il utilise une combinaison de technologies de calcul, de stockage et de mise en réseau définies par logiciel. Il s’appuie sur Windows Server et s’intègre aux services Azure pour offrir une expérience cloud hybride.
  • AKS sur Azure Local permet aux développeurs et aux administrateurs d’utiliser AKS pour déployer et gérer des applications conteneurisées sur Azure Local.
  • azure Arc est une solution de gestion cloud hybride que vous pouvez utiliser pour gérer des serveurs, des clusters Kubernetes et des applications dans des environnements locaux, multiclouds et edge. Il offre une expérience de gestion unifiée en vous permettant de régir les ressources dans différents environnements à l’aide de services de gestion Azure tels qu’Azure Policy, Microsoft Defender pour cloud et Azure Monitor.
  • Les dépôts Git, Helm et Bitbucket (publics et privés) peuvent héberger des configurations GitOps, notamment Azure DevOps et GitHub.
  • Registres de conteneurs (publics et privés), y compris Azure Container Registry et Docker Hub, hébergent des images conteneur.
  • 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 suivent les modifications apportées aux référentiels Git, Helm ou Kustomize que vous désignez et appliquez-les au cluster local. L’opérateur Flux examine régulièrement (ou en fonction d’un déclencheur) la configuration de cluster existante pour s’assurer qu’elle correspond à celle du référentiel. S’il détecte les différences, Flux les corrige en les appliquant ou, dans le cas d’une dérive de configuration, réappliquez 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, la surveillance de l’intégrité et la gestion des conteneurs. Kubernetes est un orchestrateur couramment utilisé pour les nouveaux déploiements en conteneur. À mesure que le nombre de clusters et d’environnements Kubernetes augmente, la gestion individuelle peut être difficile. L’utilisation de services avec Azure Arc tels que Kubernetes, GitOps, Azure Monitor et Azure Policy réduit la charge administrative et aide à résoudre ce problème.

Considérations

Ces considérations implémentent les piliers d’Azure Well-Architected Framework, qui est un ensemble d’ensembles guidants qui peuvent être utilisés pour améliorer la qualité d’une charge de travail. Pour plus d’informations, consultez Microsoft Azure Well-Architected Framework.

Le framework Well-Architected fournit des principes directeurs qui aident à évaluer et à 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 est approprié d’appliquer des recommandations de framework à votre conception et à votre implémentation de GitOps.

Fiabilité

La fiabilité garantit que votre application peut respecter les engagements que vous prenez à vos clients. Pour plus d’informations, consultez 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 GitOps.
  • Utiliser flux v2 pour augmenter davantage la disponibilité des applications dans les déploiements qui s’étendent sur plusieurs emplacements ou clusters.
  • Utiliser des déploiements automatisés pour réduire la possibilité d’une erreur humaine.
  • intégrer un pipeline CI/CD dans votre architecture pour améliorer l’efficacité des tests automatisés.
  • Suivre toutes les modifications de code afin de pouvoir identifier et résoudre rapidement les problèmes. Pour suivre ces modifications opérationnelles, 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 l’automatisation pour vous assurer que les modifications sont suivies, suivez le processus d’approbation approprié et gérez-les.

Sécurité

La sécurité offre des garanties contre les attaques délibérées et l’abus de vos données et systèmes précieux. Pour plus d’informations, consultez Vue d’ensemble du pilier de sécurité.

  • Comprendre les avantages de sécurité de l’architecture. Avec Flux v2, Kustomize, GitOps et les pipelines DevOps, les modifications opérationnelles 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 des branches, les révisions de demandes de tirage et l’historique immuable. L’approche IaC supprime la nécessité de gérer les autorisations d’accès à l’infrastructure et prend en charge le principe du privilège minimum. La prise en charge des flux pour l’étendue de configuration basée sur un espace de noms facilite les scénarios multilocataires.

  • Comprendre 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 et le chiffre au repos.

  • Envisagez 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 l’étendue de la gestion des ressources au-delà d’Azure. L’étendue é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 qui affecte les clusters AKS et leurs pods à l’aide d’Azure Policy pour Kubernetes et de rapports centralisés de la conformité de la stratégie correspondante. Vous pouvez utiliser cette fonctionnalité pour appliquer, par exemple, l’utilisation de HTTPS pour le trafic d’entrée qui cible le cluster Kubernetes ou pour vous assurer que les conteneurs écoutent uniquement sur des ports spécifiques que vous désignez.
  • amélioration des opérations. Azure Arc offre une prise en charge améliorée de la configuration automatisée du cluster via GitOps.

Azure Policy facilite la gestion centralisée de GitOps via la définition de stratégie intégrée Déployer GitOps sur un cluster Kubernetes. Après avoir affecté cette stratégie, elle 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 que GitOps fournit pour réduire la charge de gestion et de maintenance. Le modèle opérationnel simplifié nécessite moins d’efforts pour maintenir et entraîner des coûts opérationnels réduits.

  • Utiliser AKS activé par Arc. AKS Arc fournit une prise en charge intégrée de la mise à l’échelle automatique des ressources informatiques et une densité de charge de travail accrue inhérente à la conteneurisation. La mise à l’échelle automatique peut vous aider à dimensionner correctement votre infrastructure physique et à 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 la conservent en production. Pour plus d’informations, consultez Vue d’ensemble du pilier d’excellence opérationnelle.

  • Utiliser des référentiels GitOps pour fournir une source unique de vérité qui stocke toutes les données d’infrastructure d’application et de cluster AKS. Ces référentiels peuvent servir de composant unique qui applique des modifications au cluster.

  • Tirer parti de l’intégration de GitOps à l’approche DevOps de l’infrastructure pour raccourcir le temps nécessaire pour fournir de nouvelles versions logicielles. Nous vous recommandons également d’utiliser Azure Resource Manager et Azure Arc pour créer un modèle opérationnel cohérent pour les charges de travail en conteneur 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. En procédant ainsi, vous pouvez établir un 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éer des configurations GitOps qui sont étendues à un cluster (ou à plusieurs clusters) pour implémenter une base de référence pour les composants de l’infrastructure conteneurisée, comme les contrôleurs d’entrée, les maillages de service, les produits de sécurité et les solutions de supervision. Cela peut vous aider à vous assurer que vos clusters répondent aux exigences de l’infrastructure de référence.

  • Créer 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 précis (par exemple, les pods, les services et les itinéraires d’entrée) et de garantir ainsi que vos charges de travail sont conformes aux normes d’application. En suivant ces instructions, vous pouvez vous assurer que votre déploiement et votre gestion des applications AKS Arc restent efficaces, efficaces et rentables.

Utiliser GitOps

GitOps est une excellente correspondance pour 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 et l’utilise pour définir l’état souhaité de l’environnement cible.

Les modifications de code sont soumises au contrôle de version, à l’audit et aux révisions et approbations facultatives. Vous pouvez utiliser des révisions et des approbations pour déclencher automatiquement les mises à jour de l’infrastructure AKS et des charges de travail conteneurisées. GitOps utilise un modèle d’extraction, 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 et applique la nouvelle configuration.

GitOps réduit considérablement le besoin de gestion directe des clusters, ce qui entraîne une simplification du modèle opérationnel et une sécurité accrue. GitOps prend en charge le principe du privilège minimum. Par exemple, GitOps supprime la nécessité de modifier manuellement des clusters via kubectl. Par conséquent, moins de privilèges sont nécessaires. GitOps fournit également des commentaires précoces sur les modifications de stratégie proposées. Les commentaires précoces sont particulièrement utiles pour les développeurs, car ils les aident à réduire les risques et les coûts associés aux bogues.

GitOps simplifie la normalisation des configurations de cluster au sein de votre organisation pour répondre aux exigences de conformité et de gouvernance. Vous pouvez définir une configuration de référence que vous souhaitez appliquer à chaque cluster et à ses composants, notamment 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, cibler des groupes de ressources ou des abonnements. Ces stratégies s’appliquent automatiquement aux ressources existantes et aux ressources créées après l’attribution 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 du cluster. Le modèle déclaratif résultant facilite l’automatisation de l’approvisionnement et de la gestion des ressources Kubernetes telles que 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 spécifiques à 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 des sources de configuration vers le cluster et rapprochent le cluster à un é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 FluxConfig (CRD), fluxconfig-agentet fluxconfig-controller. Vous pouvez également choisir parmi ces contrôleurs que vous souhaitez installer et éventuellement installer les contrôleurs Flux image-automation et image-reflector, ce qui facilite la mise à jour et la récupération d’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, sont utilisées pour créer et configurer les objets Kubernetes qui activent la fonctionnalité GitOps sur le cluster.

Lorsque vous déployez et configurez des extensions de cluster Flux v2, il 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, et synchronise et autorise ces sources.
  • kustomize-controller. Surveille les ressources personnalisées basées sur des CRD Kustomization, 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 les référentiels Helm exposés par source-controller.
  • notification-controller. Gère les événements entrants provenant d’un référentiel Git et d’événements sortants, tels que 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 fluxconfigs ressources personnalisées.

La version 2 de Flux fournit ces fonctionnalités supplémentaires :

Catégorie Caractéristique
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 Kubernetes (RBAC)
Évaluations d’intégrité pour les clusters et leurs charges de travail
Mises à jour automatisées de l’image conteneur vers Git, notamment l’analyse d’images et la mise à jour corrective
Interopérabilité avec les fournisseurs d’API de cluster
sécurité et de gouvernance Alertes sur des systèmes externes (via des expéditeurs webhook)
Validation basée sur des stratégies, notamment la prise en charge de Open Policy Agent Gatekeeper
Analyse et mise à jour corrective d’images conteneur
Alertes sur des systèmes externes (via des expéditeurs webhook)
intégration de avec d’autres flux GitOps Intégration à une gamme de fournisseurs Git, notamment GitHub, GitLab et Bitbucket
Interopérabilité avec les fournisseurs de flux de travail, 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 à mettre à l’échelle pour répondre aux demandes qu’elle lui impose par les utilisateurs de manière efficace. Pour plus d’informations, consultez vue d’ensemble de l’efficacité des performances.

Les charges de travail de cluster bénéficient de l’extensibilité 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.

  • Optimiser votre cluster Kubernetes et votre infrastructure configuration pour vos charges de travail spécifiques. Nous vous recommandons de travailler avec le développeur d’applications pour déterminer les paramètres requis.
  • Utiliser la fonctionnalité de mise à l’échelle automatique dans Kubernetes. Pour plus d’informations, consultez mise à l’échelle automatique du cluster dans AKS activé par Azure Arc.
  • Ajouter une de cache pour optimiser l’application.
  • Établissez une base de référence de performances. Évaluez votre architecture et utilisez des métriques et des outils de surveillance pour identifier les problèmes ou goulots d’étranglement qui affectent les performances.

Contributeurs

Cet article est géré par Microsoft. Il a été écrit à l’origine par les contributeurs suivants.

Auteurs principaux :

Autres contributeurs :

Pour afficher les profils LinkedIn non publics, connectez-vous à LinkedIn.

Étapes suivantes