rancher-rke2 修改 server-url
|字数总计: 1.1k|阅读时长: 4分钟|阅读量:
本文永久链接: https://www.xtplayer.cn/rancher/rancher-rke2-change-server-url/
更新 rancher helm 安装参数
使用安装或者上一次更新 rancher 的 helm 参数,修改其中的 hostname,然后重新执行更新。
更新 rancher ssl 证书
ssl 证书与域名存在绑定关系,更换 rancher 访问域名,通常需要涉及到域名 ssl 证书更新。如果 ssl 证书是绑定在 ingress 上,那么可以使用以下命令,在 local 集群中更新 rancher 域名 ssl 证书。
kubectl -n cattle-system create secret tls tls-rancher-ingress \ --cert=tls.crt \ --key=tls.key \ --dry-run --save-config -o yaml | kubectl apply -f -
|
如果是自签名 ssl 证书,还需要涉及到 CA 证书更新。
kubectl -n cattle-system create secret generic tls-ca \ --from-file=cacerts.pem \ --dry-run --save-config -o yaml | kubectl apply -f -
|
修改 rancher server-url
- 通过 helm 使用新的 hostname 更新完成之后,使用新的域名登录 rancher ui。
- 进入 rancher ui 后,点击左下角地球图标,在 Settings 中找到 server-url ,将其修改为新的域名。
获取节点请求 token
此处的 token 不能使用用户 API KEY,会报 500 错误。需要进入集群管理,点击目标集群,点击节点注册,在节点注册命令中获取此 token。
进入集群管理,点击目标集群。
在节点注册中,获取注册 token 备用。

更新 rancher-system-agent 配置
拷贝并修改以下脚本内容:
替换脚本中的 CATTLE_SERVER_URL,注意结尾不要添加 ‘/’。
替换脚本中的 CATTLE_TOKEN 为上一步骤中获取到的 token 值。
将脚本保存在所有 rke2 集群节点中,并执行 bash xxx.sh。
#!/bin/bash set -e CATTLE_SERVER_URL=https://xxx.xxxx.cn
CATTLE_TOKEN=xxxxxxxxxxxhwqd5m CATTLE_AGENT_VAR_DIR=/var/lib/rancher/agent
CURL_LOG="-sS"
mkdir -p ${CATTLE_AGENT_VAR_DIR}
if [ ! -f "/etc/rancher/agent/cattle-id" ]; then echo "Error: /etc/rancher/agent/cattle-id not found" >&2 exit 1 fi
systemctl stop rancher-system-agent.service
if [ -f ${CATTLE_AGENT_VAR_DIR}/rancher2_connection_info.json ]; then BACKUP_FILE="${CATTLE_AGENT_VAR_DIR}/rancher2_connection_info-$(date +%Y%m%d_%H%M%S).json" cp ${CATTLE_AGENT_VAR_DIR}/rancher2_connection_info.json ${BACKUP_FILE} echo "Backup created: ${BACKUP_FILE}" fi
CATTLE_ID=$(cat /etc/rancher/agent/cattle-id) echo "Using cattle-id: ${CATTLE_ID}"
HTTP_CODE=$(curl -kL --connect-timeout 60 --max-time 60 --write-out "%{http_code}\n" ${CURL_LOG} \ -H "Authorization: Bearer ${CATTLE_TOKEN}" \ -H "X-Cattle-Id: ${CATTLE_ID}" \ "${CATTLE_SERVER_URL}/v3/connect/agent" \ -o ${CATTLE_AGENT_VAR_DIR}/rancher2_connection_info.json.tmp)
case $HTTP_CODE in 200|201|204) if [ ! -s ${CATTLE_AGENT_VAR_DIR}/rancher2_connection_info.json.tmp ]; then echo "Error: Downloaded file is empty" >&2 exit 1 fi if ! jq . ${CATTLE_AGENT_VAR_DIR}/rancher2_connection_info.json.tmp > /dev/null 2>&1; then echo "Error: Downloaded file is not valid JSON" >&2 cat ${CATTLE_AGENT_VAR_DIR}/rancher2_connection_info.json.tmp exit 1 fi mv ${CATTLE_AGENT_VAR_DIR}/rancher2_connection_info.json.tmp ${CATTLE_AGENT_VAR_DIR}/rancher2_connection_info.json chmod 600 ${CATTLE_AGENT_VAR_DIR}/rancher2_connection_info.json echo "Connection info updated successfully" echo "Restarting rancher-system-agent service..." if systemctl restart rancher-system-agent; then echo "Service restarted successfully" sleep 3 if systemctl is-active --quiet rancher-system-agent; then echo "rancher-system-agent is running" echo "Recent logs:" journalctl -u rancher-system-agent.service --since "1 minute ago" --no-pager --lines=10 else echo "Warning: rancher-system-agent service is not running" >&2 exit 1 fi else echo "Error: Failed to restart rancher-system-agent service" >&2 exit 1 fi ;; *) echo "Error: Failed to update connection info, HTTP code: ${HTTP_CODE}" >&2 if [ -f ${CATTLE_AGENT_VAR_DIR}/rancher2_connection_info.json.tmp ]; then echo "Error response:" >&2 cat ${CATTLE_AGENT_VAR_DIR}/rancher2_connection_info.json.tmp >&2 rm -f ${CATTLE_AGENT_VAR_DIR}/rancher2_connection_info.json.tmp fi exit 1 ;; esac
|
更新 fleet 配置
在修改 rancher 访问域名后,fleet 持续交付相关组件状态可能会不正常。查看相关 pod,可以发现在连接旧的 rancher 域名。如果出现这种情况,点击 持续交付 按钮,接着点击集群,选择目标集群,点击强制更新。