https://github.com/filcloud/kubefed
Kubernetes Cluster Federation
https://github.com/filcloud/kubefed
Last synced: 6 months ago
JSON representation
Kubernetes Cluster Federation
- Host: GitHub
- URL: https://github.com/filcloud/kubefed
- Owner: filcloud
- License: apache-2.0
- Fork: true (kubernetes-retired/kubefed)
- Created: 2019-11-22T05:02:42.000Z (over 6 years ago)
- Default Branch: master
- Last Pushed: 2020-03-21T07:32:25.000Z (over 6 years ago)
- Last Synced: 2025-08-15T07:48:34.084Z (11 months ago)
- Language: Go
- Homepage:
- Size: 79.3 MB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
- Code of conduct: code-of-conduct.md
- Security: SECURITY_CONTACTS
Awesome Lists containing this project
README
[](https://travis-ci.org/kubernetes-sigs/kubefed "Travis")
[](https://goreportcard.com/report/github.com/kubernetes-sigs/kubefed)
[](https://quay.io/repository/kubernetes-multicluster/kubefed)
[](https://github.com/kubernetes-sigs/kubefed/blob/master/LICENSE)
[](https://github.com/kubernetes-sigs/kubefed/releases "KubeFed latest release")
# 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](https://github.com/kubernetes-sigs/kubefed/milestone/4).
## 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](https://github.com/kubernetes-sigs/kubefed/blob/master/docs/userguide.md#verify-your-deployment-is-working) | Alpha | PushReconciler | true |
| [CLI utility (`kubefedctl`)](https://github.com/kubernetes-sigs/kubefed/blob/master/docs/userguide.md#kubefedctl-cli) | Alpha | | |
| [Generate KubeFed APIs without writing code](https://github.com/kubernetes-sigs/kubefed/blob/master/docs/userguide.md#enabling-federation-of-an-api-type) | Alpha | | |
| [Multicluster Service DNS via `external-dns`](https://github.com/kubernetes-sigs/kubefed/blob/master/docs/servicedns-with-externaldns.md) | Alpha | CrossClusterServiceDiscovery | true |
| [Multicluster Ingress DNS via `external-dns`](https://github.com/kubernetes-sigs/kubefed/blob/master/docs/ingressdns-with-externaldns.md) | Alpha | FederatedIngress | true |
| [Replica Scheduling Preferences](https://github.com/kubernetes-sigs/kubefed/blob/master/docs/userguide.md#replicaschedulingpreference) | Alpha | SchedulerPreferences | true |
## Guides
### User Guide
Take a look at our [user guide](docs/userguide.md) if you are interested in
using KubeFed.
### Development Guide
Take a look at our [development guide](docs/development.md) if you are
interested in contributing.
## Community
Refer to the [contributing guidelines](./CONTRIBUTING.md) if you would like to contribute to KubeFed.
### Communication channels
KubeFed is sponsored by [SIG Multicluster](https://github.com/kubernetes/community/tree/master/sig-multicluster) and it uses the same communication channels as SIG multicluster.
* Slack channel: [#sig-multicluster](http://slack.k8s.io/#sig-multicluster)
* [Mailing list](https://groups.google.com/forum/#!forum/kubernetes-sig-multicluster)
## Code of Conduct
Participation in the Kubernetes community is governed by the
[Kubernetes Code of Conduct](./code-of-conduct.md).