-
Notifications
You must be signed in to change notification settings - Fork 68
✨ Control Plane Upgrades #290
✨ Control Plane Upgrades #290
Conversation
Skipping CI for Draft Pull Request. |
The PR is currently a draft and waits for further integration tests for the new feature |
I am trying to understand this feature. In the original design, we intend to make clusterversionName field immutable in VC CRD. Are you targeting a user case where user changes the clusterversionName? or you want to handle cases where the clusterversion CR itself is updated and you want to populate the change to all the running VCs? |
The second. I want (as a cluster operator) to release new minor versions of clusterversion by adding/updating apiserver flags, updating minor versions of apiserver or controller-manager or manipulate the service params according to the normal process of software upgrades or sudden security patches. So, in this feature we trying to implement a way to populate the current clusterVersion (CR) state to virtual clusters that use that version and agreed to be upgraded (by setting a label). In foreseeable future it is intended to be used for minor upgrades only, keeping different clusterVersion CRs for different major k8s versions. Just now, it is already useful to change log verbosity or enable/disable some authorisation params, which anyway "are managed from outside" |
Thanks. Just FYI, we are trying to resolve the problems you mentioned using CAPN. We didn't handle vc update in the native provisioner because it was designed for PoC purpose, and we don't recommend using it in production. We want to make it simple. As you may see, the etcd Pod does not even use a persistent storage there. I am glad you are looking into the update problem, but I would suggest enhancing CPAN provider. |
@Fei-Guo Per our chats in Slack, this is more of stop-gap while we haven't been able to move over to CAPN, I think it's worthwhile in the interim to still move this forward since it doesn't hurt anything necessarily. We've been able to overcome a lot of those challenges by maintaining our own custom ClusterVersions with persistence for example and we're trying to keep etcd upgrades out of the scope for the vc-manager. Do you still object to this development? |
Thanks for the clarification. I have no problem with enhancing the clusterversion based vc lifecycle management, but I hope the feature scope should be very clear. As we discussed offline, we may name the feature more specifically, something like "ClusterVersionPartialUpdate" or a better name. |
d59d742
to
947c6b3
Compare
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.
This is looking really good, a couple comments with the main theme being remove the etcd upgrades. Thanks!
virtualcluster/pkg/controller/controllers/virtualcluster_controller.go
Outdated
Show resolved
Hide resolved
virtualcluster/pkg/controller/controllers/provisioner/provisioner_native.go
Outdated
Show resolved
Hide resolved
virtualcluster/pkg/controller/controllers/provisioner/provisioner_native.go
Outdated
Show resolved
Hide resolved
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.
/lgtm
/approve
Amazing work! 🎉
[APPROVALNOTIFIER] This PR is APPROVED This pull-request has been approved by: christopherhein, m-messiah 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 |
/lgtm |
Also, please add a document to describe the workflow in tutorial. Based on my understanding, the workflow of triggering update is
|
What this PR does / why we need it:
The PR adds the featureGate
ClusterVersionPartialUpgrade
to allow native provide to reconcile currently running virtual clusters to re-apply clusterversion specs to control plane.Changes to the default behaviour or code
The PR introduces changes to the current native provisioner (Aliyun just returns
not implemented
for the feature):### Features of the featureGate