自动化与交付 · 高级

GitLab 到 Kubernetes 的发布证据链

贯通 GitLab 评审、Jenkins 构建、Nexus 制品、Harbor 镜像与 Kubernetes 部署,用精确提交和摘要验证发布及恢复边界。

CI/CDDockerKubernetes自动化

场景目标

在隔离测试环境完成一次从评审提交到部署验收的证据关联,记录两类制品、目标身份、失败分支与已验收旧摘要的恢复条件。

环境要求

需受控 GitLab 仓库、固定 Jenkins 及插件版本、隔离执行节点、已规划的 Nexus/Harbor 项目和非生产 Kubernetes 命名空间。各组件版本、TLS、最小角色、容量及保留窗口先行登记,实际部署仍需另行授权;120 分钟估时仅覆盖已准备环境的一轮流程核验,不含新建平台、扫描全量历史制品或正式发布。

参考架构 · 非实时拓扑

提交、制品与运行版本的发布证据架构

通过变更编号关联 GitLab、Jenkins、Nexus、Harbor 与 Kubernetes,分开源码/制品流、发布审批和运行验收;组件连接能力仍需实际验证。

  • 数据 / 请求
  • 控制 / 管理
  • 观测 / 查询

点击组件,在图下方查看职责;连线编号对应流向解读。小屏可横向滚动,或直接展开文字说明。

提交、制品与运行版本的发布证据架构:组件关系图通过变更编号关联 GitLab、Jenkins、Nexus、Harbor 与 Kubernetes,分开源码/制品流、发布审批和运行验收;组件连接能力仍需实际验证。 GitLab → Jenkins:固定源码修订;Jenkins → Nexus:发布 Maven 包;Jenkins → Harbor:构建并推送镜像;Harbor → Kubernetes:镜像内容响应;变更审批与门禁 → Jenkins:可信构建范围;变更审批与门禁 → Kubernetes:批准试点与扩批;Jenkins → 发布证据索引:构建与制品记录;Kubernetes → 业务与值班验收:运行与业务信号;业务与值班验收 → 发布证据索引:验收与交接记录。箭头说明见下方流向解读。
逻辑参考图,连线表达候选交付关系,不代表本站已接入自动发布;无 Maven 制品时 Nexus 环节标为不适用。

GitLab

数据 / 制品

保存源代码、合并请求与可信修订,审批绑定精确提交而不是可能变化的分支名。

查看关联工具
全部组件职责 8 个组件
GitLab
保存源代码、合并请求与可信修订,审批绑定精确提交而不是可能变化的分支名。工具介绍 GitLab
Jenkins
按已评审的流水线生成制品,分阶段限制源码、包发布、镜像推送和部署凭据。工具介绍 Jenkins
Nexus
Java 产物以完整坐标和校验和标识;proxy 或 group 读取能力不等于发布权限。工具介绍 Nexus
变更审批与门禁
联合检查测试、扫描、目标环境和数据兼容,任一证据不明时停止后续发布。
Harbor
关联镜像来源、扫描报告、索引及平台 manifest,保留正式和恢复使用的摘要。工具介绍 Harbor
Kubernetes
按已核对 context、namespace 和 UID 观察试点,运行时拉取与部署配置分开核验。工具介绍 Kubernetes
发布证据索引
以变更编号保存构建、坐标、摘要、审批、运行修订和恢复记录,不存明文凭据。
业务与值班验收
验证代表性请求、鉴权和依赖,技术就绪不替代业务确认,交接保留未覆盖项。
流向解读 9 条连接
  1. 1

    GitLab Jenkins

    数据 / 请求 · 固定源码修订

    构建使用精确提交及受评审的流水线修订,不混入未解释的脏文件。

  2. 2

    Jenkins Nexus

    数据 / 请求 · 发布 Maven 包

    仅向批准 hosted 仓库上传本轮产物;无 Java 产物时该支路不执行。

  3. 3

    Jenkins Harbor

    数据 / 请求 · 构建并推送镜像

    镜像构建登记包产物来源、基础镜像和构建上下文,再记录仓库摘要。

  4. 4

    Harbor Kubernetes

    数据 / 请求 · 镜像内容响应

    箭头表示镜像内容流向,拉取由节点容器运行时发起,不是 Harbor 主动推送部署。

  5. 5

    变更审批与门禁 Jenkins

    控制 / 管理 · 可信构建范围

    审批和凭据作用域限制哪些修订、阶段和环境能执行。

  6. 6

    变更审批与门禁 Kubernetes

    控制 / 管理 · 批准试点与扩批

    由既定授权发布机制实施;本图不增加自动发布服务或开放真实入口。

  7. 7

    Jenkins 发布证据索引

    观测 / 查询 · 构建与制品记录

    归档源码、测试、坐标和摘要等证据,可采用受控人工互链。

  8. 8

    Kubernetes 业务与值班验收

    观测 / 查询 · 运行与业务信号

    将调度、就绪、实际摘要及业务探测和发布前基线对照。

  9. 9

    业务与值班验收 发布证据索引

    观测 / 查询 · 验收与交接记录

    分别保存发布结果与恢复边界,不用单个绿色流水线状态代替全部验收。

从架构到实施

  1. 01

    锁定源码和构建身份

    明确精确提交、流水线修订、隔离节点与凭据作用域,建立后续制品可追溯的起点。

  2. 02

    包与镜像各自有身份

    登记 Maven 坐标、镜像摘要及平台映射,先核对目标环境与旧版本,再进入受控试点。

  3. 03

    把就绪转成可交接证据

    以业务窗口验收运行结果,在隔离环境验证已评审恢复路径,最后归档完整版本链。

故障域与操作边界

构建安全与发布授权分离

日志遮蔽不是恶意流水线隔离;不可信分支不得得到正式制品和生产部署凭据。

应用恢复不覆盖数据恢复

旧镜像可拉取不等于数据库兼容;存在不兼容写入时必须另评补偿、前向修复或数据恢复。

制品仓库职责不同

Nexus 管理包,Harbor 管理镜像;已验收正式版本不随意覆盖,扫描通过也不是完整安全保证。

架构依据与版本核对 3 篇官方资料

图解是本站基于官方资料整理的逻辑参考;实施前仍需核对实际部署版本、组件支持范围与变更审批。

方案说明

能力协作

建议以变更编号串联 GitLab 提交、Jenkins 构建、Nexus Maven 坐标、Harbor 镜像摘要和 Kubernetes 部署修订;Nexus 与 Harbor 分别承担包制品和容器镜像管理,不把同一绿色状态当作全部环节完成。无 Maven 产物时记录不适用,并保留其他证据。

适用范围与安全边界

用于已有受控测试环境的交付流程设计,所有组件接入与运行效果均待验证,不表示本站已具备真实发布入口。发布凭据限项目、阶段和环境,不向不可信分支开放;审核通过不替代扫描、运行验证及业务审批。下文命令为只读核验,占位符须人工替换,不执行真实发布。

全局验收与停止条件

同一变更能从需求和提交追溯到运行制品;构建、扫描、部署、业务探测及观察窗口记录齐全。未知摘要、目标环境歧义、过期审批或错误预算超限均停止扩批。应用回退与数据恢复分别评审,不承诺数据库变更后可一键复原。

配套入口

官方参考

工具编排

5 个关联工具
  1. GitLab Community Edition源码与变更评审固定需求、合并请求和精确提交,保留评审与发布权限边界。
  2. Jenkins构建与门禁编排在隔离节点执行受评审流水线,关联构建号、测试和制品记录。
  3. Nexus Repository CoreMaven 制品仓库区分 hosted 写入、proxy 依赖缓存和 group 消费入口。
  4. Harbor镜像摘要与项目治理记录镜像摘要、平台、扫描与保留策略,不把标签视为唯一证据。
  5. Kubernetes部署与运行验收按环境与命名空间验证工作负载修订、就绪状态和回退目标。

实施步骤

共 8 步
  1. 01

    冻结变更范围与源码身份

    记录需求编号、合并请求、审批人、窗口、目标服务和非目标事项。确认合并后的精确提交与评审记录一致,并登记 Jenkinsfile 及共享库修订。以下命令在已核对仓库的只读工作副本执行,不获取远端、不修改分支;工作树脏文件不得混入发布上下文。

    git status --short
    git rev-parse HEAD
    git log -1 --format='%H %cI %s'
    验证标准

    提交 SHA、仓库身份与工单一致,工作目录无未解释的变更;依赖锁定文件、流水线修订和审批时间均可追溯。审批后若提交已变化,标记需重新评审,不继续使用旧批准。

    停止与回退

    此步不改源码,无需回退仓库。发现提交不一致、维护冲突或范围变大时暂停该变更,仅修正工单与候选版本,不强制重置他人的工作目录。

    返回步骤起点
  2. 02

    检查流水线身份与隔离节点

    列出源码读取、Nexus 发布、Harbor 推送和 Kubernetes 部署四类凭据,按项目及阶段限制作用域。Jenkins 发布阶段只接受可信修订,不在可被任意分支修改的脚本中开放生产身份。检查执行节点互信关系、并发隔离、工作区清理与日志脱敏;凭据遮蔽不是对恶意流水线的隔离保证。

    验证标准

    每个凭据都有目标、责任人、期限和轮换方式;测试身份无法向非授权仓库或命名空间写入。不可信分支只能使用测试范围,执行节点和日志中未发现令牌、密钥文件或真实业务样本。

    停止与回退

    权限边界不明时不启动构建,收回本轮新增的候选授权。若疑似泄露,停用相关凭据并按责任人确认的流程轮换,保留脱敏事件记录,不能只删除日志后继续使用原密钥。

    返回步骤起点
  3. 03

    构建并登记 Maven 制品证据

    以精确提交在测试节点执行已经评审的构建与测试流程,记录构建号、工具链、依赖锁定及测试结果。Java 产物登记 Maven 完整坐标、classifier、packaging 和校验和,发布目标应为指定 hosted 仓库;proxy 缓存和 group 读取成功均不等于允许发布。无 Java 产物的服务明确跳过 Maven 环节,不创建无用途包。

    验证标准

    新产物可用受限消费身份从批准入口读取,下载校验和与本轮构建一致;release/snapshot 规则和版本冲突结果符合预期。构建失败先定位源码、依赖、节点或权限,不重复生成正式版本掩盖问题。

    停止与回退

    停止后续镜像与部署步骤,保留构建日志和已上传对象的身份记录。错误正式版本先标注不可用,再按仓库保留与撤销制度处置,不覆盖既有 release 或清空共享缓存。

    返回步骤起点
  4. 04

    核对 Harbor 摘要与发布门禁

    将通过测试的制品纳入受评审镜像构建,保存基础镜像摘要、构建上下文和产物来源。上传批准的 Harbor 项目后记录仓库、标签、摘要、平台以及扫描器和漏洞库时间;正式标签按政策设置不可变和保留保护。多架构镜像同时记录索引摘要与目标平台清单映射,避免把本地镜像 ID 错当仓库摘要。

    验证标准

    镜像来源对应本轮提交和制品,风险报告属于同一摘要,允许的目标平台均有清单。阻断漏洞、未知来源或摘要漂移应停在门禁;扫描通过只说明该扫描策略的结果,不是完整安全证明。

    停止与回退

    不向后续环境提升未通过门禁的摘要,保留失败报告并限制其使用。需要修复时生成新构建和新证据,不移动已验收正式标签;镜像清理由单独保留策略审阅,不能删除仍供回退使用的对象。

    返回步骤起点
  5. 05

    比对 Kubernetes 目标与旧版本

    在任何发布动作前核对 context、namespace、工作负载、服务账号、拉取身份和配置依赖。以下只读命令须替换批准的目标,不依赖当前默认 namespace;保存旧版本摘要和部署修订,同时评审数据库变更能否与旧应用共存。

    kubectl config current-context
    kubectl --context '<APPROVED_CONTEXT>' -n '<NAMESPACE>' get deployment '<DEPLOYMENT>' -o jsonpath='{.metadata.uid} {.spec.template.spec.containers[*].image}'
    kubectl --context '<APPROVED_CONTEXT>' -n '<NAMESPACE>' rollout history deployment/'<DEPLOYMENT>'
    验证标准

    目标 UID、命名空间和负责人均与工单一致,旧摘要仍可拉取且配置备份可读。若拉取认证、容量、配额或数据库兼容性未确认,则记录阻塞项,不把预检成功等同于发布完成。

    停止与回退

    该步只读,无需修改工作负载。目标歧义时停止并重新定位上下文;不切换集群、不临时授予 cluster-admin,不用覆盖配置的方式修正尚未确认的环境。

    返回步骤起点
  6. 06

    按批准批次观察试点发布

    由有权限的执行人按组织既定发布机制推进单一试点批次,本站方案不自动提交部署。持续观察拉取、调度、探针、依赖和错误率:拉取失败查证书、权限、摘要与架构;Pending 查资源与约束;就绪失败转查配置及应用日志。每次重试标明原变更编号与是否产生新修订,不在未知状态下反复触发。

    验证标准

    试点运行摘要与批准对象对应,期望副本、探针和关键请求均达到预定条件。每条异常能够定位到构建、仓库或运行环节;未达到门槛不扩批,页面或流水线超时先核实真实部署状态。

    停止与回退

    停止后续批次并保留事件、日志和修订记录。仅在数据与配置兼容且已批准时恢复已验收旧摘要;若已发生不兼容写入或结果不明,转入事件处置,不盲目触发通用 rollout undo。

    返回步骤起点
  7. 07

    完成业务验收与恢复演练

    由业务验收人检查代表性请求、鉴权、关键依赖及旧客户端兼容性,观察窗口覆盖约定的负载样本。将错误率、延迟和资源预算与发布前基线比较;在隔离环境演练使用保留摘要恢复,并验证必要配置及数据兼容。恢复耗时只对本次测试规模负责,不据此宣称具备全环境容灾能力。

    验证标准

    技术就绪和业务验收都有时间、执行主体与结果,旧摘要恢复路径实际可用,数据恢复边界明确。错误预算、验收窗口和未覆盖测试项经责任人确认,Jenkins 成功状态不是唯一验收证据。

    停止与回退

    验收失败暂停完成状态,由发布负责人选择继续观察、前向修复或已评审恢复。任何数据补偿另行审批;结束隔离演练后按精确资源清单回收临时身份,保留必要证据和回退制品。

    返回步骤起点
  8. 08

    归档证据与明确值班责任

    整理提交、合并请求、构建号、Maven 坐标、镜像摘要、部署修订、审批、测试和恢复记录,以变更编号互相链接。交接监控入口、错误分支、值班责任、观察到期时间和制品保留窗口;受限链接用接班人身份验证可读,公开页面只保留脱敏示例。对未实施环节持续标为待验证。

    验证标准

    接班人无需向执行者索要口头信息即可追溯一次发布及恢复目标,缺失项有责任人和期限。发布状态、证据状态和文档状态保持一致,非授权用户不能读取凭据或内部敏感附件。

    停止与回退

    交接不完整则保留待验收状态,不提前清理旧版本。错误文档通过追加修订更正并保留历史,不改写已发生的构建或审计记录,不将文档回退冒充应用回退。

    返回步骤起点

DOUYA OPS ECOSYSTEM

体验豆芽自研工具与场景能力

部分场景提供体验环境,用于功能验证、测试和技术交流。