
CubeSandbox 一键发布包 sandbox-package.tar.gz构建、布局与安装链路全解析【免费下载链接】CubeSandboxInstant, Concurrent, Secure Lightweight Sandbox for AI Agents.项目地址: https://gitcode.com/GitHub_Trending/cu/CubeSandbox本篇文章围绕 CubeSandbox 开源项目中一键部署产物的核心文件sandbox-package.tar.gz展开完整梳理它从发布构建、目录布局到目标机安装的整条链路。文章基于 deploy/one-click/assets/package/README.md 的定义结合 build-release-bundle.sh、build-release-bundle-builder.sh、install.sh 等仓库源码说明该包如何组装、包含哪些组件制品、如何被目标机的install.sh消费与校验。读完本文你将掌握 CubeSandbox 一键发布包从构建产物到可运行环境的完整工作机制并能按需定制包内容与构建流程。一、核心产物sandbox-package.tar.gz 在发布链路中的位置如 assets/package/README.md 所述当发布包构建完成后build-release-bundle.sh会在发布目录中写入一个名为sandbox-package.tar.gz的压缩包该包是目标机install.sh的直接输入。也就是说这个 tar.gz 不是给人类直接解压查看的中间产物而是整个一键安装流程的软件物料单——所有需要在目标机上安装、渲染、启动的组件二进制、guest 镜像、内核、配置模板与运维脚本都被收拢进这一个文件里。在仓库中的具体路径约定是构建阶段deploy/one-click/.work/sandbox-package.tar.gz工作目录中临时生成发布阶段被复制到外层发布包的assets/package/sandbox-package.tar.gz消费阶段install.sh默认从自身所在目录的assets/package/sandbox-package.tar.gz读取可用ONE_CLICK_PACKAGE_TAR环境变量覆盖见 install.sh。整条链路可概括为build-release-bundle-builder.sh推荐入口 │ 在 builder 容器内并行编译组件二进制 → .work/prebuilt/ ▼ build-release-bundle.sh底层打包入口 │ 组装 .work/sandbox-package/ 目录 → 压缩为 sandbox-package.tar.gz │ 连同 install.sh / release-manifest.json / terraform 等 → 外层发布包 ▼ cube-sandbox-one-click-version.tar.gz │ 目标机解压后 ▼ install.sh ←—— 直接输入assets/package/sandbox-package.tar.gz二、构建入口推荐入口与底层打包脚本的分工2.1 推荐入口 build-release-bundle-builder.sh仓库建议的构建入口是 build-release-bundle-builder.sh它解决了组件多、编译环境杂的问题组件编译发生在 builder 容器内宿主机只需具备 docker、make、tar、python3 等常规工具不需要安装 Go、Cargo 工具链。其工作流程是将各组件编译任务拆分为相互独立的build track并行轨道包括s3lvol、cube-api、shim、agent、cube-init、cubelet、cubemaster、templatecenter、netstack、cubeops、volume-s3共 11 条使用一个有界并行调度器并发执行这些轨道它根据宿主机 CPU 数、MemAvailable与 cgroup 内存上限自动推导并发度每条重型 LTO 轨道按约 3 GiB 峰值内存预算并可用ONE_CLICK_BUILD_JOBS强制覆盖每条轨道的输出单独写入deploy/one-click/.work/build-logs/track.log无论成败都会在结束时完整回放便于一次构建暴露多个组件的独立故障编译产物落到deploy/one-click/.work/prebuilt/随后宿主机的build-release-bundle.sh通过ONE_CLICK_*_BIN系列变量直接复用这些预编译产物完成打包。从源码可以看到轨道间存在必须串行的依赖cubevs的 BPF 绑定bpf2go输出需要在轨道启动前统一生成一次make gencubemastercli若需嵌入envd载荷也须在轨道前串行编译通过ENVD_LOCAL_PATH传入见 README.md。2.2 底层入口 build-release-bundle.shbuild-release-bundle.sh 是低层打包入口负责组装与压缩两个阶段。它支持两种模式从源码构建直接调用build_go_binary/build_rust_binary在本机编译需要宿主机具备 go、cargo、make 等工具链复用预编译产物通过ONE_CLICK_CUBEMASTER_BIN、ONE_CLICK_CUBELET_BIN、ONE_CLICK_CUBE_API_BIN等*_BIN覆盖变量直接拷贝二进制跳过本地编译。这正是推荐入口的衔接方式。该脚本在开始阶段会做几件重要的事版本锚定以 git tag 解析CUBE_VERSION缺省0.0.0-dev、以git rev-parse HEAD解析CUBE_COMMIT并将构建时间CUBE_BUILD_TIME锚定到 HEAD 提交时间UTC保证同一提交上的重复构建产出字节一致的版本值从而复用 Go 构建缓存与 Rust target 目录版本注入通过-ldflags -X将版本三元组注入 Go 二进制如CubeMaster/pkg/base/version、Cubelet/pkg/version、CubeOps/internal/versionRust 侧则由build.rs读取环境变量注入静态链接约束cube-volume-s3必须以CGO_ENABLED0 GOOSlinux静态编译因为一键安装宿主机多为 Ubuntu 20.04 / glibc 2.31而cubelet、cubecli因依赖 nsenter、cubecow 需要 cgo走常规动态链接路径——tests/test_package_layout.sh 专门校验了这一差异压缩tar_czf函数在存在pigz时用其并行 gzip 加速ONE_CLICK_DISABLE_PIGZ1可强制单线程产物始终是标准.tar.gz消费者tar xzf不受影响。2.3 版本清单 release-manifest.json打包尾声脚本调用generate_release_manifest生成机器可读的release-manifest.json记录release_version、git_commit、built_at、built_by每个组件的version/commit/build_time/digest_sha256覆盖cubemaster、cubemastercli、templatecenter、cubelet、cubecli、cube-api、cubeops、cubeopscli、cube-agent、containerd-shim-cube-rs、cube-runtime以及 Docker 形态的cube-egress、cube-lifecycle-manager可选s3lvolguest 镜像的version、digest_sha256、base_image、agent_version内核的version、vmlinux_digest_sha256与可选的pvm_version/vmlinux_pvm_digest_sha256。该清单在安装时会被复制到目标机/usr/local/services/cubetoolbox/release-manifest.jsonVERSION.txt声明manifestrelease-manifest.json时install.sh会在替换现有安装前先校验清单存在且可解析。三、包内布局一个 sandbox-package 里装了什么从 build-release-bundle.sh 中mkdir -p ${PACKAGE_ROOT}/...的目录清单可以完整还原sandbox-package/的顶层布局包内路径内容与来源CubeAPI/bin/cube-apicube-api Rust 二进制来自 CubeAPIRust 侧产物CubeOps/bin/cubeops、cubeopscliGo 二进制CubeMaster/bin/cubemaster、cubemastercliconf.yaml来自 configs/single-node/cubemaster.yamlCubeMaster/plugin/卷插件cube-volume-cos、cube-volume-s3及配置样例、依赖安装脚本CubeTemplateCenter/bin/templatecenter二进制conf.yaml来自 configs/single-node/templatecenter.yamlCubelet/bin/cubelet、cubecli以及 contrib/nicl、cubelet-code-deploy.sh辅助工具Cubelet/config/、Cubelet/dynamicconf/来自 Cubelet/config 与 Cubelet/dynamicconfcube-shim/containerd-shim-cube-rs、cube-runtime来自构建期 runtime-layoutcube-image/本地构建的cube-guest-image-cpu.imgcube-init作为/sbin/initcube-agent/独立挂载的cube-agent.ext4与version文件cube-kernel-scf/固定内核制品vmlinux-bm/vmlinux-pvm并保持vmlinux符号链接指向激活变体cubeproxy/compose 模板、nginx.conf.template占位符渲染版、build-context/CubeProxy 源码上下文供镜像重建cube-lifecycle-manager/docker-compose 模板运行时镜像为预发布镜像部署时 pullcube-egress/version标记文件与scripts/cube-egress/cube-proxy-iptables-init.sh来自 CubeEgress/scriptsTPROXY 透明代理初始化脚本coredns/CoreDNS 模板webui/compose 模板、nginx 配置与构建好的dist/静态资源support/MySQL/Redis/MinIO 的 compose 模板与bin/mkcert证书工具systemd/systemd unit 模板cube-vs/network/bin/cubevsmapdump调试工具cube-snapshot/快照 spec可选缺失时插件降级为警告CubeS3lvol/静态链接的s3lvol_tgtNVMe/TCP over S3/COS 数据面与配套脚本仅在构建时设置ONE_CLICK_S3LVOL_DIR时打包scripts/one-click/、scripts/systemd/、scripts/common/、scripts/cube-diag/系统单元委托的运维脚本、公共工具库与诊断收集脚本terraform/tencentcloud/腾讯云集群部署器create.sh/destroy.sh/build_images.sh等打包前会清除本地 terraform state、kubeconfig、SSH 密钥与.env等敏感文件此外sandbox-package.tar.gz会被复制为外层发布包中的assets/package/sandbox-package.tar.gz同时外层还平铺了install.sh、install-compute.sh、down.sh、smoke.sh、env.example、lib/common.sh与release-manifest.json等目标机直接可用的文件。3.1 内核多版本清单与 PVM 切换包内的cube-kernel-scf/采用内容寻址的多版本清单设计详见 deploy/one-click/README.md 与 assets/kernel-artifacts/README.md默认内核vmlinux放在deploy/one-click/assets/kernel-artifacts/下可选 PVM 内核为vmlinux-pvm均可通过ONE_CLICK_CUBE_KERNEL_VMLINUX、ONE_CLICK_CUBE_KERNEL_PVM_VMLINUX覆盖安装时vmlinux-bm/vmlinux-pvm各自登记到component_versions/cube-kernel-scf/sha256-12 hex/目录内含vmlinux符号链接、variant与version文件运行时激活路径是cube-kernel-scf/vmlinux符号链接默认指向vmlinux-bm若目标机设置CUBE_PVM_ENABLE1安装则改指向vmlinux-pvm打包阶段脚本会顺手生成cube-kernel-scf.zip包含vmlinux、vmlinux-bm、可选的vmlinux-pvm用于内核制品的分发归档。四、消费端install.sh 如何解压与校验该包目标机安装流程详见 deploy/one-click/README.mdtar -xzf cube-sandbox-one-click-version.tar.gz cd cube-sandbox-one-click-version cp env.example .env sudo ./install.sh在 install.sh 中可以看到消费逻辑的关键细节ensure_file ${PACKAGE_TAR}确认包存在否则立即失败validate_declared_release_manifest按VERSION.txt声明校验release-manifest.json存在且可解析tar -xzf ${PACKAGE_TAR} -C ${WORK_DIR}解压出sandbox-package/目录透明兼容外层发布包如果PACKAGE_TAR指向的是外层cube-sandbox-one-click-*.tar.gz脚本会通过find ... -path */assets/package/sandbox-package.tar.gz找到嵌套的内层包并再次解压避免用户困惑于 required directory not found: .../sandbox-package 这类报错随后执行一系列基于包内容的快速失败预检校验Cubelet/config/config.toml的启动依赖如storage_backend cubecow时需要mkfs.ext4、mount、losetup、校验CubeS3lvol/bin/s3lvol_tgt的共享库与 AVX2 指令集、校验端口取值合法性等全部通过后才开始替换安装目录。安装完成后包内各组件被映射到目标机固定安装前缀/usr/local/services/cubetoolbox控制节点由cube-sandbox-control.target管理计算节点由cube-sandbox-compute.target管理MySQL/Redis/MinIO/cube-proxy/WebUI/CoreDNS 均以 Docker 容器形式由独立 systemd 单元托管。计算节点则通过install-compute.sh只安装 Cubelet、cube-shim、cube-image、cube-kernel-scf、cube-egress 等运行沙箱所需部分并指向控制节点的ONE_CLICK_CONTROL_PLANE_IP:3010CubeOps node-agent完成自动注册。五、构建过程的质量保障package 布局静态测试由于build-release-bundle.sh的目录布局被安装脚本、镜像构建脚本与 Terraform 部署器共同依赖任何目录改名或文件挪动都可能静默破坏后续链路。仓库用 tests/test_package_layout.sh 以无云、无 docker的静态方式守护这份契约核心校验点包括组件构建输入存在性CubeAPI/Dockerfile、CubeOps/Dockerfile、CubeMaster/Dockerfile、CubeProxy/Dockerfile等必须存在且build-release-bundle.sh必须通过build_or_copy_go_binary等指定函数完成拷贝与编译镜像名一致性对比build_images.sh中的 7 个CUBE_*_IMAGE与tke-addons.tf中的cube_*_image防止构建推送一个镜像名、TKE 拉取另一个导致的 ImagePullBackOff静态链接约束cube-volume-s3编译必须带CGO_ENABLED0而默认build_go_binary路径不得设置CGO_ENABLED0cubelet 需要 cgo重装清理对齐从build-release-bundle.sh提取PACKAGE_ROOT下的顶层组件目录与install.sh重装时的rm -rf清理清单比对防止新增组件在重装时残留旧版本cube-snapshot、cube-vs、terraform为有意保留的例外敏感资产防泄漏校验env.example与build.env.example职责拆分部署模板不得含*_BUILD_MODE/*_BIN键并确认build-release-bundle.sh不打包build.env.example脚本语法检查对所有构建入口与 Terraform 脚本执行bash -n。该测试定位为每个触碰 bundle/build 输入的 PR 都会运行的静态守卫是包布局契约持续有效的自动化保障。六、构建定制常用覆盖参数一览构建行为可通过环境变量全面定制构建机模板见 build.env.example目标机部署模板见 env.example# 复用预编译二进制推荐入口的衔接方式 export ONE_CLICK_CUBEMASTER_BIN/abs/path/to/cubemaster export ONE_CLICK_CUBELET_BIN/abs/path/to/cubelet export ONE_CLICK_CUBE_API_BIN/abs/path/to/cube-api export ONE_CLICK_VOLUME_S3_BIN/abs/path/to/cube-volume-s3 # 内核与 guest 镜像 export ONE_CLICK_CUBE_KERNEL_VMLINUX/abs/path/to/vmlinux export ONE_CLICK_CUBE_KERNEL_PVM_VMLINUX/abs/path/to/vmlinux-pvm export ONE_CLICK_GUEST_IMAGE_TAR/abs/path/to/cube-guest-image-amd64.tar.gz # 前端静态资源 export ONE_CLICK_WEB_DIST_DIR/abs/path/to/web/dist # 构建并发与压缩 export ONE_CLICK_BUILD_JOBS4 export ONE_CLICK_DISABLE_PIGZ1 # 版本与时间 export CUBE_VERSIONv1.0.0 export CUBE_COMMITgit-sha export CUBE_BUILD_TIME2026-01-01T00:00:00Z其中build.env.example是构建机专用的变量模板含*_BUILD_MODE、*_BIN等env.example是目标机部署专用的变量模板含CUBE_SANDBOX_NODE_IP、ONE_CLICK_DEPLOY_ROLE、CUBE_S3_*、CUBE_PROXY_*等运行时参数二者职责分离测试脚本对此有专门校验。七、总结sandbox-package.tar.gz是 CubeSandbox 一键发布体系的中枢产物构建侧由 build-release-bundle.sh 把散落在仓库各处的 Go/Rust 组件二进制、guest 镜像、固定内核、卷插件、compose/systemd/nginx 模板与运维脚本统一收拢为一个自洽的软件包安装侧由 install.sh 解压、预检、映射到/usr/local/services/cubetoolbox并以 systemd Docker 托管全部服务中间以release-manifest.json提供版本与校验信息以 test_package_layout.sh 守护布局契约。理解这条链路无论是排查安装问题、定制自己的发布包还是扩展新的组件进入一键部署都能做到有的放矢。【免费下载链接】CubeSandboxInstant, Concurrent, Secure Lightweight Sandbox for AI Agents.项目地址: https://gitcode.com/GitHub_Trending/cu/CubeSandbox创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考