diff --git a/docs/src/flavors/clusterclass-kubeadm.md b/docs/src/flavors/clusterclass-kubeadm.md new file mode 100644 index 000000000..c361694a3 --- /dev/null +++ b/docs/src/flavors/clusterclass-kubeadm.md @@ -0,0 +1,59 @@ +# Kubeadm ClusterClass +## Specification +| Control Plane | CNI | OS | Installs ClusterClass | +|---------------|--------|--------|-----------------------| +| Kubeadm | Cilium | Ubuntu | Yes | +## Prerequisites +[Quickstart](../topics/getting-started.md) completed +## Usage +### Create clusterClass and first cluster +1. Generate clusterClass & cluster manifests + ```bash + clusterctl generate cluster test-cluster --flavor clusterclass-kubeadm > test-cluster.yaml + ``` +2. Apply cluster manifests + ```bash + kubectl apply -f test-cluster.yaml + ``` +### Create second cluster +1. Generate cluster manifests + ```bash + clusterctl generate cluster test-cluster-2 --flavor clusterclass-kubeadm > test-cluster-2.yaml + ``` + ```yaml + apiVersion: cluster.x-k8s.io/v1beta1 + kind: Cluster + metadata: + labels: + ccm: linode + cni: cilium + crs: test-cluster-2-crs + name: test-cluster-2 + namespace: default + spec: + clusterNetwork: + pods: + cidrBlocks: + - 192.168.128.0/17 + topology: + class: kubeadm + controlPlane: + replicas: 1 + variables: + - name: region + value: us-ord + - name: controlPlaneMachineType + value: g6-standard-2 + - name: workerMachineType + value: g6-standard-2 + version: v1.29.1 + workers: + machineDeployments: + - class: default-worker + name: md-0 + replicas: 1 + ``` +2. Apply cluster manifests + ```bash + kubectl apply -f test-cluster-2.yaml + ``` diff --git a/docs/src/flavors/default.md b/docs/src/flavors/default.md new file mode 100644 index 000000000..ed6ce50f6 --- /dev/null +++ b/docs/src/flavors/default.md @@ -0,0 +1,16 @@ +# Default +## Specification +| Control Plane | CNI | OS | Installs ClusterClass | +|---------------|--------|--------|-----------------------| +| Kubeadm | Cilium | Ubuntu | No | +## Prerequisites +[Quickstart](../topics/getting-started.md) completed +## Usage +1. Generate cluster yaml + ```bash + clusterctl generate cluster test-cluster --flavor clusterclass > test-cluster.yaml + ``` +2. Apply cluster yaml + ```bash + kubectl apply -f test-cluster.yaml + ``` diff --git a/docs/src/flavors/flavors.md b/docs/src/flavors/flavors.md new file mode 100644 index 000000000..5d70bb859 --- /dev/null +++ b/docs/src/flavors/flavors.md @@ -0,0 +1,20 @@ +# Flavors + +In `clusterctl` the infrastructure provider authors can provide different types +of cluster templates referred to as "flavors". You can use the `--flavor` flag +to specify which flavor to use for a cluster, e.g: + +```bash +clusterctl generate cluster test-cluster --flavor clusterclass +``` + +To use the default flavor, omit the `--flavor` flag. + +See the [`clusterctl` flavors docs](https://cluster-api.sigs.k8s.io/clusterctl/commands/generate-cluster.html#flavors) for more information. + + +## supported flavors + +- [Default](default.md) +- [Cluster Class Kubeadm](clusterclass-kubeadm.md) +- [k3s](k3s.md) diff --git a/docs/src/flavors/k3s.md b/docs/src/flavors/k3s.md new file mode 100644 index 000000000..1bd153f1a --- /dev/null +++ b/docs/src/flavors/k3s.md @@ -0,0 +1,34 @@ +# K3s +## Specification +| Control Plane | CNI | OS | Installs ClusterClass | +|-----------------------------|--------|--------|-----------------------| +| [k3s](https://docs.k3s.io/) | Cilium | Ubuntu | No | +## Prerequisites +* [Quickstart](../topics/getting-started.md) completed +* Select a [k3s kubernetes version](https://github.com/k3s-io/k3s/releases) to set for the kubernetes version + ```bash + export KUBERNETES_VERSION=v1.29.1+k3s2 + ``` +* Installed [k3s bootstrap provider](https://github.com/k3s-io/cluster-api-k3s) into your management cluster + * Add `k3s-clusterctl.yaml` config for the k3s bootstrap/control plane providers + ```yaml + providers: + - name: "k3s" + url: https://github.com/k3s-io/cluster-api-k3s/releases/latest/bootstrap-components.yaml + type: "BootstrapProvider" + - name: "k3s" + url: https://github.com/k3s-io/cluster-api-k3s/releases/latest/control-plane-components.yaml + ``` + * Install the k3s provider into your management cluster + ```shell + clusterctl init --bootstrap k3s --control-plane k3s --config k3s-clusterctl.yaml + ``` +## Usage +1. Generate cluster yaml + ```bash + clusterctl generate cluster test-cluster --kubernetes-version ${K3S_KUBERNETES_VERSION} --flavor k3s > test-k3s-cluster.yaml + ``` +2. Apply cluster yaml + ```bash + kubectl apply -f test-k3s-cluster.yaml + ``` diff --git a/docs/src/topics/getting-started.md b/docs/src/topics/getting-started.md index bb6327681..ca2969742 100644 --- a/docs/src/topics/getting-started.md +++ b/docs/src/topics/getting-started.md @@ -17,14 +17,22 @@ For more information please see the [Linode Guide](https://www.linode.com/docs/products/tools/api/guides/manage-api-tokens/#create-an-api-token). ``` -## Setting up your Linode environment +## Setting up your cluster environment variable -Once you have provisioned your PAT, save it in an environment variable: +Once you have provisioned your PAT, save it in an environment variable along with other required settings: ```bash -export LINODE_TOKEN="" +# Cluster settings +export CLUSTER_NAME=capl-cluster +export KUBERNETES_VERSION=v1.29.1 + +# Linode settings +export LINODE_REGION=us-ord +export LINODE_TOKEN= +export LINODE_CONTROL_PLANE_MACHINE_TYPE=g6-standard-2 +export LINODE_MACHINE_TYPE=g6-standard-2 ``` -## Building your first cluster -Please continue from the [setting up the environment](../developers/development.md#setting-up-the-environment) -section for creating your first Kubernetes cluster on Linode using Cluster API. +## Deploying your first cluster + +please refer to the [default flavor](../flavors/default.md) section for creating your first Kubernetes cluster on Linode using Cluster API. diff --git a/templates/flavors/README.md b/templates/flavors/README.md index c297af5a1..fe61bd1cf 100644 --- a/templates/flavors/README.md +++ b/templates/flavors/README.md @@ -1,16 +1,8 @@ # Flavors -In `clusterctl` the infrastructure provider authors can provide different types -of cluster templates referred to as "flavors". You can use the `--flavor` flag -to specify which flavor to use for a cluster, e.g: +## [Flavor usage documentation](https://linode.github.io/cluster-api-provider-linode/flavors/flavors.html) -```shell -clusterctl generate cluster test-cluster --flavor clusterclass -``` - -To use the default flavor, omit the `--flavor` flag. - -See the [`clusterctl` flavors docs](https://cluster-api.sigs.k8s.io/clusterctl/commands/generate-cluster.html#flavors) for more information. +## Development This directory contains each of the flavors for CAPL. Each directory besides `base` will be used to create a flavor by running `kustomize build` on the directory. The name of the directory will be