A Cluster object represents a Kubernetes cluster that Shipper can deploy to. It is an administrative interface.
They serve two purposes:
- Enable Shipper to connect to the cluster to manage it
- Enable administrators to influence how Releases are scheduled to this cluster.
The second point allows administrators to perform tasks like load balancing workloads between clusters, shift workloads from one cluster to another, or drain clusters for risky maintenance. For examples of these tasks, see the administrator’s guide.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
apiVersion: shipper.booking.com/v1alpha1 kind: Cluster metadata: name: kube-us-east1-a namespace: "" spec: apiMaster: https://10.0.0.1 capabilities: - gpu - ssd - high-memory-nodes region: us-east1 scheduler: unschedulable: false weight: 100
apiMaster is the URL of the Kubernetes cluster API server. Shipper uses
this to connect to the cluster to manage it. This is the same URL as in
~/.kube/config for enabling
capabilities is a required field that lists the capabilities the
cluster has. Capabilities are arbitrary tags that can be used by Application
objects to select clusters while rolling out. For example, one Kubernetes
cluster might have nodes provisioned with GPUs for video encoding. Adding ‘gpu’
as a Cluster capability will allow application developers to specify ‘gpu’ in
their set of Application
clusterRequirements if their application needs
access to that feature.
region is a required field that specifies the region the cluster belongs to.
scheduler.unschedulable is an optional field that causes clusters to
be ignored during rollout cluster selection. This allows operators to mark
clusters to be drained. Default:
scheduler.weight is an optional field that assigns a weight to the
cluster. The weight influences the priority of the cluster during rollout
cluster selection. Default:
scheduler.identity is an optional field that assigns an identity to
the cluster different than its
.metadata.name value. This allows operators
to make one cluster ‘impersonate’ another in order to transfer all of the
Applications on one cluster to another specific cluster. Default:
More information on how to use these fields to manage a fleet of clusters can be found in the Administrator’s guide.
Cluster objects do not currently have a meaningful