commit 971835f8459936b6a883b7d32e5eda4866b4088d Author: Ben Vincent Date: Sun Mar 1 14:31:16 2026 +1100 feat: initial commit - add structure to clusters, apps and argocd objects - add bootstrapping features diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..b55735e --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +manifests/ diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..0c7ed0f --- /dev/null +++ b/Makefile @@ -0,0 +1,15 @@ +.PHONY: build clean + +# Build a kustomization path to manifests directory +# Usage: make build clusters/au-syd1/bootstrap +build: + @mkdir -p manifests/$(filter-out $@,$(MAKECMDGOALS)) + @kustomize build $(filter-out $@,$(MAKECMDGOALS)) --output manifests/$(filter-out $@,$(MAKECMDGOALS)) + +# Clean all generated manifests +clean: + @rm -rf manifests/ + +# Allow any argument after build to be treated as a path +%: + @: \ No newline at end of file diff --git a/apps/base/kustomization.yaml b/apps/base/kustomization.yaml new file mode 100644 index 0000000..257f9fe --- /dev/null +++ b/apps/base/kustomization.yaml @@ -0,0 +1,7 @@ +--- +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization + +resources: + - ../../argocd/projects + - ../../argocd/applicationsets diff --git a/apps/base/reflector-system/kustomization.yaml b/apps/base/reflector-system/kustomization.yaml new file mode 100644 index 0000000..d48a8ea --- /dev/null +++ b/apps/base/reflector-system/kustomization.yaml @@ -0,0 +1,13 @@ +--- +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization + +resources: + - namespace.yaml + +helmCharts: + - name: reflector + repo: oci://ghcr.io/emberstack/helm-charts + version: "10.0.1" + releaseName: reflector + namespace: reflector-system diff --git a/apps/base/reflector-system/namespace.yaml b/apps/base/reflector-system/namespace.yaml new file mode 100644 index 0000000..77a344d --- /dev/null +++ b/apps/base/reflector-system/namespace.yaml @@ -0,0 +1,5 @@ +--- +apiVersion: v1 +kind: Namespace +metadata: + name: reflector-system diff --git a/apps/overlays/au-syd1/reflector-system/helm-patch.yaml b/apps/overlays/au-syd1/reflector-system/helm-patch.yaml new file mode 100644 index 0000000..8788074 --- /dev/null +++ b/apps/overlays/au-syd1/reflector-system/helm-patch.yaml @@ -0,0 +1,8 @@ +--- +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization + +helmCharts: + - name: reflector + valuesFiles: + - values.yaml diff --git a/apps/overlays/au-syd1/reflector-system/kustomization.yaml b/apps/overlays/au-syd1/reflector-system/kustomization.yaml new file mode 100644 index 0000000..481d83c --- /dev/null +++ b/apps/overlays/au-syd1/reflector-system/kustomization.yaml @@ -0,0 +1,9 @@ +--- +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization + +resources: + - ../../../base/reflector-system + +patches: + - helm-patch.yaml diff --git a/apps/overlays/au-syd1/reflector-system/values.yaml b/apps/overlays/au-syd1/reflector-system/values.yaml new file mode 100644 index 0000000..8a4bee7 --- /dev/null +++ b/apps/overlays/au-syd1/reflector-system/values.yaml @@ -0,0 +1,7 @@ +--- +replicaCount: 2 + +resources: + requests: + memory: "256Mi" + cpu: "100m" diff --git a/argocd/applicationsets/kustomization.yaml b/argocd/applicationsets/kustomization.yaml new file mode 100644 index 0000000..3427256 --- /dev/null +++ b/argocd/applicationsets/kustomization.yaml @@ -0,0 +1,6 @@ +--- +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization + +resources: + - platform.yaml \ No newline at end of file diff --git a/argocd/applicationsets/platform.yaml b/argocd/applicationsets/platform.yaml new file mode 100644 index 0000000..0d739ab --- /dev/null +++ b/argocd/applicationsets/platform.yaml @@ -0,0 +1,31 @@ +--- +apiVersion: argoproj.io/v1alpha1 +kind: ApplicationSet +metadata: + name: platform-apps + namespace: argocd +spec: + generators: + - git: + repoURL: https://git.unkin.net/unkin/argocd-apps + revision: HEAD + directories: + - path: apps/overlays/*/reflector-system + - path: apps/overlays/*/cert-manager + - path: apps/overlays/*/externaldns + template: + metadata: + name: '{{path[2]}}-{{path[3]}}' # cluster-app format (e.g., au-syd1-reflector-system) + spec: + project: platform + source: + repoURL: https://git.unkin.net/unkin/argocd-apps + targetRevision: HEAD + path: '{{path}}' + destination: + server: https://kubernetes.default.svc + namespace: '{{path[3]}}' # Use directory name as namespace + syncPolicy: + automated: + prune: true + selfHeal: true diff --git a/argocd/projects/kustomization.yaml b/argocd/projects/kustomization.yaml new file mode 100644 index 0000000..3427256 --- /dev/null +++ b/argocd/projects/kustomization.yaml @@ -0,0 +1,6 @@ +--- +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization + +resources: + - platform.yaml \ No newline at end of file diff --git a/argocd/projects/platform.yaml b/argocd/projects/platform.yaml new file mode 100644 index 0000000..83338cd --- /dev/null +++ b/argocd/projects/platform.yaml @@ -0,0 +1,28 @@ +--- +apiVersion: argoproj.io/v1alpha1 +kind: AppProject +metadata: + name: platform + namespace: argocd +spec: + description: Platform infrastructure and core services + sourceRepos: + - https://git.unkin.net/unkin/argocd-apps + - oci://ghcr.io/emberstack/helm-charts + destinations: + - namespace: 'kube-system' + server: https://kubernetes.default.svc + - namespace: 'reflector-system' + server: https://kubernetes.default.svc + clusterResourceWhitelist: + - group: '' + kind: Namespace + - group: 'rbac.authorization.k8s.io' + kind: ClusterRole + - group: 'rbac.authorization.k8s.io' + kind: ClusterRoleBinding + - group: 'apiextensions.k8s.io' + kind: CustomResourceDefinition + namespaceResourceWhitelist: + - group: '*' + kind: '*' diff --git a/clusters/au-syd1/apps/kustomization.yaml b/clusters/au-syd1/apps/kustomization.yaml new file mode 100644 index 0000000..7194d1c --- /dev/null +++ b/clusters/au-syd1/apps/kustomization.yaml @@ -0,0 +1,6 @@ +--- +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization + +resources: + - ../../../apps/base diff --git a/clusters/au-syd1/bootstrap/kustomization.yaml b/clusters/au-syd1/bootstrap/kustomization.yaml new file mode 100644 index 0000000..3be43f8 --- /dev/null +++ b/clusters/au-syd1/bootstrap/kustomization.yaml @@ -0,0 +1,6 @@ +--- +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization + +resources: + - https://artifactapi.k8s.syd1.au.unkin.net/api/v1/remote/github_raw/argoproj/argo-cd/refs/tags/v3.3.2/manifests/ha/install.yaml