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

本文涉及的产品
可观测可视化 Grafana 版,10个用户账号 1个月
可观测监控 Prometheus 版,每月50GB免费额度
云原生网关 MSE Higress,422元/月
简介: 本文介绍如何结合阿里云 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 的协同,企业可大幅缩短应用交付周期,同时借助阿里云的云原生能力保障应用稳定性,为业务快速迭代提供技术支撑。

相关实践学习
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。     相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
目录
相关文章
|
18天前
|
监控 安全 Devops
DevOps 流水线的网络安全盲区与防御策略
在软件研发中,DevOps流水线加速了开发与交付,但也带来严重安全风险。自动化节点和第三方集成成为攻击入口,凭证泄露、供应链渗透、配置错误和依赖混乱等问题频发。企业需构建全流程安全体系,嵌入自动化安全策略,强化访问控制与监控,提升全员安全意识,实现效率与安全的协同发展。
316 0
|
11月前
|
运维 Devops 持续交付
自动化运维的魔法:打造高效DevOps流水线
【10月更文挑战第34天】在数字化时代的浪潮中,DevOps成为企业追求敏捷、高效和稳定的关键。本文将通过一个真实案例,展示如何构建一个高效的DevOps流水线,实现从代码提交到部署的全自动化流程。我们将探讨流水线设计的哲学、工具选择以及面临的挑战,并分享实际的代码示例和操作步骤,帮助读者理解自动化运维的精髓。
250 2
|
11月前
|
存储 监控 Devops
DevOps实践:持续集成/持续部署(CI/CD)的实战指南
DevOps实践:持续集成/持续部署(CI/CD)的实战指南
|
9月前
|
人工智能 运维 Devops
基于云效落地平台工程企业级最佳实践
本文介绍了平台工程作为DevOps演进的必然方向,探讨了其建设过程中面临的挑战及解决方案。文中首先分析了平台工程与DevOps的关系,强调了其在提升价值交付和降低团队心智负担方面的作用。接着,通过云效作为基础设施,详细阐述了其如何帮助企业构建高效的研发平台,并分享了两个实际案例:一个是200人规模的互联网企业,另一个是2000人规模的金融行业企业。最后,展望了平台工程的未来发展方向,包括组件化开发、AI技术的应用以及智能化场景的融入。碧桂园生活服务集团也分享了其在平台工程领域的实践经验和未来思考,强调了标准化、自动化、可靠性和智能化四大原则的重要性。
234 10
|
10月前
|
运维 监控 Devops
自动化运维实践:打造高效的DevOps流水线
在软件开发的快节奏中,自动化运维成为提升效率、确保质量的关键。本文将引导你理解自动化运维的价值,通过实际案例分享如何构建一个高效、可靠的DevOps流水线。我们将从持续集成(CI)开始,逐步深入到持续部署(CD),并展示代码示例来具体说明。准备好让你的运维工作飞跃式进步了吗?让我们开始吧!
|
11月前
|
运维 安全 Devops
DevOps实践:持续集成与持续部署(CI/CD)的自动化之路
【10月更文挑战第22天】在软件交付的快速迭代中,DevOps文化和实践成为企业加速产品上市、保证质量和提升客户满意度的关键。本文将通过一个实际案例,深入探讨如何利用持续集成(Continuous Integration, CI)和持续部署(Continuous Deployment, CD)实现软件开发流程的高效自动化,包括工具选择、流程设计以及问题解决策略。我们将一起探索代码从编写到部署的全自动化旅程,揭示其对企业运维效率和产品质量所带来的深远影响。
|
弹性计算 运维 Serverless
项目管理和持续集成系统搭建问题之云效流水线支持阿里云产品的企业用户如何解决
项目管理和持续集成系统搭建问题之云效流水线支持阿里云产品的企业用户如何解决
195 1
项目管理和持续集成系统搭建问题之云效流水线支持阿里云产品的企业用户如何解决
|
敏捷开发 Java 测试技术
阿里云云效产品使用合集之如何下载流水线构建过程中生成的jar
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。
|
敏捷开发 测试技术 持续交付
阿里云云效产品使用合集之如何限制在本地的构建主机创建的流水线的并发数
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。
|
敏捷开发 Java 测试技术
阿里云云效产品使用合集之怎么设置流水线中的全局参数
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。

相关产品

  • 容器服务Kubernetes版