Compare commits

...
4 Commits
Author SHA1 Message Date
SmokyZoneandClaude Sonnet 5 7188566c76 Add expense-tracker Application
Co-Authored-By: Claude Sonnet 5 <[email protected]>
2026-09-20 18:46:39 +02:00
SmokyZoneandClaude Sonnet 5 a6e33217ee Add Stakater Reloader application
Deploys the Reloader chart (2.2.17) into the reloader namespace. Uses the
annotations reload strategy so ArgoCD selfHeal does not revert an injected
env var as drift.

Co-Authored-By: Claude Sonnet 5 <[email protected]>
2026-09-20 16:38:08 +02:00
SmokyZoneandCopilot 49ed09459f Fix external-secrets CRD sync failure with ServerSideApply
secretstores.external-secrets.io / clustersecretstores.external-secrets.io
CRDs embed a very large OpenAPI schema. Client-side apply stores the full
manifest in the last-applied-configuration annotation, exceeding
Kubernetes' 262144 byte annotation limit
("metadata.annotations: Too long"). Enable ServerSideApply for the
external-secrets Application to avoid that annotation entirely.

Co-authored-by: Copilot <[email protected]>
2026-09-18 19:54:33 +02:00
SmokyZone 6827a7b482 use correct repo for openbao 2026-09-18 19:50:06 +02:00
2 changed files with 59 additions and 4 deletions
+4 -3
View File
@@ -3,7 +3,8 @@
App-of-Apps Helm chart. Renders `argoproj.io/v1alpha1 Application` resources App-of-Apps Helm chart. Renders `argoproj.io/v1alpha1 Application` resources
for every entry configured under `applications` in [`values.yaml`](values.yaml), for every entry configured under `applications` in [`values.yaml`](values.yaml),
including the [`valheim-gitops`](https://git.smokyzone.de/SmokyZone/valheim-gitops) including the [`valheim-gitops`](https://git.smokyzone.de/SmokyZone/valheim-gitops)
stack. 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 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 own Application (Helm source), which then manages all child Applications declared
@@ -22,8 +23,8 @@ in `values.yaml`.
This registers `apps-in-apps` itself as an ArgoCD Application using this 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. git repo as a Helm chart source, with automated sync/prune/self-heal.
3. ArgoCD renders `templates/application.yaml`, which creates one child 3. ArgoCD renders `templates/application.yaml`, which creates one child
Application per entry in `applications` (currently: `valheim`, pointing at Application per entry in `applications` (currently: `valheim`, `expense-tracker`,
the `valheim-gitops` chart). plus the platform apps).
## Adding another app ## Adding another app
+55 -1
View File
@@ -33,6 +33,25 @@ applications:
syncOptions: syncOptions:
- CreateNamespace=true - CreateNamespace=true
# Budget / expense tracker: web app + Postgres + ingress (https://budget.smokyzone.de:30444).
# Needs its secrets in OpenBao first (secret/expense-tracker/{app,db}) - see the
# expense_tracker-gitops README. Until then its pods wait for the ExternalSecrets.
- name: expense-tracker
enabled: true
source:
repoURL: https://git.smokyzone.de/SmokyZone/expense_tracker-gitops.git
targetRevision: main
path: .
destination:
server: https://kubernetes.default.svc
namespace: expense-tracker
syncPolicy:
automated:
prune: true
selfHeal: true
syncOptions:
- CreateNamespace=true
# External Secrets Operator - installed straight from its official Helm # External Secrets Operator - installed straight from its official Helm
# repo (no git source needed). CRDs are installed by the chart itself. # repo (no git source needed). CRDs are installed by the chart itself.
- name: external-secrets - name: external-secrets
@@ -53,12 +72,19 @@ applications:
selfHeal: true selfHeal: true
syncOptions: syncOptions:
- CreateNamespace=true - CreateNamespace=true
# The SecretStore/ClusterSecretStore CRDs embed a very large OpenAPI
# schema; a plain `kubectl apply` stores the full manifest in the
# `kubectl.kubernetes.io/last-applied-configuration` annotation,
# which exceeds Kubernetes' 262144 byte annotation limit and fails
# with "metadata.annotations: Too long". Server-side apply avoids
# writing that annotation entirely.
- ServerSideApply=true
# OpenBao secret management backend + its ClusterSecretStore binding for ESO. # OpenBao secret management backend + its ClusterSecretStore binding for ESO.
- name: openbao - name: openbao
enabled: true enabled: true
source: source:
repoURL: https://git.smokyzone.de/SmokyZone/openbao-gitops.git repoURL: https://git.smokyzone.de/SmokyZone/openbao.git
targetRevision: main targetRevision: main
path: . path: .
destination: destination:
@@ -70,3 +96,31 @@ applications:
selfHeal: true selfHeal: true
syncOptions: syncOptions:
- CreateNamespace=true - CreateNamespace=true
# Stakater Reloader - watches Secrets/ConfigMaps and triggers a rolling restart
# of workloads that reference them (e.g. after ESO refreshes a secret from OpenBao).
# Opt-in per workload via annotation, e.g. on a Deployment/StatefulSet:
# secret.reloader.stakater.com/reload: "<secret-name>"
# or `reloader.stakater.com/auto: "true"` to react to every referenced Secret/ConfigMap.
- name: reloader
enabled: true
source:
repoURL: https://stakater.github.io/stakater-charts
chart: reloader
targetRevision: "2.2.17"
helm:
values: |
reloader:
# The default strategy injects an env var into the pod template, which
# ArgoCD (selfHeal) would revert as drift. Annotations on the pod template
# are extra map keys and are ignored by ArgoCD's diff.
reloadStrategy: annotations
destination:
server: https://kubernetes.default.svc
namespace: reloader
syncPolicy:
automated:
prune: true
selfHeal: true
syncOptions:
- CreateNamespace=true