KubeOne(1)
π 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--completeflag. 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 -jsonis executed in this path π§-v,--verbose[=false]β verbose output. she talks more. we love her for it π
π SEE ALSO π
kubeone-migrate(1)β the parent, the origin story, the blueprint π
πΈ 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
- arch rolling: kubeone 1.12.3-3 Β· Apache
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms