Skip to content
Kubernetes Cluster Federation
Branch: master
Clone or download
k8s-ci-robot Merge pull request #924 from font/userguide
Update userguide for disabling federation of an API type
Latest commit b69c7a1 May 23, 2019
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.github Merge pull request #540 from gyliu513/pull-tmp Jan 3, 2019
charts Fix broken chart index link for v0.1.0-rc1 May 23, 2019
cmd Rename user-visible federation to 'federated' or 'kubefed' May 22, 2019
config s/KubefedConfig/KubeFedConfig/ May 22, 2019
docs Merge pull request #924 from font/userguide May 23, 2019
example s/KubefedConfig/KubeFedConfig/ May 22, 2019
hack Remove hack/install-latest.yaml from tree Apr 3, 2019
images/kubefed Add webhook May 16, 2019
pkg Rename user-visible federation to 'federated' or 'kubefed' May 22, 2019
scripts Fix broken chart index link for v0.1.0-rc1 May 23, 2019
test Rename user-visible federation to 'federated' or 'kubefed' May 22, 2019
vendor Update dependencies for webhook May 10, 2019
.gitignore Replace all refereances to federation-v2 May 14, 2019
.golangci.yml Rename references to kubefed2 with kubefedctl May 2, 2019
.travis.yml Update golang version to 1.12.5 May 15, 2019
CHANGELOG.md Update repo for v0.1.0-rc1 release May 22, 2019
CONTRIBUTING.md Rewrite README intro May 22, 2019
Gopkg.lock Update dependencies for webhook May 10, 2019
Gopkg.toml Update Gopkg.toml for webhook dependencies May 10, 2019
LICENSE Initial commit Jan 9, 2018
Makefile Add webhook May 16, 2019
OWNERS add xunpan as reviewer after discussed with marun Apr 4, 2019
PROJECT Replace API group name from federation.k8s.io to kubefed.k8s.io May 14, 2019
README.md Rewrite README intro May 22, 2019
SECURITY_CONTACTS Add SECURITY_CONTACTS to the federation-v2 repo. May 23, 2018
code-of-conduct.md Adopt Kubernetes code of conduct Apr 17, 2018

README.md

Build Status Go Report Card Image Repository on Quay LICENSE Releases

Kubernetes Cluster Federation

Kubernetes Cluster Federation (KubeFed for short) allows you to coordinate the configuration of multiple Kubernetes clusters from a single set of APIs in a hosting cluster. KubeFed aims to provide mechanisms for expressing which clusters should have their configuration managed and what that configuration should be. The mechanisms that KubeFed provides are intentionally low-level, and intended to be foundational for more complex multicluster use cases such as deploying multi-geo applications and disaster recovery.

KubeFed is currently alpha and moving rapidly toward its initial beta release.

Concepts

KubeFed is configured with two types of information:

  • Type configuration declares which API types KubeFed should handle
  • Cluster configuration declares which clusters KubeFed 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 KubeFed 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

Feature Maturity Feature Gate Default
Push propagation of arbitrary types to remote clusters Alpha PushReconciler true
CLI utility (kubefedctl) Alpha
Generate KubeFed APIs without writing code Alpha
Multicluster Service DNS via external-dns Alpha CrossClusterServiceDiscovery true
Multicluster Ingress DNS via external-dns Alpha FederatedIngress true
Replica Scheduling Preferences Alpha SchedulerPreferences true

Guides

User Guide

Take a look at our user guide if you are interested in using KubeFed.

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.

You can’t perform that action at this time.