Installation Target¶
An InstallationTarget describes the concrete set of clusters where the release
should be installed. It is created by the Release Controller’s Scheduler after the
concrete clusters are picked using clusterRequirements
.
The Installation Controller acts on InstallationTarget objects by getting the chart, values, and sidecars from the associated Release object, rendering the chart per-cluster, and inserting those objects into each target cluster. Where applicable, these objects are always created with 0 replicas.
It updates the status
resource to indicate progress for each target cluster.
Example¶
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | apiVersion: shipper.booking.com/v1alpha1
kind: InstallationTarget
metadata:
name: api-3f498d25-0
namespace: service-directory
spec:
clusters:
- kube-us-east1-a
- kube-eu-west2-b
status:
clusters:
- conditions:
- lastTransitionTime: 2018-12-06T16:53:24Z
status: "True"
type: Operational
- lastTransitionTime: 2018-12-06T16:53:24Z
status: "True"
type: Ready
name: kube-us-east1-a
status: Installed
- conditions:
- lastTransitionTime: 2018-12-06T16:53:24Z
status: "True"
type: Operational
- lastTransitionTime: 2018-12-06T16:53:24Z
status: "True"
type: Ready
name: kube-eu-west2-b
status: Installed
|
Spec¶
.spec.clusters
¶
The clusters
field is a list of cluster names known to Shipper where the associated Release should be installed.
Installation means rendering all the objects in the Chart and inserting them
into the cluster.
1 2 3 4 | spec:
clusters:
- kube-us-east1-a
- kube-eu-west2-b
|
Status¶
.status.clusters
¶
.status.clusters
is a list of objects representing the installation status
of all clusters where the associated Release objects must be installed.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | status:
clusters:
- conditions:
- lastTransitionTime: 2018-12-06T16:53:24Z
status: "True"
type: Operational
- lastTransitionTime: 2018-12-06T16:53:24Z
status: "True"
type: Ready
name: kube-us-east1-a
status: Installed
- conditions:
- lastTransitionTime: 2018-12-06T16:53:24Z
status: "True"
type: Operational
- lastTransitionTime: 2018-12-06T16:53:24Z
status: "True"
type: Ready
name: kube-eu-west2-b
status: Installed
|
The following table displays the keys a cluster status entry should have:
Key | Description |
---|---|
name | The Application Cluster name. For example, kube-us-east1-a. |
status | Failed in case of failure, or Installed in case of success. |
message | A message describing the reason Shipper decided that it has failed. |
conditions | A list of all conditions observed for this particular Application Cluster. |
.status.clusters.conditions
¶
The following table displays the different conditions statuses and reasons reported in the InstallationTarget object for the Operational condition type:
Type | Status | Reason | Description |
---|---|---|---|
Operational | True | N/A | Cluster is reachable, and seems to be operational. |
Operational | False | TargetClusterClientError | There is a problem contacting the Application Cluster; Shipper
either doesn’t know about this Application Cluster, or there is
another issue when accessing the Application Cluster. Details
can be found in the .message field. |
Operational | False | ServerError | Some error has happened Shipper couldn’t classify. Details can be
found in the .message field. |
The following table displays the different conditions statuses and reasons reported in the InstallationTarget object for the Ready condition type:
Type | Status | Reason | Description |
---|---|---|---|
Ready | True | N/A | Indicates that Kubernetes has achieved the desired state related to the InstallationTarget object. |
Ready | False | ServerError | Shipper could not either create an object in the Application Cluster,
or an error occurred when trying to fetch an object from the
Application Cluster. Details can be found in the .message field. |
Ready | False | ChartError | There was an issue while processing a Helm Chart, such as invalid
templates being used as input, or rendered templates that do not
match any known Kubernetes object. Details can be found in the
.message field. |
Ready | False | ClientError | Shipper couldn’t create a resource client to process a particular
rendered object. Details can be found in the .message field. |
Ready | False | UnknownError | Some error Shipper couldn’t classify has happened. Details can be
found in the .message field. |