Skip to content

hendrikmaus/argo-cd-app-of-apps

Repository files navigation

Cluster Bootstrapping Experiment Using Argo CD, App-of-Apps and Sync Waves

An experiment, running locally, to use the App-of-Apps pattern of Argo CD to provision a cluster (the same cluster in this case) while declaring dependencies between the apps using Sync Waves.

Requirements

Configuration

The configuration is done using .env and argo-cd.yaml.

Usage

Run the experiment:

just run

The run recipe is idempotent.

Inspect the cluster.

Cleanup:

just clean

Structure

.
├── app-of-apps.yaml                <-- defines a cluster; one would have one of these per cluster
|── app-project.yaml                <-- each cluster should reside in its own Argo CD `AppProject`
├── apps                            <-- this chart contains the apps of a cluster including dependencies
│  ├── Chart.yaml                         i.e. sync waves, hooks etc. (app-of-apps.yaml points to this chart)
│  ├── templates
│  │  ├── istio-operator.yaml
│  │  └── istio-profile.yaml
│  └── values.yaml
├── argo-cd.yaml                    <-- values file for the argo-cd demo deployment
├── charts                          <-- this directory simulates a chart musuem to be used 
│  └── istio-profile                      by the Argo CD `Application` resources in the `apps` chart above
│     ├── Chart.yaml
│     ├── templates
│     │  ├── namespace.yaml
│     │  └── profile.yaml
│     └── values.yaml
├── justfile
├── k3d-default.yaml
├── kubeconfig
└── README.md

Known Issues

The health assessment of the Application resource was removed from Argo CD and has to be re-enabled using the ConfigMap.

See:

This experiment includes the patch.