Cree automáticamente múltiples aplicaciones en Argo CD

En un artículo anterior, demostré cómo Argo CD simplifica las distribuciones de GitOps basadas en extracción. En este tutorial, le mostraré cómo crear automáticamente múltiples aplicaciones en Argo CD usando el mismo Argo CD.

Dado que el trabajo de Argo CD es escuchar un repositorio y aplicar los archivos de manifiesto que encuentra al clúster, también puede usar este enfoque para configurar las partes internas de Argo CD. En mi ejemplo anterior, usé la GUI para crear una aplicación Nginx de muestra con tres réplicas. Esta vez, uso el mismo enfoque que antes, pero creo una aplicación desde la GUI para implementar tres aplicaciones separadas: app-1, app-2, Y app-3.

Índice

Configurando nuestras aplicaciones secundarias

Primero, comience creando los archivos de manifiesto para sus tres aplicaciones. En mi example-assets depositar, Yo tengo creó tres aplicaciones bajo argocd/my-apps. Las tres aplicaciones son Nginx con tres réplicas. Asegúrese de crear cada aplicación en su propia carpeta.

Crear un Archivos YAML para definir la primera aplicación y guardarla como my-apps/app-1/app.yml:

apiVersion: apps/v1
kind
: Deployment
metadata
:
  name
: nginx-app-1
  labels
:
    app
: nginx-app-1
spec
:
  replicas
: 3
  selector
:
    matchLabels
:
      app
: nginx-app-1
  template
:
    metadata
:
      labels
:
        app
: nginx-app-1
    spec
:
      Contenedores
:
      - name
: nginx
        image
: nginx:latest
        ports
:
        - containerPort
: 80

Cree otro para su segunda aplicación y guárdelo como my-apps/app-2/app.yml:

apiVersion: apps/v1
kind
: Deployment
metadata
:
  name
: nginx-app-2
  labels
:
    app
: nginx-app-2
spec
:
  replicas
: 3
  selector
:
    matchLabels
:
      app
: nginx-app-2
  template
:
    metadata
:
      labels
:
        app
: nginx-app-2
    spec
:
      Contenedores
:
      - name
: nginx
        image
: nginx:latest
        ports
:
        - containerPort
: 80

Cree una tercera para su aplicación final y guárdela como my-apps/app-3/app.yml:

apiVersion: apps/v1
kind
: Deployment
metadata
:
  name
: nginx-app-3
  labels
:
    app
: nginx-app-3
spec
:
  replicas
: 3
  selector
:
    matchLabels
:
      app
: nginx-app-3
  template
:
    metadata
:
      labels
:
        app
: nginx-app-3
    spec
:
      Contenedores
:
      - name
: nginx
        image
: nginx:latest
        ports
:
        - containerPort
: 80

Ahora que sus archivos de manifiesto están listos, necesita crear aplicaciones de Argo CD que apunten a esos manifiestos.

Argo CD se puede configurar de tres maneras diferentes: usando la GUI, usando la CLI o usando los archivos de manifiesto de Kubernetes. En este artículo, utilizo el tercer método.

Cree los siguientes archivos de manifiesto en una carpeta nueva argocd/argo-apps. Esto es argocd-apps/app-1.yml:

apiVersion: argoproj.io/v1alpha1
kind
: Application
metadata
:
  name
: my-app-1
  namespace
: argocd
  finalizers
:
  - resources-finalizer.argocd.argoproj.io
spec
:
  destination
:
    namespace
: argocd
    server
: https://kubernetes.default.svc
  project
: default
  source
:
    path
: argocd/my-apps/app-1
    repoURL
: https://gitlab.com/ayush-sharma/example-assets.git
    targetRevision
: HEAD

Esto es argocd-apps/app-2.yml:

apiVersion: argoproj.io/v1alpha1
kind
: Application
metadata
:
  name
: my-app-2
  namespace
: argocd
  finalizers
:
  - resources-finalizer.argocd.argoproj.io
spec
:
  destination
:
    namespace
: argocd
    server
: https://kubernetes.default.svc
  project
: default
  source
:
    path
: argocd/my-apps/app-2
    repoURL
: https://gitlab.com/ayush-sharma/example-assets.git
    targetRevision
: HEAD

Y esto es argocd-apps/app-3.yml:

apiVersion: argoproj.io/v1alpha1
kind
: Application
metadata
:
  name
: my-app-3
  namespace
: argocd
  finalizers
:
  - resources-finalizer.argocd.argoproj.io
spec
:
  destination
:
    namespace
: argocd
    server
: https://kubernetes.default.svc
  project
: default
  source
:
    path
: argocd/my-apps/app-3
    repoURL
: https://gitlab.com/ayush-sharma/example-assets.git
    targetRevision
: HEAD

Como puede ver, está creando un objeto de Kubernetes llamado Application En el argocd espacio de nombres Este objeto contiene el repositorio Git de origen y los detalles del servidor de destino. Sus aplicaciones apuntan a los archivos de manifiesto de Nginx que creó anteriormente.

Configuración de nuestra aplicación principal

Ahora necesita una forma de decirle a Argo CD cómo encontrar sus tres aplicaciones Nginx. Haga esto creando otra aplicación más. Este modelo se llama el App of Apps patrón, donde una aplicación contiene instrucciones para implementar varias aplicaciones secundarias.

Crear una nueva aplicación desde la GUI llamada my-apps con la siguiente configuración:

apiVersion: argoproj.io/v1alpha1
kind
: Application
metadata
:
  name
: my-apps
spec
:
  destination
:
    namespace
: default
    server
: 'https://kubernetes.default.svc'
  source
:
    path
: argocd/argocd-apps
    repoURL
: 'https://gitlab.com/ayush-sharma/example-assets.git'
    targetRevision
: HEAD
  project
: default
  syncPolicy
:
    automated
:
      prune
: true
      selfHeal
: true

Una vez creado, my-apps iniciar la sincronización en la GUI:

Cuando se completa la sincronización, las tres aplicaciones Nginx también se muestran en la GUI:

Como no has habilitado AutoSync, sincronizar manualmente app-1, app-2, Y app-3. Una vez sincronizadas, sus réplicas de Nginx se distribuyen a las tres aplicaciones.

Conclusión

Dominar la App of Apps patrón es fundamental para explotar toda la potencia de Argo CD. Este método le permite administrar grupos de aplicaciones de forma limpia. Por ejemplo, la distribución de Prometheus, Grafana, Loki y otros servicios vitales podría ser manejada por una aplicación DevOps, mientras que la distribución del código frontend podría ser manejada por una aplicación frontend. La configuración de diferentes opciones de sincronización y ubicaciones de repositorio para cada una le brinda un control preciso sobre diferentes grupos de aplicaciones.

Artículos de interés

Subir