-
Notifications
You must be signed in to change notification settings - Fork 41
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
✨ Add Equinix Metal Load Balancer support #740
✨ Add Equinix Metal Load Balancer support #740
Conversation
0519aff
to
9d9de3c
Compare
- Add internal package for interacting with Equinix Metal Load Balancer API - packetcluster_controller creates load balancer and listener port and stores their ids in packetCluster annotations. - packetmachine_controller creates an origin pool and origin port for each machine and stores their IDs in the packetMachine annotations. - CPEMLBConfig and EMLBID added to the packet cloud client package to be able to provide a config for the CPEM loadBalancer setting in the emlb templates. - Memory request for the Cluster API Provider Packet controller increased to 300Mi to avoid OOMing while debugging. - EMLB added as a valid VIPManager enum type. Signed-off-by: Chris Privitere <[email protected]>
Signed-off-by: Chris Privitere <[email protected]>
Signed-off-by: Chris Privitere <[email protected]>
Signed-off-by: Chris Privitere <[email protected]>
4ee51b4
to
3e53a22
Compare
Signed-off-by: Chris Privitere <[email protected]>
Signed-off-by: Chris Privitere <[email protected]>
Signed-off-by: Chris Privitere <[email protected]>
Signed-off-by: Chris Privitere <[email protected]>
Signed-off-by: Chris Privitere <[email protected]>
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.
🚢
If CAPP is creating LBaaS instances (rather than just accessing them by a referenced/existing ID), then it is important for CAPP to cleanup after itself. Deletion of controller-created resources is a common problem with multiple solutions. I've seen this implemented as labels, annotations, and spec. persistentVolumeReclaimPolicy and deletionPolicy come to mind. The E2E tests should include a test that creates an LBaaS managed VIP for the control-plane. Upon deleting that cluster, a test should ensure that the loadbalancer was actually deleted. A near term approach may be to include LBaaS cleanup to the existing post-test sweeper/cleanup code. If we have existing warning text about indirect CAPP's cluster deletion, we may need to add to that warning that LBaaS instances may also be orphaned. https://docs.crossplane.io/latest/software/uninstall/ as an example. |
Signed-off-by: Chris Privitere <[email protected]>
Signed-off-by: Chris Privitere <[email protected]>
Signed-off-by: Chris Privitere <[email protected]>
Signed-off-by: Chris Privitere <[email protected]>
Signed-off-by: Chris Privitere <[email protected]>
…ency Signed-off-by: Chris Privitere <[email protected]>
Signed-off-by: Chris Privitere <[email protected]>
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: cprivitere, ctreatma, displague 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 PR lacks any documentation on the new capabilities (ignoring the -emlb.yaml example). |
/lgtm |
What this PR does / why we need it:
This PR adds support to CAPP to create Equinix Metal Load Balancers and configure the cluster to use them for its API Server. It does not configure service load balancing and users are encouraged to configure CPEM in their clusters to enable that particular feature.
Fixes: #693
Current Status:
Edit: Splitting this into multiple PRs. Please see #693 for the full checklist of what must be done.
How to Run
You can use the
cluster-template-emlb.yaml
template file to deploy a cluster with EMLB. When we do a new release, you can just use --flavor emlb to get that template. For now, it'll be more like:clusterctl generate cluster quickstart --from go/src/sigs.k8s.io/cluster-api-provider-packet/templates/cluster-template-emlb.yaml > quickstart.yaml