Referencerke2spray

Kubespray API compatibility

Supported, adapter, conditional, and explicitly rejected Kubespray Playbooks, Roles, and variables.

Updated Verified SourceEdit this page

Core summary

  • The compatibility contract covers root Playbooks, public Role paths, Inventory groups, default variables, and tags.
  • It does not promise identical internal Kubespray task bodies or resulting state.
  • Inputs without a safe RKE2 translation fail before host mutation instead of being silently ignored.
  • docs/kubespray-api-compatibility.yml is the canonical source for support status.
  • Upstream baseline changes require mapping and reachability review and are never merged automatically.

Interpret input status consistently

ClassificationMeaningExample
SupportedOperates with the same intent above the Kubernetes APIGeneral kubernetes-apps Roles
AdapterTranslates a public name into RKE2 behaviorkubernetes/kubeadm, container-engine
ConditionalOperates only with a topology or feature prerequisiteEmbedded-etcd control-plane recovery
UnsupportedHas no current safe equivalent and is explicitly rejectedkubeadm phases, Docker or CRI-O selection
Adapter gapRKE2 can support it, but the adapter is incompleteCurrent external or custom CNI path

Check representative rejected inputs

InputHandling
container_manager: docker or crioPreflight failure
Non-empty kubeadm_patchesPreflight failure
Invalid union of control-plane and worker groupsInventory validation failure
External or custom CNICurrent preflight failure
Windows control planeUnsupported
External datastore with control-plane recoveryUse the external datastore's recovery procedure

Review upstream changes

  1. Move KUBESPRAY_BASELINE to the commit under review.
  2. Inspect parity output for added or removed Playbooks, Roles, variables, groups, and tags.
  3. Classify each API as Supported, Adapter, Conditional, or Unsupported.
  4. Record the mapping and rationale in the compatibility manifest.
  5. Test reachability and failure behavior through canonical root Playbooks.
  6. Review the synchronization PR manually without automatic merging.

Run completion checks

make check PYTHON_BIN=/path/to/python
  • Unsupported inputs must never be silently ignored.
  • Root Playbooks must resolve from a source checkout without an external Collection.
  • A production cluster must not become an unapproved change-test target.

Conclusion

  • Before applying a Kubespray variable, look up its current classification in the machine-readable contract.
  • When prose and code differ, prefer the current release's compatibility manifest and preflight result.