KubeKey: install Kubernetes and KubeSphere from one binary
Install Kubernetes, and related cloud-native add-ons, it supports all-in-one, multi-node, and HA š„ ā š³
At a glance
- What is it?
- KubeKey v4 is a Go task-flow executor that installs Kubernetes across all-in-one, multi-node and HA topologies, then layers cloud-native add-ons on top. The design is closer to Ansible than to kubeadm, which is both the reason to pick it and the reason to think twice.
- Who is it for?
- Adopt KubeKey if you provision bare metal or VMs and want one binary to cover cluster creation, node add and delete, certificate renewal and offline artifact export, with KubeSphere available as a follow-on. Skip it if you already run Cluster API controllers, because KubeKey's playbook model overlaps with that control plane rather than complementing it.
- Can I use it commercially?
- Yes. Apache-2.0 is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
- Is it still maintained?
- Yes. The repository last received commits 6 days ago.
- What is it written in?
- Mainly Go, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on September 25, 2026, and from our analysis. They are not legal advice.
Editorial analysis
What KubeKey solves, and who ends up using it
Standing up a Kubernetes cluster on hardware you own is a sequence of small, order-dependent jobs: prepare the OS, install a container runtime, place etcd, bootstrap the control plane, join workers, then install networking and storage. kubeadm handles the middle of that sequence and leaves the edges to you. KubeKey takes the whole sequence. The README describes it as "an open-source lightweight task flow execution tool" whose purpose is to provide "a flexible and fast way to install Kubernetes", and the repository has passed the CNCF Kubernetes Conformance Certification.
The people who get value from it are platform engineers running bare metal or long-lived VMs, especially in environments without a cloud controller to lean on. The README's own framing of the 3.x redesign says the tool expanded "from Kubernetes lifecycle management tool to task execution tool", with the flow design referencing Ansible. That is the honest description of the scope: cluster creation is one playbook among several, alongside add-nodes, delete-nodes, certs-renew, precheck, init-os and artifact-export. KubeSphere is the companion platform, and the extracted release archive ships task templates named kubernetes and kubesphere, so a single run can carry you past a bare cluster.
Playbooks, roles and connection plugins: the actual mechanism
KubeKey v4 is not a shell script with flags. The docs directory lays out a framework with its own vocabulary: project, playbook, role, task, template syntax and variables. A playbook is the unit you invoke; roles group tasks; tasks execute against hosts. Variables are resolved through the same templating conventions Ansible users already know, and the repository vendors github.com/Masterminds/sprig/v3, which is the function library behind that style.
The part that differs from a typical installer is the connection layer. The README lists four node connection methods: local, ssh, kubernetes and prometheus. Local and ssh cover the ordinary case of a control machine reaching target nodes. The kubernetes connector means a task can act through the Kubernetes API, and the prometheus connector means a task can read metrics from a Prometheus endpoint. In practice that turns KubeKey into something you can point at an existing cluster, not only at a set of empty machines.
Task templates are also not baked into the binary. The README states KubeKey "Supports multiple ways to manage task templates: git, local, etc." The go.mod file includes github.com/go-git/go-git/v5, which is consistent with a git-backed template source. The consequence is that the Kubernetes version you install is a property of the template you run, not of the binary version, and the component versions live in docs/en/installation/components.md.
Installing KubeKey and creating a first cluster
There are two documented ways to get the binary. The release page carries per-platform archives, or you can run the install script. The script is the shorter path and it also unpacks the task templates and schema files you need for anything beyond a bare cluster.
curl -sfL https://get-kk.kubesphere.io | sh -The extracted archive contains the kk binary, a dist directory with Web UI resources, a schema directory of configuration files, task template files for kubernetes and kubesphere, and package.sh for building offline packages. Once kk is on your PATH, the README's quick start is a single command:
./kk create clusterThat is the interactive entry point. For anything reproducible you want a configuration file instead, which the docs cover under docs/en/reference/config.md and the related searches call a config sample yaml. The repository ships a schema directory precisely so the config can be validated rather than guessed at. If you prefer a browser to a terminal, v4.0.0 and later also expose a UI:
./kk web --schema-path web-installer/schema --ui-path web-installer/distNote the README's own caveat that the UI is "not yet open" among the advanced features, while the quick start marks it as supported only after v4.0.0. Those two statements sit awkwardly together, and I would treat the CLI as the supported surface until the UI documentation is clearer. Before creating anything, the precheck playbook is the sensible first run against a candidate node.
Where KubeKey is the wrong tool
The task-flow model is powerful and it is also the main risk. Because templates can come from git and because roles and variables are user-editable, two teams running "KubeKey" can be running materially different installers. Reproducibility depends on pinning your template source, not on pinning the kk binary. If your organization expects a single audited artifact that produces a byte-identical cluster every time, this design asks more discipline of you than a fixed installer would.
The second boundary is the release cadence. The most recent tagged releases are v4.0.7-alpha.1 and v4.0.7-alpha.0 from August 2026, with v4.0.6 as the preceding non-alpha tag. Alpha tags are not where you want a production control plane to land by accident. The last push to the default branch was on 2026-08-21, so the project is not dormant, but the newest line is explicitly pre-release.
Third, if you already run Cluster API, KubeKey's cluster lifecycle playbooks overlap with it. The go.mod file pulls in sigs.k8s.io/cluster-api v1.9.2 and sigs.k8s.io/controller-runtime v0.23.0, so the project is aware of that world, but the README does not document KubeKey as a CAPI provider. Running both means two systems with opinions about the same machines. The README also does not document rollback for a partially failed cluster creation, so plan for teardown and retry rather than an undo.
How it differs from kubeadm and from Cluster API
kubeadm is the reference bootstrap tool and it is deliberately narrow. It initializes a control plane and joins nodes, and it expects you to have prepared the OS, chosen and installed a container runtime, and installed your CNI afterwards. KubeKey wraps that whole span: the playbook list in the README includes init_os and precheck alongside create_cluster, and the archive ships a host-check.yaml template. If you want to understand exactly what happened on a node, kubeadm gives you a smaller surface to reason about. If you want a repeatable path from bare VM to a cluster with add-ons, KubeKey removes several manual steps.
Cluster API takes a different route entirely. It is a set of Kubernetes controllers that manage machines declaratively, so the cluster is a custom resource reconciled by a management cluster. KubeKey is imperative task execution: you run a playbook and tasks execute in order over ssh or another connector. The trade-off is state. CAPI continuously reconciles toward a declared shape; KubeKey executes a flow and stops. For a one-time build of a fixed set of machines, the flow model is simpler. For continuous drift correction across many clusters, a controller is the better fit, and KubeKey's kubernetes connector is not a substitute for that.
Maintenance cost, licence and what the docs do not say
KubeKey is licensed under Apache-2.0, which permits commercial use and modification, and it carries no copyleft obligation on your own code. That is the same licence family as Kubernetes itself, so it rarely creates friction in a corporate review. It is not legal advice; check your own policy for bundled third-party dependencies, of which go.mod lists many.
The upgrade cost is the more interesting question. Because the Kubernetes version is determined by the task template rather than the binary, upgrading the cluster and upgrading KubeKey are separate operations. The README documents a certs_renew playbook, which matters on long-lived clusters where certificates expire, and an artifact_export playbook for building offline packages, which matters in air-gapped environments. What the README does not document is a version-to-version upgrade path for the kk binary itself, nor a rollback procedure. Plan to test a new kk release against a throwaway cluster before touching a production one, and keep your template source pinned to a specific commit.
Editorial conclusion
Adopt KubeKey if you provision bare metal or VMs and want one binary to cover cluster creation, node add and delete, certificate renewal and offline artifact export, with KubeSphere available as a follow-on. Skip it if you already run Cluster API controllers, because KubeKey's playbook model overlaps with that control plane rather than complementing it. Before committing, run the precheck playbook against a representative node, confirm the component versions in docs/en/installation/components.md match what your workloads need, and decide whether you will consume the alpha 4.0.7 line or stay on the 4.0.6 release.
Frequently asked questions
Why are people moving away from Kubernetes?
KubeKey's documentation does not address that question. The project installs Kubernetes rather than replacing it, and the repository carries CNCF Kubernetes Conformance Certification.
What is kube used for?
The README does not define a component called kube. KubeKey is the project's name, and it is a task flow execution tool that installs Kubernetes and related cloud-native add-ons.
Is kube the same as Kubernetes?
KubeKey is not Kubernetes. It is a separate Go project that installs Kubernetes, and the README describes it as an open-source lightweight task flow execution tool.
What do people use Kubernetes for?
KubeKey's documentation does not cover Kubernetes use cases in general. It is limited to installing Kubernetes and related cloud-native add-ons, including KubeSphere, across all-in-one, multi-node and HA topologies.
Official sources
Add this badge to your README
If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.
[](https://hysenlabs.com/projects/kubesphere-kubekey)