尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

如何构建并推送 OpenSandbox 的 K8s controller 与 task-executor 镜像

如何构建并推送 OpenSandbox 的 K8s controller 与 task-executor 镜像 如何构建并推送 OpenSandbox 的 K8s controller 与 task-executor 镜像【免费下载链接】OpenSandboxSecure, Fast, and Extensible Sandbox runtime for AI agents.项目地址: https://gitcode.com/GitHub_Trending/ope/OpenSandbox如果你需要修改 OpenSandbox 的 Kubernetes Operator 代码并为自己部署的集群准备 controller manager 和 task-executor 两个镜像就需要走一遍构建 推送流程。OpenSandbox 在kubernetes/目录下提供了完整的构建入口推荐路径是 build.sh 构建脚本它通过 Docker Buildx 同时构建linux/amd64和linux/arm64两种架构并推送到镜像仓库备选路径包括 Makefile 目标和 GitHub Actions 工作流。本文依据 BUILD-IMAGES.md 整理这两条主路径的执行命令、推送目标仓库、本地测试加载方式和常见故障处理。准备条件按照 DEVELOPMENT.md 的前置要求Docker——用于构建镜像Docker Buildx——build.sh的推送模式依赖docker buildx build --platform ... --push本机需可用已获取 OpenSandbox 仓库代码操作在kubernetes/子目录下进行需要推送时拥有目标镜像仓库的登录凭证Docker Hub、阿里云 ACR 或 GHCR取决于你要使用的仓库。进入工作目录cd kubernetes主路径用 build.sh 构建并推送先本地构建、不推送只想验证构建流程时把PUSHfalse脚本只会构建并--load到本地镜像# 构建 controller 镜像 COMPONENTcontroller TAGv0.1.0 PUSHfalse ./build.sh # 构建 task-executor 镜像 COMPONENTtask-executor TAGv0.1.0 PUSHfalse ./build.sh本地模式有两个特点只构建linux/amd64单架构本地镜像名不带仓库前缀即controller:v0.1.0和task-executor:v0.1.0构建成功后脚本会打印Successfully built (local only):和实际镜像名。文档示例把构建结果加载到本地集群做测试# 加载到 Kind 集群 kind load docker-image opensandbox-controller:test # 或加载到 minikube minikube image load opensandbox-controller:test注意一个文档与脚本的不一致上面的示例写的是opensandbox-controller:test但build.sh本地模式实际产出的镜像名是controller:testIMAGE_NAME只有controller/task-executor。执行kind load/minikube image load时请以脚本打印的镜像名为准。构建并推送到镜像仓库推送前先用docker login登录目标仓库。文档给出的默认推送目标是阿里云 ACRGHCR 为可选项# 登录阿里云 ACR docker login sandbox-registry.cn-zhangjiakou.cr.aliyuncs.com # 可选同时推送到 GitHub Container Registry docker login ghcr.io # 构建并推送 controller 镜像PUSH 默认为 true可省略 COMPONENTcontroller TAGv0.1.0 ./build.sh # 构建并推送 task-executor 镜像 COMPONENTtask-executor TAGv0.1.0 ./build.sh脚本支持的环境变量变量说明默认值COMPONENT要构建的组件可选controller、task-executorcontrollerTAG镜像 taglatestPUSH是否推送到远程仓库trueGHCR_REPO可选的 GHCR 仓库前缀例如ghcr.io/opensandbox-group/opensandbox空推送成功后脚本会打印Successfully built and pushed:并列出本次推送的全部镜像地址。各仓库下的镜像命名规则Docker Hubopensandbox/controller:tag、opensandbox/task-executor:tag阿里云 ACRsandbox-registry.cn-zhangjiakou.cr.aliyuncs.com/opensandbox/controller:tag、sandbox-registry.cn-zhangjiakou.cr.aliyuncs.com/opensandbox/task-executor:tagGHCR设置GHCR_REPO后ghcr.io/owner/opensandbox/controller:tag、ghcr.io/owner/opensandbox/task-executor:tag默认多架构平台为linux/amd64和linux/arm64。如需构建其他架构文档给出的方式是修改build.sh中的PLATFORMS变量。使用私有镜像仓库文档说明可以把推送目标改成自己的仓库编辑build.sh中的ACR_REPO变量或构建时通过环境变量传入ACR_REPOmyregistry.com/myrepo COMPONENTcontroller TAGv0.1.0 ./build.sh。需要说明的是当前仓库中的 build.sh 将ACR_REPO硬编码为阿里云地址并未读取同名环境变量因此以修改脚本内ACR_REPO赋值这一条为准环境变量写法是文档给出的目标形态两者不一致时以脚本实际行为为准。备选路径一MakefileMakefile 提供了等价但更底层的 docker 命令适合只做单架构本地构建的场景Makefile 中docker-build-controller直接调用docker buildcd kubernetes # 本地构建 controller 镜像不推送 make docker-build CONTROLLER_IMGmyregistry/opensandbox-controller:v0.1.0 # 本地构建 task-executor 镜像不推送 make docker-build-task-executor TASK_EXECUTOR_IMGmyregistry/opensandbox-task-executor:v0.1.0 # 推送到仓库 make docker-push CONTROLLER_IMGmyregistry/opensandbox-controller:v0.1.0 make docker-push-task-executor TASK_EXECUTOR_IMGmyregistry/opensandbox-task-executor:v0.1.0与build.sh的区别Makefile 路径按主机平台单次构建、不自动处理多架构镜像名完全由你传入的CONTROLLER_IMG/TASK_EXECUTOR_IMG决定也更容易指向任意私有仓库。备选路径二GitHub Actions 触发构建如果构建的是仓库上游镜像而非本机修改版本可以直接用 CI。工作流定义见 .github/workflows/publish-components.yml。手动触发在仓库的 Actions 页面选择 Publish Components Image 工作流点击 Run workflow在参数中Component下拉选择controller或task-executorImage tag填写镜像 tag例如v0.1.0。Git tag 触发文档推荐方式按k8s/component/version的命名约定打 tag 并推送即可自动构建component为controller或task-executor# 构建 controller v0.1.0 git tag k8s/controller/v0.1.0 git push origin k8s/controller/v0.1.0 # 构建 task-executor v0.1.0 git tag k8s/task-executor/v0.1.0 git push origin k8s/task-executor/v0.1.0构建结果验证本地构建脚本末尾打印Successfully built (local only):及镜像名即表示构建成功随后可按上文用kind load docker-image或minikube image load加载到本地集群验证镜像名以脚本输出为准。推送构建脚本末尾打印Successfully built and pushed:及全部推送的镜像地址即表示构建与推送完成各仓库中的镜像按上文命名规则查找。镜像准备好之后部署侧可以直接引用这些地址。例如 DEVELOPMENT.md 中的 Helm 安装示例就是传入自建镜像地址helm install opensandbox-controller ./charts/opensandbox-controller \ --set controller.image.repositorymyregistry/controller \ --set controller.image.tagv0.1.0 \ --namespace opensandbox-system --create-namespace常见故障处理BUILD-IMAGES.md 给出三类已知问题Docker 权限问题执行sudo usermod -aG docker $USER会把当前用户加入docker组需要执行newgrp docker或重新登录 shell 生效sudo usermod -aG docker $USER newgrp dockerBuildx 不可用确认 Buildx 已启用并检查 builder 状态docker buildx create --use docker buildx inspect --bootstrap磁盘空间不足清理 Docker 缓存。注意docker system prune -a和docker builder prune -a会删除本机上未使用的镜像、容器和构建缓存在共享机器上执行前先确认不影响他人docker system prune -a docker builder prune -a限制与边界build.sh默认推送目标是 Docker Hub 与阿里云 ACR 两个仓库GHCR 需要额外设置GHCR_REPO并登录本地模式PUSHfalse不推送、只构建linux/amd64。镜像构建基于 kubernetes/Dockerfilegolang:1.25.12-alpine 多阶段构建controller 和 task-executor 共用该 Dockerfile通过PACKAGE构建参数区分入口task-executor 额外以USERID0构建。文档中本地测试加载示例的镜像名与脚本实际产出的镜像名不一致本文已按脚本实际行为标注执行加载命令前先看构建输出。【免费下载链接】OpenSandboxSecure, Fast, and Extensible Sandbox runtime for AI agents.项目地址: https://gitcode.com/GitHub_Trending/ope/OpenSandbox创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表