From 4a50941ceee77f75ab3fddb2089407a4599d5d42 Mon Sep 17 00:00:00 2001 From: Devin Buhl Date: Wed, 11 Jan 2023 14:55:29 -0500 Subject: [PATCH] feat: install local-path-provisioner with flux/helmrelease instead of k3s options Signed-off-by: Devin Buhl --- ansible/inventory/group_vars/master/k3s.yml | 10 +-- .../default/echo-server/app/helmrelease.yaml | 2 +- .../apps/kube-system/kustomization.yaml | 1 + .../app/helmrelease.yaml | 71 +++++++++++++++++++ .../app/kustomization.yaml | 7 ++ .../local-path-provisioner/ks.yaml | 23 ++++++ kubernetes/flux/repositories/git/.gitkeep | 0 .../flux/repositories/git/kustomization.yaml | 6 ++ .../git/local-path-provisioner.yaml | 17 +++++ .../flux/repositories/kustomization.yaml | 2 +- 10 files changed, 133 insertions(+), 6 deletions(-) create mode 100644 kubernetes/apps/kube-system/local-path-provisioner/app/helmrelease.yaml create mode 100644 kubernetes/apps/kube-system/local-path-provisioner/app/kustomization.yaml create mode 100644 kubernetes/apps/kube-system/local-path-provisioner/ks.yaml delete mode 100644 kubernetes/flux/repositories/git/.gitkeep create mode 100644 kubernetes/flux/repositories/git/kustomization.yaml create mode 100644 kubernetes/flux/repositories/git/local-path-provisioner.yaml diff --git a/ansible/inventory/group_vars/master/k3s.yml b/ansible/inventory/group_vars/master/k3s.yml index 32035035..14bda64f 100644 --- a/ansible/inventory/group_vars/master/k3s.yml +++ b/ansible/inventory/group_vars/master/k3s.yml @@ -16,12 +16,14 @@ k3s_server: disable: # Disable flannel - replaced with Calico - flannel - # Disable traefik - replaced with ingress-nginx - - traefik - # Disable servicelb - replaced with metallb and install with Flux - - servicelb + # Disable local-path-provisioner - installed with Flux + - local-storage # Disable metrics-server - installed with Flux - metrics-server + # Disable servicelb - replaced with metallb and installed with Flux + - servicelb + # Disable traefik - replaced with ingress-nginx and installed with Flux + - traefik disable-network-policy: true disable-cloud-controller: true write-kubeconfig-mode: "644" diff --git a/kubernetes/apps/default/echo-server/app/helmrelease.yaml b/kubernetes/apps/default/echo-server/app/helmrelease.yaml index dedae806..28313752 100644 --- a/kubernetes/apps/default/echo-server/app/helmrelease.yaml +++ b/kubernetes/apps/default/echo-server/app/helmrelease.yaml @@ -2,7 +2,7 @@ apiVersion: helm.toolkit.fluxcd.io/v2beta1 kind: HelmRelease metadata: - name: &app echo-server + name: echo-server namespace: default spec: interval: 15m diff --git a/kubernetes/apps/kube-system/kustomization.yaml b/kubernetes/apps/kube-system/kustomization.yaml index b9817047..9f5916e3 100644 --- a/kubernetes/apps/kube-system/kustomization.yaml +++ b/kubernetes/apps/kube-system/kustomization.yaml @@ -4,5 +4,6 @@ kind: Kustomization resources: - ./namespace.yaml - ./kube-vip/ks.yaml + - ./local-path-provisioner/ks.yaml - ./metrics-server/ks.yaml - ./reloader/ks.yaml diff --git a/kubernetes/apps/kube-system/local-path-provisioner/app/helmrelease.yaml b/kubernetes/apps/kube-system/local-path-provisioner/app/helmrelease.yaml new file mode 100644 index 00000000..d1987576 --- /dev/null +++ b/kubernetes/apps/kube-system/local-path-provisioner/app/helmrelease.yaml @@ -0,0 +1,71 @@ +--- +apiVersion: helm.toolkit.fluxcd.io/v2beta1 +kind: HelmRelease +metadata: + name: local-path-provisioner + namespace: kube-system +spec: + interval: 15m + chart: + spec: + chart: ./deploy/chart/local-path-provisioner + sourceRef: + kind: GitRepository + name: local-path-provisioner + namespace: flux-system + maxHistory: 3 + install: + createNamespace: true + remediation: + retries: 3 + upgrade: + cleanupOnFail: true + remediation: + retries: 3 + uninstall: + keepHistory: false + values: + helperImage: + repository: public.ecr.aws/docker/library/busybox + tag: latest + storageClass: + defaultClass: false + nodePathMap: + - node: DEFAULT_PATH_FOR_NON_LISTED_NODES + paths: ["/var/lib/rancher/k3s/storage"] + configmap: + setup: |- + #!/bin/sh + while getopts "m:s:p:" opt + do + case $opt in + p) + absolutePath=$OPTARG + ;; + s) + sizeInBytes=$OPTARG + ;; + m) + volMode=$OPTARG + ;; + esac + done + mkdir -m 0777 -p ${absolutePath} + chmod 701 ${absolutePath}/.. + teardown: |- + #!/bin/sh + while getopts "m:s:p:" opt + do + case $opt in + p) + absolutePath=$OPTARG + ;; + s) + sizeInBytes=$OPTARG + ;; + m) + volMode=$OPTARG + ;; + esac + done + rm -rf ${absolutePath} diff --git a/kubernetes/apps/kube-system/local-path-provisioner/app/kustomization.yaml b/kubernetes/apps/kube-system/local-path-provisioner/app/kustomization.yaml new file mode 100644 index 00000000..a09cef31 --- /dev/null +++ b/kubernetes/apps/kube-system/local-path-provisioner/app/kustomization.yaml @@ -0,0 +1,7 @@ +--- +# yaml-language-server: $schema=https://json.schemastore.org/kustomization +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization +namespace: kube-system +resources: + - ./helmrelease.yaml diff --git a/kubernetes/apps/kube-system/local-path-provisioner/ks.yaml b/kubernetes/apps/kube-system/local-path-provisioner/ks.yaml new file mode 100644 index 00000000..6592011b --- /dev/null +++ b/kubernetes/apps/kube-system/local-path-provisioner/ks.yaml @@ -0,0 +1,23 @@ +--- +# yaml-language-server: $schema=https://kubernetes-schemas.devbu.io/kustomization_v1beta2.json +apiVersion: kustomize.toolkit.fluxcd.io/v1beta2 +kind: Kustomization +metadata: + name: cluster-apps-local-path-provisioner + namespace: flux-system + labels: + substitution.flux.home.arpa/enabled: "true" +spec: + path: ./kubernetes/apps/kube-system/local-path-provisioner/app + prune: true + sourceRef: + kind: GitRepository + name: home-kubernetes + healthChecks: + - apiVersion: helm.toolkit.fluxcd.io/v2beta1 + kind: HelmRelease + name: local-path-provisioner + namespace: kube-system + interval: 30m + retryInterval: 1m + timeout: 3m diff --git a/kubernetes/flux/repositories/git/.gitkeep b/kubernetes/flux/repositories/git/.gitkeep deleted file mode 100644 index e69de29b..00000000 diff --git a/kubernetes/flux/repositories/git/kustomization.yaml b/kubernetes/flux/repositories/git/kustomization.yaml new file mode 100644 index 00000000..3bd3b801 --- /dev/null +++ b/kubernetes/flux/repositories/git/kustomization.yaml @@ -0,0 +1,6 @@ +--- +# yaml-language-server: $schema=https://json.schemastore.org/kustomization +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization +resources: + - ./local-path-provisioner.yaml diff --git a/kubernetes/flux/repositories/git/local-path-provisioner.yaml b/kubernetes/flux/repositories/git/local-path-provisioner.yaml new file mode 100644 index 00000000..7bcb3ce1 --- /dev/null +++ b/kubernetes/flux/repositories/git/local-path-provisioner.yaml @@ -0,0 +1,17 @@ +--- +# yaml-language-server: $schema=https://kubernetes-schemas.devbu.io/gitrepository_v1beta2.json +apiVersion: source.toolkit.fluxcd.io/v1beta2 +kind: GitRepository +metadata: + name: local-path-provisioner + namespace: flux-system +spec: + interval: 30m + url: https://github.com/rancher/local-path-provisioner + ref: + tag: v0.0.23 + ignore: | + # exclude all + /* + # include kubernetes directory + !/deploy/chart/local-path-provisioner diff --git a/kubernetes/flux/repositories/kustomization.yaml b/kubernetes/flux/repositories/kustomization.yaml index 4ff69bec..cb57fda1 100644 --- a/kubernetes/flux/repositories/kustomization.yaml +++ b/kubernetes/flux/repositories/kustomization.yaml @@ -2,6 +2,6 @@ apiVersion: kustomize.config.k8s.io/v1beta1 kind: Kustomization resources: - # - ./git + - ./git - ./helm # - ./oci