Files
apps-in-apps/README.md
T
2026-09-20 18:46:39 +02:00

65 lines
2.0 KiB
Markdown

# apps-in-apps
App-of-Apps Helm chart. Renders `argoproj.io/v1alpha1 Application` resources
for every entry configured under `applications` in [`values.yaml`](values.yaml),
including the [`valheim-gitops`](https://git.smokyzone.de/SmokyZone/valheim-gitops)
and [`expense_tracker-gitops`](https://git.smokyzone.de/SmokyZone/expense_tracker-gitops)
stacks.
Because this repository *is* a Helm chart, it can be registered in ArgoCD as its
own Application (Helm source), which then manages all child Applications declared
in `values.yaml`.
## Bootstrapping
1. Make sure ArgoCD is installed and its API server can reach
`git.smokyzone.de` (add repo credentials if the repos are private).
2. Apply the one-time root Application once:
```sh
kubectl apply -f bootstrap/root-application.yaml
```
This registers `apps-in-apps` itself as an ArgoCD Application using this
git repo as a Helm chart source, with automated sync/prune/self-heal.
3. ArgoCD renders `templates/application.yaml`, which creates one child
Application per entry in `applications` (currently: `valheim`, `expense-tracker`,
plus the platform apps).
## Adding another app
Add an entry to `applications` in `values.yaml`:
```yaml
applications:
- name: my-app
enabled: true
source:
repoURL: https://git.smokyzone.de/SmokyZone/my-app.git
targetRevision: main
path: .
destination:
server: https://kubernetes.default.svc
namespace: my-app
syncPolicy:
automated:
prune: true
selfHeal: true
syncOptions:
- CreateNamespace=true
```
Commit and push — ArgoCD picks it up on the next sync.
## Structure
```
apps-in-apps/
├── Chart.yaml # Helm chart metadata
├── values.yaml # List of managed Applications
├── templates/
│ └── application.yaml # Renders one Application per entry
└── bootstrap/
└── root-application.yaml # One-time manifest to register this chart in ArgoCD
```