diff --git a/assets/components/openshift-router/service-cloud.yaml b/assets/components/openshift-router/service-cloud.yaml index 98e78656ab..d4be80e3b8 100644 --- a/assets/components/openshift-router/service-cloud.yaml +++ b/assets/components/openshift-router/service-cloud.yaml @@ -17,6 +17,7 @@ spec: # router pods are present on a node behind the service. externalTrafficPolicy: Local internalTrafficPolicy: Cluster + ipFamilyPolicy: '{{.IPFamily}}' ports: - name: http protocol: TCP diff --git a/assets/components/openshift-router/service-internal.yaml b/assets/components/openshift-router/service-internal.yaml index 007291a0f8..fdf75368b7 100644 --- a/assets/components/openshift-router/service-internal.yaml +++ b/assets/components/openshift-router/service-internal.yaml @@ -5,6 +5,7 @@ apiVersion: v1 spec: type: ClusterIP internalTrafficPolicy: Cluster + ipFamilyPolicy: '{{.IPFamily}}' ports: - name: http port: 80 diff --git a/assets/components/ovn/single-node/master/daemonset.yaml b/assets/components/ovn/single-node/master/daemonset.yaml index e2e47daa3d..2d698042a3 100644 --- a/assets/components/ovn/single-node/master/daemonset.yaml +++ b/assets/components/ovn/single-node/master/daemonset.yaml @@ -29,6 +29,7 @@ spec: type: infra openshift.io/component: network kubernetes.io/os: "linux" + microshift.io/ipfamilypolicy: '{{.IPFamily}}' spec: serviceAccountName: ovn-kubernetes-controller hostNetwork: true diff --git a/pkg/components/render.go b/pkg/components/render.go index 675e47608f..f6807fb7f7 100755 --- a/pkg/components/render.go +++ b/pkg/components/render.go @@ -8,6 +8,8 @@ import ( "strings" "text/template" + "k8s.io/kubernetes/pkg/apis/core" + "github.com/openshift/microshift/pkg/assets" "github.com/openshift/microshift/pkg/config" "github.com/openshift/microshift/pkg/release" @@ -28,9 +30,16 @@ func renderParamsFromConfig(cfg *config.Config, extra assets.RenderParams) asset "ClusterDNS": cfg.Network.DNS, "BaseDomain": cfg.DNS.BaseDomain, } + ipFamily := core.IPFamilyPolicySingleStack + if cfg.IsIPv4() && cfg.IsIPv6() { + ipFamily = core.IPFamilyPolicyPreferDualStack + } + params["IPFamily"] = ipFamily + for k, v := range extra { params[k] = v } + return params } diff --git a/scripts/auto-rebase/rebase.sh b/scripts/auto-rebase/rebase.sh index df6847b80f..cff00a4a99 100755 --- a/scripts/auto-rebase/rebase.sh +++ b/scripts/auto-rebase/rebase.sh @@ -718,6 +718,7 @@ EOF yq -i '.metadata.labels += {"ingresscontroller.operator.openshift.io/owning-ingresscontroller": "default"}' "${REPOROOT}"/assets/components/openshift-router/service-internal.yaml yq -i '.metadata += {"name": "router-internal-default", "namespace": "openshift-ingress"}' "${REPOROOT}"/assets/components/openshift-router/service-internal.yaml yq -i '.spec.selector = {"ingresscontroller.operator.openshift.io/deployment-ingresscontroller": "default"}' "${REPOROOT}"/assets/components/openshift-router/service-internal.yaml + yq -i '.spec.ipFamilyPolicy = "{{.IPFamily}}"' "${REPOROOT}"/assets/components/openshift-router/service-internal.yaml sed -i '/#.*set at runtime/d' "${REPOROOT}"/assets/components/openshift-router/service-internal.yaml # MicroShift-specific changes @@ -731,6 +732,7 @@ EOF yq -i '.metadata += {"name": "router-default", "namespace": "openshift-ingress"}' "${REPOROOT}"/assets/components/openshift-router/service-cloud.yaml yq -i '.spec.selector = {"ingresscontroller.operator.openshift.io/deployment-ingresscontroller": "default"}' "${REPOROOT}"/assets/components/openshift-router/service-cloud.yaml yq -i '.metadata.labels += {"ingresscontroller.operator.openshift.io/owning-ingresscontroller": "default"}' "${REPOROOT}"/assets/components/openshift-router/service-cloud.yaml + yq -i '.spec.ipFamilyPolicy = "{{.IPFamily}}"' "${REPOROOT}"/assets/components/openshift-router/service-cloud.yaml # Must use sed instead of yq because unquoted {{ .RouterHttpPort }} is interpreted as yaml object and yq has no option to not interpret it (like provide is as quoted string but produce unquoted output). # It needs to be last manipulation of the file, otherwise yq commands after this one would expand the {{ .RouterHttpPort }}. sed -i 's/port: 80/port: {{ .RouterHttpPort }}/g; s/port: 443/port: {{ .RouterHttpsPort }}/g' "${REPOROOT}"/assets/components/openshift-router/service-cloud.yaml