mirror of
https://github.com/clastix/kamaji.git
synced 2026-02-14 18:10:03 +00:00
99 lines
3.4 KiB
Markdown
99 lines
3.4 KiB
Markdown
# Kamaji Control Plane Provider
|
|
|
|
Kamaji can act as a Cluster API Control Plane provider using the `KamajiControlPlane` custom resource, which defines the control plane of a Tenant Cluster.
|
|
|
|
Here is an example of a `KamajiControlPlane`:
|
|
|
|
```yaml
|
|
kind: KamajiControlPlane
|
|
apiVersion: controlplane.cluster.x-k8s.io/v1alpha1
|
|
metadata:
|
|
name: '${CLUSTER_NAME}'
|
|
namespace: '${CLUSTER_NAMESPACE}'
|
|
spec:
|
|
apiServer:
|
|
extraArgs:
|
|
- --cloud-provider=external
|
|
controllerManager:
|
|
extraArgs:
|
|
- --cloud-provider=external
|
|
dataStoreName: default
|
|
addons:
|
|
coreDNS: {}
|
|
kubeProxy: {}
|
|
konnectivity: {}
|
|
kubelet:
|
|
cgroupfs: systemd
|
|
preferredAddressTypes:
|
|
- InternalIP
|
|
network:
|
|
serviceType: LoadBalancer
|
|
version: ${KUBERNETES_VERSION}
|
|
```
|
|
|
|
You can use this as reference in a standard `Cluster` custom resource as controlplane provider:
|
|
|
|
```yaml
|
|
kind: Cluster
|
|
apiVersion: cluster.x-k8s.io/v1beta1
|
|
metadata:
|
|
labels:
|
|
cluster.x-k8s.io/cluster-name: '${CLUSTER_NAME}'
|
|
name: '${CLUSTER_NAME}'
|
|
namespace: '${CLUSTER_NAMESPACE}'
|
|
spec:
|
|
controlPlaneRef:
|
|
apiVersion: controlplane.cluster.x-k8s.io/v1beta1
|
|
kind: KamajiControlPlane
|
|
name: '${CLUSTER_NAME}'
|
|
clusterNetwork:
|
|
pods:
|
|
cidrBlocks:
|
|
- '${PODS_CIDR}'
|
|
services:
|
|
cidrBlocks:
|
|
- '${SERVICES_CIDR}'
|
|
infrastructureRef:
|
|
apiVersion: infrastructure.cluster.x-k8s.io/v1beta1
|
|
kind: ... # your infrastructure kind may vary
|
|
name: '${CLUSTER_NAME}'
|
|
```
|
|
|
|
!!! info "Full Reference"
|
|
For a full reference of the `KamajiControlPlane` custom resource, please see the [Reference APIs](https://doc.crds.dev/github.com/clastix/cluster-api-control-plane-provider-kamaji/controlplane.cluster.x-k8s.io/KamajiControlPlane/v1alpha1).
|
|
|
|
## Getting started with the Kamaji Control Plane Provider
|
|
|
|
Cluster API Provider Kamaji is compliant with the `clusterctl` contract, which means you can use it with the `clusterctl` CLI to create and manage your Kamaji based clusters.
|
|
|
|
!!! info "Options for install Cluster API"
|
|
There are two ways to getting started with Cluster API:
|
|
|
|
* using `clusterctl` to install the Cluster API components.
|
|
* using the Cluster API Operator. Please refer to the [Cluster API Operator](https://cluster-api-operator.sigs.k8s.io/) guide for this option.
|
|
|
|
### Prerequisites
|
|
|
|
* [`clusterctl`](https://cluster-api.sigs.k8s.io/user/quick-start#install-clusterctl) installed in your workstation to handle the lifecycle of your clusters.
|
|
* [`kubectl`](https://kubernetes.io/docs/tasks/tools/) installed in your workstation to interact with your clusters.
|
|
* [Kamaji](../getting-started/index.md) installed in your Management Cluster.
|
|
|
|
### Initialize the Management Cluster
|
|
|
|
Use `clusterctl` to initialize the Management Cluster. When executed for the first time, `clusterctl init` will fetch and install the Cluster API components in the Management Cluster
|
|
|
|
```bash
|
|
clusterctl init --control-plane kamaji
|
|
```
|
|
|
|
As result, the following Cluster API components will be installed:
|
|
|
|
* Cluster API Provider in `capi-system` namespace
|
|
* Bootstrap Provider in `capi-kubeadm-bootstrap-system` namespace
|
|
* Kamaji Control Plane Provider in `kamaji-system` namespace
|
|
|
|
In the next step, we will create a fully functional Kubernetes cluster using the Kamaji Control Plane Provider and the Infrastructure provider of choice.
|
|
|
|
For a complete list of supported infrastructure providers, please refer to the [other providers](other-providers.md) page.
|
|
|