Skip to content
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

SDN-5297: DownStream Merge Sync from 4.18 [10-31-2024] #2335

Closed
wants to merge 220 commits into from

Conversation

jluhrsen
Copy link
Contributor

This is based off of the currently unmerged [release-4.17] SDN-4919,OCPBUGS-39200: 4.18 merge - 5th Sept PR

arghosh93 and others added 30 commits August 9, 2024 17:21
This is to change POD and join subnet used with couple of net-attach-def
in unit tests to satisfy newly introduced subnet overlap check with
ClusterNetwork, ServiceNetwork, join switch and masquerade CIDR.

Signed-off-by: Arnab Ghosh <[email protected]>
UDN API referance generated using the following command:
  crd-ref-docs --source-path ./go-controller/pkg/crd/userdefinednetwork --config=crd-docs-config.yaml --renderer=markdown --output-path=./docs/api-reference/userdefinednetwork-api-spec.md

Signed-off-by: Or Mergi <[email protected]>
The new OVS version is used by the OVN observability.

Signed-off-by: Nadia Pinaeva <[email protected]>
In our e2e tests, a strange behaviour for ipv6 was seen:
newly created pod can't reach ipv6 destination.
But if the same pod is re-created, everything works.
We don't know what causes that behaviour, so given function is a
workaround for this issue.
It also only historically fails for the first ef test
"Should validate the egress firewall policy functionality for allowed
IP", so only used there for now.

Signed-off-by: Nadia Pinaeva <[email protected]>
Signed-off-by: Surya Seetharaman <[email protected]>
UDN: Add `MASQUERADE` IPTable Rules
OCPBUGS-38270: Dockerfile: Bump OVS to 3.4.0-1
UDN: allow multiple conditions from different fieldManagers to co-exist in the status.
…nagement-port

UDN: Add RPFilter Loose Mode for management port
Everytime a UDN was created, we were adding the all remote nodes for
every network all over again, including the default network. This makes
the checks on the annotations network aware.

Signed-off-by: Tim Rozet <[email protected]>
Services controller:
- move it to base network controller
- start one services controller per primary network
- set up filter in the informer so that only endpointslices for the given network are considered
- pass switch and router names according to the network for a given node.

Move getActiveNetworkForNamespace to CommonNetworkControllerInfo, because the services controller only has access to CommonNetworkControllerInfo at initialization and needs to run getActiveNetworkForNamespace.

Make LBs and LB groups network scoped

Add network name & role to OVN external IDs. In a few places in the code we retrieve all logical switches, routers and load balancers to initialize the services controller or to delete stale entries. With one services controller per network, the OVN lookup must only return OVN elements in the network we're interested in. This is achieved by adding the network name and network role (default, primary, secondary) to the ExternalIDs field of logical switches, routers and load balancers.

Signed-off-by: Riccardo Ravaioli <[email protected]>
The existing unit tests for services in services_controller_test are now run for UDN as well.

At the same time, a cleanup of unit tests was needed, especially since there was a lot of repetition in the surrounding code, also with respect to global and test-specific variables between services_controller_test.go and lb_config_test.go

Finally, Test_ETPCluster_NodePort_Service_WithMultipleIPAddresses follows the exact same logic found in TestSyncServices, so let's move it there

Signed-off-by: Riccardo Ravaioli <[email protected]>
Allows the execution of the network segmentation tests that are in network_segmentation_*.go (e.g. services, endpoint slice mirrorring). For instance:

make control-plane WHAT="Network Segmentation: services"

Signed-off-by: Riccardo Ravaioli <[email protected]>
The test creates a client and nodeport service in a UDN backed by one pod and similarly
a nodeport service and a client in the default network.
We verify that:
- UDN client --> UDN service, with backend pod and client running on the same node, is possible through:
  + clusterIP
  + nodeIP:nodePort, where we only target the node where the client runs (*)

- UDN client --> UDN service, with backend pod and client running on different nodes, is possible through:
  + clusterIP
  + nodeIP:nodePort, where we only target the node where the client runs (*)

- default-network client --> UDN service is NOT possible through:
  + clusterIP
  + nodeIP:nodePort, where we only target the node where the client runs (*)

-  UDN service --> default-network client is NOT possible through:
  + clusterIP
  + nodeIP:nodePort, where we only target the node where the client runs (*)

(*) TODO connect to other nodes too once ovnkube-node fully supports UDN

TODO: use the same logic as in network_segmentation.go

Signed-off-by: Riccardo Ravaioli <[email protected]>
Signed-off-by: Jaime Caamaño Ruiz <[email protected]>
Use faked iptables in UDN gateway tests
Update Dockerfile.fedora to use pre-released 24.09 ovn rpm.
Fixes remote node checks to be network aware
Signed-off-by: Martin Kennelly <[email protected]>
UDN layer 3 networks also have a join switch and gateway router.

Signed-off-by: Dumitru Ceara <[email protected]>
In the "delete" case we don't need the cookie, move the code that builds
the cookie after the section that checks and takes care of deletes.

Signed-off-by: Dumitru Ceara <[email protected]>
jcaamano and others added 10 commits October 21, 2024 11:01
Signed-off-by: Jaime Caamaño Ruiz <[email protected]>
For go-controller:

go get k8s.io/[email protected]
go get k8s.io/[email protected]
go get k8s.io/[email protected]
go get k8s.io/[email protected]
go get k8s.io/[email protected]
go get k8s.io/[email protected]
go get k8s.io/[email protected]
go get sigs.k8s.io/[email protected]
go mod vendor && go mod tidy

Fixed API changes
Fixed linting
Updated codegen

For e2e tests:

go get k8s.io/[email protected]
go get k8s.io/[email protected]
go get k8s.io/[email protected]
go get k8s.io/[email protected]
go get k8s.io/[email protected]
go get k8s.io/[email protected]
go get k8s.io/[email protected]
go get k8s.io/[email protected]
go get k8s.io/[email protected]
go get k8s.io/[email protected]
go get k8s.io/[email protected]
go get k8s.io/[email protected]
go get k8s.io/[email protected]
go get k8s.io/[email protected]
go get github.com/ovn-org/ovn-kubernetes/go-controller
go mod edit -replace github.com/coreos/go-iptables=github.com/trozet/[email protected]
go mod tidy

(konnectivity-client is not at 0.31 yet)

Fixed API changes
Fixed skip for some upstream e2e tests that were added and we don't
support

Signed-off-by: Jaime Caamaño Ruiz <[email protected]>
It seems that v1.31.1 introduced a bug in kube manager's
service-lb-controller. Since we don't use a cloud provider, the
controller is not fully initialized and started. However, its handlers
are added to the informer and they do run. And when they do, it crashes
because it is not fully initialized.

Probably introduced through:
kubernetes/kubernetes@50c1243

Disable service-lb-controller since it is not used anyway.

bootstrap-signer-controller and token-cleaner-controller need to be
added since they are not default and would otherwise be added by kind
but not if we are overriding.

Signed-off-by: Jaime Caamaño Ruiz <[email protected]>
…arsing

node_annotations: Make GetNodeHostAddrs() return stable results.
SDN-4930,OCPBUGS-42616,SDN-5031,OCPBUGS-38753: [DownstreamMerge] 10-8-24
@openshift-ci openshift-ci bot requested review from abhat and tssurya October 31, 2024 21:06
Copy link
Contributor

openshift-ci bot commented Oct 31, 2024

[APPROVALNOTIFIER] This PR is NOT APPROVED

This pull-request has been approved by: jluhrsen
Once this PR has been reviewed and has the lgtm label, please assign abhat for approval. For more information see the Kubernetes Code Review Process.

The full list of commands accepted by this bot can be found here.

Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@jluhrsen
Copy link
Contributor Author

This is based off of the currently unmerged [release-4.17] SDN-4919,OCPBUGS-39200: 4.18 merge - 5th Sept PR

/hold

@openshift-ci openshift-ci bot added the do-not-merge/hold Indicates that a PR should not merge because someone has issued a /hold command. label Oct 31, 2024
@tssurya
Copy link
Contributor

tssurya commented Nov 1, 2024

/retitle SDN-5297: DownStream Merge Sync from 4.18 [10-31-2024]

@openshift-ci openshift-ci bot changed the title [release-4.17] 4.18 Sync 10-31-24 SDN-5297: DownStream Merge Sync from 4.18 [10-31-2024] Nov 1, 2024
@openshift-ci-robot openshift-ci-robot added the jira/valid-reference Indicates that this PR references a valid Jira ticket of any type. label Nov 1, 2024
@openshift-ci-robot
Copy link
Contributor

openshift-ci-robot commented Nov 1, 2024

@jluhrsen: This pull request references SDN-5297 which is a valid jira issue.

Warning: The referenced jira issue has an invalid target version for the target branch this PR targets: expected the epic to target either version "4.17." or "openshift-4.17.", but it targets "openshift-4.18" instead.

In response to this:

This is based off of the currently unmerged [release-4.17] SDN-4919,OCPBUGS-39200: 4.18 merge - 5th Sept PR

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the openshift-eng/jira-lifecycle-plugin repository.

@jluhrsen
Copy link
Contributor Author

jluhrsen commented Nov 5, 2024

/retest

@jluhrsen
Copy link
Contributor Author

jluhrsen commented Nov 6, 2024

/test images

Copy link
Contributor

openshift-ci bot commented Nov 6, 2024

@jluhrsen: The following tests failed, say /retest to rerun all failed tests or /retest-required to rerun all mandatory failed tests:

Test name Commit Details Required Rerun command
ci/prow/e2e-aws-ovn-upgrade ef89a31 link true /test e2e-aws-ovn-upgrade
ci/prow/e2e-metal-ipi-ovn-ipv6-techpreview ef89a31 link false /test e2e-metal-ipi-ovn-ipv6-techpreview
ci/prow/e2e-aws-ovn-hypershift-conformance-techpreview ef89a31 link false /test e2e-aws-ovn-hypershift-conformance-techpreview
ci/prow/4.17-upgrade-from-stable-4.16-e2e-aws-ovn-upgrade ef89a31 link true /test 4.17-upgrade-from-stable-4.16-e2e-aws-ovn-upgrade
ci/prow/e2e-aws-ovn-serial ef89a31 link true /test e2e-aws-ovn-serial
ci/prow/e2e-aws-ovn-local-to-shared-gateway-mode-migration ef89a31 link true /test e2e-aws-ovn-local-to-shared-gateway-mode-migration
ci/prow/e2e-aws-ovn-kubevirt ef89a31 link false /test e2e-aws-ovn-kubevirt
ci/prow/e2e-metal-ipi-ovn-dualstack-local-gateway ef89a31 link false /test e2e-metal-ipi-ovn-dualstack-local-gateway
ci/prow/e2e-azure-ovn-techpreview ef89a31 link false /test e2e-azure-ovn-techpreview
ci/prow/e2e-metal-ipi-ovn-dualstack-techpreview ef89a31 link false /test e2e-metal-ipi-ovn-dualstack-techpreview
ci/prow/4.17-upgrade-from-stable-4.16-local-gateway-e2e-aws-ovn-upgrade ef89a31 link true /test 4.17-upgrade-from-stable-4.16-local-gateway-e2e-aws-ovn-upgrade
ci/prow/e2e-vsphere-ovn-techpreview ef89a31 link false /test e2e-vsphere-ovn-techpreview
ci/prow/e2e-metal-ipi-ovn-ipv6 ef89a31 link true /test e2e-metal-ipi-ovn-ipv6
ci/prow/e2e-aws-ovn-windows ef89a31 link true /test e2e-aws-ovn-windows
ci/prow/4.17-upgrade-from-stable-4.16-local-gateway-images ef89a31 link true /test 4.17-upgrade-from-stable-4.16-local-gateway-images
ci/prow/security ef89a31 link false /test security
ci/prow/e2e-metal-ipi-ovn-dualstack ef89a31 link true /test e2e-metal-ipi-ovn-dualstack
ci/prow/e2e-gcp-ovn ef89a31 link true /test e2e-gcp-ovn
ci/prow/e2e-aws-ovn-shared-to-local-gateway-mode-migration ef89a31 link true /test e2e-aws-ovn-shared-to-local-gateway-mode-migration
ci/prow/e2e-aws-ovn-techpreview ef89a31 link false /test e2e-aws-ovn-techpreview
ci/prow/e2e-aws-ovn-local-gateway ef89a31 link true /test e2e-aws-ovn-local-gateway
ci/prow/e2e-openstack-ovn ef89a31 link false /test e2e-openstack-ovn
ci/prow/e2e-gcp-ovn-techpreview ef89a31 link true /test e2e-gcp-ovn-techpreview
ci/prow/e2e-aws-ovn-upgrade-local-gateway ef89a31 link true /test e2e-aws-ovn-upgrade-local-gateway
ci/prow/e2e-ovn-hybrid-step-registry ef89a31 link false /test e2e-ovn-hybrid-step-registry
ci/prow/e2e-aws-ovn ef89a31 link true /test e2e-aws-ovn
ci/prow/e2e-azure-ovn ef89a31 link false /test e2e-azure-ovn
ci/prow/e2e-metal-ipi-ovn-techpreview ef89a31 link false /test e2e-metal-ipi-ovn-techpreview
ci/prow/e2e-vsphere-ovn ef89a31 link false /test e2e-vsphere-ovn
ci/prow/e2e-azure-ovn-upgrade ef89a31 link true /test e2e-azure-ovn-upgrade
ci/prow/openshift-e2e-gcp-ovn-techpreview-upgrade ef89a31 link false /test openshift-e2e-gcp-ovn-techpreview-upgrade
ci/prow/4.17-upgrade-from-stable-4.16-e2e-gcp-ovn-rt-upgrade ef89a31 link true /test 4.17-upgrade-from-stable-4.16-e2e-gcp-ovn-rt-upgrade
ci/prow/4.17-upgrade-from-stable-4.16-images ef89a31 link true /test 4.17-upgrade-from-stable-4.16-images
ci/prow/e2e-aws-ovn-hypershift ef89a31 link true /test e2e-aws-ovn-hypershift
ci/prow/images ef89a31 link true /test images

Full PR test history. Your PR dashboard.

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository. I understand the commands that are listed here.

@jluhrsen
Copy link
Contributor Author

/test e2e-metal-ipi-ovn-ipv6-techpreview
/test e2e-aws-ovn-hypershift-conformance-techpreview
/test e2e-azure-ovn-techpreview
/test e2e-metal-ipi-ovn-dualstack-techpreview
/test e2e-vsphere-ovn-techpreview
/test e2e-aws-ovn-techpreview
/test e2e-gcp-ovn-techpreview
/test e2e-metal-ipi-ovn-techpreview
/test openshift-e2e-gcp-ovn-techpreview-upgrade

@openshift-merge-robot openshift-merge-robot added the needs-rebase Indicates a PR cannot be merged because it has merge conflicts with HEAD. label Nov 12, 2024
@openshift-merge-robot
Copy link
Contributor

PR needs rebase.

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository.

@jluhrsen
Copy link
Contributor Author

closing in favor of #2349

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
do-not-merge/hold Indicates that a PR should not merge because someone has issued a /hold command. jira/valid-reference Indicates that this PR references a valid Jira ticket of any type. needs-rebase Indicates a PR cannot be merged because it has merge conflicts with HEAD.
Projects
None yet
Development

Successfully merging this pull request may close these issues.