README

Cluster Federation

Kubernetes Cluster Federation enables users to federate multiple Kubernetes clusters. Please see the user guide and the admin guide for more details about setting up and using the Cluster Federation.

Building Kubernetes Cluster Federation

Please see the Kubernetes Development Guide for initial setup. Once you have the development environment setup as explained in that guide, you also need to install jq

Building cluster federation artifacts should be as simple as running:

make build

You can specify the docker registry to tag the image using the KUBE_REGISTRY environment variable. Please make sure that you use the same value in all the subsequent commands.

To push the built docker images to the registry, run:

make push

To initialize the deployment run:

(This pulls the installer images)

make init

To deploy the clusters and install the federation components, edit the ${KUBE_ROOT}/_output/federation/config.json file to describe your clusters and run:

make deploy

To turn down the federation components and tear down the clusters run:

make destroy

Ideas for improvement

  1. Continue with destroy phase even in the face of errors.

    The bash script sets set -e errexit which causes the script to exit at the very first error. This should be the default mode for deploying components but not for destroying/cleanup.

Analytics

Expand ▾ Collapse ▴

Directories

Path Synopsis
apis
federation/v1beta1
+k8s:deepcopy-gen=package,register +k8s:conversion-gen=k8s.io/kubernetes/federation/apis/federation +k8s:openapi-gen=true +k8s:defaulter-gen=TypeMeta Package v1beta1 is a generated protocol buffer package.
+k8s:deepcopy-gen=package,register +k8s:conversion-gen=k8s.io/kubernetes/federation/apis/federation +k8s:openapi-gen=true +k8s:defaulter-gen=TypeMeta Package v1beta1 is a generated protocol buffer package.
client
clientset_generated/federation_clientset
This package has the automatically generated clientset.
This package has the automatically generated clientset.
clientset_generated/federation_clientset/fake
This package has the automatically generated fake clientset.
This package has the automatically generated fake clientset.
clientset_generated/federation_clientset/scheme
This package contains the scheme of the automatically generated clientset.
This package contains the scheme of the automatically generated clientset.
clientset_generated/federation_clientset/typed/autoscaling/v1
This package has the automatically generated typed clients.
This package has the automatically generated typed clients.
clientset_generated/federation_clientset/typed/autoscaling/v1/fake
Package fake has the automatically generated clients.
Package fake has the automatically generated clients.
clientset_generated/federation_clientset/typed/batch/v1
This package has the automatically generated typed clients.
This package has the automatically generated typed clients.
clientset_generated/federation_clientset/typed/batch/v1/fake
Package fake has the automatically generated clients.
Package fake has the automatically generated clients.
clientset_generated/federation_clientset/typed/core/v1
This package has the automatically generated typed clients.
This package has the automatically generated typed clients.
clientset_generated/federation_clientset/typed/core/v1/fake
Package fake has the automatically generated clients.
Package fake has the automatically generated clients.
clientset_generated/federation_clientset/typed/extensions/v1beta1
This package has the automatically generated typed clients.
This package has the automatically generated typed clients.
clientset_generated/federation_clientset/typed/extensions/v1beta1/fake
Package fake has the automatically generated clients.
Package fake has the automatically generated clients.
clientset_generated/federation_clientset/typed/federation/v1beta1
This package has the automatically generated typed clients.
This package has the automatically generated typed clients.
clientset_generated/federation_clientset/typed/federation/v1beta1/fake
Package fake has the automatically generated clients.
Package fake has the automatically generated clients.
clientset_generated/federation_internalclientset
This package has the automatically generated clientset.
This package has the automatically generated clientset.
clientset_generated/federation_internalclientset/fake
This package has the automatically generated fake clientset.
This package has the automatically generated fake clientset.
clientset_generated/federation_internalclientset/scheme
This package contains the scheme of the automatically generated clientset.
This package contains the scheme of the automatically generated clientset.
clientset_generated/federation_internalclientset/typed/autoscaling/internalversion
This package has the automatically generated typed clients.
This package has the automatically generated typed clients.
Package fake has the automatically generated clients.
clientset_generated/federation_internalclientset/typed/batch/internalversion
This package has the automatically generated typed clients.
This package has the automatically generated typed clients.
clientset_generated/federation_internalclientset/typed/batch/internalversion/fake
Package fake has the automatically generated clients.
Package fake has the automatically generated clients.
clientset_generated/federation_internalclientset/typed/core/internalversion
This package has the automatically generated typed clients.
This package has the automatically generated typed clients.
clientset_generated/federation_internalclientset/typed/core/internalversion/fake
Package fake has the automatically generated clients.
Package fake has the automatically generated clients.
clientset_generated/federation_internalclientset/typed/extensions/internalversion
This package has the automatically generated typed clients.
This package has the automatically generated typed clients.
Package fake has the automatically generated clients.
clientset_generated/federation_internalclientset/typed/federation/internalversion
This package has the automatically generated typed clients.
This package has the automatically generated typed clients.
Package fake has the automatically generated clients.
cmd
federation-apiserver
apiserver is the main api server and master for the cluster.
apiserver is the main api server and master for the cluster.
federation-apiserver/app
Package app does all of the work necessary to create a Kubernetes APIServer by binding together the API, master and APIServer infrastructure.
Package app does all of the work necessary to create a Kubernetes APIServer by binding together the API, master and APIServer infrastructure.
federation-apiserver/app/options
Package options contains flags and options for initializing federation-apiserver.
Package options contains flags and options for initializing federation-apiserver.
pkg
dnsprovider
dnsprovider supplies interfaces for dns service providers (e.g.
dnsprovider supplies interfaces for dns service providers (e.g.
dnsprovider/providers/aws/route53
route53 is the implementation of pkg/dnsprovider interface for AWS Route53
route53 is the implementation of pkg/dnsprovider interface for AWS Route53
dnsprovider/providers/aws/route53/stubs
internal implements a stub for the AWS Route53 API, used primarily for unit testing purposes
internal implements a stub for the AWS Route53 API, used primarily for unit testing purposes
dnsprovider/providers/coredns
Package coredns is the implementation of pkg/dnsprovider interface for CoreDNS
Package coredns is the implementation of pkg/dnsprovider interface for CoreDNS
dnsprovider/providers/coredns/stubs
Package stubs implements a stub for the EtcdKeysAPI, used primarily for unit testing purposes
Package stubs implements a stub for the EtcdKeysAPI, used primarily for unit testing purposes
dnsprovider/providers/google/clouddns
clouddns is the implementation of pkg/dnsprovider interface for Google Cloud DNS
clouddns is the implementation of pkg/dnsprovider interface for Google Cloud DNS
federation-controller
Package federation_controller contains code for controllers (like the cluster controller).
Package federation_controller contains code for controllers (like the cluster controller).
federation-controller/cluster
Package cluster contains code for syncing cluster
Package cluster contains code for syncing cluster
federation-controller/util
TODO: consider moving it to a more generic package.
TODO: consider moving it to a more generic package.
federation-controller/util/deletionhelper
Package to help federation controllers to delete federated resources from underlying clusters when the resource is deleted from federation control plane.
Package to help federation controllers to delete federated resources from underlying clusters when the resource is deleted from federation control plane.
federation-controller/util/finalizers
Helper functions for manipulating finalizers.
Helper functions for manipulating finalizers.
kubefed/init
TODO(madhusdancs): 1.
TODO(madhusdancs): 1.
plugin
pkg/admission/schedulingpolicy
Package schedulingpolicy implements a webhook that queries an external API to obtain scheduling decisions for Federated sources.
Package schedulingpolicy implements a webhook that queries an external API to obtain scheduling decisions for Federated sources.
registry