mirror of
https://github.com/open-cluster-management-io/ocm.git
synced 2026-02-14 10:00:11 +00:00
Add cluster-api solution (#78)
* Add cluster-api solution Signed-off-by: Jian Qiu <jqiu@redhat.com> * Resolve comments Signed-off-by: Jian Qiu <jqiu@redhat.com> Signed-off-by: Jian Qiu <jqiu@redhat.com>
This commit is contained in:
49
solutions/cluster-api/README.md
Normal file
49
solutions/cluster-api/README.md
Normal file
@@ -0,0 +1,49 @@
|
||||
# Working with the Cluster API project
|
||||
|
||||
[Cluster API](https://cluster-api.sigs.k8s.io/) is a Kubernetes sub-project focused on providing declarative APIs and
|
||||
tooling to simplify provisioning, upgrading, and operating multiple Kubernetes clusters. This doc is a guideline on how
|
||||
to use the Cluster API project and the [Open Cluster Management (OCM)](https://open-cluster-management.io/) project together.
|
||||
|
||||
## Prerequisite
|
||||
Download and install [clusteradm](https://github.com/open-cluster-management-io/clusteradm/releases). For Linux OS, run the following commands:
|
||||
|
||||
```shell
|
||||
wget -qO- https://github.com/open-cluster-management-io/clusteradm/releases/latest/download/clusteradm_linux_amd64.tar.gz | sudo tar -xvz -C /usr/local/bin/
|
||||
|
||||
sudo chmod +x /usr/local/bin/clusteradm
|
||||
```
|
||||
|
||||
Follow the instruction [here](https://cluster-api.sigs.k8s.io/user/quick-start.html) to install the `clusterctl`.
|
||||
|
||||
## Initialize the Cluster API management plane and create a cluster
|
||||
|
||||
Before initilize the management plane, some feature gates should be enabled:
|
||||
|
||||
```shell
|
||||
export CLUSTER_TOPOLOGY=true
|
||||
export EXP_CLUSTER_RESOURCE_SET=true
|
||||
```
|
||||
|
||||
Next initiate the Cluster API management plane by following [this](https://cluster-api.sigs.k8s.io/user/quick-start.html#initialize-the-management-cluster)
|
||||
|
||||
Now create a cluster on any cloud provider by following the instruction [here](https://cluster-api.sigs.k8s.io/user/quick-start.html#create-your-first-workload-cluster).
|
||||
|
||||
## Initialize the OCM multicluster control plane hub cluster and register the newly created cluster
|
||||
|
||||
The OCM multicluster control plane hub can be run in the same cluster as the Cluster API management plane. Use the following command to initialize the hub cluster:
|
||||
|
||||
```
|
||||
clusteradm init --use-bootstrap-token
|
||||
```
|
||||
|
||||
Register the newly created cluster by running the following command:
|
||||
|
||||
```
|
||||
./register-join.sh <cluster-name> # ./register-join.sh capi-cluster
|
||||
```
|
||||
|
||||
The registration process might take a while. After it's done, you can run the following command to verify the newly created cluster has successfully joined the hub cluster:
|
||||
|
||||
```
|
||||
kubectl get managedcluster
|
||||
```
|
||||
29
solutions/cluster-api/register-join.sh
Executable file
29
solutions/cluster-api/register-join.sh
Executable file
@@ -0,0 +1,29 @@
|
||||
#!/bin/bash
|
||||
|
||||
cd $(dirname ${BASH_SOURCE})
|
||||
|
||||
set -e
|
||||
|
||||
CLUSTER_NAME=$1
|
||||
|
||||
echo "get bootstrap token from ocm hub cluster"
|
||||
joincmd=$(clusteradm get token --use-bootstrap-token | grep clusteradm)
|
||||
|
||||
echo "Join $1 to hub"
|
||||
$(echo ${joincmd} --dry-run --output-file join.yaml | sed "s/<cluster_name>/$CLUSTER_NAME/g")
|
||||
kubectl create secret generic import-secret-$1 --from-file=join.yaml --type=addons.cluster.x-k8s.io/resource-set
|
||||
|
||||
cat << EOF | kubectl apply -f -
|
||||
apiVersion: addons.cluster.x-k8s.io/v1alpha3
|
||||
kind: ClusterResourceSet
|
||||
metadata:
|
||||
name: import-$CLUSTER_NAME
|
||||
spec:
|
||||
strategy: "ApplyOnce"
|
||||
clusterSelector:
|
||||
matchLabels:
|
||||
cluster.x-k8s.io/cluster-name: $CLUSTER_NAME
|
||||
resources:
|
||||
- name: import-secret
|
||||
kind: Secret
|
||||
EOF
|
||||
Reference in New Issue
Block a user