-
Notifications
You must be signed in to change notification settings - Fork 6.5k
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
External OpenStack Cloud Controller Manager implementation #5491
External OpenStack Cloud Controller Manager implementation #5491
Conversation
...s/cloud_controller/openstack/templates/external-openstack-cloud-controller-manager-ds.yml.j2
Outdated
Show resolved
Hide resolved
@alijahnas can you rebase this one as well, to get CI tests to pass? |
c73764d
to
8777ed6
Compare
@holmsten Rebase done. Thanks 👍 |
According to the first step in https://github.com/kubernetes/cloud-provider-openstack/blob/master/docs/using-controller-manager-with-kubeadm.md#steps it's necessary to mount the |
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.
I've been working on something similar this week so I thought I'd review your PR! Thanks a bunch for working on this.
roles/kubernetes-apps/cloud_controller/openstack/defaults/main.yml
Outdated
Show resolved
Hide resolved
...s/cloud_controller/openstack/templates/external-openstack-cloud-controller-manager-ds.yml.j2
Outdated
Show resolved
Hide resolved
...troller/openstack/templates/external-openstack-cloud-controller-manager-role-bindings.yml.j2
Outdated
Show resolved
Hide resolved
@alijahnas I tested the latest update of this PR and it works perfectly for my setup! Amazing work. Could you also check out my PR for a couple of minor Cinder fixes? #5561 |
Thanks for testing! Sure I will check your PR 👍 |
How does an upgrade from the internal controller to the external one work? Is this supported in existing clusters? |
Reading through https://github.com/kubernetes/cloud-provider-openstack/blob/master/docs/migrate-to-ccm-with-csimigration.md it should be fine to switch from the in-tree CCM to the external CCM if you weren't using any of the Cinder functionality. However, switching from in-tree Cinder to the external CSI plugin will be more problematic and requires migration. The thing is that the CCM and CSI plugins are now decoupled, which makes it hard to guess what kind of migration the user wants to do on their cluster. For example, how should the migration look if a user has the in-tree CCM enabled and only wants to deploy the external CCM but keep the volume functionality of the in-tree CCM? It's hard to cover all use cases so maybe we should decide which migration paths to support in kubespray, if any. |
I tried to ask in the provider-openstack slack but didn't get a proper reply. I can't find any migration paths besides the ones for the CSI driver. I am not sure if the loadbalancers created by the internal CCM are managed by the external CCM if they run side by side for the transition. |
@holmsten What do you suggest we do about migration? It think it would be nice to get this merged regardless. |
I think this could be a nice start for transitioning to the external cloud providers. |
This looks good and since the PR doesn't remove support for the in-tree provider I completely agrees that it would be great to have this PR merged and available in the next release |
/lgtm |
/assign @woopstar |
Great to see! Thank you @alijahnas ! /approve |
[APPROVALNOTIFIER] This PR is APPROVED This pull-request has been approved by: alijahnas, Miouge1 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 |
…s-sigs#5491) * External OpenStack Cloud Controller Manager implementation * Adding controller image tag * Minor fixes * Restructuring the external cloud controller to work with KubeADM
What type of PR is this?
/kind feature
What this PR does / why we need it:
This PR is the implementation of the external OpenStack Cloud Controller Manager.
As the in-tree k8s cloud controllers are deprecated, the external cloud controllers should now be used. This cloud controller allows to use Octavia as a backend for service load balancing.
Special notes for your reviewer:
In order to keep both working in a first phase, I added new OpenStack conf variables which are the same as the old ones but prefixed with
external_
Does this PR introduce a user-facing change?:
Users should use the new external OpenStack cloud controller rather than the old in-tree one.