Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
53 changes: 0 additions & 53 deletions files/default-primary-install-config.json

This file was deleted.

53 changes: 0 additions & 53 deletions files/default-secondary-install-config.json

This file was deleted.

133 changes: 6 additions & 127 deletions templates/_helpers.tpl
Original file line number Diff line number Diff line change
@@ -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" <base install_config> "over" <override install_config>.
*/}}
{{- 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" */}}
Expand Down
6 changes: 3 additions & 3 deletions templates/submariner_addon_install.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -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) }}
---
Expand Down
104 changes: 0 additions & 104 deletions values.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand Down
Loading