diff --git a/files/default-primary-install-config.json b/files/default-primary-install-config.json
deleted file mode 100644
index 32c6e78..0000000
--- a/files/default-primary-install-config.json
+++ /dev/null
@@ -1,53 +0,0 @@
-{
- "apiVersion": "v1",
- "baseDomain": "cluster.example.com",
- "metadata": {
- "name": "ocp-primary"
- },
- "controlPlane": {
- "name": "master",
- "replicas": 3,
- "platform": {
- "aws": {
- "type": "m5.4xlarge"
- }
- }
- },
- "compute": [
- {
- "name": "worker",
- "replicas": 3,
- "platform": {
- "aws": {
- "type": "m5.metal"
- }
- }
- }
- ],
- "networking": {
- "clusterNetwork": [
- {
- "cidr": "10.132.0.0/14",
- "hostPrefix": 23
- }
- ],
- "machineNetwork": [
- {
- "cidr": "10.1.0.0/16"
- }
- ],
- "networkType": "OVNKubernetes",
- "serviceNetwork": ["172.20.0.0/16"]
- },
- "platform": {
- "aws": {
- "region": "us-west-1",
- "userTags": {
- "project": "ValidatedPatterns"
- }
- }
- },
- "publish": "External",
- "sshKey": "",
- "pullSecret": ""
-}
diff --git a/files/default-secondary-install-config.json b/files/default-secondary-install-config.json
deleted file mode 100644
index f3a4636..0000000
--- a/files/default-secondary-install-config.json
+++ /dev/null
@@ -1,53 +0,0 @@
-{
- "apiVersion": "v1",
- "baseDomain": "cluster.example.com",
- "metadata": {
- "name": "ocp-secondary"
- },
- "controlPlane": {
- "name": "master",
- "replicas": 3,
- "platform": {
- "aws": {
- "type": "m5.4xlarge"
- }
- }
- },
- "compute": [
- {
- "name": "worker",
- "replicas": 3,
- "platform": {
- "aws": {
- "type": "m5.metal"
- }
- }
- }
- ],
- "networking": {
- "clusterNetwork": [
- {
- "cidr": "10.136.0.0/14",
- "hostPrefix": 23
- }
- ],
- "machineNetwork": [
- {
- "cidr": "10.2.0.0/16"
- }
- ],
- "networkType": "OVNKubernetes",
- "serviceNetwork": ["172.21.0.0/16"]
- },
- "platform": {
- "aws": {
- "region": "us-east-1",
- "userTags": {
- "project": "ValidatedPatterns"
- }
- }
- },
- "publish": "External",
- "sshKey": "",
- "pullSecret": ""
-}
diff --git a/templates/_helpers.tpl b/templates/_helpers.tpl
index 87a7e29..7059140 100644
--- a/templates/_helpers.tpl
+++ b/templates/_helpers.tpl
@@ -1,138 +1,17 @@
-{{/*
- Sanitize install_config for OpenShift installer: ensure apiVersion, pass through all
- install-config fields (including full platform.aws: region, subnets, userTags, amiID,
- defaultMachinePlatform, serviceEndpoints, etc.) so regionalDR and clusterOverrides
- can override platform/region effectively. Only strip keys known invalid for the
- installer (e.g. vpc in platform.aws).
-*/}}
-{{- define "rdr.sanitizeInstallConfig" -}}
-{{- $raw := . -}}
-{{- $withVersion := merge (dict "apiVersion" "v1") $raw -}}
-{{- $platform := index $withVersion "platform" | default dict -}}
-{{- $aws := index $platform "aws" | default dict -}}
-{{- $awsSafe := ternary (omit $aws "vpc") $aws (and (kindIs "map" $aws) (hasKey $aws "vpc")) -}}
-{{- $platformSafe := merge (dict "aws" $awsSafe) $platform -}}
-{{- $allowed := dict "apiVersion" (index $withVersion "apiVersion") "baseDomain" (index $withVersion "baseDomain") "metadata" (index $withVersion "metadata") "controlPlane" (index $withVersion "controlPlane") "compute" (index $withVersion "compute") "networking" (index $withVersion "networking") "platform" $platformSafe "publish" (index $withVersion "publish") "pullSecret" (index $withVersion "pullSecret") "sshKey" (index $withVersion "sshKey") -}}
-{{- $allowed | toJson -}}
-{{- end -}}
-
-{{/*
- Deep-merge install_config so clusterOverrides can override only platform/region,
- metadata, or any subset without replacing the rest of base install_config.
- Call with dict "base" "over" .
-*/}}
-{{- define "rdr.mergeInstallConfig" -}}
-{{- $base := .base | default dict -}}
-{{- $over := .over | default dict -}}
-{{- $merged := merge $over $base -}}
-{{- $metadataMerged := merge (index $over "metadata" | default dict) (index $base "metadata" | default dict) -}}
-{{- $merged := merge (dict "metadata" $metadataMerged) $merged -}}
-{{- $platformBase := index $base "platform" | default dict -}}
-{{- $platformOver := index $over "platform" | default dict -}}
-{{- $awsBase := index $platformBase "aws" | default dict -}}
-{{- $awsOver := index $platformOver "aws" | default dict -}}
-{{- $awsMerged := merge $awsOver $awsBase -}}
-{{- $platformFinal := merge (dict "aws" $awsMerged) $platformBase -}}
-{{- merge (dict "platform" $platformFinal) $merged | toJson -}}
-{{- end -}}
-
-{{/*
- Effective primary cluster: merge of regionalDR[0].clusters.primary and clusterOverrides.primary.
- Use when clusterOverrides is set to avoid replacing full regionalDR in override file.
-*/}}
-{{- define "rdr.effectivePrimaryCluster" -}}
-{{- $dr := index .Values.regionalDR 0 -}}
-{{- $over := index (.Values.clusterOverrides | default dict) "primary" | default dict -}}
-{{- $base := $dr.clusters.primary -}}
-{{- $baseIC := $base.install_config | default dict -}}
-{{- if and (index . "Files") (not (hasKey $baseIC "controlPlane")) -}}
-{{- $baseIC = fromJson ((index . "Files").Get "files/default-primary-install-config.json") | default dict -}}
-{{- end -}}
-{{- $overIC := index . "primaryOverrideInstallConfig" | default $over.install_config | default dict -}}
-{{- $merged := merge $overIC $baseIC -}}
-{{- $metadataMerged := merge (index $overIC "metadata" | default dict) (index $baseIC "metadata" | default dict) -}}
-{{- $merged := merge (dict "metadata" $metadataMerged) $merged -}}
-{{- $platformBase := index $baseIC "platform" | default dict -}}
-{{- $awsBase := index $platformBase "aws" | default dict -}}
-{{- $awsOver := index (index $overIC "platform" | default dict) "aws" | default dict -}}
-{{- $awsMerged := merge $awsOver $awsBase -}}
-{{- $platformFinal := merge (dict "aws" $awsMerged) $platformBase -}}
-{{- $merged := merge (dict "platform" $platformFinal) $merged -}}
-{{- $cpBase := index $baseIC "controlPlane" | default dict -}}
-{{- $cpOver := index $overIC "controlPlane" | default dict -}}
-{{- $cpMerged := merge $cpOver $cpBase -}}
-{{- $cpPlatformBase := index $cpBase "platform" | default dict -}}
-{{- $cpPlatformOver := index $cpOver "platform" | default dict -}}
-{{- $cpAwsBase := index $cpPlatformBase "aws" | default dict -}}
-{{- $cpAwsOver := index $cpPlatformOver "aws" | default dict -}}
-{{- $cpAwsMerged := merge $cpAwsOver $cpAwsBase -}}
-{{- $cpPlatformFinal := merge (dict "aws" $cpAwsMerged) $cpPlatformBase -}}
-{{- $controlPlaneFinal := merge (dict "platform" $cpPlatformFinal) $cpMerged -}}
-{{- $merged := merge (dict "controlPlane" $controlPlaneFinal) $merged -}}
-{{- $computeBase := index $baseIC "compute" | default list -}}
-{{- $computeOver := index $overIC "compute" | default list -}}
-{{- $computeFinal := ternary $computeOver $computeBase (gt (len $computeOver) 0) -}}
-{{- $installConfig := merge (dict "compute" $computeFinal) $merged -}}
-{{- $installConfigSafe := fromJson (include "rdr.sanitizeInstallConfig" $installConfig) -}}
-{{- $defaultBaseDomain := join "." (slice (splitList "." (.Values.global.clusterDomain | default "cluster.example.com")) 1) -}}
-{{- $installConfigWithBase := merge (dict "baseDomain" ($defaultBaseDomain | default (index $installConfigSafe "baseDomain"))) $installConfigSafe -}}
-{{- $clusterGroup := index $over "clusterGroup" | default $base.clusterGroup | default $dr.name -}}
-{{- dict "name" (index $over "name" | default $base.name) "version" (index $over "version" | default $base.version) "clusterGroup" $clusterGroup "install_config" $installConfigWithBase | toJson -}}
-{{- end -}}
-
-{{/*
- Effective secondary cluster: merge of regionalDR[0].clusters.secondary and clusterOverrides.secondary.
-*/}}
-{{- define "rdr.effectiveSecondaryCluster" -}}
-{{- $dr := index .Values.regionalDR 0 -}}
-{{- $over := index (.Values.clusterOverrides | default dict) "secondary" | default dict -}}
-{{- $base := $dr.clusters.secondary -}}
-{{- $baseIC := $base.install_config | default dict -}}
-{{- if and (index . "Files") (not (hasKey $baseIC "controlPlane")) -}}
-{{- $baseIC = fromJson ((index . "Files").Get "files/default-secondary-install-config.json") | default dict -}}
-{{- end -}}
-{{- $overIC := index . "secondaryOverrideInstallConfig" | default $over.install_config | default dict -}}
-{{- $merged := merge $overIC $baseIC -}}
-{{- $metadataMerged := merge (index $overIC "metadata" | default dict) (index $baseIC "metadata" | default dict) -}}
-{{- $merged := merge (dict "metadata" $metadataMerged) $merged -}}
-{{- $platformBase := index $baseIC "platform" | default dict -}}
-{{- $awsBase := index $platformBase "aws" | default dict -}}
-{{- $awsOver := index (index $overIC "platform" | default dict) "aws" | default dict -}}
-{{- $awsMerged := merge $awsOver $awsBase -}}
-{{- $platformFinal := merge (dict "aws" $awsMerged) $platformBase -}}
-{{- $merged := merge (dict "platform" $platformFinal) $merged -}}
-{{- $cpBase := index $baseIC "controlPlane" | default dict -}}
-{{- $cpOver := index $overIC "controlPlane" | default dict -}}
-{{- $cpMerged := merge $cpOver $cpBase -}}
-{{- $cpPlatformBase := index $cpBase "platform" | default dict -}}
-{{- $cpPlatformOver := index $cpOver "platform" | default dict -}}
-{{- $cpAwsBase := index $cpPlatformBase "aws" | default dict -}}
-{{- $cpAwsOver := index $cpPlatformOver "aws" | default dict -}}
-{{- $cpAwsMerged := merge $cpAwsOver $cpAwsBase -}}
-{{- $cpPlatformFinal := merge (dict "aws" $cpAwsMerged) $cpPlatformBase -}}
-{{- $controlPlaneFinal := merge (dict "platform" $cpPlatformFinal) $cpMerged -}}
-{{- $merged := merge (dict "controlPlane" $controlPlaneFinal) $merged -}}
-{{- $computeBase := index $baseIC "compute" | default list -}}
-{{- $computeOver := index $overIC "compute" | default list -}}
-{{- $computeFinal := ternary $computeOver $computeBase (gt (len $computeOver) 0) -}}
-{{- $installConfig := merge (dict "compute" $computeFinal) $merged -}}
-{{- $installConfigSafe := fromJson (include "rdr.sanitizeInstallConfig" $installConfig) -}}
-{{- $defaultBaseDomain := join "." (slice (splitList "." (.Values.global.clusterDomain | default "cluster.example.com")) 1) -}}
-{{- $installConfigWithBase := merge (dict "baseDomain" ($defaultBaseDomain | default (index $installConfigSafe "baseDomain"))) $installConfigSafe -}}
-{{- $clusterGroup := index $over "clusterGroup" | default $base.clusterGroup | default $dr.name -}}
-{{- dict "name" (index $over "name" | default $base.name) "version" (index $over "version" | default $base.version) "clusterGroup" $clusterGroup "install_config" $installConfigWithBase | toJson -}}
-{{- end -}}
-
{{/* Primary cluster name for use in jobs, MirrorPeer, DRPC, etc. */}}
{{- define "rdr.primaryClusterName" -}}
{{- $dr := index .Values.regionalDR 0 -}}
-{{- index (index (.Values.clusterOverrides | default dict) "primary" | default dict) "name" | default $dr.clusters.primary.name -}}
+{{- $override := index (index (.Values.clusterOverrides | default dict) "primary" | default dict) "name" -}}
+{{- $fallback := index (index ($dr.clusters | default dict) "primary" | default dict) "name" -}}
+{{- $override | default $fallback -}}
{{- end -}}
{{/* Secondary cluster name */}}
{{- define "rdr.secondaryClusterName" -}}
{{- $dr := index .Values.regionalDR 0 -}}
-{{- index (index (.Values.clusterOverrides | default dict) "secondary" | default dict) "name" | default $dr.clusters.secondary.name -}}
+{{- $override := index (index (.Values.clusterOverrides | default dict) "secondary" | default dict) "name" -}}
+{{- $fallback := index (index ($dr.clusters | default dict) "secondary" | default dict) "name" -}}
+{{- $override | default $fallback -}}
{{- end -}}
{{/* regionalDR[0].name (ClusterSet); Submariner broker namespace = name + "-broker" */}}
diff --git a/templates/submariner_addon_install.yaml b/templates/submariner_addon_install.yaml
index 6e0093a..d40a170 100644
--- a/templates/submariner_addon_install.yaml
+++ b/templates/submariner_addon_install.yaml
@@ -22,9 +22,9 @@ spec:
globalnetEnabled: {{ $globalnetEnabled | default false }}
-{{- $effectivePrimary := include "rdr.effectivePrimaryCluster" . | fromJson }}
-{{- $effectiveSecondary := include "rdr.effectiveSecondaryCluster" . | fromJson }}
-{{- range list $effectivePrimary $effectiveSecondary }}
+{{- $primaryName := include "rdr.primaryClusterName" . | trim }}
+{{- $secondaryName := include "rdr.secondaryClusterName" . | trim }}
+{{- range list (dict "name" $primaryName) (dict "name" $secondaryName) }}
{{- $cluster := . }}
{{- $awsPlat := eq "1" (include "rdr.clusterPlatformAws" $ | trim) }}
---
diff --git a/values.yaml b/values.yaml
index 51b8bf5..604cecf 100644
--- a/values.yaml
+++ b/values.yaml
@@ -30,110 +30,6 @@ regionalDR:
name: resilient
# -- Enable Submariner Globalnet. Required when primary and secondary cluster CIDRs overlap.
globalnetEnabled: false
- clusters:
- primary:
- # -- ACM ManagedCluster metadata.name for the primary cluster.
- name: ocp-primary
- # -- Cluster group label for the primary cluster.
- clusterGroup: resilient
- # -- OCP version for the primary cluster (used by Hive ClusterDeployment).
- version: 4.18.7
- install_config:
- apiVersion: v1
- baseDomain: '{{ join "." (slice (splitList "." $.Values.global.clusterDomain) 1) }}'
- metadata:
- name: ocp-primary
- controlPlane:
- name: master
- replicas: 3
- platform:
- aws:
- type: m5.4xlarge
- compute:
- - name: worker
- replicas: 3
- platform:
- aws:
- type: m5.metal
- networking:
- clusterNetwork:
- - cidr: 10.132.0.0/14
- hostPrefix: 23
- machineNetwork:
- - cidr: 10.1.0.0/16
- networkType: OVNKubernetes
- serviceNetwork:
- - 172.20.0.0/16
- platform:
- aws:
- # -- AWS region for the primary cluster.
- region: us-west-1
- userTags:
- project: ValidatedPatterns
- publish: External
- # -- SSH public key injected into cluster nodes. Leave empty to use the hub's default.
- sshKey: ""
- # -- OpenShift pull secret (base64-encoded JSON). Leave empty to inherit from hub.
- pullSecret: ""
- secondary:
- # -- ACM ManagedCluster metadata.name for the secondary cluster.
- name: ocp-secondary
- # -- Cluster group label for the secondary cluster.
- clusterGroup: resilient
- # -- OCP version for the secondary cluster (used by Hive ClusterDeployment).
- version: 4.18.7
- install_config:
- apiVersion: v1
- baseDomain: '{{ join "." (slice (splitList "." $.Values.global.clusterDomain) 1) }}'
- metadata:
- name: ocp-secondary
- controlPlane:
- name: master
- replicas: 3
- platform:
- aws:
- type: m5.4xlarge
- compute:
- - name: worker
- replicas: 3
- platform:
- aws:
- type: m5.metal
- networking:
- clusterNetwork:
- - cidr: 10.136.0.0/14
- hostPrefix: 23
- machineNetwork:
- - cidr: 10.2.0.0/16
- networkType: OVNKubernetes
- serviceNetwork:
- - 172.21.0.0/16
- platform:
- aws:
- # -- AWS region for the secondary cluster.
- region: us-east-1
- userTags:
- project: ValidatedPatterns
- publish: External
- # -- SSH public key injected into cluster nodes. Leave empty to use the hub's default.
- sshKey: ""
- # -- OpenShift pull secret (base64-encoded JSON). Leave empty to inherit from hub.
- pullSecret: ""
-
-# Minimal cluster name/region overrides — used instead of replacing full regionalDR.
-# clusterOverrides:
-# primary:
-# name: ocp-primary
-# version: 4.18.7
-# install_config:
-# metadata:
-# name: ocp-primary
-# platform:
-# aws:
-# region: us-west-1
-# secondary:
-# name: ocp-secondary
-# ...
submariner:
# -- EC2 instance type for Submariner gateway nodes.