bluek8s / kubedirector

Kubernetes Director (aka KubeDirector) for deploying and managing stateful applications on Kubernetes
Apache License 2.0
400 stars 90 forks source link
containers kubernetes

KubeDirector

Build Status

What is KubeDirector?

KubeDirector uses standard Kubernetes (K8s) facilities of custom resources and API extensions to implement stateful scaleout application clusters. This approach enables transparent integration with K8s user/resource management and existing K8s clients and tools.

In broad terms, KubeDirector is a "custom controller" (itself deployed into K8s) that watches for custom resources of a given type to be created or modified within some K8s namespace(s). On such an event, KubeDirector uses K8s APIs to create or update the resources and configuration of a cluster to bring it into accordance with the spec defined in that custom resource.

Unlike some other custom controller implementations, KubeDirector does not tie a custom resource definition to a particular type of application, or contain hardcoded application-specific logic within the controller. Instead, application characteristics are defined by metadata and an associated package of configuration artifacts. This separation of responsibilities has several useful characteristics, including:

The wiki describes KubeDirector concepts, architecture, and data formats.

See the files in the "doc" directory for information about deploying and using KubeDirector:

Contributing

You’re welcome to join the BlueK8s Slack workspace for feedback and discussion.

Please read through the CONTRIBUTING guide before making a pull request. If you run into an issue with the contributing guide, please send a pull request to fix the contributing guide.

Code of conduct

Participation in the KubeDirector community is governed by the KubeDirector Code of Conduct.