logo
0
0
WeChat Login

1. 概述

本仓库将与大家一起完成使用 CNB (cnb.cool) 部署 TKE 的全流程配置。我们将从基础部署流程开始,逐步深入到密钥安全管理和部署审批配置,一起构建出一套安全、规范的持续部署体系。

为什么选择 CNB 部署 TKE?

CNB 除了提供开箱即用的 tke 镜像更新插件,还可直接托管打包好的镜像,tke 通过内网拉取镜像,高效、稳定(国内/海外地域均可):

优势说明
高速传输拉取镜像使用内网通道,带宽可达 160Mbps
安全访问调度 TKE 更新镜像的 API 默认走内网通道,无需开放 TKE 公网访问

2. 前置准备

  1. 代码仓库迁移 CNB 提供迁移工具,可将仓库一键迁移至 CNB 平台 https://cnb.cool/cnb/plugins/cnbcool/code-import

  2. 制品库迁移 可将代码打包所依赖的制品,迁移到 cnb 制品库中,避免存在私有依赖无法拉取,导致构建失败 https://cnb.cool/cnb/plugins/cnbcool/artifact-migrate

  3. tke 集群信息 请参考此文档,完成前置条件准备,以及插件参数的收集

3. 第一步:完成镜像更新流程

首先,让我们把 TKE 集群的镜像更新流程跑通。在 cnb 中,我们可以通过流水线实现这一流程。

3.1 了解部署插件

CNB 提供了系统插件,只需填写 TKE 集群信息,即可操作集群更新镜像。

📖 插件文档https://docs.cnb.cool/zh/plugin/#public/tencentcom/deploy-to-tke

3.2 配置流水线

参考 Demo 仓库,将构建配置粘贴到自己业务仓库的流水线配置文件 .cnb.yml 中:

📦 Demo 仓库https://cnb.cool/examples/ecosystem/deploy-to-tke-demo/-/blob/main/.cnb.yml

如需自定义流水线,可优先使用右上角搜索中的 转角遇到 AI,也可查阅下方的流水线语法

alt text

📖 流水线语法https://docs.cnb.cool/zh/build/intro.html

📖 自定义构建环境https://docs.cnb.cool/zh/build/intro.html

现在,我们已经成功实现了 TKE 集群的镜像更新。 🎉

PS:需注意在 tke 集群中配置拉取 cnb 镜像的凭据,cnb 的凭据可在个人设置中创建访问令牌,或在组织/仓库中创建部署令牌。参考文档

4. 第二步:密钥与业务仓库隔离

4.1 当前存在的问题

虽然,前面部署到 tke 的流程已经跑通了。但请注意,当前配置存在一个安全隐患:

⚠️ 安全风险:TKE 鉴权信息以明文方式声明在业务代码仓库中,所有开发同学都可以看到这些敏感信息。

这在企业管理中是不可接受的。那么,有没有办法将鉴权密钥与业务开发同学隔离开呢?

4.2 解决方案:使用密钥仓库

在 CNB 中,我们可以通过密钥仓库来解决这个问题。

什么是密钥仓库?

密钥仓库是 CNB 提供的一种独立仓库类型,专门用于安全地托管敏感信息:

  • 动态水印: 所有页面自动添加当前用户名的半透明水印,有效防止截图泄露并进行责任追溯。
  • 完整的审计日志: 记录所有对该仓库文件的引用记录(如何时、被哪条流水线引用),支持全链路溯源。
  • 强制 Web 端操作: 仅支持在平台 Web 界面上进行文件编辑,从根本上杜绝本地环境可能带来的泄露风险。
  • 严格的权限控制: 遵循系统统一的角色权限模型,精细化管控人员访问权限。
  • 声明式访问范围: 可通过配置精确控制密钥文件的被引用条件,详见流水线文件引用中的权限检查规则。

通过密钥仓库,你可以将业务仓库与密钥配置隔离。

4.3 如何配置

Step 1:创建密钥仓库并配置密钥

📖 操作指南https://docs.cnb.cool/zh/repo/secret.html#1-cun-chu-mi-yao-wen-jian

Step 2:配置授权范围

📖 语法说明https://docs.cnb.cool/zh/repo/secret.html#3-yin-yong-jian-quan-yu-fan-wei-kong-zhi

Step 3:在流水线中引用密钥

在流水线配置中使用 import 语法引用密钥仓库中的密钥:

📖 语法说明https://docs.cnb.cool/zh/repo/secret.html#2-zhu-ru-wei-huan-jing-bian-liang

PS:可参考以下实践,更进一步防止密钥泄露 防止流水线内泄露 最佳实践

5. 第三步:配置部署审批

5.1 概述

在企业的研发流程中,部署操作通常需要前置各种审批流程——比如需要运维或开发 Leader 的确认。

CNB 的部署流程基于代码的 Release ,你可以:

  • 声明部署环境(如 testing、staging、production)
  • 配置部署的前置审批条件
  • 配置部署按钮触发的流水线

5.2 部署审批示例

可对照示例以及效果演示,进行部署审批流程配置,5.3/5.4 中有具体的配置指引

资源链接
📖 配置文档https://docs.cnb.cool/zh/build/deploy.html#zi-ding-yi-bu-shu-huan-jing
📦 配置示例https://cnb.cool/examples/ecosystem/dev-workflow-demo/-/blob/main/.cnb/tag_deploy.yml
🎬 效果演示https://cnb.cool/examples/ecosystem/dev-workflow-demo/-/releases/tag/v2.0.0?tab=deployHistory

5.3 审批策略

审批策略一:CNB 用户审批

如果审批人是 CNB 平台用户(如运维/开发 Leader),可以直接配置他们为审批人。

📖 配置方法https://docs.cnb.cool/zh/build/deploy.html#shen-pi-liu-cheng-qian-zhi-tiao-jian-shi-li

审批策略二:对接外部审批平台

如果你的团队使用外部审批平台(如 OA 系统),可以将审批结果同步到 CNB:

原理说明:将外部审批平台的结果存入 Release 的元数据中,并将元数据值配置为部署的前置条件。

💡 提示:Release 和对应的 tag 共用一份元数据。

配置步骤

步骤说明参考文档
1. 配置元数据条件将 Release 元数据设为审批前置条件https://docs.cnb.cool/zh/build/deploy.html#yuan-shu-ju-qian-zhi-tiao-jian-shi-li
2. 上传审批结果方式 A:通过插件上传元数据至 taghttps://docs.cnb.cool/zh/plugin/#public/cnbcool/annotations
方式 B:调用 API 上传元数据https://api.cnb.cool/#/operations/PutCommitAnnotations

审批策略三:

前序环境已完成部署,如 production 环境依赖 staging 环境进行部署

https://docs.cnb.cool/zh/build/deploy.html#yuan-shu-ju-qian-zhi-tiao-jian-shi-li

5.4 部署按钮触发流水线执行

当在页面中选择部署 development 环境时,则触发 tag_deploy.development 事件

📦 参考示例https://docs.cnb.cool/zh/build/deploy.html#zi-ding-yi-bu-shu-liu-shui-xian

About

No description, topics, or website provided.
Language
Go70.3%
Dockerfile29.7%