diff --git a/packages/core/platform/bundles/distro-full.yaml b/packages/core/platform/bundles/distro-full.yaml index 6cd88fbb..88772cbe 100644 --- a/packages/core/platform/bundles/distro-full.yaml +++ b/packages/core/platform/bundles/distro-full.yaml @@ -140,16 +140,19 @@ releases: releaseName: traffic-manager chart: cozy-telepresence namespace: cozy-telepresence + optional: true dependsOn: [] - name: external-dns releaseName: external-dns chart: cozy-external-dns namespace: cozy-external-dns + optional: true dependsOn: [cilium] - name: external-secrets-operator releaseName: external-secrets-operator chart: cozy-external-secrets-operator namespace: cozy-external-secrets-operator + optional: true dependsOn: [cilium] diff --git a/packages/core/platform/bundles/distro-hosted.yaml b/packages/core/platform/bundles/distro-hosted.yaml index 09f6f1f5..2dd5535a 100644 --- a/packages/core/platform/bundles/distro-hosted.yaml +++ b/packages/core/platform/bundles/distro-hosted.yaml @@ -91,16 +91,19 @@ releases: releaseName: traffic-manager chart: cozy-telepresence namespace: cozy-telepresence + optional: true dependsOn: [] - name: external-dns releaseName: external-dns chart: cozy-external-dns namespace: cozy-external-dns + optional: true dependsOn: [] - name: external-secrets-operator releaseName: external-secrets-operator chart: cozy-external-secrets-operator namespace: cozy-external-secrets-operator + optional: true dependsOn: [] diff --git a/packages/core/platform/bundles/paas-full.yaml b/packages/core/platform/bundles/paas-full.yaml index 78481828..0ecf1527 100644 --- a/packages/core/platform/bundles/paas-full.yaml +++ b/packages/core/platform/bundles/paas-full.yaml @@ -175,6 +175,7 @@ releases: releaseName: traffic-manager chart: cozy-telepresence namespace: cozy-telepresence + optional: true dependsOn: [cilium,kubeovn] - name: dashboard @@ -221,10 +222,12 @@ releases: releaseName: external-dns chart: cozy-external-dns namespace: cozy-external-dns + optional: true dependsOn: [cilium,kubeovn] - name: external-secrets-operator releaseName: external-secrets-operator chart: cozy-external-secrets-operator namespace: cozy-external-secrets-operator + optional: true dependsOn: [cilium,kubeovn] diff --git a/packages/core/platform/bundles/paas-hosted.yaml b/packages/core/platform/bundles/paas-hosted.yaml index 63500982..21af835f 100644 --- a/packages/core/platform/bundles/paas-hosted.yaml +++ b/packages/core/platform/bundles/paas-hosted.yaml @@ -97,18 +97,21 @@ releases: releaseName: traffic-manager chart: cozy-telepresence namespace: cozy-telepresence + optional: true dependsOn: [] - name: external-dns releaseName: external-dns chart: cozy-external-dns namespace: cozy-external-dns + optional: true dependsOn: [cilium,kubeovn] - name: external-secrets-operator releaseName: external-secrets-operator chart: cozy-external-secrets-operator namespace: cozy-external-secrets-operator + optional: true dependsOn: [] - name: dashboard diff --git a/packages/core/platform/templates/helmreleases.yaml b/packages/core/platform/templates/helmreleases.yaml index 06ef0463..7b438932 100644 --- a/packages/core/platform/templates/helmreleases.yaml +++ b/packages/core/platform/templates/helmreleases.yaml @@ -3,6 +3,7 @@ {{- $bundle := tpl (.Files.Get (printf "bundles/%s.yaml" $bundleName)) . | fromYaml }} {{- $dependencyNamespaces := dict }} {{- $disabledComponents := splitList "," ((index $cozyConfig.data "bundle-disable") | default "") }} +{{- $enabledComponents := splitList "," ((index $cozyConfig.data "bundle-enable") | default "") }} {{/* collect dependency namespaces from releases */}} {{- range $x := $bundle.releases }} @@ -11,6 +12,7 @@ {{- range $x := $bundle.releases }} {{- if not (has $x.name $disabledComponents) }} +{{- if and ($x.optional) (has $x.name $enabledComponents) }} --- apiVersion: helm.toolkit.fluxcd.io/v2 kind: HelmRelease @@ -65,3 +67,4 @@ spec: {{- end }} {{- end }} {{- end }} +{{- end }} diff --git a/packages/core/platform/templates/namespaces.yaml b/packages/core/platform/templates/namespaces.yaml index 669d852c..c7b174bd 100644 --- a/packages/core/platform/templates/namespaces.yaml +++ b/packages/core/platform/templates/namespaces.yaml @@ -1,17 +1,23 @@ {{- $cozyConfig := lookup "v1" "ConfigMap" "cozy-system" "cozystack" }} {{- $bundleName := index $cozyConfig.data "bundle-name" }} {{- $bundle := tpl (.Files.Get (printf "bundles/%s.yaml" $bundleName)) . | fromYaml }} +{{- $disabledComponents := splitList "," ((index $cozyConfig.data "bundle-disable") | default "") }} +{{- $enabledComponents := splitList "," ((index $cozyConfig.data "bundle-enable") | default "") }} {{- $namespaces := dict }} {{/* collect namespaces from releases */}} {{- range $x := $bundle.releases }} -{{- if not (hasKey $namespaces $x.namespace) }} -{{- $_ := set $namespaces $x.namespace false }} -{{- end }} -{{/* if at least one release requires a privileged namespace, then it should be privileged */}} -{{- if or $x.privileged (index $namespaces $x.namespace) }} -{{- $_ := set $namespaces $x.namespace true }} -{{- end }} + {{- if not (hasKey $namespaces $x.namespace) }} + {{- if not (has $x.name $disabledComponents) }} + {{- if and ($x.optional) (has $x.name $enabledComponents) }} + {{- $_ := set $namespaces $x.namespace false }} + {{- end }} + {{- end }} + {{- end }} + {{/* if at least one release requires a privileged namespace, then it should be privileged */}} + {{- if or $x.privileged (index $namespaces $x.namespace) }} + {{- $_ := set $namespaces $x.namespace true }} + {{- end }} {{- end }} {{/* Add extra namespaces */}}