diff --git a/controllers/longhorn/base/helm-release.yaml b/controllers/longhorn/base/helm-release.yaml new file mode 100644 index 0000000..43af7f9 --- /dev/null +++ b/controllers/longhorn/base/helm-release.yaml @@ -0,0 +1,30 @@ +apiVersion: helm.toolkit.fluxcd.io/v2 +kind: HelmRelease +metadata: + name: longhorn + namespace: longhorn-system +spec: + interval: 12h + install: + strategy: + name: RetryOnFailure + retryInterval: 2m + upgrade: + strategy: + name: RetryOnFailure + retryInterval: 3m + chart: + spec: + chart: longhorn + # TODO: Is it safe to upgrade automatically to 1.x? + version: "1.10.x" + sourceRef: + kind: HelmRepository + name: longhorn + interval: 24h + valuesFrom: + - kind: ConfigMap + name: values-base + - kind: ConfigMap + name: values-overlay + optional: true diff --git a/controllers/longhorn/helm-repository.yaml b/controllers/longhorn/base/helm-repository.yaml similarity index 100% rename from controllers/longhorn/helm-repository.yaml rename to controllers/longhorn/base/helm-repository.yaml diff --git a/controllers/longhorn/kustomization.yaml b/controllers/longhorn/base/kustomization.yaml similarity index 50% rename from controllers/longhorn/kustomization.yaml rename to controllers/longhorn/base/kustomization.yaml index 30ecafd..6bf0ebd 100644 --- a/controllers/longhorn/kustomization.yaml +++ b/controllers/longhorn/base/kustomization.yaml @@ -4,3 +4,12 @@ resources: - namespace.yaml - helm-repository.yaml - helm-release.yaml + +configurations: + - name-reference.yaml + +configMapGenerator: + - name: values-base + namespace: cilium + files: + - values.yaml diff --git a/controllers/longhorn/base/name-reference.yaml b/controllers/longhorn/base/name-reference.yaml new file mode 100644 index 0000000..a80be15 --- /dev/null +++ b/controllers/longhorn/base/name-reference.yaml @@ -0,0 +1,6 @@ +nameReference: + - kind: ConfigMap + version: v1 + fieldSpecs: + - path: spec/valuesFrom/name + kind: HelmRelease diff --git a/controllers/longhorn/namespace.yaml b/controllers/longhorn/base/namespace.yaml similarity index 100% rename from controllers/longhorn/namespace.yaml rename to controllers/longhorn/base/namespace.yaml diff --git a/controllers/longhorn/base/values.yaml b/controllers/longhorn/base/values.yaml new file mode 100644 index 0000000..ed4869e --- /dev/null +++ b/controllers/longhorn/base/values.yaml @@ -0,0 +1,10 @@ +defaultSettings: + defaultDataPath: /var/mnt/longhorn + replicaAutoBalance: best-effort + defaultDataLocality: best-effort + freezeFilesystemForSnapshot: enabled + storageReservedPercentageForDefaultDisk: 0 + storageMinimalAvailablePercentage: 10 + storageOverProvisioningPercentage: 25 +persistence: + defaultDataLocality: best-effort diff --git a/controllers/longhorn/helm-release.yaml b/controllers/longhorn/helm-release.yaml deleted file mode 100644 index def6b1d..0000000 --- a/controllers/longhorn/helm-release.yaml +++ /dev/null @@ -1,38 +0,0 @@ -apiVersion: helm.toolkit.fluxcd.io/v2 -kind: HelmRelease -metadata: - name: longhorn - namespace: longhorn-system -spec: - interval: 12h - install: - strategy: - name: RetryOnFailure - retryInterval: 2m - upgrade: - strategy: - name: RetryOnFailure - retryInterval: 3m - chart: - spec: - chart: longhorn - # TODO: Is it safe to upgrade automatically to 1.x? - version: "1.10.x" - sourceRef: - kind: HelmRepository - name: longhorn - interval: 24h - values: - # TODO: These settings are specific to testing - defaultSettings: - defaultReplicaCount: 1 - defaultDataPath: /var/mnt/longhorn - replicaAutoBalance: best-effort - defaultDataLocality: best-effort - freezeFilesystemForSnapshot: enabled - storageReservedPercentageForDefaultDisk: 0 - storageMinimalAvailablePercentage: 10 - storageOverProvisioningPercentage: 25 - persistence: - defaultClassReplicaCount: 1 - defaultDataLocality: best-effort diff --git a/controllers/longhorn/longhorn.yaml b/controllers/longhorn/longhorn.yaml index fb2c841..1b7a058 100644 --- a/controllers/longhorn/longhorn.yaml +++ b/controllers/longhorn/longhorn.yaml @@ -10,6 +10,6 @@ spec: sourceRef: kind: ExternalArtifact name: longhorn - path: ./ + path: ./${cluster_env} prune: true wait: true diff --git a/controllers/longhorn/production/kustomization.yaml b/controllers/longhorn/production/kustomization.yaml new file mode 100644 index 0000000..1aa23a6 --- /dev/null +++ b/controllers/longhorn/production/kustomization.yaml @@ -0,0 +1,10 @@ +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization +resources: + - ../base + +configMapGenerator: + - name: values-overlay + namespace: cilium + files: + - values.yaml diff --git a/controllers/longhorn/production/values.yaml b/controllers/longhorn/production/values.yaml new file mode 100644 index 0000000..86057af --- /dev/null +++ b/controllers/longhorn/production/values.yaml @@ -0,0 +1,4 @@ +defaultSettings: + defaultReplicaCount: 2 +persistence: + defaultClassReplicaCount: 2 diff --git a/controllers/longhorn/staging/kustomization.yaml b/controllers/longhorn/staging/kustomization.yaml new file mode 100644 index 0000000..1aa23a6 --- /dev/null +++ b/controllers/longhorn/staging/kustomization.yaml @@ -0,0 +1,10 @@ +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization +resources: + - ../base + +configMapGenerator: + - name: values-overlay + namespace: cilium + files: + - values.yaml diff --git a/controllers/longhorn/staging/values.yaml b/controllers/longhorn/staging/values.yaml new file mode 100644 index 0000000..076a8e5 --- /dev/null +++ b/controllers/longhorn/staging/values.yaml @@ -0,0 +1,4 @@ +defaultSettings: + defaultReplicaCount: 1 +persistence: + defaultClassReplicaCount: 1