feat(k01): add agent join mode to install-k3s.sh

This commit is contained in:
zetaloop
2026-05-05 12:29:56 +08:00
parent c456f3e296
commit e92bdf30d9
2 changed files with 58 additions and 36 deletions
+49 -21
View File
@@ -7,7 +7,52 @@ STRIMZI_VERSION="1.0.0"
REDIS_OP_VERSION="0.24.0"
MONGODB_OP_VERSION="1.8.0"
if ! command -v kubectl >/dev/null 2>&1; then
MODE="${1:-server}"
if [ "$MODE" != "server" ] && [ "$MODE" != "agent" ]; then
echo "usage: $0 [server|agent]" >&2
exit 1
fi
if [ ! -f /root/registry-password ]; then
echo "need /root/registry-password (zot admin password)" >&2
exit 1
fi
write_registries() {
mkdir -p /etc/rancher/k3s
cat > /etc/rancher/k3s/registries.yaml <<EOF
mirrors:
${REGISTRY_HOST}:
endpoint:
- "https://${REGISTRY_HOST}"
configs:
${REGISTRY_HOST}:
auth:
username: admin
password: $(cat /root/registry-password)
EOF
}
if [ "$MODE" = "agent" ]; then
if [ -z "${K3S_URL:-}" ] || [ -z "${K3S_TOKEN:-}" ]; then
echo "agent mode requires K3S_URL and K3S_TOKEN env" >&2
echo " on the server: cat /var/lib/rancher/k3s/server/node-token" >&2
echo " then on agent: K3S_URL=https://<server-ip>:6443 K3S_TOKEN=<token> $0 agent" >&2
exit 1
fi
write_registries
if ! command -v k3s-agent >/dev/null 2>&1 && ! systemctl is-active --quiet k3s-agent; then
curl -sfL https://get.k3s.io | K3S_URL="$K3S_URL" K3S_TOKEN="$K3S_TOKEN" sh -
else
systemctl restart k3s-agent
fi
echo
echo "k3s agent joined ${K3S_URL}"
exit 0
fi
if ! systemctl is-active --quiet k3s; then
curl -sfL https://get.k3s.io | \
INSTALL_K3S_EXEC="--disable=traefik --write-kubeconfig-mode=644" \
sh -
@@ -22,28 +67,10 @@ if ! command -v helm >/dev/null 2>&1; then
apt-get install -y helm
fi
if [ ! -f /root/registry-password ]; then
echo "need /root/registry-password (zot admin password)" >&2
exit 1
fi
mkdir -p /etc/rancher/k3s
cat > /etc/rancher/k3s/registries.yaml <<EOF
mirrors:
${REGISTRY_HOST}:
endpoint:
- "https://${REGISTRY_HOST}"
configs:
${REGISTRY_HOST}:
auth:
username: admin
password: $(cat /root/registry-password)
EOF
write_registries
systemctl restart k3s
export KUBECONFIG=/etc/rancher/k3s/k3s.yaml
until kubectl get nodes >/dev/null 2>&1; do sleep 2; done
K01_DIR="$(cd "$(dirname "$0")" && pwd)"
@@ -75,4 +102,5 @@ kubectl -n redis-operator rollout status deploy/redis-operator --timeout=300s
kubectl -n mongodb-operator rollout status deploy/mongodb-kubernetes-operator --timeout=300s
echo
echo "k3s + 4 operators ready"
echo "k3s server + 4 operators ready"
echo "node token: $(cat /var/lib/rancher/k3s/server/node-token)"