You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
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.
Why kpt?
kpt enables WYSIWYG editing and interoperable automation applied to declarative configuration data, similar to how the
live state can be modified with imperative tools.
The kpt toolchain includes the following components:
kpt CLI: The kpt CLI supports package and function operations, and also
deployment, via either direct apply or GitOps. By keeping an inventory of deployed resources, kpt enables resource
pruning, aggregated status and observability, and an improved preview experience.
Function SDKs: 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.
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.
Package orchestrator:
The package orchestrator
enables the magic behind the unique WYSIWYG experience. It provides a control plane for creating,
modifying, updating, and deleting packages, and evaluating functions on package data. This enables operations on packaged resources
similar to operations directly on the live state through the Kubernetes API.
Config Sync: While the package orchestrator
can be used with any GitOps tool, Config Sync provides a reference GitOps implementation to complete the WYSIWYG management
experience and enable end-to-end development of new features, such as
OCI-based packages. Config Sync is also helping to drive improvements
in upstream Kubernetes. For instance, Config Sync is built on top of git-sync and
leverages Kustomize to automatically render manifests on the fly when needed. It uses the same apply
logic as the kpt CLI.
Backstage UI plugin: 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.
Roadmap
You can read about the big upcoming features in the roadmap doc.
The governance of the kpt project and KRM Functiona Catalog are described in the
governance repo.
Code of Conduct
The kpt project and the KRM Functions Catalog are following the
CNCF Code of Conduct.
More information and links about the CNCF Code of Conduct are here.
CNCF
The kpt project including the KRM Functions Catalog is a CNCF Sandbox project.