env setup
k3s node setup
POD_CIDR="10.42.0.0/16"
API_SERVER_IP=10.201.24.235
API_SERVER_PORT=6443
cilium-cli install --set k8sServiceHost=${API_SERVER_IP} --set k8sServicePort=${API_SERVER_PORT} --set ipam.operator.clusterPoolIPv4PodCIDRList=$POD_CIDR --set kubeProxyReplacement=true --helm-set=operator.replicas=1
helm upgrade --install vsphere-cpi vsphere-cpi/vsphere-cpi --namespace kube-system --set config.enabled=true --set config.vcenter="10.201.23.1" --set config.username='capv@vsphere.local' --set config.password="Giantswarm-2024" --set config.datacenter="giant-swarm"
kubectl patch node k3s-1-control-plane-hxf82 --type=json -p='[{"op":"remove","path":"/spec/taints"}]'
install fleet controller
ref: https://fleet.rancher.io/how-tos-for-operators/installation#_configuration_for_multi_cluster
get API server url for fleet controller cluster:
API_SERVER_URL=$(kubectl --kubeconfig ../kubeconfigs/k3s-mc.kubeconfig config view -o json --raw | jq -r '.clusters[] | select(.name=="k3s-mc").cluster["server"]')
get API server CA bundle for fleet controller cluster:
kubectl --kubeconfig /tmp/k3s-mc.kubeconfig config view -o json --raw | jq -r '.clusters[] | select(.name=="k3s-mc").cluster["certificate-authority-data"]' | base64 -d > ca.pem
API_SERVER_CA="ca.pem"
helm -n cattle-fleet-system install --create-namespace --wait --set apiServerURL="$API_SERVER_URL" --set-file apiServerCA="$API_SERVER_CA" fleet fleet/fleet
install fleet agent
extract values from join token secret:
k view-secret k3s-test > extracted-values.yaml
install fleet-agent in the managed cluster:
helm -n cattle-fleet-system install --create-namespace --wait --set clientID="k3s-test" --values extracted-values.yaml fleet-agent fleet/fleet-agent