diff --git a/operator/v1/0000_70_cluster-network-operator_01.crd.yaml b/operator/v1/0000_70_cluster-network-operator_01.crd.yaml index 0ee3341551d..cb3c45baca8 100644 --- a/operator/v1/0000_70_cluster-network-operator_01.crd.yaml +++ b/operator/v1/0000_70_cluster-network-operator_01.crd.yaml @@ -202,6 +202,16 @@ spec: description: ovnKubernetesConfig configures the ovn-kubernetes plugin. type: object properties: + egressIPConfig: + description: egressIPConfig holds the configuration for EgressIP options. + type: object + properties: + reachabilityTotalTimeoutSeconds: + description: reachabilityTotalTimeout configures the EgressIP node reachability check total timeout in seconds. If the EgressIP node cannot be reached within this timeout, the node is declared down. Setting a large value may cause the EgressIP feature to react slowly to node changes. In particular, it may react slowly for EgressIP nodes that really have a genuine problem and are unreachable. When omitted, this means the user has no opinion and the platform is left to choose a reasonable default, which is subject to change over time. The current default is 1 second. A value of 0 disables the EgressIP node's reachability check. + type: integer + format: int32 + maximum: 60 + minimum: 0 gatewayConfig: description: gatewayConfig holds the configuration for node gateway options. type: object diff --git a/operator/v1/types_network.go b/operator/v1/types_network.go index 1c97401078c..2391006d7c9 100644 --- a/operator/v1/types_network.go +++ b/operator/v1/types_network.go @@ -427,6 +427,9 @@ type OVNKubernetesConfig struct { // Default is fd98::/48 // +optional V6InternalSubnet string `json:"v6InternalSubnet,omitempty"` + // egressIPConfig holds the configuration for EgressIP options. + // +optional + EgressIPConfig EgressIPConfig `json:"egressIPConfig,omitempty"` } type HybridOverlayConfig struct { @@ -549,6 +552,21 @@ type ProxyConfig struct { ProxyArguments map[string]ProxyArgumentList `json:"proxyArguments,omitempty"` } +// EgressIPConfig defines the configuration knobs for egressip +type EgressIPConfig struct { + // reachabilityTotalTimeout configures the EgressIP node reachability check total timeout in seconds. + // If the EgressIP node cannot be reached within this timeout, the node is declared down. + // Setting a large value may cause the EgressIP feature to react slowly to node changes. + // In particular, it may react slowly for EgressIP nodes that really have a genuine problem and are unreachable. + // When omitted, this means the user has no opinion and the platform is left to choose a reasonable default, which is subject to change over time. + // The current default is 1 second. + // A value of 0 disables the EgressIP node's reachability check. + // +kubebuilder:validation:Minimum=0 + // +kubebuilder:validation:Maximum=60 + // +optional + ReachabilityTotalTimeoutSeconds *uint32 `json:"reachabilityTotalTimeoutSeconds,omitempty"` +} + const ( // NetworkTypeOpenShiftSDN means the openshift-sdn plugin will be configured NetworkTypeOpenShiftSDN NetworkType = "OpenShiftSDN" diff --git a/operator/v1/zz_generated.deepcopy.go b/operator/v1/zz_generated.deepcopy.go index d3cb1ae6394..f310f78a0e4 100644 --- a/operator/v1/zz_generated.deepcopy.go +++ b/operator/v1/zz_generated.deepcopy.go @@ -1104,6 +1104,27 @@ func (in *DeveloperConsoleCatalogCustomization) DeepCopy() *DeveloperConsoleCata return out } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *EgressIPConfig) DeepCopyInto(out *EgressIPConfig) { + *out = *in + if in.ReachabilityTotalTimeoutSeconds != nil { + in, out := &in.ReachabilityTotalTimeoutSeconds, &out.ReachabilityTotalTimeoutSeconds + *out = new(uint32) + **out = **in + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new EgressIPConfig. +func (in *EgressIPConfig) DeepCopy() *EgressIPConfig { + if in == nil { + return nil + } + out := new(EgressIPConfig) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *EndpointPublishingStrategy) DeepCopyInto(out *EndpointPublishingStrategy) { *out = *in @@ -2689,6 +2710,7 @@ func (in *OVNKubernetesConfig) DeepCopyInto(out *OVNKubernetesConfig) { *out = new(GatewayConfig) **out = **in } + in.EgressIPConfig.DeepCopyInto(&out.EgressIPConfig) return } diff --git a/operator/v1/zz_generated.swagger_doc_generated.go b/operator/v1/zz_generated.swagger_doc_generated.go index 913f3f7b136..5b4c12ad20f 100644 --- a/operator/v1/zz_generated.swagger_doc_generated.go +++ b/operator/v1/zz_generated.swagger_doc_generated.go @@ -958,6 +958,15 @@ func (DefaultNetworkDefinition) SwaggerDoc() map[string]string { return map_DefaultNetworkDefinition } +var map_EgressIPConfig = map[string]string{ + "": "EgressIPConfig defines the configuration knobs for egressip", + "reachabilityTotalTimeoutSeconds": "reachabilityTotalTimeout configures the EgressIP node reachability check total timeout in seconds. If the EgressIP node cannot be reached within this timeout, the node is declared down. Setting a large value may cause the EgressIP feature to react slowly to node changes. In particular, it may react slowly for EgressIP nodes that really have a genuine problem and are unreachable. When omitted, this means the user has no opinion and the platform is left to choose a reasonable default, which is subject to change over time. The current default is 1 second. A value of 0 disables the EgressIP node's reachability check.", +} + +func (EgressIPConfig) SwaggerDoc() map[string]string { + return map_EgressIPConfig +} + var map_ExportNetworkFlows = map[string]string{ "netFlow": "netFlow defines the NetFlow configuration.", "sFlow": "sFlow defines the SFlow configuration.", @@ -1111,6 +1120,7 @@ var map_OVNKubernetesConfig = map[string]string{ "gatewayConfig": "gatewayConfig holds the configuration for node gateway options.", "v4InternalSubnet": "v4InternalSubnet is a v4 subnet used internally by ovn-kubernetes in case the default one is being already used by something else. It must not overlap with any other subnet being used by OpenShift or by the node network. The size of the subnet must be larger than the number of nodes. The value cannot be changed after installation. Default is 100.64.0.0/16", "v6InternalSubnet": "v6InternalSubnet is a v6 subnet used internally by ovn-kubernetes in case the default one is being already used by something else. It must not overlap with any other subnet being used by OpenShift or by the node network. The size of the subnet must be larger than the number of nodes. The value cannot be changed after installation. Default is fd98::/48", + "egressIPConfig": "egressIPConfig holds the configuration for EgressIP options.", } func (OVNKubernetesConfig) SwaggerDoc() map[string]string {