Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Ce tutoriel explique comment utiliser GitOps avec Argo CD dans des clusters Kubernetes avec Azure Arc ou des clusters Azure Kubernetes Service (AKS). GitOps avec Argo CD est activé en tant qu’extension de cluster qui vous permet d’utiliser votre dépôt Git comme source de vérité pour la configuration du cluster et le déploiement d’applications. Argo CD prend également en charge d’autres sources de fichiers courantes, telles que les référentiels Helm et Open Container Initiative (OCI).
Note
À partir de la version 1.0.0-preview, l’extension Argo CD utilise le chart Helm communautaire. Cette modification est un changement radical, car les clés de configuration ont changé. Si vous avez installé une version précédente (0.0.x) de l’extension, désinstallez l’extension et réinstallez la dernière version avec les clés de configuration mises à jour.
Important
GitOps avec Argo CD est actuellement en préversion. Consultez les Conditions d’utilisation supplémentaires pour les préversions Microsoft Azure pour les conditions légales qui s’appliquent aux fonctionnalités Azure en version bêta, en préversion ou qui ne sont pas encore publiées en disponibilité générale.
Conditions préalables
Pour déployer des applications à l’aide de GitOps, vous avez besoin d’un cluster Kubernetes avec Azure Arc ou d’un cluster AKS.
Clusters Kubernetes activés par Azure Arc
Un cluster Kubernetes connecté à Azure Arc qui est en cours d’exécution.
Découvrez comment connecter un cluster Kubernetes à Azure Arc. Si vous devez vous connecter via un proxy sortant, veillez à installer les agents Arc avec les paramètres de proxy.
Autorisations de lecture et d’écriture sur le groupe de ressources
Microsoft.Kubernetes/connectedClusters.
Clusters Azure Kubernetes Service
Un cluster AKS basé sur une identité de service managée (MSI) qui est en cours d’exécution.
Important
Le cluster AKS doit être créé avec Managed Service Identity (MSI), et non avec le nom principal du service (SPN), pour que cette extension fonctionne. Pour les nouveaux clusters AKS créés avec
az aks create, le cluster est basé sur MSI par défaut. Pour convertir des clusters spN en MSI, exécutezaz aks update -g $RESOURCE_GROUP -n $CLUSTER_NAME --enable-managed-identity. Pour plus d’informations, consultez Utiliser une identité managée dans AKS.Autorisations de lecture et d’écriture sur le groupe de ressources
Microsoft.ContainerService/managedClusters.
Commun aux deux types de cluster
Autorisations de lecture et d’écriture sur ces types de ressources :
Microsoft.KubernetesConfiguration/extensions
Azure CLI, version 2.15 ou ultérieure. Installez Azure CLI ou utilisez les commandes suivantes pour effectuer une mise à jour vers la dernière version :
az version az upgradeLe client de ligne de commande Kubernetes, kubectl.
kubectlest déjà installé si vous utilisez Azure Cloud Shell.Installez
kubectlen local avec la commandeaz aks install-cli:az aks install-cliInscription des fournisseurs de ressources Azure suivants :
az provider register --namespace Microsoft.Kubernetes az provider register --namespace Microsoft.ContainerService az provider register --namespace Microsoft.KubernetesConfigurationL’inscription est un processus asynchrone qui doit se terminer dans un délai de 10 minutes. Pour superviser le processus d’inscription, utilisez la commande suivante :
az provider show -n Microsoft.KubernetesConfiguration -o table Namespace RegistrationPolicy RegistrationState --------------------------------- -------------------- ------------------- Microsoft.KubernetesConfiguration RegistrationRequired Registered
Conseil / Astuce
Bien que la source de ce didacticiel soit un référentiel Git, Argo CD prend en charge d’autres sources de fichiers courantes telles que les référentiels Helm et Open Container Initiative (OCI).
Support des versions et des régions
GitOps est actuellement pris en charge dans les régions publiques.
Configuration réseau requise
Les agents GitOps nécessitent le protocole TCP sortant (sortie) vers la source du référentiel sur le port 22 (SSH) ou le port 443 (HTTPS) pour fonctionner. Les agents requièrent également accès aux URL sortantes suivantes :
| Point de terminaison (DNS) | Descriptif |
|---|---|
https://management.azure.com |
Requis pour que l’agent communique avec le service de configuration Kubernetes. |
https://<region>.dp.kubernetesconfiguration.azure.com |
Point de terminaison du plan de données permettant à l’agent d’envoyer (push) le statut et de récupérer (fetch) les informations de configuration. Dépend de <region> (les régions prises en charge mentionnées précédemment). |
https://login.microsoftonline.com |
Requis pour extraire et mettre à jour des jetons Azure Resource Manager. |
https://mcr.microsoft.com |
Requis pour extraire des images de conteneur pour les contrôleurs. |
Activer les extensions CLI
Installez les derniers packages d’extension CLI k8s-configuration et k8s-extension :
az extension add -n k8s-configuration
az extension add -n k8s-extension
Pour mettre à jour ces packages vers les dernières versions :
az extension update -n k8s-configuration
az extension update -n k8s-extension
Pour afficher une liste des extensions Azure CLI installées et leurs versions, utilisez la commande suivante :
az extension list -o table
Experimental ExtensionType Name Path Preview Version
------------- -------------- ----------------- ----------------------------------------------------- -------- --------
False whl connectedk8s C:\Users\somename\.azure\cliextensions\connectedk8s False 1.10.7
False whl k8s-configuration C:\Users\somename\.azure\cliextensions\k8s-configuration False 2.2.0
False whl k8s-extension C:\Users\somename\.azure\cliextensions\k8s-extension False 1.6.4
Créer une extension GitOps (Argo CD) (installation simple)
L’installation GitOps Argo CD prend en charge la multi-location en mode haute disponibilité (HA) et prend en charge l’identité de charge de travail.
Important
Le mode haute disponibilité est la configuration par défaut et nécessite quatre nœuds dans le cluster pour être en mesure d’installer. La commande ci-dessous ajoute --config "redis-ha.enabled=false" pour installer l'extension sur un seul nœud.
Cette commande crée la configuration la plus simple qui installe les composants Argo CD dans un nouvel argocd espace de noms avec un accès à l’échelle du cluster. L’accès à l’échelle du cluster permet de détecter les définitions d’application Argo CD dans n’importe quel espace de noms répertorié dans la configuration de configmap Argo CD dans le cluster. Par exemple : namespace1,namespace2
az k8s-extension create --resource-group <resource-group> \
--cluster-name <cluster-name> \
--cluster-type managedClusters \
--name argocd \
--extension-type Microsoft.ArgoCD \
--config "redis-ha.enabled=false" \
--config "configs.params.application\.namespaces=namespace1,namespace2"
Cette commande d’installation crée un <namespace> namespace et installe les composants Argo CD dans le <namespace>. Les définitions d'applications Argo CD dans cette configuration fonctionnent uniquement dans l'espace de nom <namespace>.
Note
Pour obtenir des options de configuration supplémentaires, telles que des limites de ressources, consultez values.yaml. Utilisez ces configurations dans votre commande Azure CLI lors de la configuration de l’extension.
Créer une extension GitOps (Argo CD) avec une identité de charge de travail
Une autre méthode d’installation recommandée pour l’utilisation de la production est l’identité de la charge de travail. Cette méthode utilise les identités Microsoft Entra ID pour s’authentifier auprès des ressources Azure, vous n’avez donc pas besoin de gérer des secrets ou des informations d’identification dans votre référentiel Git. Cette installation utilise l’authentification des identités de charge de travail activée dans la version 3.0.0-rc2 ou ultérieure d’Argo CD.
Important
Le mode haute disponibilité est la configuration par défaut et nécessite quatre nœuds dans le cluster pour être en mesure d’installer. Permet 'redis-ha.enabled': false d’installer l’extension sur un seul nœud.
Pour créer l’extension avec l’identité de charge de travail, remplacez d’abord les variables suivantes par vos propres valeurs dans ce modèle Bicep :
var clusterName = '<aks-or-arc-cluster-name>'
var workloadIdentityClientId = 'replace-me##-##-###-###'
var ssoApplicationClientId = 'replace-me##-##-###-###'
var url = 'https://<public-ip-for-argocd-ui>/'
var oidcConfig = '''
name: Azure
issuer: https://login.microsoftonline.com/<your-tenant-id>/v2.0
clientID: <same-value-as-ssoApplicationClientId>
azure:
useWorkloadIdentity: true
requestedIDTokenClaims:
groups:
essential: true
requestedScopes:
- openid
- profile
- email
'''
var defaultPolicy = 'role:readonly'
var policy = '''
p, role:org-admin, applications, *, */*, allow
p, role:org-admin, clusters, get, *, allow
p, role:org-admin, repositories, get, *, allow
p, role:org-admin, repositories, create, *, allow
p, role:org-admin, repositories, update, *, allow
p, role:org-admin, repositories, delete, *, allow
g, replace-me##-argocd-ui-entra-group-admin-id, role:org-admin
'''
resource cluster 'Microsoft.ContainerService/managedClusters@2024-10-01' existing = {
name: clusterName
}
resource extension 'Microsoft.KubernetesConfiguration/extensions@2023-05-01' = {
name: 'argocd'
scope: cluster
properties: {
extensionType: 'Microsoft.ArgoCD'
configurationSettings: {
'redis-ha.enabled': 'true'
'azure.workloadIdentity.enabled': 'true'
'azure.workloadIdentity.clientId': workloadIdentityClientId
'azure.workloadIdentity.entraSSOClientId': ssoApplicationClientId
'configs.cm.oidc\\.config': oidcConfig
'configs.cm.url': url
'configs.rbac.policy\\.default': defaultPolicy
'configs.rbac.policy\\.csv': policy
'configs.params.application\\.namespaces': 'default, argocd'
}
}
}
Créez le modèle Bicep à l’aide de la commande suivante :
az deployment group create --resource-group <resource-group> --template-file <bicep-file>
Note
Pour obtenir des options de configuration supplémentaires, telles que des limites de ressources, consultez values.yaml. Utilisez ces configurations dans le modèle Bicep lors de la configuration de l’extension.
Paramètres
clusterName est le nom du cluster Kubernetes activé par AKS ou Arc.
workloadIdentityClientId est l'ID client de l'identité gérée affectée par l'utilisateur utilisée par les composants Argo CD pour l'identité de charge de travail.
ssoApplicationClientId est l’ID d’application (client) de l’inscription d’application Microsoft Entra utilisée pour l’authentification OIDC SSO à l’interface utilisateur Argo CD. Pour plus d’informations sur la configuration générale et le paramétrage de ssoApplicationClientId, consultez Authentification de l’inscription d’application Microsoft Entra ID à l’aide d’OIDC.
url est l’adresse IP publique de l’interface utilisateur Argo CD. Il n’existe pas d’adresse IP publique ou de nom de domaine, sauf si le cluster dispose déjà d’un contrôleur d’entrée fourni par un client. Si c’est le cas, vous devez ajouter la règle d’entrée à l’interface utilisateur Argo CD après le déploiement. La fonctionnalité d’entrée nécessite le module complémentaire de routage d’application et n’est prise en charge que pour les clusters AKS.
oidcConfig - remplacez <your-tenant-id> par l’ID de locataire de votre ID Microsoft Entra. Remplacez <same-value-as-ssoApplicationClientId-above> par la même valeur que ssoApplicationClientId.
policy La variable argocd-rbac-cm configmap correspond aux paramètresd’Argo CD.
g, replace-me##-argocd-ui-entra-group-admin-id est l’ID de groupe Microsoft Entra qui donne à l’administrateur l’accès à l’interface utilisateur Argo CD. Vous trouverez l’ID de groupe Microsoft Entra dans le portail Azure sous Microsoft Entra ID > Groupes >les propriétés de votre nom> de groupe. Vous pouvez utiliser l’ID d’utilisateur Microsoft Entra au lieu d’un ID de groupe Microsoft Entra. Vous trouverez l’ID utilisateur Microsoft Entra dans le portail Azure sous Microsoft Entra ID > Utilisateurs >votre nom d’utilisateur> Propriétés.
Créer des informations d’identification de la charge de travail
Pour configurer de nouveaux identifiants d'identité de charge de travail, procédez comme suit :
Récupérez l’URL de l’émetteur OIDC pour votre cluster AKS ou votre cluster Kubernetes avec Arc.
Créez une identité managée et notez son ID client et son ID de locataire.
Établissez des informations d’identification d’identité fédérées pour votre cluster AKS ou votre cluster Kubernetes avec Arc. Par exemple:
# For source-controller az identity federated-credential create \ --name ${FEDERATED_IDENTITY_CREDENTIAL_NAME} \ --identity-name "${USER_ASSIGNED_IDENTITY_NAME}" \ --resource-group "${RESOURCE_GROUP}" \ --issuer "${OIDC_ISSUER}" \ --subjectAssurez-vous de fournir les autorisations appropriées pour l’identité de charge de travail de la ressource que vous souhaitez que ArgoCD, le contrôleur image-reflector ou le serveur argocd-repo-server utilise pour effectuer le pull. Par exemple, si vous utilisez Azure Container Registry, assurez-vous que
Container Registry Repository Reader(pour les registres avec ABAC activé) ouAcrPull(pour les registres sans ABAC) est appliqué.
Se connecter à des registres ACR privés ou à des référentiels ACR à l’aide de l’identité de charge de travail
Pour utiliser le registre ACR privé ou les référentiels ACR, suivez les instructions de la documentation officielle d’Argo CD pour la connexion à des registres ACR privés. L’étiquette des pods, Créer des informations d’identification fédérée etAjouter une annotation aux étapes du compte de service dans ce guide ont été effectuées par l’extension lors du déploiement de Bicep et peuvent être ignorées.
Migrer d’Argo CD OSS vers l’extension Argo CD gérée
Procédez comme suit pour migrer à partir d’une installation auto-gérée d’Argo CD vers l’extension Argo CD gérée par Azure.
Chemin de migration
Utilisez la séquence suivante pour éviter les conflits de contrôleur et réduire les risques de migration.
Passez en revue la configuration et l’inventaire actuels d’Argo CD :
- Applications
- Ensembles d’applications
- AppProjects
- Identifiants et modèles du référentiel (repocreds)
- Secrets du cluster
Ramener à zéro réplique les contrôleurs Argo CD autogérés afin d'éviter un fonctionnement à double contrôleur.
Installez l’extension Argo CD sur le cluster à l’aide de paramètres qui correspondent à votre déploiement existant.
Les applications dans n’importe quelle fonctionnalité d’espace de noms permettent à Argo CD de gérer les ressources situées en dehors de son espace de noms principal. Si votre cluster utilise déjà ce paramètre, vous n’avez pas besoin de déplacer vos ressources vers un nouvel espace de noms. Vous devez uniquement configurer la nouvelle extension pour surveiller les espaces de noms de votre application existante.
Cas A : Si vous utilisez déjà les applications dans n’importe quelle fonctionnalité d’espace de noms :
- Laissez toutes les ressources Application, ApplicationSet et AppProject dans leurs espaces de noms actuels.
- Configurez la nouvelle extension managée pour surveiller ces espaces de noms externes via les paramètres de l’extension.
Cas B : Si vous déplacez des ressources vers le nouvel espace de noms d’extension :
- Migrez applications, ApplicationSets et AppProjects vers l’espace de noms d’extension si nécessaire.
Migrez les informations d’identification du référentiel, les secrets de cluster et les repocreds vers l’espace de noms d’extension.
Vérifiez que les applications synchronisent et atteignent l’état sain attendu.
Supprimez l’ancien déploiement autogéré d’Argo CD une fois la validation terminée.
L’extension managée utilise les mêmes API Argo CD et les mêmes définitions de ressources personnalisées (CRD), ce qui vous permet de réutiliser la plupart des manifestes existants avec des modifications minimales.
Limitations actuelles
- Les mises à jour directes d’Argo CD ConfigMaps ne sont pas prises en charge.
- Utilisez l’API et les paramètres de configuration de l’extension pour appliquer les modifications de configuration d’Argo CD.
Configurer la surveillance avec Azure Prometheus managé et Azure Managed Grafana
Vous pouvez publier des métriques Argo CD sur Azure Prometheus managé et les visualiser dans Azure Managed Grafana.
Activez Azure Prometheus managé pour votre cluster. Consultez Activer la surveillance des clusters Azure Kubernetes Service (AKS).
Mettez à jour votre configuration d’extension pour activer les métriques et ServiceMonitors.
var clusterName = '<aks-or-arc-cluster-name>' resource cluster 'Microsoft.ContainerService/managedClusters@2024-10-01' existing = { name: clusterName } resource extension 'Microsoft.KubernetesConfiguration/extensions@2023-05-01' = { name: 'argocd' scope: cluster properties: { extensionType: 'Microsoft.ArgoCD' configurationSettings: { // Keep your existing settings and add these metrics flags. 'controller.metrics.enabled': 'true' 'controller.metrics.serviceMonitor.enabled': 'true' 'server.metrics.enabled': 'true' 'server.metrics.serviceMonitor.enabled': 'true' 'repoServer.metrics.enabled': 'true' 'repoServer.metrics.serviceMonitor.enabled': 'true' 'applicationSet.metrics.enabled': 'true' 'applicationSet.metrics.serviceMonitor.enabled': 'true' 'apiVersionOverrides.monitoring': 'azmonitoring.coreos.com/v1' } } }Importez le tableau de bord Grafana 14584 dans votre instance de Azure Managed Grafana.
Si les panneaux affichent Aucune donnée, mettez à jour les requêtes des panneaux pour tenir compte de la convention de nommage des tâches d’Azure Managed Prometheus.
Dans les panneaux de télémétrie du contrôleur (Utilisation de la mémoire, Utilisation du processeur, Goroutines), modifiez :
- De
job="argocd-metrics" - À
job=~"argocd.*-metrics"
- De
Dans les panneaux repo-server (Mémoire utilisée, Goroutines), modifiez :
- De
job="argocd-repo-server" - À
job="argocd-repo-server-metrics"
- De
Enregistrez le tableau de bord et vérifiez l’ingestion des métriques.
Activer Argo CD dans le portail Azure
Vous pouvez activer Argo CD dans le portail Azure pour afficher l’état et la synchronisation de l’application, et accéder à l’interface utilisateur Argo CD. Pour activer Argo CD dans le portail Azure, procédez comme suit :
Accédez à votre cluster dans le portail Azure.
Dans le menu du service, sous Paramètres, sélectionnez GitOps.
Sélectionnez Activer Argo CD (préversion).
Dans la section Bases :
- Définissez l’espace de noms dans lequel Argo CD s’exécute. Par défaut, l’espace de noms est
argocd. - Si vous le souhaitez, activez la haute disponibilité Redis. Cette option nécessite au moins 4 nœuds dans le cluster.
- Ajoutez éventuellement tous les espaces de noms supplémentaires à observer.
- Pour les clusters AKS uniquement, activez éventuellement l’authentification unique (SSO) afin que les utilisateurs puissent se connecter à l’aide de Microsoft Entra ID, en spécifiant une application et un ou plusieurs groupes pour autoriser l’accès à l’interface utilisateur Argo CD.
- Si vous le souhaitez, activez l’identité de charge de travail pour permettre à Argo CD d’accéder en toute sécurité aux services Azure sans stocker les secrets. Pour ce faire, sélectionnez la zone Activer l’identité de charge de travail et spécifiez une identité managée et un Azure Container Registry à partir duquel extraire des manifestes d’application ou des artefacts de conteneur.
- Définissez l’espace de noms dans lequel Argo CD s’exécute. Par défaut, l’espace de noms est
Sélectionnez Suivant pour continuer.
Pour les clusters AKS qui ont activé le module complémentaire de routage d’application, l’onglet Entrée vous permet de créer une ressource d’entrée pour acheminer le trafic vers un service. Si vous le souhaitez, sélectionnez Activer l’entrée et entrez votre nom d’entrée, les détails du certificat et le nom de domaine. Sélectionnez Suivant pour continuer.
Dans la section Vérifier + Déployer , passez en revue vos paramètres, puis sélectionnez Déployer pour activer Argo CD sur votre cluster.
Accéder à l’interface utilisateur Argo CD
S’il n’existe aucun contrôleur d’entrée existant pour le cluster AKS, l’interface utilisateur Argo CD peut être exposée directement à l’aide d’un service LoadBalancer. La commande suivante expose l’interface utilisateur Argo CD sur le port 80 et 443.
kubectl -n argocd expose service argocd-server --type LoadBalancer --name argocd-server-lb --port 80 --target-port 8080
Pour accéder à l’interface utilisateur Argo CD à partir du portail Azure, accédez à votre cluster. Dans le menu de service, sous Paramètres, sélectionnez GitOps. Ensuite, sélectionnez le lien affiché pour l’interface utilisateur Argo CD.
Déployer une application Argo CD
Après avoir installé l’extension Argo CD, vous pouvez déployer une application à l’aide de l’interface utilisateur ou de l’interface CLI d’Argo. L’exemple suivant utilise kubectl apply pour déployer AKS Store dans une application Argo CD, dans le projet Argo CD par défaut de l’espace de noms argocd.
kubectl apply -f - <<EOF
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: aks-store-demo
namespace: argocd
spec:
project: default
source:
repoURL: https://github.com/Azure-Samples/aks-store-demo.git
targetRevision: HEAD
path: kustomize/overlays/dev
syncPolicy:
automated: {}
destination:
namespace: argocd
server: https://kubernetes.default.svc
EOF
L’application de démonstration du Store AKS est installée dans l’espace de noms argocd. Pour afficher la page web de l’application, suivez ces instructions. Veillez à accéder à l’adresse IP en utilisant http et non https.
Mettre à jour la configuration de l’extension
Les configmaps Argo CD peuvent être mis à jour après l’installation et d’autres paramètres de configuration d’extension à l’aide de la commande suivante :
az k8s-extension update --resource-group <resource-group> \
--cluster-name <cluster-name> \
--cluster-type <cluster-type> \
--name argocd \
--config "configs.cm.url='https://<public-ip-for-argocd-ui>/auth/callback'"
Mettez à jour le configmap Argo CD via l’extension, afin que les paramètres ne soient pas remplacés. L’application du modèle Bicep est une autre méthode à l’utilisation d’Azure CLI pour mettre à jour la configuration.
Supprimer l’extension
Utilisez les commandes suivantes pour supprimer l’extension.
az k8s-extension delete -g <resource-group> -c <cluster-name> -n argocd -t managedClusters --yes
Étapes suivantes
- Problèmes de fichier et demandes de fonctionnalités sur le référentiel Azure/AKS. Veillez à inclure le mot ArgoCD dans la description ou le titre.
- Explorez l’exemple de code d’ingénierie AKS-Platform, qui déploie Argo CD OSS avec Backstage et Cluster API Provider pour Azure (CAPZ) ou Crossplane.