Cette rubrique répond aux questions fréquemment posées (FAQ) concernant l'utilisation de GitOps.
Comment les applications sont-elles regroupées dans la console GitOps ?
Comment un ingénieur O&M peut-il contrôler les déploiements d'applications ?
Que faire si le serveur de dépôt Argo CD renvoie une erreur « Out of diskspace » ?
Comment empêcher une application GitOps de suivre des ressources non applicatives ?
Comment redémarrer un composant Argo CD après avoir modifié son ConfigMap ?
Connexion à un dépôt Git privé
Pour des raisons de sécurité, les dépôts Git privés ne sont généralement pas accessibles depuis Internet. Pour connecter ACK One GitOps à un dépôt Git privé, vous devez établir une connectivité réseau, puis procéder à la configuration requise.
Étape 1 : Configurer la résolution des noms de domaine
Les étapes suivantes utilisent git.abc.cn comme exemple de nom de domaine pour le dépôt Git.
Connectez votre réseau local au réseau VPC d'ACK One. Pour plus d'informations, consultez la rubrique Connexion d'un centre de données local à un VPC.
-
Utilisez PrivateZone pour la résolution des noms de domaine au sein du VPC.
-
Connectez-vous à la console Alibaba Cloud DNS. Sur la page Private Zone, cliquez sur l'onglet User Defined Zones, puis cliquez sur Add Zone. Dans la boîte de dialogue, configurez les paramètres suivants et cliquez sur OK.
Authoritative Zone : abc.cn (en utilisant le domaine du dépôt Git
git.abc.cncomme exemple)Recursive Resolution Proxy for Subdomain Names : Enable
: sélectionnez le VPC lié à ACK One.
Dans la liste des noms de domaine, localisez le PrivateZone que vous venez de créer. Dans la colonne Actions, cliquez sur Settings pour ouvrir la page Settings.
-
Sur la page Settings, cliquez sur Add Record. Dans la boîte de dialogue, configurez les paramètres suivants et cliquez sur OK.
Record Type : A
Hostname : git (en utilisant
git.abc.cncomme exemple)Record Value : saisissez l'adresse IP du dépôt Git interne.
-
Étape 2 : Se connecter au dépôt Git
Une fois la résolution des noms de domaine configurée, ACK One GitOps peut accéder au dépôt Git privé. Vous pouvez ensuite vous connecter au dépôt Git depuis la console GitOps ou l'interface de ligne de commande (CLI) pour déployer des applications. Pour plus d'informations, consultez la documentation Private Repositories.
Regroupement des applications dans la console
Lorsque vous gérez un grand nombre d'applications, leur regroupement améliore l'utilisabilité. Dans le volet de navigation de gauche de la console GitOps, vous pouvez :
Filtrer par Favorites Only, SYNC STATUS ou HEALTH STATUS.
Regrouper par LABELS, PROJECTS, CLUSTERS, NAMESPACES ou AUTO SYNC.
Contrôle des déploiements d'applications
Le contrôle des déploiements d'applications est souvent nécessaire, en particulier dans le cadre de pipelines CI/CD automatisés. Vous pouvez utiliser les méthodes suivantes :
Utilisez des applications en mode
ManualSync. Après le push du code, un ingénieur O&M examine et vérifie l'application. Si celle-ci répond aux exigences, il peut cliquer manuellement surSyncpour synchroniser l'application avec le cluster de destination.Mettez à jour manuellement la version de l'image dans le dépôt de déploiement. Si vous ne surveillez pas automatiquement les modifications du dépôt d'images, un ingénieur O&M doit vérifier les nouvelles images. Après vérification, il peut mettre à jour manuellement la version de l'image dans le dépôt de déploiement de l'application, ce qui déclenche une synchronisation de l'application dans Argo CD.
Établissez un mécanisme de revue de code pour le dépôt de code métier dans votre pipeline CI/CD automatisé. Une fois qu'un ingénieur O&M a approuvé la revue de code et fusionné le code, le pipeline CI génère et pousse automatiquement l'image. Argo CD détecte alors automatiquement la modification de l'image et la déploie dans les environnements configurés avec
AutoSync. Vous pouvez également déployer manuellement dans les environnements configurés pourManualSync.
Que faire si le serveur de dépôt Argo CD signale une erreur Out of diskspace ?
Symptôme
Lorsque vous consultez les journaux en exécutant la commande kubectl -nargocd logs xxxx, le serveur de dépôt renvoie le message d'erreur suivant :
'git checkout --force xxx' failed exit status 128: error: unable to write file templates/deployment.yaml\nfat al: sha1 file '/tmp/_argocd-repo/xxx/.git/index.lock' write error. Out of diskspace...
Solution
Ce problème survient lorsque l'espace disque insuffisant entraîne un échec d'écriture dans le fichier .git/index.lock. Pour résoudre ce problème, augmentez le stockage temporaire des Pods du composant Argo CD d'ACK One GitOps. Ces composants s'exécutent sur Elastic Container Instance (ECI) et disposent de 30 GiB de stockage temporaire par défaut. Suivez ces étapes pour augmenter le stockage. Pour plus d'informations sur la facturation, consultez la rubrique Facturation de l'espace de stockage temporaire.
Obtenez le KubeConfig de l'instance de flotte depuis la console ACK One et connectez-vous à l'instance de flotte à l'aide de kubectl. Pour plus d'informations, consultez la rubrique Obtenir le KubeConfig d'un cluster et utiliser kubectl pour se connecter au cluster.
-
Dans le modèle de Pod du Deployment concerné, ajoutez l'annotation
k8s.aliyun.com/eci-extra-ephemeral-storage: "20Gi"au Pod. Vous pouvez personnaliser la quantité de stockage temporaire.-
Si GitOps est en mode par défaut, ajoutez l'annotation au Deployment argocd-server.
kubectl edit deployment -nargocd argocd-server -
Si GitOps est en mode haute disponibilité, ajoutez l'annotation au Deployment argocd-dex-imageupdate-repo-server.
kubectl edit deployment -nargocd argocd-dex-imageupdate-repo-server
apiVersion: apps/v1 kind: Deployment metadata: ... ... spec: template: metadata: annotations: # This adds 20 GiB to the default 30 GiB, for a total of 50 GiB. The amount of extra temporary storage is customizable. k8s.aliyun.com/eci-extra-ephemeral-storage: "20Gi" ... ... ... -
Empêcher le suivi des ressources non applicatives
Informations générales
Argo CD utilise le libellé app.kubernetes.io/instance pour suivre les ressources Kubernetes. Si une ressource possède ce libellé et que sa valeur correspond au nom de l'application, Argo CD la suit. Cela peut entraîner le maintien du statut OutOfSync de l'application et provoquer la suppression involontaire de la ressource non applicative. Pour éviter ce comportement, utilisez l'une des solutions suivantes.
Solutions
Solution 1 : dans le ConfigMap
argocd/argocd-cmde l'instance de flotte, ajoutezresource.exclusionspour ignorer les ressources non applicatives suivies. La configuration suivante ignore les ressourcesCiliumIdentity.
apiVersion: v1
kind: ConfigMap
metadata:
name: argocd-cm
labels:
app.kubernetes.io/name: argocd-cm
app.kubernetes.io/part-of: argocd
data:
...
resource.exclusions: |
- apiGroups:
- cilium.io
kinds:
- CiliumIdentity
clusters:
- "*"
-
Solution 2 : dans le ConfigMap
argocd/argocd-cmde l'instance de flotte, ajoutez le libellé de suivi personnaliséapplication.instanceLabelKey: argocd.argoproj.io/instance. Après cette modification, les ressources gérées par Argo CD utiliseront le libelléargocd.argoproj.io/instance. Cela empêche Argo CD de suivre d'autres ressources qui ne possèdent que le libelléapp.kubernetes.io/instance. Après avoir appliqué cette configuration, les applications existantes peuvent afficher un statutOutOfSyncjusqu'à ce qu'elles soient resynchronisées.apiVersion: v1 kind: ConfigMap metadata: name: argocd-cm labels: app.kubernetes.io/name: argocd-cm app.kubernetes.io/part-of: argocd data: ... application.instanceLabelKey: argocd.argoproj.io/instance
Redémarrage des composants après modification des ConfigMaps
Dans Argo CD, certaines modifications de ConfigMap ne prennent effet qu'après le redémarrage du composant Argo CD correspondant.
Le tableau suivant répertorie les ConfigMaps couramment modifiés.
|
Paramètre |
Description |
Redémarrage requis ? |
|
argocd-cm |
Utilisé pour configurer des paramètres tels que OpenID Connect (OIDC) personnalisé, une URL d'accès |
Un redémarrage n'est généralement pas requis. Toutefois, si la configuration ne prend pas effet, redémarrez argocd-server. |
|
argocd-cmd-params-cm |
Utilisé pour configurer les variables d'environnement des composants Argo CD. |
Un redémarrage du composant correspondant ou d'argocd-server est requis. |
|
argocd-rbac-cm |
Utilisé pour configurer les autorisations de contrôle d'accès basé sur les rôles (RBAC) d'Argo CD. |
Généralement, aucun redémarrage n'est nécessaire. |
|
argocd-image-updater-config |
Utilisé pour gérer les configurations de la mise à jour d'images. |
Un redémarrage du composant correspondant ou d'argocd-server est requis. |
|
argocd-notifications-cm |
Utilisé pour gérer les configurations d'argocd-notification-controller. |
Un redémarrage du composant correspondant ou d'argocd-server est requis. |
ACK One GitOps propose deux modes opérationnels :
En mode par défaut, tous les composants s'exécutent au sein d'un seul Deployment. Pour appliquer les modifications, redémarrez le Deployment argocd-server.
-
En mode haute disponibilité, les composants sont répartis dans plusieurs Deployments. Vous pouvez redémarrer les composants individuels selon vos besoins.
argocd-server
argocd-application-controller : contient application-controller et applicationset-controller.
argocd-repo-server
argocd-dex-imageupdate-notification : contient image-updater, notification-controller et dex.
argocd-redis
Suivez ces étapes pour redémarrer un composant :
Sur la page Multi-cluster GitOps, localisez la section Argo CD Component dans le panneau réductible GitOps.
Cliquez sur Restart à côté de Argo CD Component.
Dans la boîte de dialogue, sélectionnez le composant à redémarrer dans la liste déroulante Select Application to Restart, par exemple argocd-server, puis cliquez sur OK.
Le générateur Git ne reflète pas les modifications de répertoire
Symptôme
Lors de l'utilisation du générateur Git avec un ApplicationSet Argo CD, vous pouvez constater que les nouvelles ressources Application ne parviennent pas à être créées après l'ajout ou le renommage d'un répertoire dépendant dans le dépôt Git. Ce problème peut survenir même si vous mettez immédiatement à jour la ressource ApplicationSet pour pointer vers le nouveau chemin de répertoire.
Solution
Ce problème survient car Argo CD n'actualise pas automatiquement son cache lorsqu'un chemin de répertoire change. Pour résoudre ce problème, forcez une actualisation en ajoutant l'annotation argocd.argoproj.io/application-set-refresh="true" à l'ApplicationSet contenant le générateur Git. Voir l'exemple suivant :
apiVersion: argoproj.io/v1alpha1
kind: ApplicationSet
metadata:
···
annotations:
···
argocd.argoproj.io/application-set-refresh: "true"
spec:
···
generators:
- git:
···
template:
···