A CLI and kubernetes CLI plugin that allows you to interact with open-cluster-management to manage your Hybrid Cloud presence from the command-line.
curl -L https://raw.githubusercontent.com/open-cluster-management-io/clusteradm/main/install.sh | bash
GO111MODULE=off go get -u open-cluster-management.io/clusteradm/...
The binaries for several platforms are available here.
- Download the compressed file from here
- Uncompress the file and place the output in a directory of your $PATH
Go 1.17 is required in order to build or contribute on this project as it leverage the go:embed
tip.
The binary will be installed in $GOPATH/bin
git clone https://github.com/open-cluster-management-io/clusteradm.git
cd clusteradm
make build
clusteradm
# Initialize the hub
kubectl config use-context <hub cluster context> # kubectl config use-context kind-hub
clusteradm init
# Request a managed cluster to join the hub
kubectl config use-context <managed cluster context> # kubectl config use-context kind-managed-cluster
clusteradm join --hub-token <token> --hub-apiserver <api server url> --cluster-name <cluster name>
# Accept the managed cluster request on the hub
kubectl config use-context <hub cluster context> # kubectl config use-context kind-hub
clusteradm accept --clusters <list of clusters> # clusteradm accept --clusters c1,c2,...
After each above clusteradm command, the clusteradm will print out the next clusteradm command to execute which can be copy/paste.
See our Contributing Document for more information.
The commands are composed of a verb and a noun and then a number of parameters.
Logs can be gather by setting the klog flag -v
.
To get the logs in a separate file:
clusteradm <subcommand> -v 2 > <your_logfile>
or
clusteradm <subcommand> -v 99 --logtostderr=false --log-file=<your_log_file>
Display the clusteradm version and the kubeversion
clusteradm version
Initialize the hub by deploying the hub side resources to manage clusters.
clusteradm init [--use-bootstrap-token]
it returns the command line to launch on the spoke to join the hub.
NOTE: Do not run init command against a multicluster-controlplane instance. It is already an initialized hub on start. Instead, use
clusteradm get token --use-bootstrap-token
to get the join command.
Get the latest token to import a new managed cluster.
clusteradm get token --context ${CTX_HUB_CLUSTER}
Install the agent on the spoke.
clusteradm join --hub-token <token> --hub-apiserver <hub_apiserver_url> --cluster-name c1 [--ca-file <path-to-ca-file>] [--force-internal-endpoint-lookup]
it returns the command line to launch on the hub the accept the spoke onboarding.
NOTE: The
--ca-file
flag is used to provide a valid CA for hub. The ca data is fetched from cluster-info configmap in kube-public namespace of the hub cluster, then from kube-root-ca.crt configmap in kube-public namespace if the cluster-info configmap does not exist.
NOTE: If you're trying to join a hub cluster which is initialized from a kind cluster, please set the
--force-internal-endpoint-lookup
flag.
Accept the CSRs on the hub to approve the spoke clusters to join the hub.
clusteradm accept --clusters <cluster1>, <cluster2>,....
Uninstall the agent on the spoke
clusteradm unjoin --cluster-name c1
Note: the applied resources on managed cluster would be checked and prompt a warning if still exist any.
Clean up the multicluster hub control plane and other initialized resources on the hub cluster
clusteradm clean --context ${CTX_HUB_CLUSTER}
Install specific built-in add-on(s) to the hub cluster.
clusteradm install hub-addon --names application-manager
clusteradm install hub-addon --names governance-policy-framework
Enable specific add-on(s) agent deployment to the given managed clusters of the specified namespace
clusteradm addon enable --names application-manager --namespace <namespace> --clusters <cluster1>,<cluster2>,....
clusteradm addon enable --names governance-policy-framework --namespace <namespace> --clusters <cluster1>,<cluster2>,....
clusteradm addon enable --names config-policy-controller --namespace <namespace> --clusters <cluster1>,<cluster2>,....
Create and Deploy a Sample Subscription Application
clusteradm create sampleapp sampleapp1