如何用 make quick 构建 Rancher 本地自定义镜像并通过 Helm 参数 rancherImage 部署验证?
如何用 make quick 构建 Rancher 本地自定义镜像并通过 Helm 参数 rancherImage 部署验证【免费下载链接】rancherComplete container management platform项目地址: https://gitcode.com/GitHub_Trending/ra/rancher如果你在 Rancher 仓库里改动了代码想在提 PR 之前先跑一遍自己的容器镜像可以走仓库内置的本地流程先用make quick构建出打着自己 tag 的 Rancher 镜像再用 Helm 的rancherImage和rancherImageTag两个参数把它部署到集群里验证。这条路径的前提是本机已具备make、docker且支持docker buildx因为该脚本用 buildx 做跨架构构建以及helm并在 Rancher 项目根目录下操作。第一步用 make quick 构建本地镜像从 Rancher 项目根目录执行REPOlocalhost:5000/my-test-repo/image TAGtag make quick其中REPO指定镜像仓库位置TAG指定镜像 tag二者都替换成你自己的值。上面这条命令出自 docs/development.md 的 “Generate a local container image” 一节按当前 OS 和架构构建镜像。make quick背后调用的是 dev-scripts/quick 脚本Makefile 中quick-server、quick-agent等目标也都转发到它。了解脚本行为有助于判断构建产物未指定TARGET时它会依次构建${REPO}/rancher:${TAG}和${REPO}/rancher-agent:${TAG}两个镜像分别对应 Dockerfile 的server和agent两个 target如果显式指定ARCH则可以跨构建其他架构的镜像文档给出的示例REPOlocalhost:5000/my-test-repo/image \ TAGtag \ ARCHamd64 \ make quick若未设置TAG脚本会从.github/workflows/pull-request.yml中解析默认 tag当前为v2.16-commit-head格式commit 取git rev-parse --short HEAD注意脚本在PUSHtrue时才会执行docker push。本地验证场景不设置PUSH镜像只留在本机 Docker 中。脚本还有一个默认动作构建前会curl下载对应 KDM 分支的data.json到仓库目录这是构建必需的依赖下载无需额外处理。第二步通过 Helm 部署自定义镜像构建完成后用 Helm 把自定义镜像部署到目标集群cattle-system命名空间helm upgrade --install rancher/rancher \ --namespace cattle-system \ --create-namespace \ --set rancherImagemy-test-repo/image \ --set rancherImageTagdev-tag这里rancherImage对应第一步构建出的镜像仓库路径不带 registry 前缀时按 chart 默认逻辑拼接带 registry 的完整名也可以rancherImageTag必须填你在make quick时使用的TAG值即上面示例中的tag——Helm 侧的 tag 与构建侧的TAG不一致Pod 就会拉不到镜像。参数与模板的对应关系可以在 chart/templates/_helpers.tpl 中核对rancherImage一旦设置就会直接覆盖默认的rancher/rancher仓库rancherImageTag的默认值回退到 chart 的appVersion显式--set后会覆盖它。最终渲染进 Deployment 的镜像行形如{{ rancher.image }}:{{ rancher.imageTag }}见 chart/templates/deployment.yaml。一个需要注意的弃用提示chart/values.yaml 中标明rancherImage、rancherImageTag、rancherImagePullPolicy已被弃用建议改用image.*字段image.registry、image.repository、image.tag并且如果用带 registry 的镜像名需要拆开放。docs/development.md 的部署示例仍使用rancherImage/rancherImageTag二者都能工作安装时 chart 的 NOTES 也会打印相应的 deprecated 提示。验证部署结果部署完成后按以下顺序核对确认渲染出的镜像参数确实是你的自定义镜像helm get values -n cattle-system rancher输出中应能看到你--set进去的rancherImage与rancherImageTag。确认 Rancher Pod 已按预期跑起来kubectl get pods -n cattle-system -l apprancher首次安装时 Helm 的 NOTESchart/templates/NOTES.txt会提示 “Rancher may take several minutes to fully initialize”需要等证书签发、容器启动和 Ingress 规则就绪Pod 就绪前不要急于判定失败。如果是首次安装可以取 bootstrap 密码验证服务可用echo https://hostname/dashboard/?setup$(kubectl get secret --namespace cattle-system bootstrap-secret -o go-template{{ .data.bootstrapPassword|base64decode }})将hostname替换为你安装时提供的.Values.hostname该值未设置时NOTES 会给出 “Rancher must have a valid hostname” 的警告浏览器打开生成的 URL 即可进入首次登录流程。适用边界make quick面向开发者的本地构建构建的是当前工作区的代码不是发布版镜像quick-server、quick-agent、quick-binary-server、quick-k3s-images等 Makefile 目标是同一脚本的不同TARGET变体只构建 server 时可以用make quick-server。跨架构构建如ARCHamd64依赖docker buildx构建平台由OS/ARCH变量控制脚本中OS默认linux、ARCH默认amd64。本文所有命令均要求从 Rancher 项目根目录执行make quick的脚本会解析项目内的package/Dockerfile与go.mod不在根目录执行会直接失败。更多本地开发流程例如 CAPRKE2 v2prov 测试环境可以继续参考 docs/development.md 的后续章节。【免费下载链接】rancherComplete container management platform项目地址: https://gitcode.com/GitHub_Trending/ra/rancher创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考