Skip to content

Commit c6ae009

Browse files
Improve provider definition in docs
1 parent f784f1e commit c6ae009

File tree

3 files changed

+86
-13
lines changed

3 files changed

+86
-13
lines changed

docs/book/src/reference/glossary.md

Lines changed: 75 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,13 @@ The process of turning a server into a Kubernetes node. This may involve assembl
2323

2424
A temporary cluster that is used to provision a Target Management cluster.
2525

26+
### Bootstrap provider
27+
28+
Refers to a [provider](#provider) that implements a solution for the [bootstrap](#bootstrap) process.
29+
Bootstrap provider's interaction with Cluster API is based on what is defined in the [Cluster API contract](#contract).
30+
31+
See [CABPK](#CABPK).
32+
2633
# C
2734
---
2835

@@ -83,6 +90,12 @@ Cluster API Provider VMware Cloud Director
8390
### CAPZ
8491
Cluster API Provider Azure
8592

93+
### Cloud provider
94+
95+
Or __Cloud service provider__
96+
97+
Refers to an information technology (IT) company that provides computing resources (e.g. AWS, Azure, Google, etc.).
98+
8699
### Cluster
87100

88101
A full Kubernetes deployment. See Management Cluster and Workload Cluster.
@@ -98,23 +111,48 @@ Or __Cluster API project__
98111

99112
The Cluster API sub-project of the SIG-cluster-lifecycle. It is also used to refer to the software components, APIs, and community that produce them.
100113

114+
See [core provider](#core-provider)
115+
101116
### Cluster API Runtime
102117

103118
The Cluster API execution model, a set of controllers cooperating in managing the Kubernetes cluster lifecycle.
104119

120+
### Contract
121+
122+
Or __Cluster API contract__
123+
124+
Defines a set of rules a [provider](#provider) is expected to comply with in order to interact with Cluster API.
125+
Those rules can be in the form of CustomResourceDefinition (CRD) fields and/or expected behaviors to be implemented.
126+
105127
### Control plane
106128

107129
The set of Kubernetes services that form the basis of a cluster. See also [https://kubernetes.io/docs/concepts/#kubernetes-control-plane](https://kubernetes.io/docs/concepts/#kubernetes-control-plane) There are two variants:
108130

109131
* __Self-provisioned__: A Kubernetes control plane consisting of pods or machines wholly managed by a single Cluster API deployment.
110-
* __External__: A control plane offered and controlled by some system other than Cluster API (e.g., GKE, AKS, EKS, IKS).
132+
* __External__ or __Managed__: A control plane offered and controlled by some system other than Cluster API (e.g., GKE, AKS, EKS, IKS).
133+
134+
### Control plane provider
135+
136+
Refers to a [provider](#provider) that implements a solution for the management of a Kubernetes [control plane][#control-plane].
137+
Control plane provider's interaction with Cluster API is based on what is defined in the [Cluster API contract](#contract).
138+
139+
See [KCP](#KCP).
140+
141+
### Core provider
142+
143+
Refers to a [provider](#provider) that implements Cluster API core controllers; if you
144+
consider that the first project that must be deployed in a management Cluster is Cluster API itself, it should be clear why
145+
the Cluster API project is also referred to as the core provider.
146+
147+
See [CAPI](#cluster-api).
111148

112149
# D
113150
---
114151

115152
### Default implementation
116153

117-
A feature implementation offered as part of the Cluster API project, infrastructure providers can swap it out for a different one.
154+
A feature implementation offered as part of the Cluster API project and maintained by the CAPI core team; For example
155+
[KCP](#KCP) is a default implementation for a [control plane provider](#control-plane-provider).
118156

119157
# E
120158
---
@@ -145,7 +183,15 @@ see [Server](#server)
145183

146184
### Infrastructure provider
147185

148-
A source of computational resources (e.g. machines, networking, etc.). Examples for cloud include AWS, Azure, Google, etc.; for bare metal include VMware, MAAS, metal3.io, etc. When there is more than one way to obtain resources from the same infrastructure provider (e.g. EC2 vs. EKS) each way is referred to as a variant.
186+
Refers to a [provider](#provider) that implements provisioning of infrastructure/computational resources required by
187+
the Cluster or by Machines (e.g. VMs, networking, etc.).
188+
Infrastructure provider's interaction with Cluster API is based on what is defined in the [Cluster API contract](#contract).
189+
190+
Clouds infrastructure providers include AWS, Azure, or Google; while VMware, MAAS, or metal3.io can be defined as bare metal providers.
191+
When there is more than one way to obtain resources from the same infrastructure provider (e.g. EC2 vs. EKS in AWS) each way is referred to as a variant.
192+
193+
See e.g. [CAPA][#CAPA], [CAPC][#CAPC], [CAPD][#CAPD], [CAPG][#CAPG], [CAPH][#CAPH], [CAPIBM][#CAPIBM], [CAPN][#CAPN],
194+
[CAPX][#CAPX], [CAPK][#CAPK], [CAPO][#CAPO], [CAPOCI][#CAPOCI], [CAPV][#CAPV], [CAPVC][#CAPVC], [CAPVCD][#CAPVCD], [CAPZ][#CAPZ]
149195

150196
### Inline patch
151197

@@ -159,6 +205,11 @@ see [Server](#server)
159205

160206
A resource that does not mutate. In kubernetes we often state the instance of a running pod is immutable or does not change once it is run. In order to make a change, a new pod is run. In the context of [Cluster API](#cluster-api) we often refer to a running instance of a [Machine](#machine) as being immutable, from a [Cluster API](#cluster-api) perspective.
161207

208+
### IPAM provider
209+
210+
Refers to a [provider](#provider) that allows Cluster API to interact with IPAM solutions.
211+
IPAM provider's interaction with Cluster API is based on the `IPAddressClaim` and `IPAddress` API types.
212+
162213
# K
163214
---
164215

@@ -243,16 +294,27 @@ The pivot process is also used for deleting a management cluster and could also
243294

244295
### Provider
245296

246-
See [Infrastructure Provider](#infrastructure-provider)
297+
Or __Cluster API provider__
298+
299+
This term was originally used as abbreviation for [Infrastructure provider](#infrastructure-provider), but currently it is used
300+
to refer to any project that can be deployed and provides functionality to the Cluster API management Cluster.
301+
302+
See [Bootstrap provider](#bootstrap-provider), [Control plane provider](#control-plane-provider), [Core provider](#core-provider),
303+
[Infrastructure provider](#infrastructure-provider), [IPAM provider](#ipam-provider) [Runtime extension provider](#runtime-extension-provider).
247304

248305
### Provider components
249306

250-
Refers to the YAML artifact a provider publishes as part of their releases which is required to use the provider components,
251-
it usually contains Custom Resource Definitions (CRDs), Deployments (to run the controller manager), RBAC, etc.
307+
Refers to the YAML artifact published as part of the release process for [providers](#provider);
308+
it usually includes Custom Resource Definitions (CRDs), Deployments (to run the controller manager), RBAC, etc.
309+
310+
In some cases, the same expression is used to refer to the instances of above components deployed in a management cluster.
252311

253-
### Provider implementation
312+
See [Provider repository](#provider-repository)
254313

255-
Existing Cluster API implementations consist of generic and infrastructure provider-specific logic. The [infrastructure provider](#infrastructure-provider)-specific logic is currently maintained in infrastructure provider repositories.
314+
### Provider repository
315+
316+
Refers to the location where the YAML for [provider components](#provider-components) are hosted; usually a provider repository hosts
317+
many version of provider components, one for each released version.
256318

257319
# R
258320
---
@@ -263,6 +325,11 @@ An external component which is part of a system built on top of Cluster API that
263325

264326
See [Runtime SDK](#runtime-sdk)
265327

328+
### Runtime Extension provider
329+
330+
Refers to a [provider](#provider) that implements one or more [runtime extensions](#runtime-extension).
331+
Runtime Extension provider's interaction with Cluster API are based on the Open API spec for [runtime hooks](#runtime-hook).
332+
266333
### Runtime Hook
267334

268335
A single, well identified, extension point allowing applications built on top of Cluster API to hook into specific moments of the [Cluster API Runtime](#cluster-api-runtime), e.g. [BeforeClusterUpgrade](../tasks/experimental-features/runtime-sdk/implement-lifecycle-hooks.md#beforeclusterupgrade), [TopologyMutationHook](#topology-mutation-hook).

docs/book/src/user/concepts.md

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,21 +4,22 @@
44

55
## Management cluster
66

7-
A Kubernetes cluster that manages the lifecycle of Workload Clusters. A Management Cluster is also where one or more Infrastructure Providers run, and where resources such as Machines are stored.
7+
A Kubernetes cluster that manages the lifecycle of Workload Clusters. A Management Cluster is also where one or more providers run, and where resources such as Machines are stored.
88

99
### Workload cluster
1010

1111
A Kubernetes cluster whose lifecycle is managed by a Management Cluster.
1212

1313
## Infrastructure provider
1414

15-
A source of computational resources, such as compute and networking. For example, cloud Infrastructure Providers include AWS, Azure, and Google, and bare metal Infrastructure Providers include VMware, MAAS, and metal3.io.
15+
A component responsible for the provisioning of infrastructure/computational resources required by the Cluster or by Machines (e.g. VMs, networking, etc.).
16+
For example, cloud Infrastructure Providers include AWS, Azure, and Google, and bare metal Infrastructure Providers include VMware, MAAS, and metal3.io.
1617

1718
When there is more than one way to obtain resources from the same Infrastructure Provider (such as AWS offering both EC2 and EKS), each way is referred to as a variant.
1819

1920
## Bootstrap provider
2021

21-
The Bootstrap Provider is responsible for:
22+
A component responsible for turning a server into a Kubernetes node as well as for:
2223

2324
1. Generating the cluster certificates, if not otherwise specified
2425
1. Initializing the control plane, and gating the creation of other nodes until it is complete
@@ -28,11 +29,13 @@ The Bootstrap Provider is responsible for:
2829

2930
The [control plane](https://kubernetes.io/docs/concepts/overview/components/) is a set of components that serve the Kubernetes API and continuously reconcile desired state using [control loops](https://kubernetes.io/docs/concepts/architecture/controller/).
3031

31-
* __Machine-based__ control planes are the most common type. Dedicated machines are provisioned, running [static pods](https://kubernetes.io/docs/tasks/configure-pod-container/static-pod/) for components such as [kube-apiserver](https://kubernetes.io/docs/admin/kube-apiserver/), [kube-controller-manager](https://kubernetes.io/docs/admin/kube-controller-manager/) and [kube-scheduler](https://kubernetes.io/docs/admin/kube-scheduler/).
32+
* __Self-provisioned__: A Kubernetes control plane consisting of pods or machines wholly managed by a single Cluster API deployment.
33+
e.g kubeadm uses [static pods](https://kubernetes.io/docs/tasks/configure-pod-container/static-pod/) for running components such as [kube-apiserver](https://kubernetes.io/docs/admin/kube-apiserver/), [kube-controller-manager](https://kubernetes.io/docs/admin/kube-controller-manager/) and [kube-scheduler](https://kubernetes.io/docs/admin/kube-scheduler/)
34+
on control plane machines.
3235

3336
* __Pod-based__ deployments require an external hosting cluster. The control plane components are deployed using standard *Deployment* and *StatefulSet* objects and the API is exposed using a *Service*.
3437

35-
* __External__ control planes are offered and controlled by some system other than Cluster API, such as GKE, AKS, EKS, or IKS.
38+
* __External__ or __Managed__ control planes are offered and controlled by some system other than Cluster API, such as GKE, AKS, EKS, or IKS.
3639

3740
The default provider uses kubeadm to bootstrap the control plane. As of v1alpha3, it exposes the configuration via the `KubeadmControlPlane` object. The controller, `capi-kubeadm-control-plane-controller-manager`, can then create Machine and BootstrapConfig objects based on the requested replicas in the `KubeadmControlPlane` object.
3841

docs/proposals/20220221-runtime-SDK.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,8 @@ Refer to the [Cluster API Book Glossary](https://cluster-api.sigs.k8s.io/referen
6969
into specific moments of the workload cluster’s lifecycle, e.g. `BeforeClusterUpgrade`, `BeforeMachineRemediation`.
7070
- **Runtime Extension**: an external component which is part of a system/product built on top of Cluster API that can
7171
handle requests for a specific Runtime Hook.
72+
- **Runtime Extension Provider**: a project that provides a runtime extension and the yaml for installing it as part of
73+
its release artefacts.
7274

7375
## Summary
7476

@@ -145,6 +147,7 @@ To define the Runtime SDK and more specifically
145147
- Improve the Runtime Extension developer guide based on experience and feedback;
146148
- Add metrics about Runtime Extension calls (usage, usage vs deprecated versions, duration, error rate etc.);
147149
- Allow providers to use the same SDK to define their own hooks.
150+
- Improve clusterctl to deploy and manage runtime extension providers
148151

149152
## Proposal
150153

0 commit comments

Comments
 (0)