KubeOne(1)

πŸ“¦ version 1.12.3, in arch rolling

πŸ’… kubeone-migrate-to-ccm-csi β€” KubeOne(1) ✨

okay so bestie, we're looking at the KubeOne(1) manual and honestly? this one's a glow-up arc for your cluster. sit down, grab a lil drink, let's get into it πŸ“


🌸 NAME 🌸

kubeone-migrate-to-ccm-csi β€” moves your live cluster off the in-tree cloud provider and onto the external cloud-controller-manager (CCM) plus the CSI plugin. like, a whole living-cluster transplant, no cap πŸ’€


πŸ¦‹ SYNOPSIS πŸ¦‹

kubeone migrate to-ccm-csi [flags]

✨ DESCRIPTION ✨

so the in-tree cloud provider is getting deprecated (http://kep.k8s.io/2395), which is giving "we're so over you" energy, and this command is literally the designated exit strategy. it helps you migrate existing clusters from the in-tree cloud provider over to the external cloud-controller-manager (CCM) and CSI plugin. iconic behavior only πŸ‘‘

real talk though: if your cluster was created with .cloudProvider.external enabled, the CCM/CSI migration is not needed because the cluster is already using external CCM. you already ate, no notes πŸ’…

migration is currently available for OpenStack and vSphere. other providers will be added in future KubeOne releases β€” patience, bestie 🧚

the migration is done in two phases:

  • Phase 1: deploy external CCM and CSI plugin, while leaving in-tree provider enabled. Kubernetes API server and kube-controller-manager are configured to:
    • use controllers integrated in external CCM instead of in-tree cloud provider for all cloud-related operations
    • redirect all volumes-related operations to the CSI plugin

the existing worker nodes will continue to use in-tree provider (that's why it's still left enabled), so therefore, all worker nodes managed by machine-controller must be rolled out after phase 1 is complete. yes, all of them. don't skip πŸ’€

  • Phase 2: complete the CCM/CSI migration by fully-disabling in-tree provider. to trigger the phase 2, users need to run "kubeone migrate to-ccm-csi" command with the --complete flag. this should be done after all worker nodes managed by machine-controller are rolled-out. periodt.

make sure to familiarize yourself with the CCM/CSI migration requirements by checking the following document: https://docs.kubermatic.com/kubeone/main/guides/ccm-csi-migration/ β€” please actually read it, i'm begging πŸ™ˆ


πŸŽ€ OPTIONS πŸŽ€

  • -y, --auto-approve[=false] β€” auto approve plan. no lil "are you sure?" moment, she just goes πŸš€
  • --complete[=false] β€” complete ccm/csi migration. this is the phase 2 trigger, the main character of the flags ⭐
  • -h, --help[=false] β€” help for to-ccm-csi. classic, reliable, always there for you 🫢

🌈 OPTIONS INHERITED FROM PARENT COMMANDS 🌈

  • -c, --credentials="" β€” File to source credentials and secrets from πŸ”
  • -d, --debug[=false] β€” debug output with stacktrace. for when you need the whole lore, uncut 😭
  • -l, --log-format="text" β€” format for logging πŸ“
  • -m, --manifest="./kubeone.yaml" β€” Path to the KubeOne config. the sacred text fr fr πŸ“œ
  • -t, --tfjson="" β€” Source for terraform output in JSON - to read from stdin. If path is a file, contents will be used. If path is a dictionary, terraform output -json is executed in this path 🧚
  • -v, --verbose[=false] β€” verbose output. she talks more. we love her for it πŸ’–

πŸ‘€ SEE ALSO πŸ‘€


🌸 HISTORY 🌸

8-Feb-2026 β€” Auto generated by spf13/cobra πŸ€– (yes the robots wrote the receipts, we just added the sparkle)


okay that's the whole thing, bestie, you're fully caught up πŸŽ€ ngl this page was Auto generated by spf13/cobra back in Feb 2026, and that's the KubeOne(1) manual wrapped with a bow β€” go migrate something and slay βœ¨πŸ’…πŸ¦‹

πŸ“¦ where this page comes from