From ae20dc296dd5cf1acea3c55c82d1bf4642a51093 Mon Sep 17 00:00:00 2001 From: Patryk Diak Date: Fri, 15 May 2026 15:23:32 +0200 Subject: [PATCH 1/2] Remove --enable-interconnect flag from OVN-K manifests Upstream OVN-K removed --enable-interconnect in https://github.com/ovn-kubernetes/ovn-kubernetes/pull/6303 making interconnect the only supported topology. The flag is no longer recognized by the binary and causes startup failures. Also removes unused OVN_INTERCONNECT_CONFIGMAP_NAME constant and GetInterConnectConfigMap function from pkg/util/util.go. Co-Authored-By: Claude Opus 4.6 (1M context) Signed-off-by: Patryk Diak (cherry picked from commit 09b660b370e267b7e153dfd057f39dc67612902e) --- bindata/network/node-identity/managed/node-identity.yaml | 1 - .../network/node-identity/self-hosted/node-identity.yaml | 1 - bindata/network/ovn-kubernetes/common/008-script-lib.yaml | 1 - .../ovn-kubernetes/managed/ovnkube-control-plane.yaml | 1 - .../ovn-kubernetes/self-hosted/ovnkube-control-plane.yaml | 1 - pkg/util/util.go | 7 ------- 6 files changed, 12 deletions(-) diff --git a/bindata/network/node-identity/managed/node-identity.yaml b/bindata/network/node-identity/managed/node-identity.yaml index e967e20b45..2fa380c113 100644 --- a/bindata/network/node-identity/managed/node-identity.yaml +++ b/bindata/network/node-identity/managed/node-identity.yaml @@ -135,7 +135,6 @@ spec: --webhook-host="" \ --webhook-port={{.NetworkNodeIdentityPort}} \ ${ho_enable} \ - --enable-interconnect \ --disable-approver \ --extra-allowed-user="system:serviceaccount:openshift-ovn-kubernetes:ovn-kubernetes-control-plane" \ --pod-admission-conditions="/var/run/ovnkube-identity-config/additional-pod-admission-cond.json" \ diff --git a/bindata/network/node-identity/self-hosted/node-identity.yaml b/bindata/network/node-identity/self-hosted/node-identity.yaml index f3dcaf6b35..541bab06b9 100644 --- a/bindata/network/node-identity/self-hosted/node-identity.yaml +++ b/bindata/network/node-identity/self-hosted/node-identity.yaml @@ -56,7 +56,6 @@ spec: --webhook-host={{.NetworkNodeIdentityIP}} \ --webhook-port={{.NetworkNodeIdentityPort}} \ ${ho_enable} \ - --enable-interconnect \ --disable-approver \ --extra-allowed-user="system:serviceaccount:openshift-ovn-kubernetes:ovn-kubernetes-control-plane" \ --wait-for-kubernetes-api={{.NetworkNodeIdentityTerminationDurationSeconds}}s \ diff --git a/bindata/network/ovn-kubernetes/common/008-script-lib.yaml b/bindata/network/ovn-kubernetes/common/008-script-lib.yaml index 37b7c45bbb..038ae8c1f6 100644 --- a/bindata/network/ovn-kubernetes/common/008-script-lib.yaml +++ b/bindata/network/ovn-kubernetes/common/008-script-lib.yaml @@ -782,7 +782,6 @@ data: ${network_observability_enabled_flag} \ ${enable_multicast_flag} \ --zone ${K8S_NODE} \ - --enable-interconnect \ --acl-logging-rate-limit "{{.OVNPolicyAuditRateLimit}}" \ ${gw_interface_flag} \ ${ip_forwarding_flag} \ diff --git a/bindata/network/ovn-kubernetes/managed/ovnkube-control-plane.yaml b/bindata/network/ovn-kubernetes/managed/ovnkube-control-plane.yaml index 567dc365c1..6a9733c06f 100644 --- a/bindata/network/ovn-kubernetes/managed/ovnkube-control-plane.yaml +++ b/bindata/network/ovn-kubernetes/managed/ovnkube-control-plane.yaml @@ -224,7 +224,6 @@ spec: echo "I$(date "+%m%d %H:%M:%S.%N") - ovnkube-control-plane - start ovnkube --init-cluster-manager ${K8S_NODE}" exec /usr/bin/ovnkube \ - --enable-interconnect \ --init-cluster-manager "${K8S_NODE}" \ --config-file=/run/ovnkube-config/ovnkube.conf \ --k8s-token-file=/var/run/secrets/hosted_cluster/token \ diff --git a/bindata/network/ovn-kubernetes/self-hosted/ovnkube-control-plane.yaml b/bindata/network/ovn-kubernetes/self-hosted/ovnkube-control-plane.yaml index 1795b662b4..f86cba2676 100644 --- a/bindata/network/ovn-kubernetes/self-hosted/ovnkube-control-plane.yaml +++ b/bindata/network/ovn-kubernetes/self-hosted/ovnkube-control-plane.yaml @@ -180,7 +180,6 @@ spec: echo "I$(date "+%m%d %H:%M:%S.%N") - ovnkube-control-plane - start ovnkube --init-cluster-manager ${K8S_NODE}" exec /usr/bin/ovnkube \ - --enable-interconnect \ --init-cluster-manager "${K8S_NODE}" \ --config-file=/run/ovnkube-config/ovnkube.conf \ --loglevel "${OVN_KUBE_LOG_LEVEL}" \ diff --git a/pkg/util/util.go b/pkg/util/util.go index 88c209dc72..4de54fe7f2 100644 --- a/pkg/util/util.go +++ b/pkg/util/util.go @@ -6,15 +6,12 @@ import ( "strconv" corev1 "k8s.io/api/core/v1" - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/types" - "k8s.io/client-go/kubernetes" "k8s.io/klog/v2" cnoclient "github.com/openshift/cluster-network-operator/pkg/client" ) -const OVN_INTERCONNECT_CONFIGMAP_NAME = "ovn-interconnect-configuration" const OVN_NAMESPACE = "openshift-ovn-kubernetes" const OVN_CONTROL_PLANE = "ovnkube-control-plane" const OVN_NODE = "ovnkube-node" @@ -23,10 +20,6 @@ const MTU_CM_NAMESPACE = "openshift-network-operator" const MTU_CM_NAME = "mtu" const OVN_NBDB = "nbdb" -func GetInterConnectConfigMap(kubeClient kubernetes.Interface) (*corev1.ConfigMap, error) { - return kubeClient.CoreV1().ConfigMaps(OVN_NAMESPACE).Get(context.TODO(), OVN_INTERCONNECT_CONFIGMAP_NAME, metav1.GetOptions{}) -} - func ReadMTUConfigMap(ctx context.Context, client cnoclient.Client) (int, error) { klog.V(4).Infof("Looking for ConfigMap %s/%s", MTU_CM_NAMESPACE, MTU_CM_NAME) cm := &corev1.ConfigMap{} From 8fcea4a94c588dc3b76cf1e8e31d302a43317654 Mon Sep 17 00:00:00 2001 From: Patryk Diak Date: Fri, 15 May 2026 15:24:38 +0200 Subject: [PATCH 2/2] DROP: detect --enable-interconnect support at runtime Older OVN-K binaries still require --enable-interconnect, while newer ones (post ovn-kubernetes/ovn-kubernetes#6303) reject it as an unknown flag. Check --help output at startup to determine whether to pass the flag. Drop this commit once all supported OVN-K images have the flag removed (i.e., no upgrade path from a version that still has it). Co-Authored-By: Claude Opus 4.6 (1M context) Signed-off-by: Patryk Diak (cherry picked from commit c2241d4bc56fdbd648cba74a524011964829727b) --- bindata/network/node-identity/managed/node-identity.yaml | 7 +++++++ .../network/node-identity/self-hosted/node-identity.yaml | 7 +++++++ bindata/network/ovn-kubernetes/common/008-script-lib.yaml | 7 +++++++ .../ovn-kubernetes/managed/ovnkube-control-plane.yaml | 7 +++++++ .../ovn-kubernetes/self-hosted/ovnkube-control-plane.yaml | 7 +++++++ 5 files changed, 35 insertions(+) diff --git a/bindata/network/node-identity/managed/node-identity.yaml b/bindata/network/node-identity/managed/node-identity.yaml index 2fa380c113..94440ec532 100644 --- a/bindata/network/node-identity/managed/node-identity.yaml +++ b/bindata/network/node-identity/managed/node-identity.yaml @@ -126,6 +126,12 @@ spec: # OVN-K will try to remove hybrid overlay node annotations even when the hybrid overlay is not enabled. # https://github.com/ovn-org/ovn-kubernetes/blob/ac6820df0b338a246f10f412cd5ec903bd234694/go-controller/pkg/ovn/master.go#L791 ho_enable="--enable-hybrid-overlay" + # DROP: remove when older OVN-K images that require --enable-interconnect are no longer supported + enable_interconnect_flag= + if /usr/bin/ovnkube-identity --help 2>&1 | grep -q -- '--enable-interconnect'; then + enable_interconnect_flag="--enable-interconnect" + fi + echo "I$(date "+%m%d %H:%M:%S.%N") - network-node-identity - start webhook" # extra-allowed-user: service account `ovn-kubernetes-control-plane` # sets pod annotations in multi-homing layer3 network controller (cluster-manager) @@ -135,6 +141,7 @@ spec: --webhook-host="" \ --webhook-port={{.NetworkNodeIdentityPort}} \ ${ho_enable} \ + ${enable_interconnect_flag} \ --disable-approver \ --extra-allowed-user="system:serviceaccount:openshift-ovn-kubernetes:ovn-kubernetes-control-plane" \ --pod-admission-conditions="/var/run/ovnkube-identity-config/additional-pod-admission-cond.json" \ diff --git a/bindata/network/node-identity/self-hosted/node-identity.yaml b/bindata/network/node-identity/self-hosted/node-identity.yaml index 541bab06b9..9d028e9592 100644 --- a/bindata/network/node-identity/self-hosted/node-identity.yaml +++ b/bindata/network/node-identity/self-hosted/node-identity.yaml @@ -48,6 +48,12 @@ spec: # OVN-K will try to remove hybrid overlay node annotations even when the hybrid overlay is not enabled. # https://github.com/ovn-org/ovn-kubernetes/blob/ac6820df0b338a246f10f412cd5ec903bd234694/go-controller/pkg/ovn/master.go#L791 ho_enable="--enable-hybrid-overlay" + # DROP: remove when older OVN-K images that require --enable-interconnect are no longer supported + enable_interconnect_flag= + if /usr/bin/ovnkube-identity --help 2>&1 | grep -q -- '--enable-interconnect'; then + enable_interconnect_flag="--enable-interconnect" + fi + echo "I$(date "+%m%d %H:%M:%S.%N") - network-node-identity - start webhook" # extra-allowed-user: service account `ovn-kubernetes-control-plane` # sets pod annotations in multi-homing layer3 network controller (cluster-manager) @@ -56,6 +62,7 @@ spec: --webhook-host={{.NetworkNodeIdentityIP}} \ --webhook-port={{.NetworkNodeIdentityPort}} \ ${ho_enable} \ + ${enable_interconnect_flag} \ --disable-approver \ --extra-allowed-user="system:serviceaccount:openshift-ovn-kubernetes:ovn-kubernetes-control-plane" \ --wait-for-kubernetes-api={{.NetworkNodeIdentityTerminationDurationSeconds}}s \ diff --git a/bindata/network/ovn-kubernetes/common/008-script-lib.yaml b/bindata/network/ovn-kubernetes/common/008-script-lib.yaml index 038ae8c1f6..313177b98c 100644 --- a/bindata/network/ovn-kubernetes/common/008-script-lib.yaml +++ b/bindata/network/ovn-kubernetes/common/008-script-lib.yaml @@ -753,6 +753,12 @@ data: ovn_v6_transit_switch_subnet_opt="--cluster-manager-v6-transit-subnet {{.V6TransitSwitchSubnet}}" fi + # DROP: remove when older OVN-K images that require --enable-interconnect are no longer supported + enable_interconnect_flag= + if /usr/bin/ovnkube --help 2>&1 | grep -q -- '--enable-interconnect'; then + enable_interconnect_flag="--enable-interconnect" + fi + exec /usr/bin/ovnkube \ ${init_ovnkube_controller} \ --init-node "${K8S_NODE}" \ @@ -782,6 +788,7 @@ data: ${network_observability_enabled_flag} \ ${enable_multicast_flag} \ --zone ${K8S_NODE} \ + ${enable_interconnect_flag} \ --acl-logging-rate-limit "{{.OVNPolicyAuditRateLimit}}" \ ${gw_interface_flag} \ ${ip_forwarding_flag} \ diff --git a/bindata/network/ovn-kubernetes/managed/ovnkube-control-plane.yaml b/bindata/network/ovn-kubernetes/managed/ovnkube-control-plane.yaml index 6a9733c06f..0f6f607129 100644 --- a/bindata/network/ovn-kubernetes/managed/ovnkube-control-plane.yaml +++ b/bindata/network/ovn-kubernetes/managed/ovnkube-control-plane.yaml @@ -222,8 +222,15 @@ spec: network_connect_enabled_flag="--enable-network-connect" fi + # DROP: remove when older OVN-K images that require --enable-interconnect are no longer supported + enable_interconnect_flag= + if /usr/bin/ovnkube --help 2>&1 | grep -q -- '--enable-interconnect'; then + enable_interconnect_flag="--enable-interconnect" + fi + echo "I$(date "+%m%d %H:%M:%S.%N") - ovnkube-control-plane - start ovnkube --init-cluster-manager ${K8S_NODE}" exec /usr/bin/ovnkube \ + ${enable_interconnect_flag} \ --init-cluster-manager "${K8S_NODE}" \ --config-file=/run/ovnkube-config/ovnkube.conf \ --k8s-token-file=/var/run/secrets/hosted_cluster/token \ diff --git a/bindata/network/ovn-kubernetes/self-hosted/ovnkube-control-plane.yaml b/bindata/network/ovn-kubernetes/self-hosted/ovnkube-control-plane.yaml index f86cba2676..897fb13ae8 100644 --- a/bindata/network/ovn-kubernetes/self-hosted/ovnkube-control-plane.yaml +++ b/bindata/network/ovn-kubernetes/self-hosted/ovnkube-control-plane.yaml @@ -178,8 +178,15 @@ spec: exit 1 fi + # DROP: remove when older OVN-K images that require --enable-interconnect are no longer supported + enable_interconnect_flag= + if /usr/bin/ovnkube --help 2>&1 | grep -q -- '--enable-interconnect'; then + enable_interconnect_flag="--enable-interconnect" + fi + echo "I$(date "+%m%d %H:%M:%S.%N") - ovnkube-control-plane - start ovnkube --init-cluster-manager ${K8S_NODE}" exec /usr/bin/ovnkube \ + ${enable_interconnect_flag} \ --init-cluster-manager "${K8S_NODE}" \ --config-file=/run/ovnkube-config/ovnkube.conf \ --loglevel "${OVN_KUBE_LOG_LEVEL}" \