-
Notifications
You must be signed in to change notification settings - Fork 475
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
Cloud API component for egress IP #571
Cloud API component for egress IP #571
Conversation
89d553b
to
02f6007
Compare
[APPROVALNOTIFIER] This PR is NOT APPROVED This pull-request has been approved by: 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 |
One thought: right now, (at least with ovn-k), assigning an egress IP to a node can't fail. That is no longer the case, so we'll have to think about how to handle that. Because the possibility of cascading failures is higher here, I'm leaning towards a separate CR for ip assignment request, rather than an annotation. That way, ovn-k could easily distill status and indicate to the end-user where to get more debugging information. Additionally, we could set up a proper OwnerReference, making deletion more automatic. |
/assign @vpickard |
02f6007
to
e01831b
Compare
But this is outside the network plugin's responsibility, right? So this is effectively not its failure, it would be this cloud components failure.
Are we fine with introducing the possible dependencies mentioned in this doc though, given the selection of such a design?
Again, I don't think it's up to OVN-Kubernetes or openshift-sdn to indicate anything to the end-user except what falls under its responsibility. This cloud assignment would be the responsibility of this component. |
Rotten issues close after 30d of inactivity. Reopen the issue by commenting /close |
@openshift-bot: Closed this PR. In response to this:
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/test-infra repository. |
/reopen |
@alexanderConstantinescu: Reopened this PR. In response to this:
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/test-infra repository. |
Rotten issues close after 30d of inactivity. Reopen the issue by commenting /close |
@openshift-bot: Closed this PR. In response to this:
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/test-infra repository. |
/reopen |
@alexanderConstantinescu: Reopened this PR. In response to this:
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/test-infra repository. |
some considerations from my experience developing the egressip-ipam-operator[1]. There seems to be three macro functionalities w.r.t to egressip:
I think as of today in OCP we expect #1 to be manual or automated externally. I'd like to point out that #2 and #3 cannot be thought of disjointed functionality when running in the cloud because each cloud provider sets limits to the number of secondary IPs that can be carried by a NIC. The rules change by cloud provider, but essentially each node has a secondary ip capacity. That should be taken into account in #2 when assigning an IP to a node. Other, possibly minor, considerations are that the Infrastructure object does not always provide all the information needed to call the underlying cloud api, sometime the information can be derived from the machine object. But care must be taken in this space if the intention is to support UBI deployments or IPI deployments to pre-existing networks. Also for Azure with internal facing load balancers there were some issues that we never fully understood, so that use case should be probably tested. |
Thank you for your comment @raffaelespazzoli !
I was not aware of that! This will need change the model presented in this enhancement proposal a bit. I just saw that on GCP that the alias IP limit is set to 10 per NIC, see: https://cloud.google.com/vpc/docs/quota#per_instance this means that this controller will need to convey the maximum amount to the network plugins, so that they are aware of the limits per node when performing the assignment. I will update the enhancement proposal with a solution for this.
Yes, this controller will probably expose some high level metrics. Given what you are describing I assume a "count of IPs per node" is a good start.
OK, I will have a look at that during the testing phase. I will make sure to note it in this proposal. |
2c1ca70
to
3213da4
Compare
Yes. People occasionally ask for it to be fully automated within OCP but I don't think that really makes sense. The possibilities here seem to be: 1a. ("manual") When the admin wants to assign an egress IP to a namespace, they choose an egress IP themselves, tell OCP, and update their firewall (or whatever other external system it is that cares about the egress IPs). 1c really feels just as "manual" as 1a, you're just moving the manual steps around. And there's no way we could provide a generic version of 1b, so...
openshift-sdn has two modes; the older mode where the admin assigns IPs to nodes manually, and the newer mode where they get assigned automatically. ovn-kubernetes only supports the latter. |
@danwinship in the egressip-ipam-operator we automated the assignment of egress IPs to namespaces. This works fine as long as you don't care what IP is assigned to a namespace. In fact, the thing that really matters to enterprises is that once an IP is assigned to a namespace it does never change, so that a network admin (or another operator) can configure the firewall. |
/remove-lifecycle rotten |
Signed-off-by: Alexander Constantinescu <aconstan@redhat.com>
3213da4
to
3231f11
Compare
/lgtm |
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.
/approve
[APPROVALNOTIFIER] This PR is APPROVED This pull-request has been approved by: knobunc The full list of commands accepted by this bot can be found here. The pull request process is described here
Needs approval from an approver in each of these files:
Approvers can indicate their approval by writing |
This enhancement proposal discusses and presents the problem of supporting OpenShift egress IP on conventional clouds, such as: GCP, AWS, Azure. It presents the problem that exists today and the different models possible for solving it. It leaves and presents a lot of open-ended questions, for which it hopes to get a discussion going during the review of this proposal and ultimately a clearer path and joint decision. It thus encourages anyone familiar with Kubernetes / OpenShift networking to join in the discussion.
/assign @danwinship @tssurya @squeed @abhat @trozet