全部产品
Search
文档中心

云效:如何在 VPC 网络环境中实施 CI/CD

更新时间:Oct 10, 2026

许多企业对研发资产与研发流程的安全性有更高的要求:代码库、镜像仓库、K8s 集群等核心资产不开放公网地址,只允许在企业自有的专有网络(VPC)内部访问,CI/CD(Continuous Integration/Continuous Deployment)流程也需要适配这种网络安全配置。本文介绍如何基于云效的用户 VPC 构建集群,在 VPC 环境内落地 CI/CD,并通过最小化流水线逐级验证与云效站点、ACR、ACK 之间的网络连通性。

一、CI/CD 流程中的研发资产

1.1 研发资产

一条完整的 CI/CD 流程,本质上是围绕一组研发资产运转的。常见的研发资产包括:

资产

角色

典型产品

代码库

存储项目源码

代码管理 Codeup

制品库

存储构建依赖包与部署制品

制品仓库 Packages

构建集群

执行构建、发起部署的算力载体

云效托管构建集群 / 用户私有构建集群

镜像仓库

存储容器镜像

容器镜像服务 ACR 等

K8s 集群

容器化部署目标

容器服务 ACK 等

主机集群

主机部署目标

云服务器 ECS 等

1.2 研发流程

这些资产通过一系列操作串联起完整的 CI/CD 流程。流程的起点与终点都在构建集群与流水线 Flow 之间:构建集群从 Flow 获取构建任务(①),流程结束后将执行结果同步回 Flow(⑩)。

接到任务后,构建集群从代码库克隆代码(②),在构建机上完成构建,构建过程会拉取制品库中的依赖包(③)。构建成功后按部署形态分叉:主机部署的构建产物上传到制品库(④),K8s 部署的构建产物(镜像)推送到镜像仓库(⑤)。

进入部署阶段,同样分为两条路径:

  • 主机部署:主机集群上预先安装 Flow 的 Runner,该 Runner 自动从 Flow 获取部署任务(⑥),再从制品库下载制品包(⑦),在主机上执行部署命令完成发布。

  • K8s 部署:构建机向 K8s 集群发送部署命令(⑧),K8s 集群从镜像仓库拉取镜像(⑨),然后完成部署。

二、CI/CD 的网络安全诉求

研发资产与研发流程梳理清楚后,回到本文的主题:为什么特别关注“VPC 网络环境”?因为上述流程中每一次跨网络的读写,都对应着真实的网络安全风险。

2.1 核心研发资产不应暴露在公网

代码库、制品库、镜像仓库、K8s 集群、主机集群等研发资产,承载着企业最核心的代码与业务系统。把它们暴露到公网(开放公网端点、IP 白名单管理不当等),意味着攻击面扩大:源码与制品可能被拉取篡改,K8s API Server 与主机可能被暴力破解。因此用户的核心诉求是:研发资产不暴露在公网上,仅开放 VPC 内部可访问——资产只持有私网地址,公网侧完全不可见或仅保留最小必要的受控入口。

2.2 研发流程应在 VPC 内部完成

仅隔离资产还不够。如果执行这些流程的构建机与主机上的 Runner 位于公网侧,那么每次克隆代码、推送镜像、下发部署命令、获取任务与下载制品,都要“出公网再回来”,流量绕行公网,前述的隔离效果会大打折扣。因此诉求的完整表述是:研发资产之间的流程也应尽量在 VPC 内部完成,不经过公网——不仅目标资产要在 VPC 内,发起流程的构建算力同样要进入 VPC,与资产处于同一张内网。

2.3 CI/CD 方案的核心是构建集群

把这两条诉求落到第一章的关系图上,构建集群是所有研发流程的发起者与执行者,方案设计的两个关键问题都由它决定:

  1. 构建集群的网络位置:构建集群位于公网(云效网络),还是位于用户 VPC 内部?这决定“研发流程在 VPC 内完成”的诉求能否成立。

  2. 构建集群如何与研发资产连接:构建集群与代码库、制品库、镜像仓库、K8s 集群、主机集群等研发资产之间的每一条链路,走公网还是走 VPC 内网?

    下一章围绕这两个问题,介绍云效提供的两种构建集群方案。

三、云效构建集群方案

围绕上述两个问题,云效提供两种构建集群——云效默认构建集群与用户 VPC 构建集群,二者在同一时刻只会启用其一。两种集群有共同的特性:构建机都是弹性的,按需扩缩、用完释放;计算资源都由云效提供,无需自备构建机。本质区别在于使用的网络资源不同——是云效的网络,还是用户自己的 VPC 网络,这直接决定了能否满足前文所述的网络安全诉求。两种集群的对比如下:

维度

云效默认构建集群

用户 VPC 构建集群

网络资源归属

云效的网络资源

用户自己的 VPC 网络资源

构建机位置

运行在云效侧

调度进用户 VPC 内,与业务资源同一张内网

与研发资产的连接

仅公网

VPC 私网

研发资产公网暴露

必须暴露可公网访问的端点

无需暴露公网

网络资源费用

不必为网络资源额外付费

为所占用的用户侧网络资源额外付费

配置复杂度

开箱即用、操作简单

需关联 VPC、规划安全组与路由

适用场景

目标资源可经公网端点安全访问、追求零运维快速起步

对网络隔离、合规或时延要求较高,或资产仅开放内网访问

3.1 云效默认构建集群

云效默认构建集群使用云效的网络资源。构建机运行在云效侧,只能通过公网与研发资产(代码库、制品库、镜像仓库等)连接;主机部署则由主机集群上的 Runner 经公网从 Flow 获取部署任务、从 Packages 下载制品。

  • 优点:开箱即用、操作简单,无需自备机器,也不必为网络资源额外付费。

  • 局限:所有链路都经由公网,研发资产必须暴露可公网访问的端点,代码克隆、镜像推送、制品下载等流程也会绕行公网。

    适合目标资源均可通过公网端点安全访问、追求零运维快速起步的场景。

3.2 用户 VPC 构建集群

用户 VPC 构建集群使用用户自己的 VPC 网络资源。构建机调度进用户 VPC 内,与业务资源处于同一张内网,可以通过 VPC 私网与用户的所有研发资产(镜像仓库、K8s 集群、代码库、制品库等)连接;主机部署则由主机集群上的 Runner 获取部署任务与制品。

  • 优点:研发资产无需暴露公网,构建流程可在 VPC 内完成,链路更短、更安全、时延更低。

  • 代价:配置相对复杂,需要关联 VPC、规划安全组与路由;并且需要为所占用的用户侧网络资源(VPC、交换机、NAT 网关等)额外付费。此外,通过专有网络域名内网访问云效站点仅地域组织(企业协作模式)支持,选型时需先确认组织类型与协作模式满足要求。

    适合对网络隔离、合规或时延有较高要求,或研发资产仅开放内网访问的场景。

四、实施步骤

本章是落地方案的核心操作指南。以用户 VPC 构建集群方案为例,完整实施分为三步:创建 VPC 构建集群 → 验证与云效站点的连接 → 验证与 ACR、ACK 的连接。逐步推进、逐步验证,任何一步失败都可以将问题范围收敛到对应的网络链路上。其中部署侧的验证覆盖 K8s 部署形态的链路(ACR 镜像推送与 ACK 发布)。

开始操作前,确认以下资源与配置已就绪:

  • 已创建用户 VPC 与交换机,并规划好安全组的放通规则。

  • 已确定接入点方式并完成对应的网络配置(见 4.1 第 3 项):公网域名方式要求 VPC 具备访问公网的能力(如已配置 NAT 网关);专有网络域名方式要求已通过云效控制台的组织详情页 > 网络配置激活云效的 VPC 域名。

  • 需要通过专有网络域名接入时,所使用的云效组织为地域组织且处于企业协作模式(中心组织仅支持公网访问)。

  • 已准备用于验证流水线源的代码库与制品仓库:Codeup 通常自带 codeup-demo 示例库;Packages 的软件包仓库默认没有制品文件,需先上传任意一个文件。

  • 已准备 ACR 镜像仓库与 ACK 集群,并将部署用的 YAML 文件(如 deployment.yaml)上传到代码库。

4.1 第一步:创建 VPC 构建集群

进入 Flow 的构建集群管理页面,新建构建集群,将其类型选择为 VPC 构建集群,并完成以下关键配置:

  1. 基本信息:填写构建集群名称(构建集群 ID 由系统自动生成,可复制备用)。

  2. 关联用户 VPC 与安全组:选择构建机要部署进的用户 VPC(及交换机),并绑定安全组。安全组需要放通构建机与云效站点、ACR、ACK 等目标之间必要的出方向端口;若 ACR、ACK 开启了访问控制,还需将其白名单指向该安全组或 VPC 网段。

  3. 选择接入点:VPC 构建集群与云效站点之间的任务下发与结果回传,需要通过接入点完成。根据所使用的云效组织类型与所选域名,共有三种情况。

    选择接入点时,先按组织类型归类:中心组织仅支持公网访问,对应场景 1;地域组织同时支持公网与 VPC 专有网络访问,对应场景 2 和场景 3,其中 VPC 访问能力属于企业协作模式。从安全角度,优先选择专有网络域名——流量不出公网,且可满足按 IP 收敛安全组白名单的诉求;其次为公网域名;中心组织仅有公网域名,无需选择。

#

场景

接入点

网络要求与配置说明

1

中心组织

无需选择(仅有公网域名)

用户 VPC 需要具备访问公网的能力;此方式无法配置 Flow 具体的 IP 作为安全组白名单

2

地域组织 · 公网域名

公网域名

用户 VPC 同样需要能够访问公网;可以在 VPC 内配置出网 IP 白名单,具体域名 IP 可在云效控制台的组织详情页查询

3

地域组织 · VPC 域名(推荐)

专有网络域名

用户 VPC 无需出公网;但需先通过云效控制台的组织详情页 > 网络配置激活云效的 VPC 域名

说明

接入点的选择只影响构建集群与云效站点之间的链路:公网域名对应经公网的连接方式,专有网络域名对应 VPC 内网连接方式;与 ACR、ACK 等 VPC 内资产的连接始终走内网。

4.2 第二步:验证与云效站点的连接

创建集群并完成 VPC 侧的网络配置后,通过一条最小化流水线验证连通性:

  1. 新建一条流水线,运行时的构建集群选择第一步创建的 VPC 构建集群。

  2. 配置流水线源:分别添加一个 Codeup 代码库和一个 Packages 软件包仓库。

    • Codeup 通常自带一个 codeup-demo 示例库,直接选用即可。

    • Packages 的软件包仓库默认没有制品文件,可先上传任意一个文件,保证流水线源有内容可下载。

  3. 为任务添加云效的执行命令步骤:无需自行编写验证命令——即使是空白命令,流水线执行时也会自动下载流水线源(即代码库与制品库的内容)。该步骤跑通,即说明克隆代码与下载制品两条链路都已打通。

    运行流水线,根据执行日志即可快速定位网络问题:

日志现象

说明

排查方向

“申请运行环境”报错

VPC 网络无法与 Flow 服务连接

检查接入点配置、VPC 公网访问能力(NAT 网关、出网白名单)或 VPC 域名激活状态

“克隆代码”报错

VPC 网络无法与 Codeup 或 Packages 服务连接

检查安全组出方向规则、VPC 路由与目标服务的访问控制

步骤全部成功

与云效站点的连接已打通

继续第三步验证

流水线运行成功,即说明 VPC 构建集群与云效站点之间的“获取任务、克隆代码、拉取制品”链路全部可用;若失败,按上表定位到对应链路后,回到第一步检查接入点与安全组配置。

4.3 第三步:验证与 ACR、ACK 的连接

在第二步的流水线基础上继续追加两个步骤,验证部署侧链路。同样无需自行编写命令,直接选用云效的内置流水线步骤:

  1. 验证 ACR 连接:添加流水线步骤 Docker login ACR,选择 ACR 的服务连接,并输入镜像仓库地址——此处要输入 ACR 的 VPC 访问地址(专有网络域名),而不是公网地址。步骤执行成功,即说明构建机可通过 VPC 内网访问 ACR,推送镜像链路可用。

  2. 验证 ACK 连接:添加流水线步骤 Kubectl 发布,选择目标 Kubernetes 集群(ACK)。使用该步骤前,需要把要部署的 YAML 文件上传到代码库中(例如 deployment.yaml),并在步骤配置中填写该 YAML 文件在代码库中的相对路径。步骤执行成功,即说明构建机可通过 VPC 内网访问 ACK 的 API Server 并完成发布,kubectl 部署链路可用。

    若步骤执行失败,按下表定位排查:

日志现象

说明

排查方向

Docker login ACR 步骤失败

构建机无法通过 VPC 内网访问 ACR

检查是否误用了公网地址、ACR 实例的 VPC 访问控制是否放通

Kubectl 发布 步骤失败

构建机无法通过 VPC 内网访问 ACK 的 API Server,或发布配置有误

检查集群选择、YAML 文件相对路径以及 ACK API Server 的访问白名单

两个步骤都执行成功,即说明构建、部署全链路的网络连通性验证完毕,可将真实的构建任务与部署任务迁移到该 VPC 构建集群上运行。