diff --git a/.github/workflows/make-release.yaml b/.github/workflows/make-release.yaml index a1057807b..dffd49943 100644 --- a/.github/workflows/make-release.yaml +++ b/.github/workflows/make-release.yaml @@ -75,7 +75,7 @@ jobs: git-chglog \ --output "RELEASE-NOTES.md" \ --tag-filter-pattern "${namespace}" \ - --path "${namespace}/" --path "_common/" \ + --path "${namespace}/" \ "${query_tag}" - uses: actions/upload-artifact@v3 diff --git a/_common/helmDefaults.yaml b/_common/helmDefaults.yaml deleted file mode 100644 index b3cfd34a5..000000000 --- a/_common/helmDefaults.yaml +++ /dev/null @@ -1 +0,0 @@ -recreatePods: true diff --git a/_common/inheritHelmDefaults.yaml.gotmpl b/_common/inheritHelmDefaults.yaml.gotmpl deleted file mode 100644 index c29dcc86d..000000000 --- a/_common/inheritHelmDefaults.yaml.gotmpl +++ /dev/null @@ -1,11 +0,0 @@ -# Set to our default helmDefaults values -{{ $__helmDefaults := (readFile "../_common/helmDefaults.yaml" | fromYaml) }} - -# Possibly overlay inherited values -{{ with ( .Values | get "helmDefaults" dict ) }} -{{ $_ := (deepCopy . | mergeOverwrite $__helmDefaults) }} -{{ end }} - -# Render the final dict -helmDefaults: -{{ $__helmDefaults | toYaml | indent 2 }} diff --git a/_common/tplDefaults.yaml b/_common/tplDefaults.yaml deleted file mode 100644 index 8a05447f7..000000000 --- a/_common/tplDefaults.yaml +++ /dev/null @@ -1 +0,0 @@ -missingFileHandler: Warn diff --git a/_common/tplRelease.yaml.gotmpl b/_common/tplRelease.yaml.gotmpl deleted file mode 100644 index fec3f92b3..000000000 --- a/_common/tplRelease.yaml.gotmpl +++ /dev/null @@ -1,21 +0,0 @@ -inherit: -- template: - {{- if (. | get "resource-injector" false) -}} - {{ "resource-injector" | indent 1 }} - {{- else -}} - {{- .release | indent 1 -}} - {{- end }} -values: - {{- if ( hasKey .Values "flavor" ) }} - - ./values/_common/{{`{{ .Release.Name }}`}}.yaml - - ./values/{{ .Values.flavor }}/{{`{{ .Release.Name }}`}}.yaml - {{- else }} - - ./values/{{`{{ .Release.Name }}`}}.yaml - {{- end -}} - {{- if typeIs ( typeOf list ) ( .Values | get .release dict | get "values" dict ) -}} - {{- range $element := ( .Values | get .release dict | get "values" dict ) }} - - {{- $element | toYaml | nindent 4 }} - {{- end -}} - {{- else }} - - {{- .Values | get .release dict | get "values" dict | toYaml | nindent 4 }} - {{- end -}} diff --git a/_common/tplTransforms.yaml.gotmpl b/_common/tplTransforms.yaml.gotmpl deleted file mode 100644 index 62b6391a5..000000000 --- a/_common/tplTransforms.yaml.gotmpl +++ /dev/null @@ -1,30 +0,0 @@ -{{ $_TemplatedResources := list "Deployment" "StatefulSet" "DaemonSet" }} -transformers: - - apiVersion: builtin - kind: AnnotationsTransformer - metadata: - name: AddAnnotations - annotations: - {{- . | get "annotations" dict | toYaml | nindent 6 }} - fieldSpecs: - - path: metadata/annotations - create: true - {{- range $kind := $_TemplatedResources }} - - kind: {{ $kind }} - path: spec/template/metadata/annotations - create: true - {{- end }} - - apiVersion: builtin - kind: LabelTransformer - metadata: - name: AddLabels - labels: - {{- . | get "labels" dict | toYaml | nindent 6 }} - fieldSpecs: - - path: metadata/labels - create: true - {{- range $kind := $_TemplatedResources }} - - kind: {{ $kind }} - path: spec/template/metadata/labels - create: true - {{- end }} diff --git a/_gen/charts.cue b/_gen/charts.cue index 6a14431b3..7872e3345 100644 --- a/_gen/charts.cue +++ b/_gen/charts.cue @@ -1,7 +1,18 @@ package LaunchpadCharts #repositories: { - graphops: { + // link all charts to their repo and add name + // + [repoName=string]: { + charts: { + [chartName=string]: { + repository: repoName + name: chartName + } + } + } + + "graphops": { url: "https://graphops.github.io/launchpad-charts" description: """ lorem ipsolum @@ -49,14 +60,14 @@ package LaunchpadCharts } } - vouch: { + "vouch": { url: "https://vouch.github.io/helm-charts/" description: """ Helm charts for vouch: An SSO solution for Nginx using the auth_request module. Vouch Proxy can protect all of your websites at once. """ } - jetstack: { + "jetstack": { url: "https://charts.jetstack.io" description: "" charts: { @@ -82,7 +93,7 @@ package LaunchpadCharts } } - deliveryhero: { + "deliveryhero": { url: "https://charts.deliveryhero.io" description: """ Delivery Hero are big fans of Kubernetes and use Helm extensively. Here we have collected a few charts that are used across our organisation. @@ -96,7 +107,7 @@ package LaunchpadCharts } } - grafana: { + "grafana": { url: "https://grafana.github.io/helm-charts" description: "" charts: { @@ -133,7 +144,7 @@ package LaunchpadCharts } } - openebs: { + "openebs": { url: "https://openebs.github.io/charts" description: """ OpenEBS Helm Repository: diff --git a/_gen/defaults.cue b/_gen/defaults.cue index 42d7f9ed0..32c541fc6 100644 --- a/_gen/defaults.cue +++ b/_gen/defaults.cue @@ -3,6 +3,6 @@ package LaunchpadNamespaces _defaults: { helmDefaults: recreatePods: true - releaseDefaults: + releases: missingFileHandler: "Warn" } diff --git a/_gen/schemas/_gen_helmfile_tool.cue b/_gen/schemas/_gen_helmfile_tool.cue deleted file mode 100644 index 1c945c1a2..000000000 --- a/_gen/schemas/_gen_helmfile_tool.cue +++ /dev/null @@ -1,30 +0,0 @@ -package LaunchpadNamespaces - -import ( - "tool/cli" - "encoding/yaml" - // "tool/exec" - // "tool/file" -) - -command: gen: { - defaults: { - helmDefaults: yaml.Marshal(_defaults.helmDefaults) - releaseDefaults: yaml.Marshal(_defaults.releaseDefaults) - } - header: { - print: cli.Print & { - text: """ - {{ $__helmDefaults := \"\(defaults.helmDefaults)\" | fromYaml}} - """ - } - } - test: { - compute: { - mystr: [ for key, val in namespaces.ingress.features {val}] - } - print: cli.Print & { - text: "\(compute.mystr)" - } - } -} diff --git a/_gen/schemas/base.cue b/_gen/schemas/base.cue index ccae9429c..825d3763a 100644 --- a/_gen/schemas/base.cue +++ b/_gen/schemas/base.cue @@ -2,6 +2,7 @@ package LaunchpadNamespaces import ( upstreamHelmfile "github.com/SchemaStore:helmfile" + charts "graphops.xyz/launchpad/namespaces:LaunchpadCharts" ) info: { @@ -37,3 +38,6 @@ info: { } ... } + +// instantiate a repositories oject for internal usage +_repositories: {charts.#repositories} diff --git a/_gen/schemas/ethereum.cue b/_gen/schemas/ethereum.cue index 0da326994..2186b17a4 100644 --- a/_gen/schemas/ethereum.cue +++ b/_gen/schemas/ethereum.cue @@ -1,3 +1,4 @@ +// schema:type=namespace schema:namespace=ethereum package LaunchpadNamespaces import ( @@ -46,9 +47,10 @@ import ( // eth-erigon namespace values schema #values: #base.#values & { - // the default is eth-[flavor] - targetNamespace: *"eth-mainnet" | string - flavor?: *"mainnet" | #flavor.#enum + // the default is eth- + targetNamespace: *"eth-mainnet" | string + _templatedTargetNamespace: '( print "eth-" .Values.flavor )' + flavor: *"mainnet" | #flavor.#enum for key, release in #releases { "\(release.name)"?: { mergeValues?: bool @@ -75,6 +77,9 @@ _namespaces: ethereum: { meta: #namespaces.#ethereum.#meta releases: #namespaces.#ethereum.#releases flavor: #namespaces.#ethereum.#flavor - values: #namespaces.#ethereum.#values - labels: #namespaces.#ethereum.labels + values: #namespaces.#ethereum.#values & { + targetNamespace: #namespaces.#ethereum.#values.targetNamespace + flavor: #namespaces.#ethereum.#flavor.#enum + } + labels: #namespaces.#ethereum.labels } diff --git a/_gen/schemas/ingress.cue b/_gen/schemas/ingress.cue index 30f84229f..95f16fce9 100644 --- a/_gen/schemas/ingress.cue +++ b/_gen/schemas/ingress.cue @@ -1,3 +1,4 @@ +// schema:type=namespace schema:namespace=ingress package LaunchpadNamespaces import ( @@ -18,21 +19,21 @@ import ( #releases: { ingressNginx: { - name: "ingress-nginx" - chart: charts.#repositories["ingress-nginx"].charts["ingress-nginx"] - // feature: #features.ingress + name: "ingress-nginx" + chart: charts.#repositories["ingress-nginx"].charts["ingress-nginx"] + feature: #features.ingress _template: {version: "4.3.0"} } certManager: { - name: "cert-manager" - chart: charts.#repositories.jetstack.charts["cert-manager"] - // feature: #features.certManager + name: "cert-manager" + chart: charts.#repositories.jetstack.charts["cert-manager"] + feature: #features.certManager _template: {version: "v1.10.0"} } certManagerResources: { - name: "cert-manager-resources" - chart: charts.#repositories.graphops.charts["resource-injector"] - // feature: #features.certManager + name: "cert-manager-resources" + chart: charts.#repositories.graphops.charts["resource-injector"] + feature: #features.certManager _template: {version: "0.2.0"} } } @@ -75,6 +76,9 @@ _namespaces: ingress: { meta: #namespaces.#ingress.#meta releases: #namespaces.#ingress.#releases features: #namespaces.#ingress.#features - values: #namespaces.#ingress.#values - labels: #namespaces.#ingress.labels + values: #namespaces.#ingress.#values & { + targetNamespace: #namespaces.#ingress.#values.targetNamespace + features: [...#namespaces.#ingress.#values.#features.#enum] + } + labels: #namespaces.#ingress.labels } diff --git a/_gen/schemas/monitoring.cue b/_gen/schemas/monitoring.cue index c0df3ec47..245dabf4b 100644 --- a/_gen/schemas/monitoring.cue +++ b/_gen/schemas/monitoring.cue @@ -1,3 +1,4 @@ +// schema:type=namespace schema:namespace=monitoring package LaunchpadNamespaces import ( @@ -16,27 +17,27 @@ import ( #releases: { kubePrometheusStack: { - name: "kube-prometheus-stack" - chart: charts.#repositories["prometheus-community"].charts["kube-prometheus-stack"] - // feature: #features.metrics + name: "kube-prometheus-stack" + chart: charts.#repositories["prometheus-community"].charts["kube-prometheus-stack"] + feature: #features.metrics _template: {version: "41.3.2"} } nodeProblemDetector: { - name: "node-problem-detector" - chart: charts.#repositories.deliveryhero.charts["node-problem-detector"] - // feature: #features.metrics + name: "node-problem-detector" + chart: charts.#repositories.deliveryhero.charts["node-problem-detector"] + feature: #features.metrics _template: {version: "2.2.2"} } loki: { - name: "loki" - chart: charts.#repositories.grafana.charts["loki-distributed"] - // feature: #features.logs + name: "loki" + chart: charts.#repositories.grafana.charts["loki-distributed"] + feature: #features.logs _template: {version: "0.55.4"} } promtail: { - name: "promtail" - chart: charts.#repositories.grafana.charts.promtail - // feature: #features.logs + name: "promtail" + chart: charts.#repositories.grafana.charts.promtail + feature: #features.logs _template: {version: "6.2.3"} } } @@ -80,6 +81,9 @@ _namespaces: monitoring: { meta: #namespaces.#monitoring.#meta releases: #namespaces.#monitoring.#releases features: #namespaces.#monitoring.#features - values: #namespaces.#monitoring.#values - labels: #namespaces.#monitoring.labels + values: #namespaces.#monitoring.#values & { + targetNamespace: #namespaces.#monitoring.#values.targetNamespace + features: [...#namespaces.#monitoring.#values.#features.#enum] + } + labels: #namespaces.#monitoring.labels } diff --git a/_gen/schemas/postgres-operator.cue b/_gen/schemas/postgres-operator.cue index e2baa48c5..d4775edbb 100644 --- a/_gen/schemas/postgres-operator.cue +++ b/_gen/schemas/postgres-operator.cue @@ -1,3 +1,4 @@ +// schema:type=namespace schema:namespace=postgres-operator package LaunchpadNamespaces import ( @@ -49,5 +50,8 @@ _namespaces: postgresOperator: { meta: #namespaces.#postgresOperator.#meta releases: #namespaces.#postgresOperator.#releases values: #namespaces.#postgresOperator.#values - labels: #namespaces.#postgresOperator.labels + values: #namespaces.#postgresOperator.#values & { + targetNamespace: #namespaces.#postgresOperator.#values.targetNamespace + } + labels: #namespaces.#postgresOperator.labels } diff --git a/_gen/schemas/sealed-secrets.cue b/_gen/schemas/sealed-secrets.cue index 9f5e65cc7..0b0f22b56 100644 --- a/_gen/schemas/sealed-secrets.cue +++ b/_gen/schemas/sealed-secrets.cue @@ -1,3 +1,4 @@ +// schema:type=namespace schema:namespace=sealed-secrets package LaunchpadNamespaces import ( @@ -49,6 +50,8 @@ import ( _namespaces: sealedSecrets: { meta: #namespaces.#sealedSecrets.#meta releases: #namespaces.#sealedSecrets.#releases - values: #namespaces.#sealedSecrets.#values - labels: #namespaces.#sealedSecrets.labels + values: #namespaces.#sealedSecrets.#values & { + targetNamespace: #namespaces.#sealedSecrets.#values.targetNamespace + } + labels: #namespaces.#sealedSecrets.labels } diff --git a/_gen/schemas/storage.cue b/_gen/schemas/storage.cue index 04c5ca0a1..f48b0616b 100644 --- a/_gen/schemas/storage.cue +++ b/_gen/schemas/storage.cue @@ -1,3 +1,4 @@ +// schema:type=namespace schema:namespace=storage package LaunchpadNamespaces import ( @@ -16,54 +17,51 @@ import ( // storage namespace features schema #features: { - // for the core openebs release - openebs: "openebs" - // include the localpv-zfs release and storageclass zfs: "zfs" // include the localpv-rawfile release and storageclass rawfile: "rawfile" - #enum: ( openebs | zfs | rawfile ) + + #enum: ( zfs | rawfile ) } #releases: { openebs: { name: "openebs" chart: charts.#repositories.openebs.charts.openebs - // feature: #features.openebs _template: {version: "3.6.0"} } openebsRawfileLocalpv: { - name: "openebs-rawfile-localpv" - chart: charts.#repositories.graphops.charts["openebs-rawfile-localpv"] - // feature: #features.rawfile + name: "openebs-rawfile-localpv" + chart: charts.#repositories.graphops.charts["openebs-rawfile-localpv"] + feature: #features.rawfile _template: {version: "0.8.0"} } openebsRawfileStorageclass: { - name: "openebs-rawfile-storageclass" - chart: charts.#repositories.graphops.charts["resource-injector"] - // feature: #features.rawfile + name: "openebs-rawfile-storageclass" + chart: charts.#repositories.graphops.charts["resource-injector"] + feature: #features.rawfile _template: {version: "0.2.0"} } openebsZfsLocalpv: { - name: "openebs-zfs-localpv" - chart: charts.#repositories["openebs-zfs-localpv"].charts["zfs-localpv"] - // feature: #features.zfs + name: "openebs-zfs-localpv" + chart: charts.#repositories["openebs-zfs-localpv"].charts["zfs-localpv"] + feature: #features.zfs _template: {version: "2.1.0"} } openebsZfsStorageclass: { - name: "openebs-zfs-storageclass" - chart: charts.#repositories.graphops.charts["resource-injector"] - // feature: #features.zfs + name: "openebs-zfs-storageclass" + chart: charts.#repositories.graphops.charts["resource-injector"] + feature: #features.zfs _template: {version: "0.2.0"} } } // Declaratively deploy [OpenEBS](https://openebs.io/) on your cluster #values: #base.#values & { - targetNamespace: *"storage" | string - features?: *[#features.openebs, #features.rawfile] | [...#features.#enum] + targetNamespace?: *"storage" | string + features?: *[#features.rawfile] | [...#features.#enum] for key, release in #releases { // release key for overloading values "\(release)" "\(release.name)"?: { @@ -89,6 +87,9 @@ _namespaces: storage: { meta: #namespaces.#storage.#meta releases: #namespaces.#storage.#releases features: #namespaces.#storage.#features - values: #namespaces.#storage.#values - labels: #namespaces.#storage.labels + values: #namespaces.#storage.#values & { + targetNamespace: #namespaces.#storage.#values.targetNamespace + features: [...#namespaces.#storage.#features.#enum] + } + labels: #namespaces.#storage.labels } diff --git a/ethereum/helmfile.yaml b/ethereum/helmfile.yaml index 155e5546d..49237bb09 100644 --- a/ethereum/helmfile.yaml +++ b/ethereum/helmfile.yaml @@ -1,76 +1,127 @@ +{{- $_tplTransforms := ` +{{- $_TemplatedResources := list "Deployment" "StatefulSet" "DaemonSet" -}} +transformers: +- apiVersion: builtin + kind: AnnotationsTransformer + metadata: + name: AddAnnotations + annotations: + {{- . | get "annotations" dict | toYaml | nindent 6 }} + fieldSpecs: + - path: metadata/annotations + create: true + {{- range $kind := $_TemplatedResources }} + - kind: {{ $kind }} + path: spec/template/metadata/annotations + create: true + {{- end }} +- apiVersion: builtin + kind: LabelTransformer + metadata: + name: AddLabels + labels: + {{- . | get "labels" dict | toYaml | nindent 6 }} + fieldSpecs: + - path: metadata/labels + create: true + {{- range $kind := $_TemplatedResources }} + - kind: {{ $kind }} + path: spec/template/metadata/labels + create: true + {{- end }} +` -}} + +{{- $_tplReleaseValues := (print ` +{{- if ( hasKey .Values "flavor" ) }} +- ./values/_common/{{` "`{{ .Release.Name }}`" `}}.yaml +- ./values/{{ .Values.flavor }}/{{` "`{{ .Release.Name }}`" `}}.yaml +{{- else }} +- ./values/{{` "`{{ .Release.Name }}`" `}}.yaml +{{- end -}} +{{- if typeIs ( typeOf list ) ( .Values | get .release dict | get "values" dict ) -}} + {{- range $element := ( .Values | get .release dict | get "values" dict ) }} +- {{- $element | toYaml | nindent 4 }} + {{- end -}} +{{- else }} +- {{- .Values | get .release dict | get "values" dict | toYaml | nindent 4 }} +{{- end -}} +`) -}} + +{{ $__helmDefaults := `{"recreatePods":true}` | fromJson }} + +{{ with ( .Values | get "helmDefaults" dict ) }} +{{ $_ := (deepCopy . | mergeOverwrite $__helmDefaults) }} +{{ end }} + +helmDefaults: +{{ $__helmDefaults | toYaml | indent 2 }} -bases: - - ../_common/inheritHelmDefaults.yaml.gotmpl +#set default namespace +{{ $_defaultNamespace := `( print "eth-" .Values.flavor )` }} #set default flavor when missing {{ if not ( hasKey .Values "flavor" ) }} -{{ $_ := set .Values "flavor" "mainnet" }} +{{ $_ := set .Values "flavor" 'mainnet' }} {{ end }} -#set default namespace -{{ $_defaultNamespace := ( print "eth-" .Values.flavor ) }} commonLabels: - launchpad.graphops.xyz/namespace: {{ $_defaultNamespace }} + launchpad.graphops.xyz/namespace: ethereum -# Repositories for Charts used for Releases in this namespace +{{ $_labels := dict + `launchpad.graphops.xyz/namespace` `ethereum` +}} repositories: - name: graphops url: https://graphops.github.io/launchpad-charts - -# Import common YAML template definitions -{{ $_tplDefaults := tpl (readFile "../_common/tplDefaults.yaml") dict -}} - -{{ $_labels := dict - "launchpad.graphops.xyz/namespace" $_defaultNamespace -}} - -# "launchpad.graphops.xyz/targetNamespace" .Release.Namespace -# -{{ $_tplTransforms := - tpl (readFile "../_common/tplTransforms.yaml.gotmpl") (dict - "annotations" ( .Values | get "annotations" dict) - "labels" ( merge $_labels ( .Values | get "labels" dict) ) - ) --}} - + templates: transforms: - {{- $_tplTransforms | nindent 4 }} - + {{ tpl $_tplTransforms (dict + "annotations" ( .Values | get "annotations" dict) + "labels" ( merge $_labels ( .Values | get "labels" dict) ) + ) | nindent 4 }} + defaults: - {{- $_tplDefaults | nindent 4 -}} - namespace: {{ .Values | get "targetNamespace" $_defaultNamespace }} + namespace: '{{ .Values | get "targetNamespace" $_defaultNamespace }}' + missingFileHandler: Warn inherit: - template: transforms - + erigon: chart: graphops/erigon version: 0.6.0 inherit: - template: defaults - + nimbus: chart: graphops/nimbus version: 0.3.0 inherit: - template: defaults - + proxyd: chart: graphops/proxyd version: 0.1.8 inherit: - template: defaults - + releases: - {{- $release := "erigon" }} - - name: {{ $release }} - {{- tpl (readFile "../_common/tplRelease.yaml.gotmpl") (dict "Values" .Values "release" $release) | nindent 4 -}} - - {{- $release := "nimbus" }} - - name: {{ $release }} - {{- tpl (readFile "../_common/tplRelease.yaml.gotmpl") (dict "Values" .Values "release" $release) | nindent 4 -}} - - {{- $release := "proxyd" }} - - name: {{ $release }} - {{- tpl (readFile "../_common/tplRelease.yaml.gotmpl") (dict "Values" .Values "release" $release) | nindent 4 -}} + {{- $release := "erigon" }} + - name: 'erigon' + inherit: + - template: 'erigon' + values: + {{- tpl $_tplReleaseValues (dict "Values" .Values "release" $release) | nindent 4 -}} + {{- $release := "nimbus" }} + - name: 'nimbus' + inherit: + - template: 'nimbus' + values: + {{- tpl $_tplReleaseValues (dict "Values" .Values "release" $release) | nindent 4 -}} + {{- $release := "proxyd" }} + - name: 'proxyd' + inherit: + - template: 'proxyd' + values: + {{- tpl $_tplReleaseValues (dict "Values" .Values "release" $release) | nindent 4 -}} diff --git a/ingress/helmfile.yaml b/ingress/helmfile.yaml index 2920414b4..5a87d75f8 100644 --- a/ingress/helmfile.yaml +++ b/ingress/helmfile.yaml @@ -1,96 +1,139 @@ +{{- $_tplTransforms := ` +{{- $_TemplatedResources := list "Deployment" "StatefulSet" "DaemonSet" -}} +transformers: +- apiVersion: builtin + kind: AnnotationsTransformer + metadata: + name: AddAnnotations + annotations: + {{- . | get "annotations" dict | toYaml | nindent 6 }} + fieldSpecs: + - path: metadata/annotations + create: true + {{- range $kind := $_TemplatedResources }} + - kind: {{ $kind }} + path: spec/template/metadata/annotations + create: true + {{- end }} +- apiVersion: builtin + kind: LabelTransformer + metadata: + name: AddLabels + labels: + {{- . | get "labels" dict | toYaml | nindent 6 }} + fieldSpecs: + - path: metadata/labels + create: true + {{- range $kind := $_TemplatedResources }} + - kind: {{ $kind }} + path: spec/template/metadata/labels + create: true + {{- end }} +` -}} + +{{- $_tplReleaseValues := (print ` +{{- if ( hasKey .Values "flavor" ) }} +- ./values/_common/{{` "`{{ .Release.Name }}`" `}}.yaml +- ./values/{{ .Values.flavor }}/{{` "`{{ .Release.Name }}`" `}}.yaml +{{- else }} +- ./values/{{` "`{{ .Release.Name }}`" `}}.yaml +{{- end -}} +{{- if typeIs ( typeOf list ) ( .Values | get .release dict | get "values" dict ) -}} + {{- range $element := ( .Values | get .release dict | get "values" dict ) }} +- {{- $element | toYaml | nindent 4 }} + {{- end -}} +{{- else }} +- {{- .Values | get .release dict | get "values" dict | toYaml | nindent 4 }} +{{- end -}} +`) -}} + +{{ $__helmDefaults := `{"recreatePods":true}` | fromJson }} + +{{ with ( .Values | get "helmDefaults" dict ) }} +{{ $_ := (deepCopy . | mergeOverwrite $__helmDefaults) }} +{{ end }} -bases: - - ../_common/inheritHelmDefaults.yaml.gotmpl +helmDefaults: +{{ $__helmDefaults | toYaml | indent 2 }} #set default namespace -{{ $_defaultNamespace := "ingress" }} +{{ $_defaultNamespace := `ingress` }} + + +# Define default features when undefined +{{ if not (hasKey .Values "features") }} +{{ $_ := set .Values "features" (list + +) }} +{{ end }} commonLabels: - launchpad.graphops.xyz/namespace: {{ $_defaultNamespace }} - launchpad.graphops.xyz/layer: "base" + launchpad.graphops.xyz/namespace: ingress -# Repositories for Charts used for Releases in this namespace +{{ $_labels := dict + `launchpad.graphops.xyz/namespace` `ingress` +}} repositories: - name: ingress-nginx url: https://kubernetes.github.io/ingress-nginx - - name: vouch - url: https://vouch.github.io/helm-charts/ - name: jetstack url: https://charts.jetstack.io - -# Import common YAML template definitions -{{ $_tplDefaults := tpl (readFile "../_common/tplDefaults.yaml") dict -}} - -{{ $_labels := dict - "launchpad.graphops.xyz/namespace" $_defaultNamespace -}} - -{{ $_tplTransforms := - tpl (readFile "../_common/tplTransforms.yaml.gotmpl") (dict - "annotations" ( .Values | get "annotations" dict) - "labels" ( merge $_labels ( .Values | get "labels" dict) ) - ) --}} - -# Anchors for each default release definition, their default values, and any inner resources that are relevant + - name: graphops + url: https://graphops.github.io/launchpad-charts + templates: transforms: - {{- $_tplTransforms | nindent 4 }} - + {{ tpl $_tplTransforms (dict + "annotations" ( .Values | get "annotations" dict) + "labels" ( merge $_labels ( .Values | get "labels" dict) ) + ) | nindent 4 }} + defaults: - {{- $_tplDefaults | nindent 4 -}} - namespace: {{ .Values | get "targetNamespace" $_defaultNamespace }} + namespace: '{{ .Values | get "targetNamespace" $_defaultNamespace }}' + missingFileHandler: Warn inherit: - template: transforms - - resource-injector: - chart: graphops/resource-injector - version: 0.2.0 - inherit: - - template: defaults - + ingress-nginx: chart: ingress-nginx/ingress-nginx version: 4.3.0 inherit: - template: defaults - + cert-manager: chart: jetstack/cert-manager version: v1.10.0 inherit: - template: defaults - disableValidationOnInstall: true # For CRDs https://github.com/helmfile/helmfile/blob/main/pkg/state/state.go#L236 - wait: true - -# Define default features when undefined -{{ if not (hasKey .Values "features") }} -{{ $_ := set .Values "features" (list - "ingress" - "cert-manager" -) }} -{{ end }} - + + cert-manager-resources: + chart: graphops/resource-injector + version: 0.2.0 + inherit: + - template: defaults + releases: {{ if has "ingress" ( .Values | get "features" list ) }} - {{- $release := "ingress-nginx" }} - - name: {{ $release }} - labels: - feature: "ingress" - {{- tpl (readFile "../_common/tplRelease.yaml.gotmpl") (dict "Values" .Values "release" $release) | nindent 4 -}} - {{ end }} - + {{- $release := "ingress-nginx" }} + - name: 'ingress-nginx' + inherit: + - template: 'ingress-nginx' + values: + {{- tpl $_tplReleaseValues (dict "Values" .Values "release" $release) | nindent 4 -}} + {{- end -}} {{ if has "cert-manager" ( .Values | get "features" list ) }} - {{ $release := "cert-manager" }} - - name: {{ $release }} - labels: - feature: "cert-manager" - {{- tpl (readFile "../_common/tplRelease.yaml.gotmpl") (dict "Values" .Values "release" $release) | nindent 4 -}} - - {{ $release := "cert-manager-resources" }} - - name: {{ $release }} - disableValidationOnInstall: true # For CRDs https://github.com/helmfile/helmfile/blob/main/pkg/state/state.go#L236 - labels: - feature: "cert-manager" - {{- tpl (readFile "../_common/tplRelease.yaml.gotmpl") (dict "Values" .Values "release" $release "resource-injector" true) | nindent 4 -}} - {{ end }} + {{- $release := "cert-manager" }} + - name: 'cert-manager' + inherit: + - template: 'cert-manager' + values: + {{- tpl $_tplReleaseValues (dict "Values" .Values "release" $release) | nindent 4 -}} + {{- end -}} + {{ if has "cert-manager" ( .Values | get "features" list ) }} + {{- $release := "cert-manager-resources" }} + - name: 'cert-manager-resources' + inherit: + - template: 'cert-manager-resources' + values: + {{- tpl $_tplReleaseValues (dict "Values" .Values "release" $release) | nindent 4 -}} + {{- end -}} diff --git a/monitoring/helmfile.yaml b/monitoring/helmfile.yaml index 8d568e4c4..4d7048970 100644 --- a/monitoring/helmfile.yaml +++ b/monitoring/helmfile.yaml @@ -1,108 +1,153 @@ +{{- $_tplTransforms := ` +{{- $_TemplatedResources := list "Deployment" "StatefulSet" "DaemonSet" -}} +transformers: +- apiVersion: builtin + kind: AnnotationsTransformer + metadata: + name: AddAnnotations + annotations: + {{- . | get "annotations" dict | toYaml | nindent 6 }} + fieldSpecs: + - path: metadata/annotations + create: true + {{- range $kind := $_TemplatedResources }} + - kind: {{ $kind }} + path: spec/template/metadata/annotations + create: true + {{- end }} +- apiVersion: builtin + kind: LabelTransformer + metadata: + name: AddLabels + labels: + {{- . | get "labels" dict | toYaml | nindent 6 }} + fieldSpecs: + - path: metadata/labels + create: true + {{- range $kind := $_TemplatedResources }} + - kind: {{ $kind }} + path: spec/template/metadata/labels + create: true + {{- end }} +` -}} + +{{- $_tplReleaseValues := (print ` +{{- if ( hasKey .Values "flavor" ) }} +- ./values/_common/{{` "`{{ .Release.Name }}`" `}}.yaml +- ./values/{{ .Values.flavor }}/{{` "`{{ .Release.Name }}`" `}}.yaml +{{- else }} +- ./values/{{` "`{{ .Release.Name }}`" `}}.yaml +{{- end -}} +{{- if typeIs ( typeOf list ) ( .Values | get .release dict | get "values" dict ) -}} + {{- range $element := ( .Values | get .release dict | get "values" dict ) }} +- {{- $element | toYaml | nindent 4 }} + {{- end -}} +{{- else }} +- {{- .Values | get .release dict | get "values" dict | toYaml | nindent 4 }} +{{- end -}} +`) -}} + +{{ $__helmDefaults := `{"recreatePods":true}` | fromJson }} + +{{ with ( .Values | get "helmDefaults" dict ) }} +{{ $_ := (deepCopy . | mergeOverwrite $__helmDefaults) }} +{{ end }} -bases: - - ../_common/inheritHelmDefaults.yaml.gotmpl +helmDefaults: +{{ $__helmDefaults | toYaml | indent 2 }} #set default namespace -{{ $_defaultNamespace := "monitoring" }} +{{ $_defaultNamespace := `monitoring` }} + + +# Define default features when undefined +{{ if not (hasKey .Values "features") }} +{{ $_ := set .Values "features" (list + +) }} +{{ end }} commonLabels: - launchpad.graphops.xyz/namespace: {{ $_defaultNamespace }} - launchpad.graphops.xyz/layer: "base" + launchpad.graphops.xyz/namespace: monitoring -# Repositories for Charts used for Releases in this namespace +{{ $_labels := dict + `launchpad.graphops.xyz/namespace` `monitoring` +}} repositories: - name: prometheus-community url: https://prometheus-community.github.io/helm-charts - name: deliveryhero url: https://charts.deliveryhero.io - - name: graphops - url: https://graphops.github.io/launchpad-charts - name: grafana url: https://grafana.github.io/helm-charts - -# Import common YAML template definitions -{{ $_tplDefaults := tpl (readFile "../_common/tplDefaults.yaml") dict -}} - -{{ $_labels := dict - "launchpad.graphops.xyz/namespace" $_defaultNamespace -}} - -{{ $_tplTransforms := - tpl (readFile "../_common/tplTransforms.yaml.gotmpl") (dict - "annotations" ( .Values | get "annotations" dict) - "labels" ( merge $_labels ( .Values | get "labels" dict) ) - ) --}} - -# Anchors for each default release definition, their default values, and any inner resources that are relevant + templates: transforms: - {{- $_tplTransforms | nindent 4 }} - + {{ tpl $_tplTransforms (dict + "annotations" ( .Values | get "annotations" dict) + "labels" ( merge $_labels ( .Values | get "labels" dict) ) + ) | nindent 4 }} + defaults: - {{- $_tplDefaults | nindent 4 -}} - namespace: {{ .Values | get "targetNamespace" $_defaultNamespace }} + namespace: '{{ .Values | get "targetNamespace" $_defaultNamespace }}' + missingFileHandler: Warn inherit: - template: transforms - + kube-prometheus-stack: chart: prometheus-community/kube-prometheus-stack version: 41.3.2 inherit: - template: defaults - disableValidationOnInstall: true # For CRDs https://github.com/helmfile/helmfile/blob/main/pkg/state/state.go#L236 - + + node-problem-detector: + chart: deliveryhero/node-problem-detector + version: 2.2.2 + inherit: + - template: defaults + loki: chart: grafana/loki-distributed version: 0.55.4 inherit: - template: defaults - + promtail: chart: grafana/promtail version: 6.2.3 inherit: - template: defaults - - node-problem-detector: - chart: deliveryhero/node-problem-detector - version: 2.2.2 - inherit: - - template: defaults - -# Define default features when undefined -{{ if not (hasKey .Values "features") }} -{{ $_ := set .Values "features" (list - "metrics" - "logs" -) }} -{{ end }} - + releases: {{ if has "metrics" ( .Values | get "features" list ) }} - {{ $release := "kube-prometheus-stack" }} - - name: {{ $release }} - labels: - feature: "metrics" - {{- tpl (readFile "../_common/tplRelease.yaml.gotmpl") (dict "Values" .Values "release" $release) | nindent 4 -}} - - {{ $release := "node-problem-detector" }} - - name: {{ $release }} - labels: - feature: "metrics" - {{- tpl (readFile "../_common/tplRelease.yaml.gotmpl") (dict "Values" .Values "release" $release) | nindent 4 -}} - {{ end }} - + {{- $release := "kube-prometheus-stack" }} + - name: 'kube-prometheus-stack' + inherit: + - template: 'kube-prometheus-stack' + values: + {{- tpl $_tplReleaseValues (dict "Values" .Values "release" $release) | nindent 4 -}} + {{- end -}} + {{ if has "metrics" ( .Values | get "features" list ) }} + {{- $release := "node-problem-detector" }} + - name: 'node-problem-detector' + inherit: + - template: 'node-problem-detector' + values: + {{- tpl $_tplReleaseValues (dict "Values" .Values "release" $release) | nindent 4 -}} + {{- end -}} {{ if has "logs" ( .Values | get "features" list ) }} - {{ $release := "loki" }} - - name: {{ $release }} - labels: - feature: "logs" - {{- tpl (readFile "../_common/tplRelease.yaml.gotmpl") (dict "Values" .Values "release" $release) | nindent 4 -}} - - {{ $release := "promtail" }} - - name: {{ $release }} - labels: - feature: "logs" - {{- tpl (readFile "../_common/tplRelease.yaml.gotmpl") (dict "Values" .Values "release" $release) | nindent 4 -}} - {{ end }} + {{- $release := "loki" }} + - name: 'loki' + inherit: + - template: 'loki' + values: + {{- tpl $_tplReleaseValues (dict "Values" .Values "release" $release) | nindent 4 -}} + {{- end -}} + {{ if has "logs" ( .Values | get "features" list ) }} + {{- $release := "promtail" }} + - name: 'promtail' + inherit: + - template: 'promtail' + values: + {{- tpl $_tplReleaseValues (dict "Values" .Values "release" $release) | nindent 4 -}} + {{- end -}} diff --git a/postgres-operator/helmfile.yaml b/postgres-operator/helmfile.yaml index fe7310fec..8d2f8b1b0 100644 --- a/postgres-operator/helmfile.yaml +++ b/postgres-operator/helmfile.yaml @@ -1,54 +1,99 @@ +{{- $_tplTransforms := ` +{{- $_TemplatedResources := list "Deployment" "StatefulSet" "DaemonSet" -}} +transformers: +- apiVersion: builtin + kind: AnnotationsTransformer + metadata: + name: AddAnnotations + annotations: + {{- . | get "annotations" dict | toYaml | nindent 6 }} + fieldSpecs: + - path: metadata/annotations + create: true + {{- range $kind := $_TemplatedResources }} + - kind: {{ $kind }} + path: spec/template/metadata/annotations + create: true + {{- end }} +- apiVersion: builtin + kind: LabelTransformer + metadata: + name: AddLabels + labels: + {{- . | get "labels" dict | toYaml | nindent 6 }} + fieldSpecs: + - path: metadata/labels + create: true + {{- range $kind := $_TemplatedResources }} + - kind: {{ $kind }} + path: spec/template/metadata/labels + create: true + {{- end }} +` -}} -bases: - - ../_common/inheritHelmDefaults.yaml.gotmpl +{{- $_tplReleaseValues := (print ` +{{- if ( hasKey .Values "flavor" ) }} +- ./values/_common/{{` "`{{ .Release.Name }}`" `}}.yaml +- ./values/{{ .Values.flavor }}/{{` "`{{ .Release.Name }}`" `}}.yaml +{{- else }} +- ./values/{{` "`{{ .Release.Name }}`" `}}.yaml +{{- end -}} +{{- if typeIs ( typeOf list ) ( .Values | get .release dict | get "values" dict ) -}} + {{- range $element := ( .Values | get .release dict | get "values" dict ) }} +- {{- $element | toYaml | nindent 4 }} + {{- end -}} +{{- else }} +- {{- .Values | get .release dict | get "values" dict | toYaml | nindent 4 }} +{{- end -}} +`) -}} +{{ $__helmDefaults := `{"recreatePods":true}` | fromJson }} + +{{ with ( .Values | get "helmDefaults" dict ) }} +{{ $_ := (deepCopy . | mergeOverwrite $__helmDefaults) }} +{{ end }} + +helmDefaults: +{{ $__helmDefaults | toYaml | indent 2 }} #set default namespace -{{ $_defaultNamespace := "postgres-operator" }} +{{ $_defaultNamespace := `postgres-operator` }} + + commonLabels: - launchpad.graphops.xyz/namespace: {{ $_defaultNamespace }} - launchpad.graphops.xyz/layer: "base" + launchpad.graphops.xyz/namespace: postgres-operator -# Repositories for Charts used for Releases in this namespace +{{ $_labels := dict + `launchpad.graphops.xyz/namespace` `postgres-operator` +}} repositories: - name: postgres-operator-charts url: https://opensource.zalando.com/postgres-operator/charts/postgres-operator - -# Import common YAML template definitions -{{ $_tplDefaults := tpl (readFile "../_common/tplDefaults.yaml") dict -}} - -{{ $_labels := dict - "launchpad.graphops.xyz/namespace" $_defaultNamespace -}} - -# "launchpad.graphops.xyz/targetNamespace" .Release.Namespace -# -{{ $_tplTransforms := - tpl (readFile "../_common/tplTransforms.yaml.gotmpl") (dict - "annotations" ( .Values | get "annotations" dict) - "labels" ( merge $_labels ( .Values | get "labels" dict) ) - ) --}} - + templates: transforms: - {{- $_tplTransforms | nindent 4 }} - + {{ tpl $_tplTransforms (dict + "annotations" ( .Values | get "annotations" dict) + "labels" ( merge $_labels ( .Values | get "labels" dict) ) + ) | nindent 4 }} + defaults: - {{- $_tplDefaults | nindent 4 -}} - namespace: {{ .Values | get "targetNamespace" $_defaultNamespace }} + namespace: '{{ .Values | get "targetNamespace" $_defaultNamespace }}' + missingFileHandler: Warn inherit: - template: transforms - + postgres-operator: chart: postgres-operator-charts/postgres-operator version: 1.8.2 - disableValidationOnInstall: true # https://github.com/roboll/helmfile/issues/1600 inherit: - template: defaults - + releases: - {{- $release := "postgres-operator" }} - - name: {{ $release }} - {{- tpl (readFile "../_common/tplRelease.yaml.gotmpl") (dict "Values" .Values "release" $release) | nindent 4 -}} + {{- $release := "postgres-operator" }} + - name: 'postgres-operator' + inherit: + - template: 'postgres-operator' + values: + {{- tpl $_tplReleaseValues (dict "Values" .Values "release" $release) | nindent 4 -}} diff --git a/sealed-secrets/helmfile.yaml b/sealed-secrets/helmfile.yaml index fa300b910..5a986d1b5 100644 --- a/sealed-secrets/helmfile.yaml +++ b/sealed-secrets/helmfile.yaml @@ -1,53 +1,99 @@ +{{- $_tplTransforms := ` +{{- $_TemplatedResources := list "Deployment" "StatefulSet" "DaemonSet" -}} +transformers: +- apiVersion: builtin + kind: AnnotationsTransformer + metadata: + name: AddAnnotations + annotations: + {{- . | get "annotations" dict | toYaml | nindent 6 }} + fieldSpecs: + - path: metadata/annotations + create: true + {{- range $kind := $_TemplatedResources }} + - kind: {{ $kind }} + path: spec/template/metadata/annotations + create: true + {{- end }} +- apiVersion: builtin + kind: LabelTransformer + metadata: + name: AddLabels + labels: + {{- . | get "labels" dict | toYaml | nindent 6 }} + fieldSpecs: + - path: metadata/labels + create: true + {{- range $kind := $_TemplatedResources }} + - kind: {{ $kind }} + path: spec/template/metadata/labels + create: true + {{- end }} +` -}} -bases: - - ../_common/inheritHelmDefaults.yaml.gotmpl +{{- $_tplReleaseValues := (print ` +{{- if ( hasKey .Values "flavor" ) }} +- ./values/_common/{{` "`{{ .Release.Name }}`" `}}.yaml +- ./values/{{ .Values.flavor }}/{{` "`{{ .Release.Name }}`" `}}.yaml +{{- else }} +- ./values/{{` "`{{ .Release.Name }}`" `}}.yaml +{{- end -}} +{{- if typeIs ( typeOf list ) ( .Values | get .release dict | get "values" dict ) -}} + {{- range $element := ( .Values | get .release dict | get "values" dict ) }} +- {{- $element | toYaml | nindent 4 }} + {{- end -}} +{{- else }} +- {{- .Values | get .release dict | get "values" dict | toYaml | nindent 4 }} +{{- end -}} +`) -}} +{{ $__helmDefaults := `{"recreatePods":true}` | fromJson }} + +{{ with ( .Values | get "helmDefaults" dict ) }} +{{ $_ := (deepCopy . | mergeOverwrite $__helmDefaults) }} +{{ end }} + +helmDefaults: +{{ $__helmDefaults | toYaml | indent 2 }} #set default namespace -{{ $_defaultNamespace := "sealed-secrets" }} +{{ $_defaultNamespace := `sealed-secrets` }} + + commonLabels: - launchpad.graphops.xyz/namespace: {{ $_defaultNamespace }} - launchpad.graphops.xyz/layer: "base" + launchpad.graphops.xyz/namespace: sealed-secrets -# Repositories for Charts used for Releases in this namespace +{{ $_labels := dict + `launchpad.graphops.xyz/namespace` `sealed-secrets` +}} repositories: - name: sealed-secrets url: https://bitnami-labs.github.io/sealed-secrets - -# Import common YAML template definitions -{{ $_tplDefaults := tpl (readFile "../_common/tplDefaults.yaml") dict -}} - -{{ $_labels := dict - "launchpad.graphops.xyz/namespace" $_defaultNamespace -}} - -# "launchpad.graphops.xyz/targetNamespace" .Release.Namespace -# -{{ $_tplTransforms := - tpl (readFile "../_common/tplTransforms.yaml.gotmpl") (dict - "annotations" ( .Values | get "annotations" dict) - "labels" ( merge $_labels ( .Values | get "labels" dict) ) - ) --}} - + templates: transforms: - {{- $_tplTransforms | nindent 4 }} - + {{ tpl $_tplTransforms (dict + "annotations" ( .Values | get "annotations" dict) + "labels" ( merge $_labels ( .Values | get "labels" dict) ) + ) | nindent 4 }} + defaults: - {{- $_tplDefaults | nindent 4 -}} - namespace: {{ .Values | get "targetNamespace" $_defaultNamespace }} + namespace: '{{ .Values | get "targetNamespace" $_defaultNamespace }}' + missingFileHandler: Warn inherit: - template: transforms - + sealed-secrets: chart: sealed-secrets/sealed-secrets version: 2.6.9 inherit: - template: defaults - + releases: - {{- $release := "sealed-secrets" }} - - name: {{ $release }} - {{- tpl (readFile "../_common/tplRelease.yaml.gotmpl") (dict "Values" .Values "release" $release) | nindent 4 -}} + {{- $release := "sealed-secrets" }} + - name: 'sealed-secrets' + inherit: + - template: 'sealed-secrets' + values: + {{- tpl $_tplReleaseValues (dict "Values" .Values "release" $release) | nindent 4 -}} diff --git a/storage/helmfile.yaml b/storage/helmfile.yaml index 167d7f322..51d619d23 100644 --- a/storage/helmfile.yaml +++ b/storage/helmfile.yaml @@ -1,122 +1,165 @@ +{{- $_tplTransforms := ` +{{- $_TemplatedResources := list "Deployment" "StatefulSet" "DaemonSet" -}} +transformers: +- apiVersion: builtin + kind: AnnotationsTransformer + metadata: + name: AddAnnotations + annotations: + {{- . | get "annotations" dict | toYaml | nindent 6 }} + fieldSpecs: + - path: metadata/annotations + create: true + {{- range $kind := $_TemplatedResources }} + - kind: {{ $kind }} + path: spec/template/metadata/annotations + create: true + {{- end }} +- apiVersion: builtin + kind: LabelTransformer + metadata: + name: AddLabels + labels: + {{- . | get "labels" dict | toYaml | nindent 6 }} + fieldSpecs: + - path: metadata/labels + create: true + {{- range $kind := $_TemplatedResources }} + - kind: {{ $kind }} + path: spec/template/metadata/labels + create: true + {{- end }} +` -}} + +{{- $_tplReleaseValues := (print ` +{{- if ( hasKey .Values "flavor" ) }} +- ./values/_common/{{` "`{{ .Release.Name }}`" `}}.yaml +- ./values/{{ .Values.flavor }}/{{` "`{{ .Release.Name }}`" `}}.yaml +{{- else }} +- ./values/{{` "`{{ .Release.Name }}`" `}}.yaml +{{- end -}} +{{- if typeIs ( typeOf list ) ( .Values | get .release dict | get "values" dict ) -}} + {{- range $element := ( .Values | get .release dict | get "values" dict ) }} +- {{- $element | toYaml | nindent 4 }} + {{- end -}} +{{- else }} +- {{- .Values | get .release dict | get "values" dict | toYaml | nindent 4 }} +{{- end -}} +`) -}} + +{{ $__helmDefaults := `{"recreatePods":true}` | fromJson }} + +{{ with ( .Values | get "helmDefaults" dict ) }} +{{ $_ := (deepCopy . | mergeOverwrite $__helmDefaults) }} +{{ end }} -bases: - - ../_common/inheritHelmDefaults.yaml.gotmpl - +helmDefaults: +{{ $__helmDefaults | toYaml | indent 2 }} #set default namespace -{{ $_defaultNamespace := "storage" }} +{{ $_defaultNamespace := `storage` }} -commonLabels: - launchpad.graphops.xyz/namespace: {{ $_defaultNamespace }} - launchpad.graphops.xyz/layer: "base" +# Define default features when undefined +{{ if not (hasKey .Values "features") }} +{{ $_ := set .Values "features" (list +`rawfile` +) }} +{{ end }} -# Repositories for Charts used for Releases in this namespace +commonLabels: + launchpad.graphops.xyz/namespace: storage + +{{ $_labels := dict + `launchpad.graphops.xyz/namespace` `storage` +}} repositories: - name: openebs url: https://openebs.github.io/charts - - name: openebs-zfs-localpv - url: https://openebs.github.io/zfs-localpv - - name: openebs-monitoring - url: https://openebs.github.io/monitoring/ - name: graphops url: https://graphops.github.io/launchpad-charts - -# Import common YAML template definitions -{{ $_tplDefaults := tpl (readFile "../_common/tplDefaults.yaml") dict -}} - -{{ $_labels := dict - "launchpad.graphops.xyz/namespace" $_defaultNamespace -}} - -{{ $_tplTransforms := - tpl (readFile "../_common/tplTransforms.yaml.gotmpl") (dict - "annotations" ( .Values | get "annotations" dict) - "labels" ( merge $_labels ( .Values | get "labels" dict) ) - ) --}} - + - name: openebs-zfs-localpv + url: https://openebs.github.io/zfs-localpv + templates: transforms: - {{- $_tplTransforms | nindent 4 }} - + {{ tpl $_tplTransforms (dict + "annotations" ( .Values | get "annotations" dict) + "labels" ( merge $_labels ( .Values | get "labels" dict) ) + ) | nindent 4 }} + defaults: - {{- $_tplDefaults | nindent 4 -}} - namespace: {{ .Values | get "targetNamespace" $_defaultNamespace }} + namespace: '{{ .Values | get "targetNamespace" $_defaultNamespace }}' + missingFileHandler: Warn inherit: - template: transforms - - resource-injector: - chart: graphops/resource-injector - version: 0.2.0 - inherit: - - template: defaults - + openebs: chart: openebs/openebs version: 3.6.0 inherit: - template: defaults - + openebs-rawfile-localpv: chart: graphops/openebs-rawfile-localpv version: 0.8.0 inherit: - template: defaults - + + openebs-rawfile-storageclass: + chart: graphops/resource-injector + version: 0.2.0 + inherit: + - template: defaults + openebs-zfs-localpv: chart: openebs-zfs-localpv/zfs-localpv version: 2.1.0 inherit: - template: defaults - - openebs-monitoring: - chart: openebs-monitoring/openebs-monitoring - version: 0.4.10 + + openebs-zfs-storageclass: + chart: graphops/resource-injector + version: 0.2.0 inherit: - template: defaults - -# Define default features when undefined -{{ if not (hasKey .Values "features") }} -{{ $_ := set .Values "features" (list - "openebs" - "rawfile" -) }} -{{ end }} - + releases: - {{- if has "openebs" ( .Values | get "features" list ) }} - {{- $release := "openebs" }} - - name: {{ $release }} - labels: - feature: "openebs" - {{- tpl (readFile "../_common/tplRelease.yaml.gotmpl") (dict "Values" .Values "release" $release) | nindent 4 -}} + {{- $release := "openebs" }} + - name: 'openebs' + inherit: + - template: 'openebs' + values: + {{- tpl $_tplReleaseValues (dict "Values" .Values "release" $release) | nindent 4 -}} + {{ if has "rawfile" ( .Values | get "features" list ) }} + {{- $release := "openebs-rawfile-localpv" }} + - name: 'openebs-rawfile-localpv' + inherit: + - template: 'openebs-rawfile-localpv' + values: + {{- tpl $_tplReleaseValues (dict "Values" .Values "release" $release) | nindent 4 -}} {{- end -}} - {{ if has "rawfile" ( .Values | get "features" list ) }} - {{- $release := "openebs-rawfile-localpv" }} - - name: {{ $release }} - labels: - feature: "rawfile" - {{- tpl (readFile "../_common/tplRelease.yaml.gotmpl") (dict "Values" .Values "release" $release) | nindent 4 -}} - - {{- $release := "openebs-rawfile-storageclass" }} - - name: {{ $release }} - labels: - feature: "rawfile" - {{- tpl (readFile "../_common/tplRelease.yaml.gotmpl") (dict "Values" .Values "release" $release "resource-injector" true) | nindent 4 -}} + {{- $release := "openebs-rawfile-storageclass" }} + - name: 'openebs-rawfile-storageclass' + inherit: + - template: 'openebs-rawfile-storageclass' + values: + {{- tpl $_tplReleaseValues (dict "Values" .Values "release" $release) | nindent 4 -}} {{- end -}} - {{ if has "zfs" ( .Values | get "features" list ) }} - {{- $release := "openebs-zfs-localpv" }} - - name: {{ $release }} - labels: - feature: "zfs" - {{- tpl (readFile "../_common/tplRelease.yaml.gotmpl") (dict "Values" .Values "release" $release) | nindent 4 -}} - - {{- $release := "openebs-zfs-storageclass" }} - - name: {{ $release }} - labels: - feature: "zfs" - {{- tpl (readFile "../_common/tplRelease.yaml.gotmpl") (dict "Values" .Values "release" $release "resource-injector" true) | nindent 4 -}} + {{- $release := "openebs-zfs-localpv" }} + - name: 'openebs-zfs-localpv' + inherit: + - template: 'openebs-zfs-localpv' + values: + {{- tpl $_tplReleaseValues (dict "Values" .Values "release" $release) | nindent 4 -}} + {{- end -}} + {{ if has "zfs" ( .Values | get "features" list ) }} + {{- $release := "openebs-zfs-storageclass" }} + - name: 'openebs-zfs-storageclass' + inherit: + - template: 'openebs-zfs-storageclass' + values: + {{- tpl $_tplReleaseValues (dict "Values" .Values "release" $release) | nindent 4 -}} {{- end -}}