如何通过API自动获取Rancher版本以匹配安装对应CLI?
解决Rancher API自动获取版本并匹配CLI下载的问题
可行方案步骤
1. 正确获取Rancher服务器版本
使用Rancher管理API的server-version设置端点,可直接获取服务器版本号:
- 请求端点:
GET /v1/management.cattle.io.settings/server-version - 认证方式:将在
/dashboard/account页面生成的Access Key和Secret Key用冒号拼接,做Base64编码后放在请求头:Authorization: Basic <Base64(AccessKey:SecretKey)> - 响应示例:
提取{ "type": "management.cattle.io.setting", "id": "server-version", "value": "v2.7.5" }value字段即可得到Rancher服务器版本。
2. 构造CLI下载链接
Rancher CLI的下载链接遵循固定格式,直接用获取到的版本号拼接即可:
https://github.com/rancher/cli/releases/download/<Rancher版本>/rancher-linux-amd64.tar.gz
例如版本为v2.7.5时,链接为https://github.com/rancher/cli/releases/download/v2.7.5/rancher-linux-amd64.tar.gz
3. 修复cli-url-linux端点的403问题
如果仍想使用官方提供的CLI链接端点:
- 请求端点:
GET /v1/management.cattle.io.settings/cli-url-linux - 同样使用Basic Auth方式传递API密钥(而非Bearer token),即可正常返回预构造好的Linux CLI下载链接。
CI/CD流水线构建示例(Dockerfile片段)
ARG RANCHER_URL ARG RANCHER_ACCESS_KEY ARG RANCHER_SECRET_KEY # 动态获取版本并下载CLI RUN apt-get update && apt-get install -y curl base64 jq \ && AUTH=$(echo -n "${RANCHER_ACCESS_KEY}:${RANCHER_SECRET_KEY}" | base64) \ && RANCHER_VERSION=$(curl -s -H "Authorization: Basic ${AUTH}" ${RANCHER_URL}/v1/management.cattle.io.settings/server-version | jq -r '.value') \ && curl -LO "https://github.com/rancher/cli/releases/download/${RANCHER_VERSION}/rancher-linux-amd64.tar.gz" \ && tar xzf rancher-linux-amd64.tar.gz \ && mv rancher-*/rancher /usr/local/bin/ \ && rm -rf rancher-* rancher-linux-amd64.tar.gz
内容的提问来源于stack exchange,提问作者Just a student
相关产品推荐
相关产品推荐

