102 lines
2.8 KiB
Markdown
102 lines
2.8 KiB
Markdown
# Configuration ArgoCD pour gérer les Endpoints
|
|
|
|
Par défaut, ArgoCD **exclut** les ressources de type `Endpoints` car elles sont généralement gérées automatiquement par Kubernetes. Pour que ArgoCD gère les Endpoints créés par Helm, il faut les inclure explicitement.
|
|
|
|
## Solution 1 : Configurer le projet ArgoCD (Recommandé - OBLIGATOIRE)
|
|
|
|
⚠️ **IMPORTANT** : Cette étape est **obligatoire**. Sans cette configuration, ArgoCD ne créera jamais les Endpoints, même avec les annotations dans les templates.
|
|
|
|
Modifiez le projet ArgoCD pour inclure les Endpoints :
|
|
|
|
```bash
|
|
# Récupérer la configuration du projet
|
|
kubectl get appproject dev -n argocd-ops -o yaml > project-dev.yaml
|
|
|
|
# Ajouter resourceInclusions dans le projet
|
|
```
|
|
|
|
Ou via l'interface ArgoCD :
|
|
1. Allez dans **Settings > Projects**
|
|
2. Sélectionnez le projet `dev`
|
|
3. Dans **Resource Inclusion**, ajoutez :
|
|
- **Group** : (vide)
|
|
- **Kind** : `Endpoints`
|
|
4. Sauvegardez
|
|
|
|
## Solution 2 : Configurer l'application directement
|
|
|
|
Modifiez l'application `external-devices-dev` pour inclure les Endpoints :
|
|
|
|
```bash
|
|
kubectl patch application external-devices-dev -n argocd-ops \
|
|
--type merge \
|
|
-p '{"spec":{"source":{"helm":{"includeCRDs":true}}}}'
|
|
```
|
|
|
|
Puis ajoutez la configuration dans l'Application :
|
|
|
|
```yaml
|
|
apiVersion: argoproj.io/v1alpha1
|
|
kind: Application
|
|
metadata:
|
|
name: external-devices-dev
|
|
namespace: argocd-ops
|
|
spec:
|
|
# ... autres configurations ...
|
|
source:
|
|
helm:
|
|
# Inclure les Endpoints
|
|
includeCRDs: true
|
|
# Ou utiliser resourceInclusions au niveau de l'application
|
|
# (nécessite ArgoCD 2.4+)
|
|
```
|
|
|
|
## Solution 3 : Modifier la configuration globale d'ArgoCD
|
|
|
|
Modifiez le ConfigMap `argocd-cm` pour inclure les Endpoints globalement :
|
|
|
|
```bash
|
|
kubectl edit configmap argocd-cm -n argocd-ops
|
|
```
|
|
|
|
Ajoutez :
|
|
|
|
```yaml
|
|
resourceInclusions: |
|
|
- apiGroups: [""]
|
|
kinds: ["Endpoints"]
|
|
clusters: ["*"]
|
|
```
|
|
|
|
⚠️ **Attention** : Cette modification affecte **toutes** les applications ArgoCD.
|
|
|
|
## Solution 4 : Utiliser une annotation sur l'Application
|
|
|
|
Si vous utilisez ArgoCD 2.4+, vous pouvez ajouter une annotation directement sur l'Application :
|
|
|
|
```yaml
|
|
metadata:
|
|
annotations:
|
|
argocd.argoproj.io/sync-options: IncludeEndpoints=true
|
|
```
|
|
|
|
## Vérification
|
|
|
|
Après la configuration, vérifiez que les Endpoints sont gérés :
|
|
|
|
```bash
|
|
# Vérifier que l'application voit les Endpoints
|
|
argocd app get external-devices-dev
|
|
|
|
# Vérifier que les Endpoints sont créés
|
|
kubectl get endpoints omv-backend -n traefik-dev
|
|
```
|
|
|
|
## Recommandation
|
|
|
|
Pour ce cas d'usage spécifique (Endpoints pour équipements externes), la **Solution 1** (configurer le projet) est recommandée car :
|
|
- Elle est limitée au projet `dev`
|
|
- Elle n'affecte pas les autres applications
|
|
- Elle est persistante et versionnée si vous utilisez GitOps pour les projets
|
|
|