new approach
This commit is contained in:
@@ -20,23 +20,19 @@
|
|||||||
```
|
```
|
||||||
gitops/
|
gitops/
|
||||||
├── bootstrap/
|
├── bootstrap/
|
||||||
│ └── root-app.yaml # the app-of-apps (only file you apply manually, once)
|
│ ├── namespaces.yaml # cluster namespaces
|
||||||
|
│ ├── argocd-install/ # Argo CD install manifests + ingress
|
||||||
|
│ └── root-app.yaml # root Application watching apps/root
|
||||||
├── apps/
|
├── apps/
|
||||||
│ └── root/
|
│ ├── root/
|
||||||
│ ├── kustomization.yaml # lists every child Application
|
│ │ ├── kustomization.yaml # points to applicationset.yaml
|
||||||
│ ├── argocd.yaml # Argo CD managing itself (dogfood)
|
│ │ └── applicationset.yaml# auto-discovers apps/*/*.yaml
|
||||||
│ ├── notepad.yaml
|
│ └── <namespace>/ # e.g., default/, media/, monitoring/
|
||||||
│ └── ...
|
│ ├── <app-1>.yaml # all-in-one manifest per app
|
||||||
└── apps/<name>/ # per-app dir
|
│ └── <app-2>.yaml
|
||||||
├── kustomization.yaml
|
|
||||||
├── deployment.yaml
|
|
||||||
├── service.yaml
|
|
||||||
├── ingress.yaml
|
|
||||||
└── pvc.yaml
|
|
||||||
```
|
```
|
||||||
|
|
||||||
`apps/root/kustomization.yaml` is the switchboard — adding a service = adding one
|
To add a new app: simply drop `<app>.yaml` into the appropriate `apps/<namespace>/` folder. The ApplicationSet automatically generates an Argo CD Application for it.
|
||||||
`Application` entry + one folder.
|
|
||||||
|
|
||||||
## 3. Manual bootstrap (run once, by hand)
|
## 3. Manual bootstrap (run once, by hand)
|
||||||
|
|
||||||
@@ -83,10 +79,7 @@ spec:
|
|||||||
selfHeal: true
|
selfHeal: true
|
||||||
```
|
```
|
||||||
|
|
||||||
**`apps/root/argocd.yaml`** — Argo CD managing itself (standard dogfood pattern).
|
**`apps/root/applicationset.yaml`** — Uses the Git Files generator to discover any `apps/*/*.yaml` file and automatically generate an Argo CD `Application` pointing directly to that app file within the respective namespace.
|
||||||
**Each child app** follows the same shape with `path: apps/<name>` and
|
|
||||||
`destination.namespace` matching where it runs today (`default` for most of your
|
|
||||||
internal apps).
|
|
||||||
|
|
||||||
## 5. Ingress (internal-only, per Haven convention)
|
## 5. Ingress (internal-only, per Haven convention)
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,33 @@
|
|||||||
|
apiVersion: argoproj.io/v1alpha1
|
||||||
|
kind: ApplicationSet
|
||||||
|
metadata:
|
||||||
|
name: haven-apps
|
||||||
|
namespace: argocd
|
||||||
|
spec:
|
||||||
|
generators:
|
||||||
|
- git:
|
||||||
|
repoURL: https://git.ivanch.me/ivanch/haven-ops.git
|
||||||
|
revision: main
|
||||||
|
files:
|
||||||
|
- path: "apps/*/*.yaml"
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
name: "{{path.filenameNormalized}}"
|
||||||
|
namespace: argocd
|
||||||
|
finalizers:
|
||||||
|
- resources-finalizer.argocd.argoproj.io
|
||||||
|
spec:
|
||||||
|
project: default
|
||||||
|
source:
|
||||||
|
repoURL: https://git.ivanch.me/ivanch/haven-ops.git
|
||||||
|
targetRevision: main
|
||||||
|
path: "{{path}}"
|
||||||
|
directory:
|
||||||
|
include: "{{path.filename}}"
|
||||||
|
destination:
|
||||||
|
server: https://kubernetes.default.svc
|
||||||
|
namespace: "{{path[1]}}"
|
||||||
|
syncPolicy:
|
||||||
|
automated:
|
||||||
|
prune: true
|
||||||
|
selfHeal: true
|
||||||
@@ -1,7 +1,5 @@
|
|||||||
apiVersion: kustomize.config.k8s.io/v1beta1
|
apiVersion: kustomize.config.k8s.io/v1beta1
|
||||||
kind: Kustomization
|
kind: Kustomization
|
||||||
|
|
||||||
resources:
|
resources:
|
||||||
- notepad.yaml
|
- applicationset.yaml
|
||||||
# - argocd.yaml # enable once Argo CD itself is onboarded (self-managed)
|
|
||||||
# - openwebui.yaml # future apps: one Application file each, listed here
|
|
||||||
# - paperless.yaml
|
|
||||||
|
|||||||
@@ -1,20 +0,0 @@
|
|||||||
apiVersion: argoproj.io/v1alpha1
|
|
||||||
kind: Application
|
|
||||||
metadata:
|
|
||||||
name: notepad
|
|
||||||
namespace: argocd
|
|
||||||
finalizers:
|
|
||||||
- resources-finalizer.argocd.argoproj.io
|
|
||||||
spec:
|
|
||||||
project: default
|
|
||||||
source:
|
|
||||||
repoURL: https://git.ivanch.me/ivanch/haven-ops.git
|
|
||||||
targetRevision: main
|
|
||||||
path: apps/notepad
|
|
||||||
destination:
|
|
||||||
server: https://kubernetes.default.svc
|
|
||||||
namespace: default
|
|
||||||
syncPolicy:
|
|
||||||
automated:
|
|
||||||
prune: true
|
|
||||||
selfHeal: true
|
|
||||||
@@ -4,6 +4,7 @@ kind: Kustomization
|
|||||||
namespace: argocd
|
namespace: argocd
|
||||||
|
|
||||||
resources:
|
resources:
|
||||||
|
- https://github.com/argoproj/argo-cd.git/manifests/crds?ref=stable
|
||||||
- https://github.com/argoproj/argo-cd.git/manifests/cluster-install?ref=stable
|
- https://github.com/argoproj/argo-cd.git/manifests/cluster-install?ref=stable
|
||||||
- ingress.yaml
|
- ingress.yaml
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user