diff --git a/.taskfiles/BrewTasks.yaml b/.taskfiles/BrewTasks.yaml index bdb440d6..b6b79d12 100644 --- a/.taskfiles/BrewTasks.yaml +++ b/.taskfiles/BrewTasks.yaml @@ -22,6 +22,7 @@ tasks: jq k0sproject/tap/k0sctl k9s + kubeconform kubernetes-cli kustomize sops diff --git a/.taskfiles/RepoTasks.yaml b/.taskfiles/RepoTasks.yaml index b0af817a..dffddb18 100644 --- a/.taskfiles/RepoTasks.yaml +++ b/.taskfiles/RepoTasks.yaml @@ -8,23 +8,23 @@ tasks: desc: Clean files and directories no longer needed after cluster bootstrap cmds: # Move bootstrap directory to gitignored directory - - mkdir -p {{.ROOT}}/.private - - mv {{.ROOT}}/bootstrap {{.ROOT}}/.private + - mkdir -p {{.ROOT_DIR}}/.private + - mv {{.ROOT_DIR}}/bootstrap {{.ROOT_DIR}}/.private # Update renovate.json5 - - sed -i '' 's/(..\.j2)\?(..\.j2)\?//g' {{.ROOT}}/.github/renovate.json5 - - sed -i '' 's/addons/d' {{.ROOT}}/.github/renovate.json5 + - sed -i '' 's/(..\.j2)\?(..\.j2)\?//g' {{.ROOT_DIR}}/.github/renovate.json5 + - sed -i '' 's/addons/d' {{.ROOT_DIR}}/.github/renovate.json5 preconditions: - - { msg: "bootstrap dir not found", sh: "test -d {{.ROOT}}/bootstrap" } + - { msg: "bootstrap dir not found", sh: "test -d {{.ROOT_DIR}}/bootstrap" } - { msg: "renovate.json5 not found", sh: "test -f {{.ROOT_DIR}}/.github/renovate.json5" } reset: desc: Remove templated configuration files prompt: Remove templated configuration files... continue? cmds: - - rm -rf {{.ROOT}}/.sops.yaml - - rm -rf {{.ROOT}}/k0s-config.yaml - - rm -rf {{.ROOT}}/ansible - - rm -rf {{.ROOT}}/kubernetes + - rm -rf {{.ROOT_DIR}}/.sops.yaml + - rm -rf {{.ROOT_DIR}}/k0s-config.yaml + - rm -rf {{.ROOT_DIR}}/ansible + - rm -rf {{.ROOT_DIR}}/kubernetes reset-repo: desc: Set repo back to HEAD diff --git a/README.md b/README.md index 8ed7e973..2b8c1d7e 100644 --- a/README.md +++ b/README.md @@ -164,7 +164,7 @@ Once you have installed Debian on your nodes, there are six stages to getting a task ansible:deps ``` -4. Install the required tools: [age](https://github.com/FiloSottile/age), [flux](https://toolkit.fluxcd.io/), [cloudflared](https://github.com/cloudflare/cloudflared), [kubectl](https://kubernetes.io/docs/tasks/tools/), [sops](https://github.com/getsops/sops) +4. Install the required tools: [age](https://github.com/FiloSottile/age), [flux](https://toolkit.fluxcd.io/), [cloudflared](https://github.com/cloudflare/cloudflared), [kubectl](https://kubernetes.io/docs/tasks/tools/), [sops](https://github.com/getsops/sops), [kubeconform](https://github.com/yannh/kubeconform) 📍 _Not using brew? Make sure to look up how to install the latest version of each of these CLI tools yourself._ diff --git a/Taskfile.yaml b/Taskfile.yaml index a9950499..791a2db7 100644 --- a/Taskfile.yaml +++ b/Taskfile.yaml @@ -26,10 +26,9 @@ tasks: init: desc: Initialize configuration files - dir: "{{.BOOTSTRAP_DIR}}" cmds: - - cp -n vars/addons.sample.yaml vars/addons.yaml - - cp -n vars/config.sample.yaml vars/config.yaml + - cp -n {{.BOOTSTRAP_DIR}}vars/addons.sample.yaml {{.BOOTSTRAP_DIR}}/vars/addons.yaml + - cp -n {{.BOOTSTRAP_DIR}}/vars/config.sample.yaml {{.BOOTSTRAP_DIR}}/vars/config.yaml - cmd: echo "=== Configuration files copied ===" silent: true - cmd: echo "Proceed with updating the configuration files..." @@ -47,6 +46,8 @@ tasks: configure: desc: Configure repository from Ansible vars prompt: Any conflicting config in the root kubernetes and ansible directories will be overwritten... continue? - cmd: ./.venv/bin/ansible-playbook {{.BOOTSTRAP_DIR}}/configure.yaml + cmds: + - ./.venv/bin/ansible-playbook {{.BOOTSTRAP_DIR}}/configure.yaml + - ./scripts/kubeconform.sh {{.KUBERNETES_DIR}} env: ANSIBLE_DISPLAY_SKIPPED_HOSTS: "false" diff --git a/bootstrap/templates/addons/coredns/app/kustomization.yaml.j2 b/bootstrap/templates/addons/coredns/app/kustomization.yaml.j2 index 5dd7baca..6cb81530 100644 --- a/bootstrap/templates/addons/coredns/app/kustomization.yaml.j2 +++ b/bootstrap/templates/addons/coredns/app/kustomization.yaml.j2 @@ -1,3 +1,4 @@ +#jinja2: trim_blocks: True, lstrip_blocks: True --- apiVersion: kustomize.config.k8s.io/v1beta1 kind: Kustomization diff --git a/bootstrap/templates/addons/coredns/ks.yaml.j2 b/bootstrap/templates/addons/coredns/ks.yaml.j2 index bf2a537e..32f546f6 100644 --- a/bootstrap/templates/addons/coredns/ks.yaml.j2 +++ b/bootstrap/templates/addons/coredns/ks.yaml.j2 @@ -1,3 +1,4 @@ +#jinja2: trim_blocks: True, lstrip_blocks: True --- apiVersion: kustomize.toolkit.fluxcd.io/v1 kind: Kustomization diff --git a/bootstrap/templates/addons/csi-driver-nfs/app/helmrelease.yaml.j2 b/bootstrap/templates/addons/csi-driver-nfs/app/helmrelease.yaml.j2 index 110011a7..eab32664 100644 --- a/bootstrap/templates/addons/csi-driver-nfs/app/helmrelease.yaml.j2 +++ b/bootstrap/templates/addons/csi-driver-nfs/app/helmrelease.yaml.j2 @@ -1,3 +1,4 @@ +#jinja2: trim_blocks: True, lstrip_blocks: True --- apiVersion: helm.toolkit.fluxcd.io/v2beta2 kind: HelmRelease diff --git a/bootstrap/templates/addons/csi-driver-nfs/app/kustomization.yaml.j2 b/bootstrap/templates/addons/csi-driver-nfs/app/kustomization.yaml.j2 index 70fd2032..fd7129e3 100644 --- a/bootstrap/templates/addons/csi-driver-nfs/app/kustomization.yaml.j2 +++ b/bootstrap/templates/addons/csi-driver-nfs/app/kustomization.yaml.j2 @@ -1,3 +1,4 @@ +#jinja2: trim_blocks: True, lstrip_blocks: True --- apiVersion: kustomize.config.k8s.io/v1beta1 kind: Kustomization diff --git a/bootstrap/templates/addons/csi-driver-nfs/ks.yaml.j2 b/bootstrap/templates/addons/csi-driver-nfs/ks.yaml.j2 index 13b49712..5bef1cda 100644 --- a/bootstrap/templates/addons/csi-driver-nfs/ks.yaml.j2 +++ b/bootstrap/templates/addons/csi-driver-nfs/ks.yaml.j2 @@ -1,3 +1,4 @@ +#jinja2: trim_blocks: True, lstrip_blocks: True --- apiVersion: kustomize.toolkit.fluxcd.io/v1 kind: Kustomization diff --git a/bootstrap/templates/addons/discord-template-notifier/app/helmrelease.yaml.j2 b/bootstrap/templates/addons/discord-template-notifier/app/helmrelease.yaml.j2 index ec1426be..cf36c79c 100644 --- a/bootstrap/templates/addons/discord-template-notifier/app/helmrelease.yaml.j2 +++ b/bootstrap/templates/addons/discord-template-notifier/app/helmrelease.yaml.j2 @@ -1,3 +1,4 @@ +#jinja2: trim_blocks: True, lstrip_blocks: True --- apiVersion: helm.toolkit.fluxcd.io/v2beta2 kind: HelmRelease diff --git a/bootstrap/templates/addons/discord-template-notifier/app/kustomization.yaml.j2 b/bootstrap/templates/addons/discord-template-notifier/app/kustomization.yaml.j2 index 95bf4747..c7514bd0 100644 --- a/bootstrap/templates/addons/discord-template-notifier/app/kustomization.yaml.j2 +++ b/bootstrap/templates/addons/discord-template-notifier/app/kustomization.yaml.j2 @@ -1,3 +1,4 @@ +#jinja2: trim_blocks: True, lstrip_blocks: True --- apiVersion: kustomize.config.k8s.io/v1beta1 kind: Kustomization diff --git a/bootstrap/templates/addons/discord-template-notifier/app/secret.sops.yaml.j2 b/bootstrap/templates/addons/discord-template-notifier/app/secret.sops.yaml.j2 index 12759d18..57205983 100644 --- a/bootstrap/templates/addons/discord-template-notifier/app/secret.sops.yaml.j2 +++ b/bootstrap/templates/addons/discord-template-notifier/app/secret.sops.yaml.j2 @@ -1,3 +1,4 @@ +#jinja2: trim_blocks: True, lstrip_blocks: True --- apiVersion: v1 kind: Secret diff --git a/bootstrap/templates/addons/discord-template-notifier/ks.yaml.j2 b/bootstrap/templates/addons/discord-template-notifier/ks.yaml.j2 index 0b333f3c..550cbac8 100644 --- a/bootstrap/templates/addons/discord-template-notifier/ks.yaml.j2 +++ b/bootstrap/templates/addons/discord-template-notifier/ks.yaml.j2 @@ -1,3 +1,4 @@ +#jinja2: trim_blocks: True, lstrip_blocks: True --- apiVersion: kustomize.toolkit.fluxcd.io/v1 kind: Kustomization diff --git a/bootstrap/templates/addons/grafana/app/helmrelease.yaml.j2 b/bootstrap/templates/addons/grafana/app/helmrelease.yaml.j2 index 6f3d34b8..998fe21f 100644 --- a/bootstrap/templates/addons/grafana/app/helmrelease.yaml.j2 +++ b/bootstrap/templates/addons/grafana/app/helmrelease.yaml.j2 @@ -1,3 +1,4 @@ +#jinja2: trim_blocks: True, lstrip_blocks: True --- apiVersion: helm.toolkit.fluxcd.io/v2beta2 kind: HelmRelease diff --git a/bootstrap/templates/addons/homepage/app/configmap.yaml.j2 b/bootstrap/templates/addons/homepage/app/configmap.yaml.j2 index 67607302..bc6c8545 100644 --- a/bootstrap/templates/addons/homepage/app/configmap.yaml.j2 +++ b/bootstrap/templates/addons/homepage/app/configmap.yaml.j2 @@ -1,3 +1,4 @@ +#jinja2: trim_blocks: True, lstrip_blocks: True --- apiVersion: v1 kind: ConfigMap diff --git a/bootstrap/templates/addons/homepage/app/helmrelease.yaml.j2 b/bootstrap/templates/addons/homepage/app/helmrelease.yaml.j2 index 1aebbe5e..6b903c17 100644 --- a/bootstrap/templates/addons/homepage/app/helmrelease.yaml.j2 +++ b/bootstrap/templates/addons/homepage/app/helmrelease.yaml.j2 @@ -1,3 +1,4 @@ +#jinja2: trim_blocks: True, lstrip_blocks: True --- apiVersion: helm.toolkit.fluxcd.io/v2beta2 kind: HelmRelease diff --git a/bootstrap/templates/addons/homepage/app/kustomization.yaml.j2 b/bootstrap/templates/addons/homepage/app/kustomization.yaml.j2 index c1a01c52..f609e602 100644 --- a/bootstrap/templates/addons/homepage/app/kustomization.yaml.j2 +++ b/bootstrap/templates/addons/homepage/app/kustomization.yaml.j2 @@ -1,3 +1,4 @@ +#jinja2: trim_blocks: True, lstrip_blocks: True --- apiVersion: kustomize.config.k8s.io/v1beta1 kind: Kustomization diff --git a/bootstrap/templates/addons/homepage/app/secret.sops.yaml.j2 b/bootstrap/templates/addons/homepage/app/secret.sops.yaml.j2 index 609cb953..c726f0dc 100644 --- a/bootstrap/templates/addons/homepage/app/secret.sops.yaml.j2 +++ b/bootstrap/templates/addons/homepage/app/secret.sops.yaml.j2 @@ -1,3 +1,4 @@ +#jinja2: trim_blocks: True, lstrip_blocks: True --- apiVersion: v1 kind: Secret diff --git a/bootstrap/templates/addons/homepage/ks.yaml.j2 b/bootstrap/templates/addons/homepage/ks.yaml.j2 index 6466cb56..3ce2f5d5 100644 --- a/bootstrap/templates/addons/homepage/ks.yaml.j2 +++ b/bootstrap/templates/addons/homepage/ks.yaml.j2 @@ -1,3 +1,4 @@ +#jinja2: trim_blocks: True, lstrip_blocks: True --- apiVersion: kustomize.toolkit.fluxcd.io/v1 kind: Kustomization diff --git a/bootstrap/templates/addons/kube-prometheus-stack/app/helmrelease.yaml.j2 b/bootstrap/templates/addons/kube-prometheus-stack/app/helmrelease.yaml.j2 index aca4fbce..45b2817d 100644 --- a/bootstrap/templates/addons/kube-prometheus-stack/app/helmrelease.yaml.j2 +++ b/bootstrap/templates/addons/kube-prometheus-stack/app/helmrelease.yaml.j2 @@ -1,3 +1,4 @@ +#jinja2: trim_blocks: True, lstrip_blocks: True --- apiVersion: helm.toolkit.fluxcd.io/v2beta2 kind: HelmRelease diff --git a/bootstrap/templates/addons/kube-prometheus-stack/app/kustomization.yaml.j2 b/bootstrap/templates/addons/kube-prometheus-stack/app/kustomization.yaml.j2 index dc39651b..d02ddbf5 100644 --- a/bootstrap/templates/addons/kube-prometheus-stack/app/kustomization.yaml.j2 +++ b/bootstrap/templates/addons/kube-prometheus-stack/app/kustomization.yaml.j2 @@ -1,3 +1,4 @@ +#jinja2: trim_blocks: True, lstrip_blocks: True --- apiVersion: kustomize.config.k8s.io/v1beta1 kind: Kustomization diff --git a/bootstrap/templates/addons/kube-prometheus-stack/ks.yaml.j2 b/bootstrap/templates/addons/kube-prometheus-stack/ks.yaml.j2 index f84c6a34..fe740591 100644 --- a/bootstrap/templates/addons/kube-prometheus-stack/ks.yaml.j2 +++ b/bootstrap/templates/addons/kube-prometheus-stack/ks.yaml.j2 @@ -1,3 +1,4 @@ +#jinja2: trim_blocks: True, lstrip_blocks: True --- apiVersion: kustomize.toolkit.fluxcd.io/v1 kind: Kustomization diff --git a/bootstrap/templates/addons/kubernetes-dashboard/app/helmrelease.yaml.j2 b/bootstrap/templates/addons/kubernetes-dashboard/app/helmrelease.yaml.j2 index 8bc2a3eb..ad9993e8 100644 --- a/bootstrap/templates/addons/kubernetes-dashboard/app/helmrelease.yaml.j2 +++ b/bootstrap/templates/addons/kubernetes-dashboard/app/helmrelease.yaml.j2 @@ -1,3 +1,4 @@ +#jinja2: trim_blocks: True, lstrip_blocks: True --- apiVersion: helm.toolkit.fluxcd.io/v2beta2 kind: HelmRelease @@ -31,13 +32,13 @@ spec: ingress: enabled: true className: internal - {% if homepage.enabled | default(false) %} - annotations: - gethomepage.dev/enabled: "true" - gethomepage.dev/icon: kubernetes-dashboard.png - gethomepage.dev/name: Kubernetes Dashboard - gethomepage.dev/group: Observability - {% endif %} + {% if homepage.enabled | default(false) %} + annotations: + gethomepage.dev/enabled: "true" + gethomepage.dev/icon: kubernetes-dashboard.png + gethomepage.dev/name: Kubernetes Dashboard + gethomepage.dev/group: Observability + {% endif %} hosts: - &host "kubernetes.${SECRET_DOMAIN}" tls: diff --git a/bootstrap/templates/addons/kubernetes-dashboard/app/kustomization.yaml.j2 b/bootstrap/templates/addons/kubernetes-dashboard/app/kustomization.yaml.j2 index b5b97586..a133d4b9 100644 --- a/bootstrap/templates/addons/kubernetes-dashboard/app/kustomization.yaml.j2 +++ b/bootstrap/templates/addons/kubernetes-dashboard/app/kustomization.yaml.j2 @@ -1,3 +1,4 @@ +#jinja2: trim_blocks: True, lstrip_blocks: True --- apiVersion: kustomize.config.k8s.io/v1beta1 kind: Kustomization diff --git a/bootstrap/templates/addons/kubernetes-dashboard/app/rbac.yaml.j2 b/bootstrap/templates/addons/kubernetes-dashboard/app/rbac.yaml.j2 index 831de090..556aa63e 100644 --- a/bootstrap/templates/addons/kubernetes-dashboard/app/rbac.yaml.j2 +++ b/bootstrap/templates/addons/kubernetes-dashboard/app/rbac.yaml.j2 @@ -1,3 +1,4 @@ +#jinja2: trim_blocks: True, lstrip_blocks: True # For dashboard sign in token: # kubectl -n observability get secret kubernetes-dashboard -o jsonpath='{.data.token}' | base64 -d --- diff --git a/bootstrap/templates/addons/kubernetes-dashboard/ks.yaml.j2 b/bootstrap/templates/addons/kubernetes-dashboard/ks.yaml.j2 index ca65d7c2..52846b97 100644 --- a/bootstrap/templates/addons/kubernetes-dashboard/ks.yaml.j2 +++ b/bootstrap/templates/addons/kubernetes-dashboard/ks.yaml.j2 @@ -1,3 +1,4 @@ +#jinja2: trim_blocks: True, lstrip_blocks: True --- apiVersion: kustomize.toolkit.fluxcd.io/v1 kind: Kustomization diff --git a/bootstrap/templates/addons/system-upgrade-controller/app/helmrelease.yaml.j2 b/bootstrap/templates/addons/system-upgrade-controller/app/helmrelease.yaml.j2 index aae67a2e..3057b12f 100644 --- a/bootstrap/templates/addons/system-upgrade-controller/app/helmrelease.yaml.j2 +++ b/bootstrap/templates/addons/system-upgrade-controller/app/helmrelease.yaml.j2 @@ -1,3 +1,4 @@ +#jinja2: trim_blocks: True, lstrip_blocks: True --- apiVersion: helm.toolkit.fluxcd.io/v2beta2 kind: HelmRelease diff --git a/bootstrap/templates/addons/system-upgrade-controller/app/kustomization.yaml.j2 b/bootstrap/templates/addons/system-upgrade-controller/app/kustomization.yaml.j2 index 74d66703..e604b2db 100644 --- a/bootstrap/templates/addons/system-upgrade-controller/app/kustomization.yaml.j2 +++ b/bootstrap/templates/addons/system-upgrade-controller/app/kustomization.yaml.j2 @@ -1,3 +1,4 @@ +#jinja2: trim_blocks: True, lstrip_blocks: True --- apiVersion: kustomize.config.k8s.io/v1beta1 kind: Kustomization diff --git a/bootstrap/templates/addons/system-upgrade-controller/app/rbac.yaml.j2 b/bootstrap/templates/addons/system-upgrade-controller/app/rbac.yaml.j2 index 17fee325..e1711e6a 100644 --- a/bootstrap/templates/addons/system-upgrade-controller/app/rbac.yaml.j2 +++ b/bootstrap/templates/addons/system-upgrade-controller/app/rbac.yaml.j2 @@ -1,3 +1,4 @@ +#jinja2: trim_blocks: True, lstrip_blocks: True --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding diff --git a/bootstrap/templates/addons/system-upgrade-controller/ks.yaml.j2 b/bootstrap/templates/addons/system-upgrade-controller/ks.yaml.j2 index 3d05ac51..ecc6b4fc 100644 --- a/bootstrap/templates/addons/system-upgrade-controller/ks.yaml.j2 +++ b/bootstrap/templates/addons/system-upgrade-controller/ks.yaml.j2 @@ -1,3 +1,4 @@ +#jinja2: trim_blocks: True, lstrip_blocks: True --- apiVersion: kustomize.toolkit.fluxcd.io/v1 kind: Kustomization diff --git a/bootstrap/templates/addons/system-upgrade-controller/plans/agent.yaml.j2 b/bootstrap/templates/addons/system-upgrade-controller/plans/agent.yaml.j2 index dcbd38db..78b6d294 100644 --- a/bootstrap/templates/addons/system-upgrade-controller/plans/agent.yaml.j2 +++ b/bootstrap/templates/addons/system-upgrade-controller/plans/agent.yaml.j2 @@ -1,3 +1,4 @@ +#jinja2: trim_blocks: True, lstrip_blocks: True --- apiVersion: upgrade.cattle.io/v1 kind: Plan diff --git a/bootstrap/templates/addons/system-upgrade-controller/plans/kustomization.yaml.j2 b/bootstrap/templates/addons/system-upgrade-controller/plans/kustomization.yaml.j2 index 2a658c35..2de6d6a0 100644 --- a/bootstrap/templates/addons/system-upgrade-controller/plans/kustomization.yaml.j2 +++ b/bootstrap/templates/addons/system-upgrade-controller/plans/kustomization.yaml.j2 @@ -1,3 +1,4 @@ +#jinja2: trim_blocks: True, lstrip_blocks: True --- apiVersion: kustomize.config.k8s.io/v1beta1 kind: Kustomization diff --git a/bootstrap/templates/addons/system-upgrade-controller/plans/server.yaml.j2 b/bootstrap/templates/addons/system-upgrade-controller/plans/server.yaml.j2 index 773883ce..047b49df 100644 --- a/bootstrap/templates/addons/system-upgrade-controller/plans/server.yaml.j2 +++ b/bootstrap/templates/addons/system-upgrade-controller/plans/server.yaml.j2 @@ -1,3 +1,4 @@ +#jinja2: trim_blocks: True, lstrip_blocks: True --- apiVersion: upgrade.cattle.io/v1 kind: Plan diff --git a/bootstrap/templates/addons/volsync/app/helmrelease.yaml.j2 b/bootstrap/templates/addons/volsync/app/helmrelease.yaml.j2 index 0ba4ca82..d0e9f095 100644 --- a/bootstrap/templates/addons/volsync/app/helmrelease.yaml.j2 +++ b/bootstrap/templates/addons/volsync/app/helmrelease.yaml.j2 @@ -1,3 +1,4 @@ +#jinja2: trim_blocks: True, lstrip_blocks: True --- apiVersion: helm.toolkit.fluxcd.io/v2beta2 kind: HelmRelease diff --git a/bootstrap/templates/addons/volsync/ks.yaml.j2 b/bootstrap/templates/addons/volsync/ks.yaml.j2 index 7e4bfd1e..d2ea2364 100644 --- a/bootstrap/templates/addons/volsync/ks.yaml.j2 +++ b/bootstrap/templates/addons/volsync/ks.yaml.j2 @@ -1,3 +1,4 @@ +#jinja2: trim_blocks: True, lstrip_blocks: True --- apiVersion: kustomize.toolkit.fluxcd.io/v1 kind: Kustomization diff --git a/bootstrap/templates/addons/volsync/snapshot-controller/helmrelease.yaml.j2 b/bootstrap/templates/addons/volsync/snapshot-controller/helmrelease.yaml.j2 index 5207dd5a..c9c49a0e 100644 --- a/bootstrap/templates/addons/volsync/snapshot-controller/helmrelease.yaml.j2 +++ b/bootstrap/templates/addons/volsync/snapshot-controller/helmrelease.yaml.j2 @@ -1,3 +1,4 @@ +#jinja2: trim_blocks: True, lstrip_blocks: True --- apiVersion: helm.toolkit.fluxcd.io/v2beta2 kind: HelmRelease diff --git a/bootstrap/templates/addons/volsync/snapshot-controller/kustomization.yaml.j2 b/bootstrap/templates/addons/volsync/snapshot-controller/kustomization.yaml.j2 index 5dd7baca..6cb81530 100644 --- a/bootstrap/templates/addons/volsync/snapshot-controller/kustomization.yaml.j2 +++ b/bootstrap/templates/addons/volsync/snapshot-controller/kustomization.yaml.j2 @@ -1,3 +1,4 @@ +#jinja2: trim_blocks: True, lstrip_blocks: True --- apiVersion: kustomize.config.k8s.io/v1beta1 kind: Kustomization diff --git a/bootstrap/templates/addons/weave-gitops/app/helmrelease.yaml.j2 b/bootstrap/templates/addons/weave-gitops/app/helmrelease.yaml.j2 index 04ecff6c..171872db 100644 --- a/bootstrap/templates/addons/weave-gitops/app/helmrelease.yaml.j2 +++ b/bootstrap/templates/addons/weave-gitops/app/helmrelease.yaml.j2 @@ -1,3 +1,4 @@ +#jinja2: trim_blocks: True, lstrip_blocks: True --- apiVersion: helm.toolkit.fluxcd.io/v2beta2 kind: HelmRelease diff --git a/bootstrap/templates/addons/weave-gitops/app/kustomization.yaml.j2 b/bootstrap/templates/addons/weave-gitops/app/kustomization.yaml.j2 index 95bf4747..c7514bd0 100644 --- a/bootstrap/templates/addons/weave-gitops/app/kustomization.yaml.j2 +++ b/bootstrap/templates/addons/weave-gitops/app/kustomization.yaml.j2 @@ -1,3 +1,4 @@ +#jinja2: trim_blocks: True, lstrip_blocks: True --- apiVersion: kustomize.config.k8s.io/v1beta1 kind: Kustomization diff --git a/bootstrap/templates/addons/weave-gitops/app/secret.sops.yaml.j2 b/bootstrap/templates/addons/weave-gitops/app/secret.sops.yaml.j2 index 22486957..367cc1aa 100644 --- a/bootstrap/templates/addons/weave-gitops/app/secret.sops.yaml.j2 +++ b/bootstrap/templates/addons/weave-gitops/app/secret.sops.yaml.j2 @@ -1,3 +1,4 @@ +#jinja2: trim_blocks: True, lstrip_blocks: True --- apiVersion: v1 kind: Secret diff --git a/bootstrap/templates/addons/weave-gitops/ks.yaml.j2 b/bootstrap/templates/addons/weave-gitops/ks.yaml.j2 index 9a2bd272..b02dd0b3 100644 --- a/bootstrap/templates/addons/weave-gitops/ks.yaml.j2 +++ b/bootstrap/templates/addons/weave-gitops/ks.yaml.j2 @@ -1,3 +1,4 @@ +#jinja2: trim_blocks: True, lstrip_blocks: True --- apiVersion: kustomize.toolkit.fluxcd.io/v1 kind: Kustomization diff --git a/bootstrap/templates/kubernetes/apps/network/echo-server/app/helmrelease.yaml.j2 b/bootstrap/templates/kubernetes/apps/network/echo-server/app/helmrelease.yaml.j2 index 9daa7bbb..65cc466b 100644 --- a/bootstrap/templates/kubernetes/apps/network/echo-server/app/helmrelease.yaml.j2 +++ b/bootstrap/templates/kubernetes/apps/network/echo-server/app/helmrelease.yaml.j2 @@ -1,4 +1,4 @@ -#jinja2: trim_blocks: True +#jinja2: trim_blocks: True, lstrip_blocks: True --- apiVersion: helm.toolkit.fluxcd.io/v2beta2 kind: HelmRelease diff --git a/scripts/kubeconform.sh b/scripts/kubeconform.sh new file mode 100755 index 00000000..61c5f1f9 --- /dev/null +++ b/scripts/kubeconform.sh @@ -0,0 +1,54 @@ +#!/usr/bin/env bash +set -o errexit + +KUBERNETES_DIR=$1 +KUBE_VERSION="${2:-1.29.0}" + +[[ -z "${KUBERNETES_DIR}" ]] && echo "Kubernetes location not specified" && exit 1 + +kustomize_args=("--load-restrictor=LoadRestrictionsNone") +kustomize_config="kustomization.yaml" +kubeconform_args=( + "-strict" + "-ignore-missing-schemas" + "-kubernetes-version" + "${KUBE_VERSION}" + "-skip" + "Secret" + "-schema-location" + "default" + "-schema-location" + "https://kubernetes-schemas.pages.dev/{{.Group}}/{{.ResourceKind}}_{{.ResourceAPIVersion}}.json" + "-verbose" +) + +echo "=== Validating standalone manifests in ${KUBERNETES_DIR}/flux ===" +find "${KUBERNETES_DIR}/flux" -maxdepth 1 -type f -name '*.yaml' -print0 | while IFS= read -r -d $'\0' file; + do + kubeconform "${kubeconform_args[@]}" "${file}" + if [[ ${PIPESTATUS[0]} != 0 ]]; then + exit 1 + fi +done + +echo "=== Validating kustomizations in ${KUBERNETES_DIR}/flux ===" +find "${KUBERNETES_DIR}/flux" -type f -name $kustomize_config -print0 | while IFS= read -r -d $'\0' file; + do + echo "=== Validating kustomizations in ${file/%$kustomize_config} ===" + kustomize build "${file/%$kustomize_config}" "${kustomize_args[@]}" | \ + kubeconform "${kubeconform_args[@]}" + if [[ ${PIPESTATUS[0]} != 0 ]]; then + exit 1 + fi +done + +echo "=== Validating kustomizations in ${KUBERNETES_DIR}/apps ===" +find "${KUBERNETES_DIR}/apps" -type f -name $kustomize_config -print0 | while IFS= read -r -d $'\0' file; + do + echo "=== Validating kustomizations in ${file/%$kustomize_config} ===" + kustomize build "${file/%$kustomize_config}" "${kustomize_args[@]}" | \ + kubeconform "${kubeconform_args[@]}" + if [[ ${PIPESTATUS[0]} != 0 ]]; then + exit 1 + fi +done