{"adoption": {"forks": 829, "observed_at": "2026-08-28T04:07:26.122798+00:00", "stars": 2860}, "canonical_url": "https://ross.abutalabs.com/products/kubekey", "card": {"archived": false, "artifact_type": "cli-tool", "description": "Install Kubernetes, and related cloud-native add-ons, it supports all-in-one, multi-node, and HA 🔥 ⎈ 🐳", "domain": ["cloud-computing", "infrastructure-as-code", "self-hosted"], "enriched": true, "function": ["deployment", "infrastructure-as-code", "container-orchestration", "configuration-management", "cli"], "health_score": 100, "homepage": "https://kubesphere.io", "language": "Go", "license": "Apache-2.0", "license_family": "permissive", "maturity": "active", "member_repos": ["kubesphere/kubekey"], "name": "kubesphere/kubekey", "platform": ["go", "cli", "self-hosted"], "pushed_at": "2026-08-26T07:29:18+00:00", "repo": "kubesphere/kubekey", "stars": 2860, "tags": ["kubernetes-installer", "kubesphere", "cluster-lifecycle", "task-flow", "air-gapped-installation", "ha-cluster", "containers", "devops", "linux", "docker", "kubernetes"], "topics": ["installer", "kubernetes", "kubeadm", "k8s", "kubernetes-deployment", "kubernetes-cluster", "hacktoberfest"], "urls": [], "use_cases": ["install a kubernetes cluster from the command line", "set up a multi-node or HA kubernetes cluster", "deploy kubesphere together with kubernetes", "install kubernetes in an air-gapped offline environment", "add or remove worker nodes from an existing cluster", "renew expired kubernetes certificates", "scale a kubernetes cluster up or down"], "what_it_is": "KubeKey (kk) is a lightweight task-flow execution tool written in Go for installing and managing Kubernetes clusters, supporting all-in-one, multi-node, and HA topologies. It also handles cluster lifecycle operations like adding/removing nodes, certificate renewal, offline artifact export, and can install KubeSphere and other cloud-native add-ons.", "when_to_avoid": ["you are already standardized on kubeadm, kops, or a managed Kubernetes service", "you need a general-purpose configuration management tool beyond Kubernetes provisioning", "you require the v4 web UI, which is still limited and not fully open", "you manage clusters exclusively through GitOps pipelines with other tooling"], "when_to_choose": ["you want a fast, CNCF-conformance-certified Kubernetes installer with online or offline support", "you need to deploy KubeSphere or cloud-native add-ons alongside Kubernetes", "you want Ansible-like task automation for cluster lifecycle without writing playbooks yourself", "you need all-in-one dev clusters or HA production clusters from one tool"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/kubekey", "repo": "kubesphere/kubekey", "role": "main", "score": 95}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:07:26.122798+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T07:36:27.847364+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "6a87a4507669b8b22c93e0c5d5fc2851801dd9e134124d402452ad8f452fb92a", "fetched_at": "2026-08-28T04:07:26.122798+00:00", "kind": "readme", "missing": false, "url": "https://github.com/kubesphere/kubekey"}, {"content_hash": "be759ba361ef8563ef5bd20ef0ab2a955164b73954dcbebd4d0f04e23fdcb9fa", "fetched_at": "2026-08-29T09:52:07.983961+00:00", "kind": "homepage", "missing": false, "url": "https://kubesphere.io"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:07:26.122798+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T07:36:27.847364+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "6a87a4507669b8b22c93e0c5d5fc2851801dd9e134124d402452ad8f452fb92a", "fetched_at": "2026-08-28T04:07:26.122798+00:00", "kind": "readme", "missing": false, "url": "https://github.com/kubesphere/kubekey"}, {"content_hash": "be759ba361ef8563ef5bd20ef0ab2a955164b73954dcbebd4d0f04e23fdcb9fa", "fetched_at": "2026-08-29T09:52:07.983961+00:00", "kind": "homepage", "missing": false, "url": "https://kubesphere.io"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T07:36:27.847364+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "6a87a4507669b8b22c93e0c5d5fc2851801dd9e134124d402452ad8f452fb92a", "fetched_at": "2026-08-28T04:07:26.122798+00:00", "kind": "readme", "missing": false, "url": "https://github.com/kubesphere/kubekey"}, {"content_hash": "be759ba361ef8563ef5bd20ef0ab2a955164b73954dcbebd4d0f04e23fdcb9fa", "fetched_at": "2026-08-29T09:52:07.983961+00:00", "kind": "homepage", "missing": false, "url": "https://kubesphere.io"}], "taxonomy_version": 1}, "health_score": {"inputs": ["days_since_push", "days_since_release", "archived"], "kind": "computed", "method": "health_v1"}, "homepage": {"kind": "observed", "observed_at": "2026-08-28T04:07:26.122798+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:07:26.122798+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:07:26.122798+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T07:36:27.847364+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "6a87a4507669b8b22c93e0c5d5fc2851801dd9e134124d402452ad8f452fb92a", "fetched_at": "2026-08-28T04:07:26.122798+00:00", "kind": "readme", "missing": false, "url": "https://github.com/kubesphere/kubekey"}, {"content_hash": "be759ba361ef8563ef5bd20ef0ab2a955164b73954dcbebd4d0f04e23fdcb9fa", "fetched_at": "2026-08-29T09:52:07.983961+00:00", "kind": "homepage", "missing": false, "url": "https://kubesphere.io"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:07:26.122798+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:07:26.122798+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T07:36:27.847364+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "6a87a4507669b8b22c93e0c5d5fc2851801dd9e134124d402452ad8f452fb92a", "fetched_at": "2026-08-28T04:07:26.122798+00:00", "kind": "readme", "missing": false, "url": "https://github.com/kubesphere/kubekey"}, {"content_hash": "be759ba361ef8563ef5bd20ef0ab2a955164b73954dcbebd4d0f04e23fdcb9fa", "fetched_at": "2026-08-29T09:52:07.983961+00:00", "kind": "homepage", "missing": false, "url": "https://kubesphere.io"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:07:26.122798+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:07:26.122798+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:07:26.122798+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T07:36:27.847364+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "6a87a4507669b8b22c93e0c5d5fc2851801dd9e134124d402452ad8f452fb92a", "fetched_at": "2026-08-28T04:07:26.122798+00:00", "kind": "readme", "missing": false, "url": "https://github.com/kubesphere/kubekey"}, {"content_hash": "be759ba361ef8563ef5bd20ef0ab2a955164b73954dcbebd4d0f04e23fdcb9fa", "fetched_at": "2026-08-29T09:52:07.983961+00:00", "kind": "homepage", "missing": false, "url": "https://kubesphere.io"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:07:26.122798+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:07:26.122798+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T07:36:27.847364+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "6a87a4507669b8b22c93e0c5d5fc2851801dd9e134124d402452ad8f452fb92a", "fetched_at": "2026-08-28T04:07:26.122798+00:00", "kind": "readme", "missing": false, "url": "https://github.com/kubesphere/kubekey"}, {"content_hash": "be759ba361ef8563ef5bd20ef0ab2a955164b73954dcbebd4d0f04e23fdcb9fa", "fetched_at": "2026-08-29T09:52:07.983961+00:00", "kind": "homepage", "missing": false, "url": "https://kubesphere.io"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T07:36:27.847364+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "6a87a4507669b8b22c93e0c5d5fc2851801dd9e134124d402452ad8f452fb92a", "fetched_at": "2026-08-28T04:07:26.122798+00:00", "kind": "readme", "missing": false, "url": "https://github.com/kubesphere/kubekey"}, {"content_hash": "be759ba361ef8563ef5bd20ef0ab2a955164b73954dcbebd4d0f04e23fdcb9fa", "fetched_at": "2026-08-29T09:52:07.983961+00:00", "kind": "homepage", "missing": false, "url": "https://kubesphere.io"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T07:36:27.847364+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "6a87a4507669b8b22c93e0c5d5fc2851801dd9e134124d402452ad8f452fb92a", "fetched_at": "2026-08-28T04:07:26.122798+00:00", "kind": "readme", "missing": false, "url": "https://github.com/kubesphere/kubekey"}, {"content_hash": "be759ba361ef8563ef5bd20ef0ab2a955164b73954dcbebd4d0f04e23fdcb9fa", "fetched_at": "2026-08-29T09:52:07.983961+00:00", "kind": "homepage", "missing": false, "url": "https://kubesphere.io"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T07:36:27.847364+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "6a87a4507669b8b22c93e0c5d5fc2851801dd9e134124d402452ad8f452fb92a", "fetched_at": "2026-08-28T04:07:26.122798+00:00", "kind": "readme", "missing": false, "url": "https://github.com/kubesphere/kubekey"}, {"content_hash": "be759ba361ef8563ef5bd20ef0ab2a955164b73954dcbebd4d0f04e23fdcb9fa", "fetched_at": "2026-08-29T09:52:07.983961+00:00", "kind": "homepage", "missing": false, "url": "https://kubesphere.io"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 99, "longevity": 100, "rhythm": 86}, "computed_at": "2026-09-03T02:20:16.233290+00:00", "flags": [], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 2359, "days_push": 7, "days_rel": 19, "gap_med": 51, "n_releases_24m": 14}, "score": 95, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}