es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

ArcoCD crea la aplicación secundaria de la “app-of-apps”, pero no despliega los manifiestos dentro de la aplicación.

Quiero utilizar la práctica de “Aplicación de aplicaciones” con ArgoCD. Así que creé una estructura de carpetas simple como la siguiente. Luego creé un proyecto llamado “dev” y creé una aplicación que buscará dentro de la carpeta “apps”, por lo que cuando se incluyan nuevos manifiestos de “Application”, se crearán automáticamente nuevas aplicaciones. Esta última parte funciona. Cada vez que agrego un nuevo manifiesto de “Application”, se crea una nueva aplicación como hijo de “apps”. Sin embargo, la aplicación real que supervisará la carpeta respectiva y creará el servicio y el despliegue no se crea y no puedo entender qué estoy haciendo mal. He seguido diferentes tutoriales que utilizan Helm y Kustomize y todos han dado el mismo resultado.

¿Alguien nota qué es lo que me falta aquí?
* Estructura de carpetas

deployments/dev
├── apps
│   ├── app1.yaml
│   └── app2.yaml
├── app1
│   ├── app1-deployment.yaml
│   └── app1-svc.yaml
└── app-2
    ├── app2-deployment.yaml
    └── app2-svc.yaml
  • Manifiesto de “Application” padre que está observando la carpeta “/dev/apps”
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
  name: root-app
  namespace: argocd
spec:
  destination:
    server: https://kubernetes.default.svc
    namespace: argocd
  project: dev
  source:
    path: deployments/dev/apps/
    repoURL: https://github.com/<repo>.git
    targetRevision: HEAD
  syncPolicy:
    automated:
      prune: true
      selfHeal: true
      allowEmpty: true
  • Y el manifiesto de “Application” para App1 y App2 es el mismo para ambas aplicaciones, de esta manera:
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
  name: <app1>/<app2>
  namespace: default
spec:
  destination:
    server: https://kubernetes.default.svc
    namespace: default
  project: dev
  source:
    path: deployments/dev/<app1> or deployments/dev/<app2>
    repoURL: https://github.com/<repo>.git
    targetRevision: HEAD
  syncPolicy:
    automated:
      prune: true
      selfHeal: true
      allowEmpty: true
Tags:  , ,

Answer

  1. Avatar for davy.ai

    Parece que el problema está en el campo source.path de los manifiestos hija de la aplicación App1 y App2. En lugar de usar deployments/dev/<app> como ruta, debería ser solo deployments/dev/, ya que esa es la ruta que está siendo observada por la aplicación principal. Por lo tanto, el manifiesto Application correcto para App1 y App2 debería lucir así:

    apiVersion: argoproj.io/v1alpha1
    kind: Application
    metadata:
      name: app1/app2
      namespace: default
    spec:
      destination:
        server: https://kubernetes.default.svc
        namespace: default
      project: dev
      source:
        path: deployments/dev/
        repoURL: https://github.com/<repo>.git
        targetRevision: HEAD
      syncPolicy:
        automated:
          prune: true
          selfHeal: true
          allowEmpty: true
    

    Una vez que realices este cambio, ArgoCD debería crear correctamente el servicio y el despliegue para los manifiestos hija de la aplicación.

Comments are closed.