You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: docs/book/src/developer/core/controllers/cluster.md
+2-2
Original file line number
Diff line number
Diff line change
@@ -5,7 +5,7 @@ The Cluster controller is responsible for reconciling the Cluster resource.
5
5
In order to allow Cluster provisioning on different type of infrastructure, The Cluster resource references
6
6
an InfraCluster object, e.g. AWSCluster, GCPCluster etc.
7
7
8
-
The [InfraCluster resource contract](../../providers/contracts/infra-cluster.md) defines a set of rules a provider is expected to comply in order to allow
8
+
The [InfraCluster resource contract](../../providers/contracts/infra-cluster.md) defines a set of rules a provider is expected to comply with in order to allow
9
9
the expected interactions with the Cluster controller.
10
10
11
11
Among those rules:
@@ -18,7 +18,7 @@ Among those rules:
18
18
Similarly, in order to support different solutions for control plane management, The Cluster resource references
19
19
an ControlPlane object, e.g. KubeadmControlPlane, EKSControlPlane etc.
20
20
21
-
The [ControlPlane resource contract](../../providers/contracts/control-plane.md) defines a set of rules a provider is expected to comply in order to allow
21
+
The [ControlPlane resource contract](../../providers/contracts/control-plane.md) defines a set of rules a provider is expected to comply with in order to allow
22
22
the expected interactions with the Cluster controller.
23
23
24
24
Considering all the info above, the Cluster controller's main responsibilities are:
The Machine controller is responsible for reconciling the Machine resource.
4
+
5
+
In order to allow Machine provisioning on different type of infrastructure, The Machine resource references
6
+
an InfraMachine object, e.g. AWSMachine, GCMachine etc.
7
+
8
+
The [InfraMachine resource contract](../../providers/contracts/infra-machine.md) defines a set of rules a provider is expected to comply with in order to allow
9
+
the expected interactions with the Machine controller.
10
+
11
+
Among those rules:
12
+
- InfraMachine MUST report a [provider ID](../../providers/contracts/infra-machine.md#inframachine-provider-id) for the Machine
13
+
- InfraMachine SHOULD take into account the [failure domain](../../providers/contracts/infra-machine.md#inframachine-failure-domain) where machines should be placed in
14
+
- InfraMachine SHOULD surface machine's [addresses](../../providers/contracts/infra-machine.md#inframachine-addresses) to help operators when troubleshooting issues
15
+
- InfraMachine MUST report when Machine's infrastructure is [fully provisioned](../../providers/contracts/infra-machine.md#inframachine-initialization-completed)
16
+
- InfraMachine SHOULD report [conditions](../../providers/contracts/infra-machine.md#inframachine-conditions)
17
+
- InfraMachine SHOULD report [terminal failures](../../providers/contracts/infra-machine.md#inframachine-terminal-failures)
18
+
19
+
Similarly, in order to support different machine bootstrappers, The Machine resource references
20
+
a BootstrapConfig object, e.g. KubeadmBoostrapConfig etc.
21
+
22
+
The [BootstrapConfig resource contract](../../providers/contracts/bootstrap-config.md) defines a set of rules a provider is expected to comply with in order to allow
23
+
the expected interactions with the Machine controller.
4
24
5
-
The Machine controller's main responsibilities are:
25
+
Considering all the info above, the Machine controller's main responsibilities are:
6
26
7
-
* Setting an OwnerReference on:
8
-
* Each Machine object to the Cluster object.
9
-
* The associated BootstrapConfig object.
10
-
* The associated InfrastructureMachine object.
11
-
* Copy data from `BootstrapConfig.Status.DataSecretName` to `Machine.Spec.Bootstrap.DataSecretName` if
12
-
`Machine.Spec.Bootstrap.DataSecretName` is empty.
13
-
* Setting NodeRefs to be able to associate machines and Kubernetes nodes.
14
-
* Deleting Nodes in the target cluster when the associated machine is deleted.
15
-
* Cleanup of related objects.
16
-
* Keeping the Machine's Status object up to date with the InfrastructureMachine's Status object.
17
-
* Finding Kubernetes nodes matching the expected providerID in the workload cluster.
27
+
* Setting an OwnerReference on the infrastructure object referenced in `Machine.spec.infrastructureRef`.
28
+
* Setting an OwnerReference on the bootstrap object referenced in `Machine.spec.bootstrap.configRef`.
29
+
* Keeping the Machine's status in sync with the InfraMachine and BootstrapConfig's status.
30
+
* Finding Kubernetes nodes matching the expected providerID in the workload cluster.
31
+
* Setting NodeRefs to be able to associate machines and Kubernetes nodes.
32
+
* Monitor Kubernetes nodes and propagate labels to them.
33
+
* Cleanup of all owned objects so that nothing is dangling after deletion.
34
+
* Drain nodes and wait for volumes being detached by CSI plugins.
0 commit comments