适用前提与证据主线
本文是 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 绿色状态。摘要不一致、审批缺失、超出错误预算或未知数据库兼容性时停止扩批。回退须复用仍可拉取的已验收摘要并重新验证;若新版本已写入不兼容数据,应转入业务恢复评审,不能将镜像回退承诺为数据回退。保留失败制品和审计记录,清理另走保留策略。