标准流程 · 自动化与交付

待环境验证

从提交到部署:跨组件发布证据链

连接 GitLab 提交、Jenkins 构建、Nexus 制品、Harbor 镜像与 Kubernetes 部署,核对摘要、门禁和业务验收,区分应用回退与数据恢复。

CI/CDDockerKubernetes自动化
阅读导引 · 理解后再操作

这篇知识解决什么问题

本篇把跨组件交付整理成能够反向追查的身份链:从当前运行修订回看批准摘要、构建输入与源码评审。每一环都保留产物身份和状态证据,区分记录缺失与真实失败;没有 Maven 产物的服务可以跳过包仓库,不为完整图示编造制品。

每次跨组件交接都要保留内容身份

一个构建号只能在所属系统内定位任务,无法单独证明远端包、镜像和运行实例来自同一输入。应在交接时同时记录上游身份、下游身份和生成时间,再保留校验及批准关系;链路中一处引用可移动或信息缺失,就需要回到该边界补证而不是猜测一致。

能力状态和审批状态不能互相代替

仓库可读取、扫描完成与部署就绪分别证明技术环节,允许发布还依赖正确环境、版本和当前窗口的批准。将这些状态独立记录,可以识别服务故障、权限不足与业务门禁阻断;单个绿色状态不能自动传递为下游已经完成或具备运行授权。

进入文章正文
关联架构图解8 个组件 · 点击展开

引用场景图中 GitLab、Jenkins、Nexus、Harbor 与 Kubernetes 的职责分工,从内容流与审批流两种视角理解证据关联。连线可以人工登记,不代表已配置 webhook、凭据或自动推广,也不展开数据库兼容细节。

查看场景架构与实施步骤
参考架构 · 非实时拓扑

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

通过变更编号关联 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

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

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

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

故障域与操作边界

构建安全与发布授权分离

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

应用恢复不覆盖数据恢复

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

制品仓库职责不同

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

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

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

适用前提与证据主线

本文是 GitLab、Jenkins、Nexus、Harbor 与 Kubernetes 的候选协作流程,验证等级为 PENDING,不代表本站已部署这些服务或接通生产。先锁定各产品及插件版本、业务负责人、目标环境和发布窗口;为一个变更建立“提交 SHA → 构建号 → Maven 坐标及校验和 → 镜像摘要 → 部署修订 → 验收记录”的关联。没有 Java 制品的服务可将 Maven 环节标为不适用,不应凭空生成制品。

源码与流水线门禁

GitLab 合并请求应附需求编号、测试范围、审批人和回退条件。Jenkins 获取评审通过的精确提交,而非随时移动的分支头;同时记录 Jenkinsfile 与共享库修订。按项目和阶段限制凭据,禁止不可信分支使用发布密钥。日志遮蔽只是减少意外输出,不能把可修改流水线的人变成无法接触凭据的低权限用户。Jenkins 凭据安全说明

Maven 制品与镜像边界

先区分 Nexus Repository Core、Community Edition 与 Pro 等发行形态,按选定版本核对格式、存储和许可,不交叉套用数据库或恢复步骤。Maven hosted 仓库存放内部制品,proxy 缓存上游依赖,group 汇聚消费入口;不能把读取 group 的成功当作写入 hosted 的授权。记录 groupId、artifactId、version、classifier 和校验和,区分 release 与 snapshot。Harbor 接收镜像后记录仓库路径、摘要、平台和扫描时间,按治理策略限制正式标签覆盖;摘要固定代码对象,标签只便于识别。Nexus 仓库类型Harbor 标签不可变规则

发布前只读核验

以下占位符必须替换成已批准的环境和对象,仅查询当前上下文与部署,不执行发布。将输出保存到受控工单,脱敏内部地址。

kubectl config current-context
kubectl --context '<APPROVED_CONTEXT>' -n '<NAMESPACE>' get deployment '<DEPLOYMENT>' -o jsonpath='{.spec.template.spec.containers[*].image}'

逐一核对 context、namespace、服务账号、镜像拉取权限、旧摘要及数据库兼容性。多架构镜像的索引摘要与节点选用的子清单摘要应保留对应关系,不能要求二者字符串必然相等。Kubernetes 镜像说明

按阶段排障

源码获取失败先分辨网络、证书与仓库授权;构建失败核对依赖坐标及执行节点,不重新生成发布令牌碰运气。上传失败分别检查目标仓库、写权限、版本冲突和容量。镜像拉取失败检查 TLS、摘要存在性、架构及拉取身份;容器已启动但探针失败则转向配置、依赖和应用日志。任何重试均引用原变更编号,并标明是否生成了新摘要。

验收、停止与回退

验收需同时满足部署修订可追溯、期望副本就绪、关键请求成功、错误率和延迟处于约定窗口,不能只看 Jenkins 绿色状态。摘要不一致、审批缺失、超出错误预算或未知数据库兼容性时停止扩批。回退须复用仍可拉取的已验收摘要并重新验证;若新版本已写入不兼容数据,应转入业务恢复评审,不能将镜像回退承诺为数据回退。保留失败制品和审计记录,清理另走保留策略。

关联入口

参考资料

从现象到判断

先收集证据,再缩小范围。以下是判读路径,不代表已经确认根因或获准变更。

  1. 运行版本可以查到,但它只对应一个标签,缺少本轮构建与仓库摘要之间的固定关联记录。

    只读核对
    只读核对运行对象引用、发布记录、构建号与镜像平台清单,查明标签在相关时间是否对应相同摘要。
    如何判读
    缺少身份链先记为证据不完整;标签同名不能证明内容一致,也不能仅凭不同平台摘要判定版本漂移。
  2. 依赖下载成功而 Maven 发布失败,记录中混用了 group、proxy 与 hosted 的仓库地址或权限。

    只读核对
    读取所用 Nexus 形态、仓库类型、候选坐标和失败请求摘要,核对当前账号既有的读取与发布作用域。
    如何判读
    读取聚合或缓存入口不证明可以写入 hosted;还需排查版本冲突、目标路径和容量,不直接扩大权限。
  3. 扫描报告显示通过,但部署记录引用另一摘要,或者风险报告的工具与漏洞库时间尚无法确认。

    只读核对
    只读比较报告对象、扫描执行状态、仓库摘要、平台映射与审批记录,保留每次构建的原始关联编号。
    如何判读
    报告只能解释它实际检查的对象与时间;身份不明或扫描运行异常均不能作为批准当前候选的风险依据。
常见误区与判断边界 2 项

为了链路完整强行加入每个组件

没有 Java 产物时建立无用途 Maven 包,只会增加维护和权限负担;同样不能因图中画了连接就声称已有自动化。应明确不适用环节、实际制品路径与人工交接点,让记录覆盖真实流程,后续新增组件接入再分别评审权限和失败处理。

把固定摘要当作永久可恢复承诺

摘要能够固定内容,却不能保证仓库永久保留、节点始终能拉取或旧配置与新数据兼容。恢复候选需要明确保留责任、访问验证和兼容证据;旧版本记录完整也不等于已经演练,清理、切回应用与数据补偿各自保留独立审批范围。

交接时应留下的证据

作为记录提纲使用,不是自动检查结果;未取得的证据应标记缺口,并注明负责人。

  • 按变更编号记录源码 SHA、合并评审、流水线与共享库修订、构建号及时间,说明每项输入的受控来源与负责人。
  • 关联真实使用的包坐标、校验和、镜像索引及平台清单摘要,不适用的 Maven 环节明确标记而不伪造占位制品。
  • 保存当前审批窗口、扫描对象与执行状态、目标集群及部署修订,区分技术通过、风险接受和业务验收三类事实。
  • 交接旧摘要保留责任、配置和数据兼容依据、已有恢复验证范围与未覆盖项目,未知能力持续保留待验证状态。

记录需包含环境、版本、时间与时区;分享前脱敏,不附访问令牌、密码或完整业务敏感数据。

继续阅读与资料核对

补充相关主题,再结合当前环境的实施记录形成结论。

返回原理导读

DOUYA OPS ECOSYSTEM

贡献你的经验,帮助更多运维人

把故障复盘、标准流程和最佳实践沉淀为可检索、可复用的知识内容。