kpt is a package-centric toolchain that enables a WYSIWYG configuration authoring, automation, and delivery experience, which simplifies managing Kubernetes platforms and KRM-driven infrastructure (e.g., Config Connector, Crossplane) at scale by manipulating declarative Configuration as Data.
Configuration as Data is an approach to management of configuration which:
- makes configuration data the source of truth, stored separately from the live state
- uses a uniform, serializable data model to represent configuration
- separates code that acts on the configuration from the data and from packages / bundles of the data
- abstracts configuration file structure and storage from operations that act upon the configuration data; clients manipulating configuration data don’t need to directly interact with storage (git, container images).
See the FAQ for more details about how kpt is different from alternatives.
Documentaion of the kpt project is in https://kpt.dev/.
Governance of the kpt project is described in the Governance repository.
You can reach us in the #kpt channel on the Kubernetes Slack.
We have a kpt users mailing list.
- kpt: The main logic of kpt.
- krm-function-catalog: A catalog of off-the-shelf, tested functions. kpt makes configuration easy to create and transform, via reusable functions. Because they are expected to be used for in-place transformation, the functions need to be idempotent.
- krm-function-sdk: Any general-purpose or domain-specific language can be used to create functions to transform and/or validate the YAML KRM input/output format, but we provide SDKs to simplify the function authoring process in Go.
- kpt-backstage-plugins: We've created a proof-of-concept UI in the form of a Backstage UI plugin to demonstrate the WYSIWYG experience that's possible on top of the package orchestrator. More scenarios can be supported by implementing form-based editors for additional Kubernetes resource types.
- governance: Governance of the kpt project.
- .github: GitHub organisation level settings (this repo)
