基于 Azure DevOps 与阿里云 ACK 构建企业级 CI/CD 流水线

本文涉及的产品
应用实时监控服务-可观测链路OpenTelemetry版,每月50GB免费额度
函数计算FC,每月15万CU 3个月
容器镜像服务 ACR,镜像仓库100个 不限时长
简介: 本文介绍如何结合阿里云 ACK 与 Azure DevOps 搭建自动化部署流程,涵盖集群创建、流水线配置、应用部署与公网暴露,助力企业高效落地云原生 DevOps 实践。

在云原生技术飞速发展的当下,将持续集成 / 持续部署(CI/CD)能力与 Kubernetes 集群结合,已成为企业实现应用高效交付的核心需求。

本文将以阿里云容器服务 Kubernetes 版(ACK)和微软 Azure DevOps 为技术底座,带您从零搭建一套完整的自动化部署流程,涵盖集群创建、流水线配置、服务连接、应用部署与公网暴露全环节,助力团队快速落地云原生时代的 DevOps 实践。

一、前置认知:ACK 与 Azure DevOps 的协同价值

在开始实操前,我们先明确两大核心工具的定位与协同逻辑:

阿里云 ACK:作为阿里云推出的企业级 Kubernetes 服务,它提供了托管式集群管理能力,支持自动运维节点、弹性扩缩容、内置网络与存储插件,能大幅降低 Kubernetes 部署与运维门槛,为应用提供稳定的容器运行环境。

Azure DevOps:微软推出的一站式 DevOps 平台,集成了代码仓库、构建流水线、发布管理、测试工具等功能,其灵活的任务配置与丰富的插件生态,可轻松对接各类云服务,实现从代码到生产环境的全流程自动化。

二者结合的核心优势在于:借助 Azure DevOps 的自动化能力,将应用无缝部署到 ACK 集群,同时利用 ACK 的云原生特性保障应用稳定性,形成 “代码提交 - 自动构建 - 自动部署 - 公网访问” 的闭环。

二、第一步:创建阿里云 ACK 集群

ACK 集群是应用运行的基础,需按照 “资源授权 - 集群配置 - 节点池设置 - 依赖检查” 四步完成搭建,以下为关键操作细节:

1、登录与资源授权
访问阿里云控制台,在顶部搜索栏输入 “Kubernetes”,选择 “容器服务 Kubernetes 版(ACK)” 进入服务页面。

image.png

首次创建集群时,系统会提示 “云资源访问授权”,需授予 ACK 访问 RAM 角色的权限(包括AliyunCSManagedVKRole、AliyunCSDefaultRole等核心角色),这些角色用于 ACK 自动管理 ECS、SLB、NAT 网关等底层资源,无需手动配置。


image.png

2、核心集群配置

进入 “创建 Kubernetes 集群” 页面,重点配置以下参数(根据业务需求调整):

image.png

3、节点池与操作系统设置

节点池是 Worker 节点的管理单元,关键配置如下:

节点池名称:例如 “worker-pool-1”,区分不同用途的节点(如 Web 节点、数据库节点)。
实例规格:根据应用资源需求选择,测试环境可选 2vCPU+8GiB(如 ecs.n1.large),生产环境需根据并发量扩容。
操作系统:默认 “阿里云 Linux 2”,基于 CentOS 优化,支持容器运行时(Docker/Containerd),无需额外配置。
登录方式:推荐 “SSH 密钥对”(比密码更安全),需提前在 ECS 控制台创建密钥对,创建后立即下载私钥(仅一次下载机会)。

  1. 组件与依赖检查

必装组件:勾选 “Nginx Ingress 控制器”(后续用于公网暴露应用)、“CloudMonitor Agent”(监控集群资源)。

依赖激活:创建集群前需激活 ACK、NAS(文件存储)等依赖服务,系统会自动检测,未激活时点击 “立即激活” 即可(无额外费用,按需计费)。

配置完成后提交订单,集群创建约需 5-10 分钟,待状态变为 “运行中”,表示 ACK 集群已就绪。

三、第二步:生成 ACK 临时 kubeconfig

kubeconfig 是连接 Kubernetes 集群的配置文件,为避免长期密钥泄露,推荐使用临时 kubeconfig(有效期可设置 1-7 天),操作步骤如下:

进入 ACK 集群详情页,点击 “连接信息” 标签页。

选择 “公网访问”,设置 “有效期”(如 3 天),点击 “生成临时 kubeconfig”。

复制生成的配置内容,保存到本地(后续在 Azure DevOps 中使用),注意:临时配置过期后需重新生成,生产环境建议使用 RAM 角色授权(更安全)。

此外,可通过阿里云 “云 Shell” 快速验证集群连接:点击集群详情页的 “更多 > 打开云 Shell”,执行kubectl get nodes,若返回节点列表,说明集群连接正常。

四、第三步:搭建 Azure DevOps 发布流水线

Azure DevOps 的发布流水线(Release Pipeline)负责将应用部署到 ACK 集群,核心步骤包括 “创建项目 - 选择模板 - 配置服务连接 - 定义部署任务”。

  1. 新建 Azure DevOps 项目与流水线

访问Azure DevOps 官网,登录后点击 “New project”,输入项目名称(如 “ack-cicd-project”),选择 “Private”(私有项目,保护代码与配置)。

进入项目后,左侧导航栏选择 “Pipelines>Releases”,点击 “New release pipeline”,在模板库中搜索 “Deploy to a Kubernetes cluster”(Kubernetes 部署模板),选择后点击 “Apply”。

  1. 配置 ACK 服务连接(关键步骤)

服务连接是 Azure DevOps 与 ACK 集群通信的桥梁,配置方式如下:

在流水线 “Stage 1” 任务中,点击 “Kubectl” 任务的 “Kubernetes service connection” 右侧 “Manage”。

新建服务连接,选择 “Kubernetes”,认证方式选 “KubeConfig”,粘贴第二步保存的临时 kubeconfig 内容。

勾选 “Accept untrusted certificates”(测试环境,生产环境需配置 CA 证书),点击 “Verify”,验证通过后命名服务连接(如 “ack-prod-connection”),完成创建。

  1. 定义应用部署任务

以部署 Nginx 示例应用为例,配置 “Kubectl” 任务参数:

命令(Command):选择 “apply”(用于创建 Kubernetes 资源)。
参数(Arguments):输入应用部署文件的 URL 或路径,示例使用 Kubernetes 官方 Nginx 部署文件:

-f https://k8s.io/examples/application/deployment.yaml

命名空间(Namespace):默认 “default”,生产环境建议创建专用命名空间(如 “nginx-prod”),需提前执行kubectl create ns nginx-prod。

配置完成后点击 “Save”,命名流水线(如 “ack-nginx-deploy”),保存时需填写修改说明(便于追溯版本)。

五、第四步:执行部署与验证集群状态

  1. 触发流水线部署

点击 “Create release”,选择流水线版本(默认最新版),点击 “Create” 生成发布实例。
在发布实例页面,点击 “Deploy” 触发 Stage 1 执行,可通过 “Logs” 查看部署日志:

若日志显示 “kubectl apply succeeded”,说明部署成功。

若失败(如 “无并行任务权限”),需在 Azure DevOps 中申请免费并行额度(个人测试环境足够使用)。

  1. 验证应用在 ACK 集群的状态

进入阿里云 ACK 控制台,在集群详情页点击 “工作负载> 部署(Deployments)”,若 “nginx-deployment” 的 “可用副本数” 为 1(与部署文件一致),表示应用已启动。

执行kubectl get pods(通过云 Shell 或本地 kubectl),输出如下信息即正常:

NAME                                READY   STATUS    RESTARTS   AGE
nginx-deployment-76d6c9b8c4-xxxx   1/1     Running   0          5m

六、第五步:通过 Ingress 暴露应用到公网

应用部署到 ACK 后默认仅集群内部可访问,需通过 Nginx Ingress 控制器暴露到公网,操作分 “创建 Service” 与 “创建 Ingress 规则” 两步。

  1. 创建 Kubernetes Service(服务发现)

Service 用于将 Pod 封装为统一访问入口,步骤如下:

进入 ACK 集群详情页,点击 “服务与路由> 服务”,选择命名空间(如 “default”),点击 “创建”。

image.png

配置服务参数:

服务名称:例如 “nginx-service”。
服务类型:选择 “ClusterIP”(仅集群内部访问,后续通过 Ingress 暴露公网)。
端口映射:“服务端口” 80,“容器端口” 80(与 Nginx 容器端口一致),协议 TCP。

image.png

点击 “创建”,服务创建后获取 “集群 IP”(如 172.16.0.10),可通过kubectl get svc nginx-service验证。

  1. 创建 Ingress 规则(公网访问入口)

Ingress 通过域名路由请求到后端 Service,配置步骤如下:

点击 “服务与路由> Ingress”,点击 “创建”,配置关键参数:

image.png

Ingress 名称:例如 “nginx-ingress”。
域名:使用阿里云提供的临时域名(格式为[自定义名称].[集群ID].[区域].alicontainer.com),例如 “my-nginx.c622cf1704c034033919c7892b09f539c.eu-central-1.alicontainer.com”。

image.png

路由规则:路径 “/”(所有请求),后端服务选择 “nginx-service”,端口 80。
无需启用 TLS(测试环境),生产环境需绑定 SSL 证书(阿里云 SSL 控制台申请免费证书)。

创建完成后,等待 1-2 分钟(Ingress 规则生效),在浏览器输入配置的域名,若显示 “Welcome to nginx!”,说明应用已成功暴露到公网。

image.png

七、总结与最佳实践建议

本文通过实操演示了 “ACK 集群创建→Azure DevOps 流水线配置→应用部署→公网暴露” 的完整流程,实现了从代码到可用应用的自动化交付。为进一步优化该方案,提供以下最佳实践:

安全性增强:生产环境不使用临时 kubeconfig,改用阿里云 RAM 角色授权(Azure DevOps 配置 RAM 访问密钥,限制权限范围);Ingress 仅开放必要端口,通过 WAF 防护恶意请求。

流水线优化:添加 “构建任务”(在 Release 前增加 Build Pipeline,编译代码、构建 Docker 镜像并推送到阿里云容器镜像服务 ACR),实现 “代码提交→自动构建→自动部署” 全流程 CI/CD。

监控与运维:通过阿里云 CloudMonitor 配置集群告警(如 CPU 使用率超 80%),Azure DevOps 添加 “部署后测试任务”(如 HTTP 健康检查),确保应用部署后可用。

通过 Azure DevOps 与 ACK 的协同,企业可大幅缩短应用交付周期,同时借助阿里云的云原生能力保障应用稳定性,为业务快速迭代提供技术支撑。

目录
相关文章
|
7天前
|
人工智能 运维 安全
|
5天前
|
人工智能 异构计算
敬请锁定《C位面对面》,洞察通用计算如何在AI时代持续赋能企业创新,助力业务发展!
敬请锁定《C位面对面》,洞察通用计算如何在AI时代持续赋能企业创新,助力业务发展!
|
6天前
|
机器学习/深度学习 人工智能 自然语言处理
B站开源IndexTTS2,用极致表现力颠覆听觉体验
在语音合成技术不断演进的背景下,早期版本的IndexTTS虽然在多场景应用中展现出良好的表现,但在情感表达的细腻度与时长控制的精准性方面仍存在提升空间。为了解决这些问题,并进一步推动零样本语音合成在实际场景中的落地能力,B站语音团队对模型架构与训练策略进行了深度优化,推出了全新一代语音合成模型——IndexTTS2 。
590 20
|
12天前
|
人工智能 JavaScript 测试技术
Qwen3-Coder入门教程|10分钟搞定安装配置
Qwen3-Coder 挑战赛简介:无论你是编程小白还是办公达人,都能通过本教程快速上手 Qwen-Code CLI,利用 AI 轻松实现代码编写、文档处理等任务。内容涵盖 API 配置、CLI 安装及多种实用案例,助你提升效率,体验智能编码的乐趣。
955 110
|
6天前
|
人工智能 测试技术 API
智能体(AI Agent)搭建全攻略:从概念到实践的终极指南
在人工智能浪潮中,智能体(AI Agent)正成为变革性技术。它们具备自主决策、环境感知、任务执行等能力,广泛应用于日常任务与商业流程。本文详解智能体概念、架构及七步搭建指南,助你打造专属智能体,迎接智能自动化新时代。