Skip to content
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

Initial CCM migration implementation for OpenStack #1468

Merged
merged 2 commits into from
Aug 26, 2021

Conversation

xmudrii
Copy link
Member

@xmudrii xmudrii commented Aug 25, 2021

What this PR does / why we need it:

This is the very first step of the CCM/CSI migration implementation. The purpose of this PR is to get some idea of how the migration implementation will be shaped. Note that the implementation might get changed until the migration is not fully implemented.

There are currently the following limitations:

  • Only the CCM migration is supported. CSI migration will be done in a follow-up PR
  • Only OpenStack is supported. Other cloud providers will follow up in KubeOne 1.4+
  • This is only partial migration (to be explained later). Completing migration will be implemented in a follow-up PR along with CSI migration

The migration is triggered by the following command:

kubeone migrate to-ccm-csi -m kubeone.yaml -t .

Note: The command is currently hidden and should not be used until the migration is not fully implemented.

The migration works in the following way:

  • Run a bunch of checks to make sure it makes sense to migrate
    • For example, we ensure that the cluster is not already running external CCM, that .cloudProvider.external is enabled, that the cloud provider is supported
  • Regenerate the configuration files, including the kubeadm config files
  • Force upgrade the control plane nodes
    • This is done to apply the required flags for API server and controller-manager
    • Alternative approach would be to manually edit static pod manifests. However, the current (upgrade) approach seems easier and I don't see any benefits to manually editing manifests
    • As mentioned at the beginning, at this point we're doing partial migration, which means:
      • --cloud-provider and --cloud-config flags are kept until the CSI migration is not complete
      • CCM-related controllers are disabled in kube-controller-manager
  • Ensure resources
    • We'll deploy external CCM and CSI at this step
    • machine-controller-webhook is configured with -node-external-cloud-provider flag

After the initial migration is done, users are expected to:

  • Rotate all their machine-controller-managed worker nodes
  • Complete migration by running:
    kubeone migrate to-ccm-csi --complete -m kubeone.yaml -t .
    

Which issue(s) this PR fixes (optional, in fixes #<issue number>(, fixes #<issue_number>, ...) format, will close the issue(s) when PR gets merged):
xref #1451 #1452

Does this PR introduce a user-facing change?:

NONE

/assign @kron4eg

@xmudrii xmudrii requested a review from kron4eg August 25, 2021 19:31
@kubermatic-bot kubermatic-bot added release-note-none Denotes a PR that doesn't merit a release note. dco-signoff: yes Denotes that all commits in the pull request have the valid DCO signoff message. labels Aug 25, 2021
@kubermatic-bot
Copy link
Contributor

[APPROVALNOTIFIER] This PR is APPROVED

This pull-request has been approved by: xmudrii

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 /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@kubermatic-bot kubermatic-bot added approved Indicates a PR has been approved by an approver from all required OWNERS files. size/L Denotes a PR that changes 100-499 lines, ignoring generated files. labels Aug 25, 2021
Signed-off-by: Marko Mudrinić <mudrinic.mare@gmail.com>
@xmudrii xmudrii changed the title Initial CCM migration for OpenStack implementation Initial CCM migration implementation for OpenStack Aug 25, 2021
Signed-off-by: Marko Mudrinić <mudrinic.mare@gmail.com>
@kubermatic-bot kubermatic-bot added the lgtm Indicates that a PR is ready to be merged. label Aug 26, 2021
@kubermatic-bot
Copy link
Contributor

LGTM label has been added.

Git tree hash: 29bcd84e5be0f6668eef0742dc8e18fb338f7149

@kubermatic-bot kubermatic-bot merged commit 084da5d into master Aug 26, 2021
@kubermatic-bot kubermatic-bot added this to the KubeOne 1.3 milestone Aug 26, 2021
@kubermatic-bot kubermatic-bot deleted the migrate-ccm-csi branch August 26, 2021 14:20
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
approved Indicates a PR has been approved by an approver from all required OWNERS files. dco-signoff: yes Denotes that all commits in the pull request have the valid DCO signoff message. lgtm Indicates that a PR is ready to be merged. release-note-none Denotes a PR that doesn't merit a release note. size/L Denotes a PR that changes 100-499 lines, ignoring generated files.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants