-
Notifications
You must be signed in to change notification settings - Fork 2.8k
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
operator: Add LB-IPAM #21764
operator: Add LB-IPAM #21764
Conversation
35c4cac
to
faf92a5
Compare
faf92a5
to
88657a4
Compare
Hello, |
88657a4
to
7a32de4
Compare
That is the eventual intent combined with some other work that is still in progress.
The LB-IPAM version in this PR doesn't support that feature. I am not going for full feature parity with MetalLB, at least not in the initial release. The feature seems quite involved, not easily added to the PR as it stands, though I am open to adding it in a future iteration. I have created issue #21776 to track it. |
31d6552
to
5b92978
Compare
3103b60
to
8973c8f
Compare
8973c8f
to
856454c
Compare
@ldelossa I have now refactored and processed feedback, replaced the cell-wide context+cancel+done channel with a workerpool as discussed offline and plumbed the context via params so there is no longer a ctx field in the cell. |
thanks @dylandreimerink - LGTM. |
856454c
to
34f1dbe
Compare
This adds: - metav1.Condition, metav1.ConditionStatus - metav1.ObjectMeta.Generation - corev1.IPFamilyPolicy - corev1.IPFamilyPolicyType - corev1.LoadBalancerClass - corev1.Service.{IPFamilyPolicy, LoadBalancerClass} - corev1.ServiceStatus.Condition Signed-off-by: Jussi Maki <jussi@isovalent.com>
To make it easier to partially transition to using Resource[T], expose the underlying cache.Store. Hopefully temporary :fingerscrossed:. Signed-off-by: Jussi Maki <jussi@isovalent.com>
This commit renames the CiliumBGPLoadBalancerIPPool CRD to the CiliumLoadBalancerIPPool so it may be used for load balancers other than those who use BGP. The IP Pool will be used by the operators LB IPAM component, and the contents of the CRD have been updated to match the new requirements. Signed-off-by: Dylan Reimerink <dylan.reimerink@isovalent.com>
34f1dbe
to
31d869c
Compare
/test |
This commit adds the LB-IPAM feature. LB-IPAM allows users to specify a set of pools containing one or more CIDRs. Services of type LoadBalancer will receive Ingress IPs from these pools. LB-IPAM is part of the ongoing work to add service announcements to the BGP Control Plane. However, the component is designed to be generic so it can be used by other features as well. Co-authored-by: Jussi Maki <jussi@isovalent.com> Signed-off-by: Dylan Reimerink <dylan.reimerink@isovalent.com>
This commit adds documentation for the LB-IPAM feature. Signed-off-by: Dylan Reimerink <dylan.reimerink@isovalent.com>
31d869c
to
c4abeed
Compare
/test |
Alright got 5 approvals covering all requested teams. All feedback is addresses. All tests are green except for: ConformaceAKS: fails with ConformanceGKE: fails at install time with "Unable to install Cilium: timeout while waiting for status to become successful: context deadline exceeded". However, by the time we collect the sysdump all agents are up and ConformanceKind1.19 / installation-and-connectivity: Fails due to a curl timeout in the Travis CI hits #21730. None of these failures seem to be caused by changed made in this PR since they are known flakes. So I will add the ready-to-merge label. |
This PR introduces a new feature called LoadBalancer IP Address Management, LB-IPAM for short. The goal of LB-IPAM is to provide a mechanism to allocate and assign IP addresses to services of type
LoadBalancer
, to be used when no external IPAM is available. The primary use-case we are targeting is a private cloud/bare metal deployment where one or more CIDRs are assigned to the cluster to be used. Additional Cilium features should be utilized to direct traffic for the assigned IPs to the cluster and the correct nodes(for now just BGP, but not exclusively).LB-IPAM has the concept of an IP Pool which is a list of CIDRs and an optional service label selector. Users can add, modify or remove these at will via the
CiliumLoadBalancerIPPool
custom resource (formally theCiliumBGPLoadBalancerIPPool
, which was renamed to make it more generic). The service label selector can be used to limit which services can get IPs from the given pool.LB-IPAM can allocate and assign both IPv4 and IPv6 addresses in SingleStack and DualStack operation. LB-IPAM can be deployed in a cluster with multiple load balancers since it respects the loadBalancerClass values of services. Lastly LB-IPAM allows services to request one or more specific IPs.