-
Notifications
You must be signed in to change notification settings - Fork 587
CORENET-6390: API changes and feature gate for OVN-Kubernetes no-overlay mode #2537
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: master
Are you sure you want to change the base?
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -28955,6 +28955,25 @@ | |
| } | ||
| } | ||
| }, | ||
| "com.github.openshift.api.operator.v1.BGPManagedConfig": { | ||
| "description": "BGPManagedConfig contains configuration options for BGP when routing is \"Managed\".", | ||
| "type": "object", | ||
| "required": [ | ||
| "bgpTopology" | ||
| ], | ||
| "properties": { | ||
| "asNumber": { | ||
| "description": "asNumber is the 2-byte or 4-byte Autonomous System Number (ASN) to be used in the generated FRR configuration. Valid values are 1 to 4294967295. When omitted, this defaults to 64512.", | ||
| "type": "integer", | ||
| "format": "int64", | ||
| "default": 64512 | ||
| }, | ||
| "bgpTopology": { | ||
| "description": "bgpTopology defines the BGP topology to be used. Allowed values are \"FullMesh\". When set to \"FullMesh\", every node deploys a BGP router, forming a BGP full mesh. This field is required when BGPManagedConfig is specified.", | ||
| "type": "string" | ||
| } | ||
| } | ||
| }, | ||
| "com.github.openshift.api.operator.v1.BootImageSkewEnforcementConfig": { | ||
| "description": "BootImageSkewEnforcementConfig is used to configure how boot image version skew is enforced on the cluster.", | ||
| "type": "object", | ||
|
|
@@ -33326,6 +33345,24 @@ | |
| } | ||
| } | ||
| }, | ||
| "com.github.openshift.api.operator.v1.NoOverlayOptions": { | ||
| "description": "NoOverlayOptions contains configuration options for networks operating in no-overlay mode.", | ||
| "type": "object", | ||
| "required": [ | ||
| "outboundSNAT", | ||
| "routing" | ||
| ], | ||
| "properties": { | ||
| "outboundSNAT": { | ||
| "description": "outboundSNAT defines the SNAT behavior for outbound traffic from pods. Allowed values are \"Enabled\" and \"Disabled\". When set to \"Enabled\", SNAT is performed on outbound traffic from pods. When set to \"Disabled\", SNAT is not performed and pod IPs are preserved in outbound traffic. This field is required when the network operates in no-overlay mode. This field can be set to any value at installation time and can be changed afterwards.", | ||
| "type": "string" | ||
| }, | ||
| "routing": { | ||
| "description": "routing specifies whether the pod network routing is managed by OVN-Kubernetes or users. Allowed values are \"Managed\" and \"Unmanaged\". When set to \"Managed\", OVN-Kubernetes manages the pod network routing configuration through BGP. When set to \"Unmanaged\", users are responsible for configuring the pod network routing. This field is required when the network operates in no-overlay mode. This field is immutable once set.", | ||
| "type": "string" | ||
| } | ||
|
Comment on lines
+33360
to
+33363
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Add enum constraint for routing. The description specifies allowed values "Managed" and "Unmanaged", but the schema lacks an Note: The immutability constraint mentioned in the description must be enforced by controller validation logic, as OpenAPI schemas cannot express immutability. 🛡️ Proposed fix to add enum constraint "routing": {
"description": "routing specifies whether the pod network routing is managed by OVN-Kubernetes or users. Allowed values are \"Managed\" and \"Unmanaged\". When set to \"Managed\", OVN-Kubernetes manages the pod network routing configuration through BGP. When set to \"Unmanaged\", users are responsible for configuring the pod network routing. This field is required when the network operates in no-overlay mode. This field is immutable once set.",
- "type": "string"
+ "type": "string",
+ "enum": ["Managed", "Unmanaged"]
}🤖 Prompt for AI Agents |
||
| } | ||
| }, | ||
| "com.github.openshift.api.operator.v1.NodeDisruptionPolicyClusterStatus": { | ||
| "description": "NodeDisruptionPolicyClusterStatus is the type for the status object, rendered by the controller as a merge of cluster defaults and user provided policies", | ||
| "type": "object", | ||
|
|
@@ -33842,6 +33879,20 @@ | |
| "description": "ovnKubernetesConfig contains the configuration parameters for networks using the ovn-kubernetes network project", | ||
| "type": "object", | ||
| "properties": { | ||
| "bgpManagedConfig": { | ||
| "description": "bgpManagedConfig configures the BGP properties for networks (default network or CUDNs) in no-overlay mode that specify routing=\"Managed\" in their NoOverlayOptions. It is required when DefaultNetworkNoOverlayOptions.Routing is set to \"Managed\". When omitted, this means the user does not configure BGP for managed routing. This field can be set at installation time or on day 2, and can be modified at any time.", | ||
| "default": {}, | ||
| "$ref": "#/definitions/com.github.openshift.api.operator.v1.BGPManagedConfig" | ||
| }, | ||
| "defaultNetworkNoOverlayOptions": { | ||
| "description": "defaultNetworkNoOverlayOptions contains configuration for no-overlay mode for the default network. It is required when DefaultNetworkTransport is \"NoOverlay\". When omitted, this means the user does not configure no-overlay mode options.", | ||
| "default": {}, | ||
| "$ref": "#/definitions/com.github.openshift.api.operator.v1.NoOverlayOptions" | ||
| }, | ||
ricky-rav marked this conversation as resolved.
Show resolved
Hide resolved
|
||
| "defaultNetworkTransport": { | ||
| "description": "defaultNetworkTransport describes the transport protocol for east-west traffic for the default network. Allowed values are \"NoOverlay\" and \"Geneve\". When set to \"NoOverlay\", the default network operates in no-overlay mode. When set to \"Geneve\", the default network uses Geneve overlay. When omitted, this means the user has no opinion and the platform chooses a reasonable default which is subject to change over time. The current default is \"Geneve\". This field can only be set at installation time and cannot be changed afterwards.", | ||
| "type": "string" | ||
| }, | ||
| "egressIPConfig": { | ||
| "description": "egressIPConfig holds the configuration for EgressIP options.", | ||
| "default": {}, | ||
|
|
||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Add enum constraint for bgpTopology.
The description specifies that
bgpTopologyonly allows "FullMesh", but the schema lacks anenumconstraint. This allows invalid values to pass OpenAPI validation.🛡️ Proposed fix to add enum constraint
"bgpTopology": { "description": "bgpTopology defines the BGP topology to be used. Allowed values are \"FullMesh\". When set to \"FullMesh\", every node deploys a BGP router, forming a BGP full mesh. This field is required when BGPManagedConfig is specified.", - "type": "string" + "type": "string", + "enum": ["FullMesh"] }📝 Committable suggestion
🤖 Prompt for AI Agents