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 vous permet d’utiliser des identités d’ID Microsoft Entra pour vous authentifier auprès des ressources Azure sans avoir à gérer les secrets ou les informations d’identification dans votre dépôt 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 ssoWorkloadIdentityClientId = '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-ssoWorkloadIdentityClientId-above>
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': ssoWorkloadIdentityClientId
'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'
}
}
}
Le modèle Bicep peut être créé à l’aide de cette commande :
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 et ssoWorkloadIdentityClientId sont les ID client de l’identité managée souhaitée pour l’identité de charge de travail. Il ssoWorkloadIdentityClientId est utilisé pour l’authentification de l’interface utilisateur Argo CD et il workloadIdentityClientId est utilisé pour l’identité de charge de travail pour les composants Argo CD. Visitez l’authentification d’inscription d’application Microsoft Entra ID à l’aide d’OIDC pour plus d’informations sur l’installation et la configuration générales de ssoWorkloadIdentityClientId.
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, la règle d’entrée doit être ajoutée à l’interface utilisateur Argo CD après le déploiement.
oidcConfig - remplacez <your-tenant-id> par l’ID de locataire de votre ID Microsoft Entra. Remplacez <same-value-as-ssoWorkloadIdentityClientId-above> par la même valeur que ssoWorkloadIdentityClientId.
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. L’ID de groupe Microsoft Entra se trouve dans le portail Azure sous Microsoft Entra ID > Groups >your-group-name> Properties. Vous pouvez utiliser l’ID d’utilisateur Microsoft Entra au lieu d’un ID de groupe Microsoft Entra. L’ID d’utilisateur Microsoft Entra se trouve dans le portail Azure sous Microsoft Entra ID > Users >your-user-name> Properties.
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 soit
Container Registry Repository Reader(pour les registres compatibles ABAC), soit (pour les registres non ABAC) ait été 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.
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
Déployer une application Argo CD
Maintenant que l’extension Argo CD est installée, vous pouvez déployer une application à l’aide de l’interface utilisateur ou de l’interface CLI Argo. L'exemple suivant utilise simplement kubectl apply pour déployer le magasin AKS dans une application Argo CD sur le projet Argo CD par défaut dans 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 magasin AKS a été installée dans l’espace de noms argocd. Consultez la page web de l’application en suivant ces instructions. Veillez à visiter l’adresse IP à l’aide 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 et 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.