You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: docs/argocd.md
+11-11Lines changed: 11 additions & 11 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -82,13 +82,13 @@ These `AppProject` resources are defined in `infrastructure/argocd/apps/projects
82
82
We use **three simple ApplicationSets** that discover applications based on their directory structure. This follows a "convention over configuration" approach, eliminating the need for metadata files, and follows **2025 homelab best practices** with a flattened structure.
83
83
84
84
### 1. The "Directory as Application" Pattern
85
-
Instead of relying on marker files, our `ApplicationSet`s discover applications by looking for directories that match a predefined path pattern. The application's name and target namespace are derived directly from this path. Each`ApplicationSet`is co-located with its applications:
86
-
-**Infrastructure:**`infrastructure/*` (defined in `infrastructure/infrastructure-appset.yaml`)
87
-
-**Monitoring:**`monitoring/*` (defined in `monitoring/monitoring-appset.yaml`)
88
-
-**My Apps:**`my-apps/*/*` (defined in `my-apps/my-apps-appset.yaml`)
85
+
Instead of relying on marker files, our `ApplicationSet`s discover applications by looking for directories that match a predefined path pattern. The application's name and target namespace are derived directly from this path. The`ApplicationSet`resources are centrally managed in `infrastructure/argocd/apps/`:
86
+
-**Infrastructure:**`infrastructure/*` (defined in `infrastructure/argocd/apps/infrastructure-appset.yaml`)
87
+
-**Monitoring:**`monitoring/*` (defined in `infrastructure/argocd/apps/monitoring-appset.yaml`)
88
+
-**My Apps:**`my-apps/*/*` (defined in `infrastructure/argocd/apps/my-apps-appset.yaml`)
89
89
90
90
### 2. ApplicationSet Configuration
91
-
Each`ApplicationSet` is **co-located** with its applications, following peer-level organization. Here is the `my-apps-appset.yaml` as an example:
91
+
All`ApplicationSet`s are managed by the `root` ArgoCD application and are defined within `infrastructure/argocd/apps/`. Here is the `my-apps-appset.yaml` as an example:
92
92
93
93
```yaml
94
94
apiVersion: argoproj.io/v1alpha1
@@ -140,19 +140,19 @@ The repository structure follows **2025 homelab best practices** with a flattene
140
140
├── infrastructure/
141
141
│ ├── argocd/ # <-- Manually bootstrapped, NOT in AppSet
142
142
│ │ ├── apps/ # <-- ArgoCD's OWN config (Projects/AppSets)
143
-
│ │ │ └── ...
143
+
│ │ │ ├── infrastructure-appset.yaml
144
+
│ │ │ ├── monitoring-appset.yaml
145
+
│ │ │ ├── my-apps-appset.yaml
146
+
│ │ │ └── projects.yaml
144
147
│ │ └── ...
145
-
│ ├── infrastructure-appset.yaml # <-- ApplicationSet co-located with apps
146
148
│ ├── cert-manager/ # <-- Scanned by infrastructure-appset
147
149
│ ├── longhorn/ # <-- Scanned by infrastructure-appset
148
150
│ └── ...
149
151
├── monitoring/
150
-
│ ├── monitoring-appset.yaml # <-- ApplicationSet co-located with apps
151
152
│ ├── prometheus-stack/ # <-- Scanned by monitoring-appset
152
153
│ ├── loki-stack/ # <-- Scanned by monitoring-appset
153
154
│ └── ...
154
155
└── my-apps/
155
-
├── my-apps-appset.yaml # <-- ApplicationSet co-located with apps
156
156
└── development/
157
157
└── nginx/ # <-- Scanned by my-apps-appset
158
158
└── ...
@@ -163,7 +163,7 @@ The repository structure follows **2025 homelab best practices** with a flattene
163
163
1.**Flattened & Self-Managing ArgoCD**:
164
164
- ArgoCD's entire configuration lives within `infrastructure/argocd`.
165
165
- The `root` application manages the projects and `ApplicationSet`s from its own `apps/` subdirectory.
166
-
-**ApplicationSets are co-located with their applications**, following 2025 homelab best practices.
166
+
-**ApplicationSets are centrally managed within the ArgoCD configuration**, following 2025 homelab best practices.
167
167
-**ArgoCD's configuration is structurally isolated from other infrastructure apps, preventing recursive management loops.**
|**ApplicationSet not generating apps**| Verify the directory structure matches the `path` pattern in the `ApplicationSet`. Check the `ApplicationSet` controller logs in the `argocd` namespace. Ensure directories have valid `kustomization.yaml` files. |
245
-
|**Recursive loop or Helm error on `infra-argocd`**| This error occurs if the `infrastructure-appset` is configured to scan a path that includes the `infrastructure/argocd` directory. The ApplicationSet excludes`infrastructure/argocd`to prevent this issue. Verify the exclude patterns in `infrastructure/infrastructure-appset.yaml`. |
245
+
|**Recursive loop or Helm error on `infra-argocd`**| This error occurs if the `infrastructure-appset` is configured to scan a path that includes the `infrastructure/argocd` directory itself. The `infrastructure-appset.yaml` in`infrastructure/argocd/apps` is configured to prevent this. |
246
246
|**Applications stuck in sync**| Review application logs (`argocd app logs <app-name>`) and check for sync errors in the UI. Check if Helm charts require `--enable-helm` flag. |
247
247
|**ArgoCD UI not accessible**| Check the `http-route.yaml` and the status of the Gateway API or ingress controller. |
248
248
|**Nested kustomization Helm issues**| The 2025 structure flattens nested kustomizations to avoid `--enable-helm` inheritance issues. If you see Helm chart errors, ensure the chart is defined at the ApplicationSet target level, not nested. |
0 commit comments