From 8f77b5e2b44fb0ac82e3f4238c8e762f64481477 Mon Sep 17 00:00:00 2001 From: Devin Buhl Date: Tue, 29 Nov 2022 09:12:24 -0500 Subject: [PATCH] feat!: Remove charts and config fluxtomizations and include them in the cluster/flux/ dir --- .taskfiles/ClusterTasks.yml | 4 ++- cluster/charts/kustomization.yaml | 16 ---------- cluster/flux/apps.yaml | 4 +-- cluster/flux/charts.yaml | 13 -------- cluster/flux/config.yaml | 17 ----------- .../config/crds/kube-prometheus-stack.yaml | 30 +++++++++++++++++++ .../flux/config/crds}/kustomization.yaml | 5 ++-- .../flux-installation.yaml | 3 +- cluster/flux/config/kustomization.yaml | 7 +++++ cluster/flux/repositories/git/.gitkeep | 0 .../repositories/helm}/bitnami-charts.yaml | 0 .../repositories/helm}/bjw-s-charts.yaml | 0 .../repositories/helm}/dysnix-charts.yaml | 0 .../helm}/external-dns-charts.yaml | 0 .../repositories/helm}/hajimari-charts.yaml | 0 .../helm}/ingress-nginx-charts.yaml | 0 .../repositories/helm}/jetstack-charts.yaml | 0 .../helm}/k8s-gateway-charts.yaml | 0 .../repositories/helm}/kubereboot-charts.yaml | 0 .../flux/repositories/helm/kustomization.yaml | 16 ++++++++++ .../repositories/helm}/metallb-charts.yaml | 0 .../helm}/metrics-server-charts.yaml | 0 .../repositories/helm}/stakater-charts.yaml | 0 .../kustomization.yaml | 5 ++-- cluster/flux/repositories/oci/.gitkeep | 0 .../{config => flux/vars}/kustomization.yaml | 4 +-- configure | 20 ++++++------- tmpl/cluster/flux-cluster.yaml | 10 +++++++ .../{flux-system => flux}/kustomization.yaml | 2 +- .../webhooks/github/ingress.yaml | 0 .../flux/webhooks/github/kustomization.yaml | 7 +++++ .../webhooks/github/receiver.yaml | 0 .../webhooks/github/secret.sops.yaml | 0 .../webhooks/kustomization.yaml | 2 +- 34 files changed, 95 insertions(+), 70 deletions(-) delete mode 100644 cluster/charts/kustomization.yaml delete mode 100644 cluster/flux/charts.yaml delete mode 100644 cluster/flux/config.yaml create mode 100644 cluster/flux/config/crds/kube-prometheus-stack.yaml rename {tmpl/cluster/flux-system/webhooks/github => cluster/flux/config/crds}/kustomization.yaml (58%) rename cluster/flux/{flux-system => config}/flux-installation.yaml (94%) create mode 100644 cluster/flux/config/kustomization.yaml create mode 100644 cluster/flux/repositories/git/.gitkeep rename cluster/{charts => flux/repositories/helm}/bitnami-charts.yaml (100%) rename cluster/{charts => flux/repositories/helm}/bjw-s-charts.yaml (100%) rename cluster/{charts => flux/repositories/helm}/dysnix-charts.yaml (100%) rename cluster/{charts => flux/repositories/helm}/external-dns-charts.yaml (100%) rename cluster/{charts => flux/repositories/helm}/hajimari-charts.yaml (100%) rename cluster/{charts => flux/repositories/helm}/ingress-nginx-charts.yaml (100%) rename cluster/{charts => flux/repositories/helm}/jetstack-charts.yaml (100%) rename cluster/{charts => flux/repositories/helm}/k8s-gateway-charts.yaml (100%) rename cluster/{charts => flux/repositories/helm}/kubereboot-charts.yaml (100%) create mode 100644 cluster/flux/repositories/helm/kustomization.yaml rename cluster/{charts => flux/repositories/helm}/metallb-charts.yaml (100%) rename cluster/{charts => flux/repositories/helm}/metrics-server-charts.yaml (100%) rename cluster/{charts => flux/repositories/helm}/stakater-charts.yaml (100%) rename cluster/flux/{flux-system => repositories}/kustomization.yaml (61%) create mode 100644 cluster/flux/repositories/oci/.gitkeep rename cluster/{config => flux/vars}/kustomization.yaml (55%) rename tmpl/cluster/{flux-system => flux}/kustomization.yaml (84%) rename tmpl/cluster/{flux-system => flux}/webhooks/github/ingress.yaml (100%) create mode 100644 tmpl/cluster/flux/webhooks/github/kustomization.yaml rename tmpl/cluster/{flux-system => flux}/webhooks/github/receiver.yaml (100%) rename tmpl/cluster/{flux-system => flux}/webhooks/github/secret.sops.yaml (100%) rename tmpl/cluster/{flux-system => flux}/webhooks/kustomization.yaml (85%) diff --git a/.taskfiles/ClusterTasks.yml b/.taskfiles/ClusterTasks.yml index 5fe448a2..78977720 100644 --- a/.taskfiles/ClusterTasks.yml +++ b/.taskfiles/ClusterTasks.yml @@ -13,7 +13,9 @@ tasks: cmds: - kubectl apply --kustomize {{.CLUSTER_DIR}}/bootstrap/ - cat {{.SOPS_AGE_KEY_FILE}} | kubectl -n flux-system create secret generic sops-age --from-file=age.agekey=/dev/stdin - - kubectl apply --kustomize {{.CLUSTER_DIR}}/flux/flux-system/ + - sops --decrypt {{.CLUSTER_DIR}}/flux/vars/cluster-secrets.sops.yaml | kubectl apply -f - + - kubectl apply -f {{.CLUSTER_DIR}}/flux/vars/cluster-settings.yaml + - kubectl apply --kustomize {{.CLUSTER_DIR}}/flux/config - task: reconcile preconditions: - sh: test -f {{.SOPS_AGE_KEY_FILE}} diff --git a/cluster/charts/kustomization.yaml b/cluster/charts/kustomization.yaml deleted file mode 100644 index 160e1cd1..00000000 --- a/cluster/charts/kustomization.yaml +++ /dev/null @@ -1,16 +0,0 @@ ---- -apiVersion: kustomize.config.k8s.io/v1beta1 -kind: Kustomization -resources: - - bitnami-charts.yaml - - bjw-s-charts.yaml - - dysnix-charts.yaml - - external-dns-charts.yaml - - hajimari-charts.yaml - - ingress-nginx-charts.yaml - - jetstack-charts.yaml - - kubereboot-charts.yaml - - k8s-gateway-charts.yaml - - metallb-charts.yaml - - metrics-server-charts.yaml - - stakater-charts.yaml diff --git a/cluster/flux/apps.yaml b/cluster/flux/apps.yaml index 0af2a00c..176c299a 100644 --- a/cluster/flux/apps.yaml +++ b/cluster/flux/apps.yaml @@ -12,8 +12,8 @@ spec: kind: GitRepository name: flux-cluster dependsOn: - - name: config - - name: charts + - name: flux-installation + - name: flux-cluster decryption: provider: sops secretRef: diff --git a/cluster/flux/charts.yaml b/cluster/flux/charts.yaml deleted file mode 100644 index 453e5a40..00000000 --- a/cluster/flux/charts.yaml +++ /dev/null @@ -1,13 +0,0 @@ ---- -apiVersion: kustomize.toolkit.fluxcd.io/v1beta2 -kind: Kustomization -metadata: - name: charts - namespace: flux-system -spec: - interval: 30m - path: ./cluster/charts - prune: true - sourceRef: - kind: GitRepository - name: flux-cluster diff --git a/cluster/flux/config.yaml b/cluster/flux/config.yaml deleted file mode 100644 index dd00f930..00000000 --- a/cluster/flux/config.yaml +++ /dev/null @@ -1,17 +0,0 @@ ---- -apiVersion: kustomize.toolkit.fluxcd.io/v1beta2 -kind: Kustomization -metadata: - name: config - namespace: flux-system -spec: - interval: 30m - path: ./cluster/config - prune: true - sourceRef: - kind: GitRepository - name: flux-cluster - decryption: - provider: sops - secretRef: - name: sops-age diff --git a/cluster/flux/config/crds/kube-prometheus-stack.yaml b/cluster/flux/config/crds/kube-prometheus-stack.yaml new file mode 100644 index 00000000..8891d3e7 --- /dev/null +++ b/cluster/flux/config/crds/kube-prometheus-stack.yaml @@ -0,0 +1,30 @@ +--- +apiVersion: source.toolkit.fluxcd.io/v1beta2 +kind: GitRepository +metadata: + name: kube-prometheus-stack + namespace: flux-system +spec: + interval: 12h + url: https://github.com/prometheus-community/helm-charts.git + ref: + # renovate: registryUrl=https://prometheus-community.github.io/helm-charts chart=kube-prometheus-stack + tag: kube-prometheus-stack-42.1.0 + ignore: | + # exclude all + /* + # include crd directory + !/charts/kube-prometheus-stack/crds +--- +apiVersion: kustomize.toolkit.fluxcd.io/v1beta2 +kind: Kustomization +metadata: + name: kube-prometheus-stack-crds + namespace: flux-system +spec: + interval: 30m + prune: false + wait: true + sourceRef: + kind: GitRepository + name: kube-prometheus-stack diff --git a/tmpl/cluster/flux-system/webhooks/github/kustomization.yaml b/cluster/flux/config/crds/kustomization.yaml similarity index 58% rename from tmpl/cluster/flux-system/webhooks/github/kustomization.yaml rename to cluster/flux/config/crds/kustomization.yaml index b3578f6a..84caa76d 100644 --- a/tmpl/cluster/flux-system/webhooks/github/kustomization.yaml +++ b/cluster/flux/config/crds/kustomization.yaml @@ -1,7 +1,6 @@ --- apiVersion: kustomize.config.k8s.io/v1beta1 kind: Kustomization +namespace: flux-system resources: - - ingress.yaml - - receiver.yaml - - secret.sops.yaml + - ./kube-prometheus-stack.yaml diff --git a/cluster/flux/flux-system/flux-installation.yaml b/cluster/flux/config/flux-installation.yaml similarity index 94% rename from cluster/flux/flux-system/flux-installation.yaml rename to cluster/flux/config/flux-installation.yaml index 6241e860..71d1c0e0 100644 --- a/cluster/flux/flux-system/flux-installation.yaml +++ b/cluster/flux/config/flux-installation.yaml @@ -7,8 +7,7 @@ metadata: spec: interval: 10m ref: - # renovate: datasource=github-releases depName=fluxcd/flux2 - tag: "v0.37.0" + tag: v0.37.0 url: https://github.com/fluxcd/flux2 ignore: | # exclude all diff --git a/cluster/flux/config/kustomization.yaml b/cluster/flux/config/kustomization.yaml new file mode 100644 index 00000000..ca09709e --- /dev/null +++ b/cluster/flux/config/kustomization.yaml @@ -0,0 +1,7 @@ +--- +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization +resources: + - ./flux-installation.yaml + - ./flux-cluster.yaml + - ./crds diff --git a/cluster/flux/repositories/git/.gitkeep b/cluster/flux/repositories/git/.gitkeep new file mode 100644 index 00000000..e69de29b diff --git a/cluster/charts/bitnami-charts.yaml b/cluster/flux/repositories/helm/bitnami-charts.yaml similarity index 100% rename from cluster/charts/bitnami-charts.yaml rename to cluster/flux/repositories/helm/bitnami-charts.yaml diff --git a/cluster/charts/bjw-s-charts.yaml b/cluster/flux/repositories/helm/bjw-s-charts.yaml similarity index 100% rename from cluster/charts/bjw-s-charts.yaml rename to cluster/flux/repositories/helm/bjw-s-charts.yaml diff --git a/cluster/charts/dysnix-charts.yaml b/cluster/flux/repositories/helm/dysnix-charts.yaml similarity index 100% rename from cluster/charts/dysnix-charts.yaml rename to cluster/flux/repositories/helm/dysnix-charts.yaml diff --git a/cluster/charts/external-dns-charts.yaml b/cluster/flux/repositories/helm/external-dns-charts.yaml similarity index 100% rename from cluster/charts/external-dns-charts.yaml rename to cluster/flux/repositories/helm/external-dns-charts.yaml diff --git a/cluster/charts/hajimari-charts.yaml b/cluster/flux/repositories/helm/hajimari-charts.yaml similarity index 100% rename from cluster/charts/hajimari-charts.yaml rename to cluster/flux/repositories/helm/hajimari-charts.yaml diff --git a/cluster/charts/ingress-nginx-charts.yaml b/cluster/flux/repositories/helm/ingress-nginx-charts.yaml similarity index 100% rename from cluster/charts/ingress-nginx-charts.yaml rename to cluster/flux/repositories/helm/ingress-nginx-charts.yaml diff --git a/cluster/charts/jetstack-charts.yaml b/cluster/flux/repositories/helm/jetstack-charts.yaml similarity index 100% rename from cluster/charts/jetstack-charts.yaml rename to cluster/flux/repositories/helm/jetstack-charts.yaml diff --git a/cluster/charts/k8s-gateway-charts.yaml b/cluster/flux/repositories/helm/k8s-gateway-charts.yaml similarity index 100% rename from cluster/charts/k8s-gateway-charts.yaml rename to cluster/flux/repositories/helm/k8s-gateway-charts.yaml diff --git a/cluster/charts/kubereboot-charts.yaml b/cluster/flux/repositories/helm/kubereboot-charts.yaml similarity index 100% rename from cluster/charts/kubereboot-charts.yaml rename to cluster/flux/repositories/helm/kubereboot-charts.yaml diff --git a/cluster/flux/repositories/helm/kustomization.yaml b/cluster/flux/repositories/helm/kustomization.yaml new file mode 100644 index 00000000..a5a8606e --- /dev/null +++ b/cluster/flux/repositories/helm/kustomization.yaml @@ -0,0 +1,16 @@ +--- +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization +resources: + - ./bitnami-charts.yaml + - ./bjw-s-charts.yaml + - ./dysnix-charts.yaml + - ./external-dns-charts.yaml + - ./hajimari-charts.yaml + - ./ingress-nginx-charts.yaml + - ./jetstack-charts.yaml + - ./kubereboot-charts.yaml + - ./k8s-gateway-charts.yaml + - ./metallb-charts.yaml + - ./metrics-server-charts.yaml + - ./stakater-charts.yaml diff --git a/cluster/charts/metallb-charts.yaml b/cluster/flux/repositories/helm/metallb-charts.yaml similarity index 100% rename from cluster/charts/metallb-charts.yaml rename to cluster/flux/repositories/helm/metallb-charts.yaml diff --git a/cluster/charts/metrics-server-charts.yaml b/cluster/flux/repositories/helm/metrics-server-charts.yaml similarity index 100% rename from cluster/charts/metrics-server-charts.yaml rename to cluster/flux/repositories/helm/metrics-server-charts.yaml diff --git a/cluster/charts/stakater-charts.yaml b/cluster/flux/repositories/helm/stakater-charts.yaml similarity index 100% rename from cluster/charts/stakater-charts.yaml rename to cluster/flux/repositories/helm/stakater-charts.yaml diff --git a/cluster/flux/flux-system/kustomization.yaml b/cluster/flux/repositories/kustomization.yaml similarity index 61% rename from cluster/flux/flux-system/kustomization.yaml rename to cluster/flux/repositories/kustomization.yaml index e0eaeda3..4ff69bec 100644 --- a/cluster/flux/flux-system/kustomization.yaml +++ b/cluster/flux/repositories/kustomization.yaml @@ -2,5 +2,6 @@ apiVersion: kustomize.config.k8s.io/v1beta1 kind: Kustomization resources: - - flux-installation.yaml - - flux-cluster.yaml + # - ./git + - ./helm + # - ./oci diff --git a/cluster/flux/repositories/oci/.gitkeep b/cluster/flux/repositories/oci/.gitkeep new file mode 100644 index 00000000..e69de29b diff --git a/cluster/config/kustomization.yaml b/cluster/flux/vars/kustomization.yaml similarity index 55% rename from cluster/config/kustomization.yaml rename to cluster/flux/vars/kustomization.yaml index 5edc87ea..8db2fe91 100644 --- a/cluster/config/kustomization.yaml +++ b/cluster/flux/vars/kustomization.yaml @@ -1,5 +1,5 @@ apiVersion: kustomize.config.k8s.io/v1beta1 kind: Kustomization resources: - - cluster-settings.yaml - - cluster-secrets.sops.yaml + - ./cluster-settings.yaml + - ./cluster-secrets.sops.yaml diff --git a/configure b/configure index 63115d05..5a43a05b 100755 --- a/configure +++ b/configure @@ -42,16 +42,16 @@ main() { > "${PROJECT_DIR}/.sops.yaml" # generate cluster settings envsubst < "${PROJECT_DIR}/tmpl/cluster/cluster-settings.yaml" \ - > "${PROJECT_DIR}/cluster/config/cluster-settings.yaml" + > "${PROJECT_DIR}/cluster/flux/vars/cluster-settings.yaml" envsubst < "${PROJECT_DIR}/tmpl/cluster/flux-cluster.yaml" \ - > "${PROJECT_DIR}/cluster/flux/flux-system/flux-cluster.yaml" + > "${PROJECT_DIR}/cluster/flux/config/flux-cluster.yaml" if [[ "${BOOTSTRAP_KUBE_VIP_ENABLED}" == "true" ]]; then envsubst < "${PROJECT_DIR}/tmpl/cluster/kube-vip-daemonset.yaml" \ > "${PROJECT_DIR}/cluster/apps/kube-system/kube-vip/daemon-set.yaml" fi # generate cluster secrets envsubst < "${PROJECT_DIR}/tmpl/cluster/cluster-secrets.sops.yaml" \ - > "${PROJECT_DIR}/cluster/config/cluster-secrets.sops.yaml" + > "${PROJECT_DIR}/cluster/flux/vars/cluster-secrets.sops.yaml" envsubst < "${PROJECT_DIR}/tmpl/cluster/cert-manager-secret.sops.yaml" \ > "${PROJECT_DIR}/cluster/apps/networking/cert-manager/issuers/secret.sops.yaml" envsubst < "${PROJECT_DIR}/tmpl/cluster/cloudflare-ddns-secret.sops.yaml" \ @@ -59,7 +59,7 @@ main() { envsubst < "${PROJECT_DIR}/tmpl/cluster/external-dns-secret.sops.yaml" \ > "${PROJECT_DIR}/cluster/apps/networking/external-dns/secret.sops.yaml" # encrypt cluster secrets - sops --encrypt --in-place "${PROJECT_DIR}/cluster/config/cluster-secrets.sops.yaml" + sops --encrypt --in-place "${PROJECT_DIR}/cluster/flux/vars/cluster-secrets.sops.yaml" sops --encrypt --in-place "${PROJECT_DIR}/cluster/apps/networking/cert-manager/issuers/secret.sops.yaml" sops --encrypt --in-place "${PROJECT_DIR}/cluster/apps/networking/cloudflare-ddns/secret.sops.yaml" sops --encrypt --in-place "${PROJECT_DIR}/cluster/apps/networking/external-dns/secret.sops.yaml" @@ -303,15 +303,15 @@ setup_github_webhook() { export BOOTSTRAP_FLUX_GITHUB_WEBHOOK_SECRET="${WEBHOOK_SECRET}" _log "INFO" "Using GitHub Token '${WEBHOOK_SECRET}' for Flux" - cp -rf "${PROJECT_DIR}/tmpl/cluster/flux-system/webhooks" "${PROJECT_DIR}/cluster/apps/flux-system" + cp -rf "${PROJECT_DIR}/tmpl/cluster/flux/webhooks" "${PROJECT_DIR}/cluster/flux/config" - envsubst < "${PROJECT_DIR}/tmpl/cluster/flux-system/webhooks/github/secret.sops.yaml" \ - > "${PROJECT_DIR}/cluster/apps/flux-system/webhooks/github/secret.sops.yaml" + envsubst < "${PROJECT_DIR}/tmpl/cluster/flux/webhooks/github/secret.sops.yaml" \ + > "${PROJECT_DIR}/cluster/flux/config/webhooks/github/secret.sops.yaml" - sops --encrypt --in-place "${PROJECT_DIR}/cluster/apps/flux-system/webhooks/github/secret.sops.yaml" + sops --encrypt --in-place "${PROJECT_DIR}/cluster/flux/config/webhooks/github/secret.sops.yaml" - if [[ $(yq eval --no-doc 'contains({"resources": ["webhooks"]})' "${PROJECT_DIR}/cluster/apps/flux-system/kustomization.yaml") == false ]]; then - yq --inplace '.resources += [ "webhooks" ]' "${PROJECT_DIR}/cluster/apps/flux-system/kustomization.yaml" + if [[ $(yq eval --no-doc 'contains({"resources": ["./webhooks"]})' "${PROJECT_DIR}/cluster/flux/config/kustomization.yaml") == false ]]; then + yq --inplace '.resources += [ "./webhooks" ]' "${PROJECT_DIR}/cluster/flux/config/kustomization.yaml" fi fi } diff --git a/tmpl/cluster/flux-cluster.yaml b/tmpl/cluster/flux-cluster.yaml index b7dde180..77eda929 100644 --- a/tmpl/cluster/flux-cluster.yaml +++ b/tmpl/cluster/flux-cluster.yaml @@ -23,3 +23,13 @@ spec: sourceRef: kind: GitRepository name: flux-cluster + decryption: + provider: sops + secretRef: + name: sops-age + postBuild: + substituteFrom: + - kind: ConfigMap + name: cluster-settings + - kind: Secret + name: cluster-secrets diff --git a/tmpl/cluster/flux-system/kustomization.yaml b/tmpl/cluster/flux/kustomization.yaml similarity index 84% rename from tmpl/cluster/flux-system/kustomization.yaml rename to tmpl/cluster/flux/kustomization.yaml index 56dd3721..04d02782 100644 --- a/tmpl/cluster/flux-system/kustomization.yaml +++ b/tmpl/cluster/flux/kustomization.yaml @@ -2,4 +2,4 @@ apiVersion: kustomize.config.k8s.io/v1beta1 kind: Kustomization resources: - - webhooks + - ./webhooks diff --git a/tmpl/cluster/flux-system/webhooks/github/ingress.yaml b/tmpl/cluster/flux/webhooks/github/ingress.yaml similarity index 100% rename from tmpl/cluster/flux-system/webhooks/github/ingress.yaml rename to tmpl/cluster/flux/webhooks/github/ingress.yaml diff --git a/tmpl/cluster/flux/webhooks/github/kustomization.yaml b/tmpl/cluster/flux/webhooks/github/kustomization.yaml new file mode 100644 index 00000000..f7dfdfea --- /dev/null +++ b/tmpl/cluster/flux/webhooks/github/kustomization.yaml @@ -0,0 +1,7 @@ +--- +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization +resources: + - ./ingress.yaml + - ./receiver.yaml + - ./secret.sops.yaml diff --git a/tmpl/cluster/flux-system/webhooks/github/receiver.yaml b/tmpl/cluster/flux/webhooks/github/receiver.yaml similarity index 100% rename from tmpl/cluster/flux-system/webhooks/github/receiver.yaml rename to tmpl/cluster/flux/webhooks/github/receiver.yaml diff --git a/tmpl/cluster/flux-system/webhooks/github/secret.sops.yaml b/tmpl/cluster/flux/webhooks/github/secret.sops.yaml similarity index 100% rename from tmpl/cluster/flux-system/webhooks/github/secret.sops.yaml rename to tmpl/cluster/flux/webhooks/github/secret.sops.yaml diff --git a/tmpl/cluster/flux-system/webhooks/kustomization.yaml b/tmpl/cluster/flux/webhooks/kustomization.yaml similarity index 85% rename from tmpl/cluster/flux-system/webhooks/kustomization.yaml rename to tmpl/cluster/flux/webhooks/kustomization.yaml index 2c23d3de..ccd8b3eb 100644 --- a/tmpl/cluster/flux-system/webhooks/kustomization.yaml +++ b/tmpl/cluster/flux/webhooks/kustomization.yaml @@ -2,4 +2,4 @@ apiVersion: kustomize.config.k8s.io/v1beta1 kind: Kustomization resources: - - github + - ./github