How minimal exactly? kcp
doesn't know about Pod
s or Node
s, let alone Deployment
s, Service
s, LoadBalancer
s, etc.
By default, kcp
only knows about:
Namespaces
ServiceAccounts
and role-based access control types likeRole
andRoleBinding
Secrets
andConfigMaps
, to store configuration dataCustomResourceDefinitions
, to define new types- a handful of other low-level resources like
Lease
s,Event
s, etc.
Like vanilla Kubernetes, kcp
persists these resources in etcd for durable storage.
Any other resource, including Kubernetes-standard resources like Pod
s, Node
s and the rest, can be added as CRDs and reconciled using the standard conrtollers.
Kubernetes is mainly known as a container orchestration platform today, but we believe it can be even more.
With the power of CustomResourceDefinition
s, Kubernetes provides a flexible platform for declarative APIs of all types, and the reconciliation pattern common to Kubernetes controllers is a powerful tool in building robust, expressive systems.
At the same time, a diverse and creative community of tools and services has sprung up around Kubernetes APIs.
Imagine a declarative Kubernetes-style API for anything, supported by an ecosystem of Kubernetes-aware tooling, separate from Kubernetes-the-container-orchestrator.
That's kcp
.
No.
kcp
as a prototype currently depends on some unmerged changes to Kubernetes, but we intend to pursue these changes through the usual KEP process, until (hopefully!) Kubernetes can be configured to run as kcp
runs today.
Our intention is that our experiments improve Kubernetes for everyone, by improving CRDs and scaling resource watching, and enabling more, better controllers for everyone, whether you're using Kubernetes as a container orchestrator or not.
Our kcp
specific patches are in the feature-logical-clusters feature branch in the kcp-dev/kubernetes repo. See DEVELOPMENT.md for how the patches are structured and how they must be formatted during our experimentation phase. See GOALS.md for more info on how we intend to use kcp
as a test-bed for exploring ideas that improve the entire ecosystem.
First off, this is a prototype, not a project. We're exploring these ideas here to try them out, experiment, and bounce them off each other. Our basic demo leverages the following components to show off these ideas:
kcp
, which serves a Kubernetes-style API with a minimum of built-in types.cluster-controller
, which along with theCluster
CRD allowskcp
to connect to other full-featured Kubernetes clusters, and includes these components:syncer
, which runs on Kubernetes clusters registered with thecluster-controller
, and watcheskcp
for resources assigned to the clusterdeployment-splitter
, which demonstrates a controller that can split aDeployment
object into multiple "virtual Deployment" objects across multiple clusters.crd-puller
which demonstrates mirroring CRDs from a cluster back tokcp
kcp
could be useful for multi-cluster scenarios, by running kcp
has a hybrid control plane outside of any of your workload clusters.
kcp
could be useful for multi-tenancy scenarios, by allowing multiple tenant clusters inside a cluster to be managed by a single kcp
control plane.
kcp
could be useful for local development scenarios, where you don't necessarily care about all of Kubernetes' many built-in resources and their reconiling controllers.
kcp
could be useful for environments where resources are scarce, by limiting the number of controllers that need to run. Kubernetes' asynchronous reconciliation pattern can also be very powerful in disconnected or intermittently connected environments, regardless of how workloads actually run.
No! See our GOALS.md doc for more on what we are trying to accomplish with this prototype.
kcp
as a project stands for equality and justice for all people.
However, kcp
is not an acronym.
Thanks! And great!
This work is still in early development, which means it's not ready for production, but also that your feedback can have a big impact.
You can reach us here, in this repository via issues and discussion, or:
- Join the mailing lists
- Subscribe to the community calendar for community meetings and events
- The kcp-dev mailing list is subscribed to this calendar
- Browse the shared Google Drive to share design docs, demo videos, meeting recordings