README
¶
Kubernetes Federation v2
This repo contains an in-progress prototype of some of the foundational aspects of V2 of Kubernetes Federation. The prototype builds on the sync controller (a.k.a. push reconciler) from Federation v1 to iterate on the API concepts laid down in the brainstorming doc and further refined in the architecture doc. Access to both documents is available to members of the kubernetes-sig-multicluster google group.
Concepts
Federation is configured with two types of information:
- Type configuration declares which API types federation should handle
- Cluster configuration declares which clusters federation should target
Propagation refers to the mechanism that distributes resources to federated clusters.
Type configuration has three fundamental concepts:
- Templates define the representation of a resource common across clusters
- Placement defines which clusters the resource is intended to appear in
- Overrides define per-cluster field-level variation to apply to the template
These three abstractions provide a concise representation of a resource intended to appear in multiple clusters. They encode the minimum information required for propagation and are well-suited to serve as the glue between any given propagation mechanism and higher-order behaviors like policy-based placement and dynamic scheduling.
These fundamental concepts provide building blocks that can be used by higher-level APIs:
- Status collects the status of resources distributed by federation across all federated clusters
- Policy determines which subset of clusters a resource is allowed to be distributed to
- Scheduling refers to a decision-making capability that can decide how workloads should be spread across different clusters similar to how a human operator would
Features
Guides
User Guide
Take a look at our user guide if you are interested in using Federation v2.
Development Guide
Take a look at our development guide if you are interested in contributing.
Code of Conduct
Participation in the Kubernetes community is governed by the Kubernetes Code of Conduct.
Directories
¶
Path | Synopsis |
---|---|
cmd
|
|
controller-manager/app/options
Package options contains flags and options for initializing controller-manager
|
Package options contains flags and options for initializing controller-manager |
hyperfed
A binary that can morph into all of the other federation-v2 binaries.
|
A binary that can morph into all of the other federation-v2 binaries. |
kubefedctl
kubefedctl is a tool for managing clusters in a federation.
|
kubefedctl is a tool for managing clusters in a federation. |
apis
Package apis contains Kubernetes API groups.
|
Package apis contains Kubernetes API groups. |
apis/core
Package core contains core API versions
|
Package core contains core API versions |
apis/core/v1alpha1
Package v1alpha1 contains API Schema definitions for the core v1alpha1 API group +k8s:openapi-gen=true +k8s:deepcopy-gen=package,register +k8s:conversion-gen=github.com/kubernetes-sigs/federation-v2/pkg/apis/core +k8s:defaulter-gen=TypeMeta +groupName=core.federation.k8s.io
|
Package v1alpha1 contains API Schema definitions for the core v1alpha1 API group +k8s:openapi-gen=true +k8s:deepcopy-gen=package,register +k8s:conversion-gen=github.com/kubernetes-sigs/federation-v2/pkg/apis/core +k8s:defaulter-gen=TypeMeta +groupName=core.federation.k8s.io |
apis/multiclusterdns
Package multiclusterdns contains multiclusterdns API versions
|
Package multiclusterdns contains multiclusterdns API versions |
apis/multiclusterdns/v1alpha1
Package v1alpha1 contains API Schema definitions for the multiclusterdns v1alpha1 API group +k8s:openapi-gen=true +k8s:deepcopy-gen=package,register +k8s:conversion-gen=github.com/kubernetes-sigs/federation-v2/pkg/apis/multiclusterdns +k8s:defaulter-gen=TypeMeta +groupName=multiclusterdns.federation.k8s.io
|
Package v1alpha1 contains API Schema definitions for the multiclusterdns v1alpha1 API group +k8s:openapi-gen=true +k8s:deepcopy-gen=package,register +k8s:conversion-gen=github.com/kubernetes-sigs/federation-v2/pkg/apis/multiclusterdns +k8s:defaulter-gen=TypeMeta +groupName=multiclusterdns.federation.k8s.io |
apis/scheduling
Package scheduling contains scheduling API versions
|
Package scheduling contains scheduling API versions |
apis/scheduling/v1alpha1
Package v1alpha1 contains API Schema definitions for the scheduling v1alpha1 API group +k8s:openapi-gen=true +k8s:deepcopy-gen=package,register +k8s:conversion-gen=github.com/kubernetes-sigs/federation-v2/pkg/apis/scheduling +k8s:defaulter-gen=TypeMeta +groupName=scheduling.federation.k8s.io
|
Package v1alpha1 contains API Schema definitions for the scheduling v1alpha1 API group +k8s:openapi-gen=true +k8s:deepcopy-gen=package,register +k8s:conversion-gen=github.com/kubernetes-sigs/federation-v2/pkg/apis/scheduling +k8s:defaulter-gen=TypeMeta +groupName=scheduling.federation.k8s.io |
controller/util
TODO: consider moving it to a more generic package.
|
TODO: consider moving it to a more generic package. |
controller/util/finalizers
Helper functions for manipulating finalizers.
|
Helper functions for manipulating finalizers. |
test
|
|
e2e/framework/ginkgowrapper
Package ginkgowrapper wraps Ginkgo Fail and Skip functions to panic with structured data instead of a constant string.
|
Package ginkgowrapper wraps Ginkgo Fail and Skip functions to panic with structured data instead of a constant string. |