kubedirector

module
v0.5.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 26, 2020 License: Apache-2.0

README

KubeDirector

Build Status

The BlueK8s open source initiative will include a number of projects to help bring enterprise-level capabilities for distributed stateful applications to Kubernetes.

The first open source project in this initiative is Kubernetes Director or KubeDirector for short.

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:

  • Application experts -- within or outside the organization running KubeDirector -- can enable application deployment without writing "Go" code or understanding the operation of custom controllers. This includes easily making incremental changes to adopt new versions of an application or tweak the setup choices exposed to the end user.

  • Site administrators can easily manage which application types and versions are available within an organization, without undergoing a custom controller code upgrade that could potentially disrupt operations.

  • End users can launch and reconfigure clusters using familiar K8s tools, selecting from application-specific choices provided to them by the experts.

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

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

  • quickstart.md: deploying a pre-built KubeDirector image
  • gke-notes.md: important information if you intend to deploy KubeDirector using Google Kubernetes Engine
  • eks-notes.md: important information if you intend to deploy KubeDirector using Amazon Elastic Container Service for Kubernetes
  • virtual-clusters.md: creating and managing virtual clusters with KubeDirector
  • app-authoring.md: creating app definitions for KubeDirector virtual clusters
  • kubedirector-development.md: building KubeDirector from source

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.

Directories

Path Synopsis
cmd
pkg
apis
Package apis contains custom resource API versions.
Package apis contains custom resource API versions.
apis/kubedirector
Package kubedirector contains kubedirector API versions.
Package kubedirector contains kubedirector API versions.
apis/kubedirector/v1beta1
Package v1beta1 contains API Schema definitions for the kubedirector v1beta1 API group +k8s:deepcopy-gen=package,register +groupName=kubedirector.hpe.com Package v1beta1 contains API Schema definitions for the kubedirector v1beta1 API group +k8s:deepcopy-gen=package,register +groupName=kubedirector.hpe.com
Package v1beta1 contains API Schema definitions for the kubedirector v1beta1 API group +k8s:deepcopy-gen=package,register +groupName=kubedirector.hpe.com Package v1beta1 contains API Schema definitions for the kubedirector v1beta1 API group +k8s:deepcopy-gen=package,register +groupName=kubedirector.hpe.com
catalog
Package catalog manages interpretation of the app catalog.
Package catalog manages interpretation of the app catalog.
cert
Package cert preserves certain functions from client-go/util/cert v10.
Package cert preserves certain functions from client-go/util/cert v10.
controller
Package controller implements the reconciliation logic for custom resources.
Package controller implements the reconciliation logic for custom resources.
controller/configmap
Package configmap implements reconciliation for configmap.
Package configmap implements reconciliation for configmap.
controller/kubedirectorcluster
Package kubedirectorcluster implements reconciliation for KubeDirectorCluster.
Package kubedirectorcluster implements reconciliation for KubeDirectorCluster.
controller/kubedirectorconfig
Package kubedirectorconfig implements reconciliation for KubeDirectorConfig.
Package kubedirectorconfig implements reconciliation for KubeDirectorConfig.
controller/secret
Package secret implements reconciliation for secret.
Package secret implements reconciliation for secret.
executor
Package executor manages objects within k8s that implement virtual clusters.
Package executor manages objects within k8s that implement virtual clusters.
observer
Package observer implements queries for k8s objects that compose a cluster.
Package observer implements queries for k8s objects that compose a cluster.
shared
Package shared implements utility routines, data structures, and constants used by multiple other KubeDirector packages.
Package shared implements utility routines, data structures, and constants used by multiple other KubeDirector packages.
triple
Package triple generates key-certificate pairs for the triple (CA, Server, Client).
Package triple generates key-certificate pairs for the triple (CA, Server, Client).
validator
Package validator handles dynamic admission control checks for resources.
Package validator handles dynamic admission control checks for resources.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL