AZURE ACI -- 无服务器化容器解决方案

标题很对仗,目的很明确,蹭热度!!!前天看了 A 站的童鞋搞了一个,今儿我换个姿势用软 A 也搞一个。Azure Container Instance 服务是一种无服务器化的容器解决方案。ACI 服务是一个完全托管的容器服务,客户不需要搭建和维护容器计算集群(如用 VM 去搭建 Swarm 或者 Kubernetes ),客户管理视图和颗粒度在容器,可以直接进行容器消费,创建删除容器,并且按照容器分配的 CPU 和 内存资源的占用时间进行收费,并且容器生命周期跳转是非常快速的,可以快速的删除、创建容器。为了方便用户顺应客户的使用和操作习惯,ACI 服务可以与现有的 K8S 集成,注册为虚拟的 K8S compute agent node,是用户可以沿用现有的工具方法来调度使用云端的计算资源。容器正在变成对云应用程序执行打包、部署和管理操作的首选方式,今天我们就来一起了解一些如何通过 Virtual Studio Team Service + ACI 服务实现应用的CI/CD。

先来看一下整体的架构图:

下面我们来分几个部分来介绍整个架构的实现:

  • 在 GitHub 上准备演示所需要的 Code Source Repo
  • 准备 Azure Container Registry
  • VSTS 中以 Github 为 Code Souce 创建 CI 任务,将 Build 打包发布到 Azure Container Registry
  • VSTS 中 创建 CD 任务,将 Build 的最新版本发布到 Azure Container Instance 服务中部署实施
  • 检查发布结果,模拟 Code Commit,查看 CI/CD 过程

开搞!

第一步:在 GitHub 中准备 Code Source Repo

为了大家快速上手理解方便,本示例中 Code Source Repo 采用 Github,VSTS 服务内部也支持Git Repo,用户也可以选择讲 Code Control 这部分也托管给 VSTS 服务。所有 Code Source 大家可以到 https://github.com/nonokangwei/vstscicddemo 查阅。童鞋们自行准备自己的 Repo 这里不做赘述。

第二部:创建 Azure Container Registry

登入 Azure Portal,选择 Azure Container Registry 服务,并创建

输入 Registry 名称,输入资源组名称,开启 Admin User, 点击创建

第三步:VSTS 中以 Github 为 Code Souce 创建 CI 任务,将 Build 打包发布到 Azure Container Registry

登入 VSTS,创建新项目

选择 New Project

进入创建的 Project,选择 Build and Release --> Builds

选择 New Builds

选择 GitHub 作为 Code Source,填入自己 Code Repo 的信息

选择 Empty Process 模板

选择 Agent queue 为 Hosted Linux,Agent 扮演 Worker 的角色来执行 Build 任务,VSTS 已经内置了托管的 Agent,本示例中以 Build Linux 环境的 Docker 为例,所以这里选择 Hosted Linux。

点击保存后,开始添加 Build Task

添加 Command Line Task,原生托管的 Linux Agent 内没有安装 Docker,所以我们需要借助 Command Task 来定制化托管 Agent 的 Runtime

1 echo “install docker-ce”
2 curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
3 sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
4 echo “apt-get update”
5 apt-get update
6 sudo apt-get install -y docker-ce

添加 Dokcer Build Task

选择 Container Registry Type 为 Azure Container Registry,选择第二步创建 ACR 所使用的订阅,选择前面创建的 ACR, Action 选择 Build an Image,指定 Github Repo 中的 Dockerfile,Image Name 输入 YourImageName:$(Build.BuildId),并勾选 Include Latest Tag。通过此步完成 CI 中 Build Docker Image 的工作。

添加 Task,Dokcer Build Task

选择 Container Registry Type 为 Azure Container Registry,选择第二步创建 ACR 所使用的订阅,选择前面创建的 ACR, Action 选择 Push an Image,指定 Github Repo 中的 Dockerfile,Image Name 输入 YourImageName:$(Build.BuildId),并勾选 Include Latest Tag。通过此步完成 CI 中 Push Docker Image 到 ACR 的工作。

选择 Trigger,开启 Enable continuous integration

点击 Save & queue 保存

第四步:VSTS 中 创建 CD 任务,将 Build 的最新版本发布到 Azure Container Instance 服务中部署实施

选择 Build and Release --> Releases

创建 Release Defination,选择 Empty Process

添加 Artifacts,选择 Source Type Build,选择前面创建的 VSTS Project,选择前面创建的 Build Defination。通过此步定义 CD Pipline,将 CD 与 CI Link 在一起。

开启 Continuous deployment trigger

添加 CD Task, 选择 Tasks,点击添加

选择  Check out our Marketplace, 选择 Replace Tokens 插件并安装

添加 Replace Token Task,指定 Root Directory 为 Github Source Repo 中的 armtemplate 目录, target files 设置为 **/*.json。CD 过程在部署中由于 VSTS 还没有原生的和 ACI 服务的集成,所以这里面选择 Azure Resource Template 部署方式,将 CD 部署通过 Azure Resource Template 来描述,Template 中需要从 CI 过程中抓取参数,此步是通过 Replace Token 插件在参数 json 文件中进行动态传参的效果。

添加 Azure Deployment Task,选择目标 CD 要部署 ACI 所在的 Azure 订阅,选择 Action 为 Create or Update resource group,指定目标部署资源组,指定目标部署区域,Template 选择 Github Code Souce Repo 中 armtemplate 目录下的 azuredeploy.json,Template parameters  选择 Github Code Souce Repo 中 armtemplate 目录下的 azuredeploy.parameters.json

选择 Variables,添加 Process variables,image 名称按照前面 CI Build 中的命名进行填写,imagePassword,imageRegistryLoginServer,imageUsername 从Azure Portal 中找到前面创建的 ACR 资源中获取。

点击 Save 保存。

第五步:检查发布结果,模拟 Code Commit,查看 CI/CD 过程

登入 Github,在 Code Source Repo 中模拟创建一个 Empty 文件并 Commit,在 VSTS 中查看 CICD Pipeline。

登入 Azure Portal,查看 Azure container Instance 服务中已经发布了容器服务,并浏览器模拟访问登陆。

修改 Github Code Source Repo 中 webpage 目录下的 index.html,<title>Welcome to Azure Container Instances!</title> 替换为 <title>CICD with Azure Container Instances!</title> ,<h1>Welcome to Azure Container Instances!</h1> 替换为 <h1>CICD with Azure Container Instances!</h1> 并 Commit 提交。重新访问站点,查看页面更新。

好啦,我们实现 VSTS 和 ACI 服务的整合来实现基于无服务器架构的容器应用 CI/CD。心动不如行动,赶紧动手吧。

原文地址:https://www.cnblogs.com/wekang/p/8880041.html

时间: 2024-10-18 07:30:59

AZURE ACI -- 无服务器化容器解决方案的相关文章

云计算未来趋势预测:AIaaS、无服务器、云端一体化等将成重点?

云计算是一种业务模式,服务提供商在定制的环境中处理客户的完整基础架构和软件需求.随着云计算的发展,云服务和解决方案也将随之增长. 软件即服务(SaaS)预计到2020年将以18%的年均复合增长率增长,平台即服务(PaaS)的采用率将在2020年达到56%,而2017年为32%.2018年基础设施即服务(IaaS)的全球市场规模将达到175亿美元.随着企业云服务的采用,云文件共享服务将会增加,而消费者云服务也将会随之增长.在云计算领域,亚马逊领先于微软.IBM.谷歌及其他技术巨头.2022年,亚马

由浅入深SCF无服务器云函数实践

欢迎大家前往云+社区,获取更多腾讯海量技术实践干货哦~ 作者:陈杰,腾讯云架构平台部技术专家 近年来,互联网服务从一开始的物理服务器托管,虚拟机,容器,发展到现在的云函数,逐步无服务器化,如下表所示.程序员逐步聚焦于最核心的业务逻辑开发,解放了生产力,显著提升了服务上线效率. 云函数带来了真正的计算服务,如下表所示,类比腾讯云COS对象存储,SCF以函数为单位封装计算,按需调度执行,无须关心函数的自动扩缩容,故障容灾等,无任何闲置成本. 云函数给用户带来的价值主要4点: 简化架构:函数粒度的微服

陈杰:无服务器架构,让云端开发更纯粹

欢迎大家前往腾讯云技术社区,获取更多腾讯海量技术实践干货哦~ 在微服务还方兴未艾的时候,无服务架构就以其弹性伸缩.按需付费以及无维护等特点得到了很多开发者的青睐.腾讯架构平台部技术专家陈杰表示,云函数的核心理念就是给整个服务提供一种公共的架构,针对性解决服务的接入.安全.扩容.容灾.分布等一系列问题. 腾讯架构平台部技术专家陈杰 据介绍,云函数价值主要体现在四个方面.一是简化架构,云函数是以函数粒度来组织的服务,是一种天生的微服务架构:而是简化代码开发,用户无须编写网络服务,鉴权,分布,容灾,扩

无服务器计算将会取代容器?

无服务器计算是当前的一项热门话题,甚至热过了Docker容器. 这么讲是说无服务器计算要成为容器的替代品吗?或者它是可以和容器一同使用的另一项流行技术吗? 在这篇文章中,我将为你介绍无服务器计算需要了解的内容,以及该如何将它融于你的IT战略中. "无服务器"并不是真的没有服务器 首先需要澄清一点:当然可能大家也都有所了解,无服务器计算并不是意味着没有服务器.它是一个基于云的服务,和云上的其他服务一样,运行在服务器上. 也就是说,称它为无服务器,是因为服务提供者负责处理了所有的服务器侧I

腾讯云无服务器云函数架构精解

欢迎大家前往腾讯云技术社区,获取更多腾讯海量技术实践干货哦~ 分享人:陈杰,腾讯云架构平台部技术专家,10年云计算经验,现供职于腾讯架构平台部,负责弹性计算及云函数技术研发,致力于提供领先的基础设施平台以提升资源利用率及优化提升程序员开发运维效率. 继虚拟机,容器技术,无服务器化成为新的行业热点,无服务器云函数可以让用户无需关心服务器的部署运营,只需开发最核心的业务逻辑,即可实现上线运营,具备分布容灾能力,可依据负载自动扩缩容,按照实际调用次数与时长计费.本次主要分享腾讯云无服务器云函数在技术实

稳定性「三十六计」- 无状态化

背景 随着容器化.云原生等的流行,DevOps团队也在不断鼓吹「以无状态为荣,以有状态为耻」.因为有状态的服务难以部署.难以扩展.下面我举几个自己工作中实际的例子. 实例1-依赖系统目录结构 刚转来基础架构的时候,接手了一个服务,原来是个应届生写的.所以可以理解,也就是基本能完成功能,反正也不是核心服务. 刚拿到的时候下载下来本地运行没成功,报错是说对某个目录下没有某个文件.读了一下代码发现是启动时需要加载一个本地认证的证书.从发布脚本目录下找到了那个证书文件,放到指定目录下后运行成功. 后来把

2019 年无服务器使用调查

传统的 IT 体系结构已经不适合当今快速发展的数字经济环境.技术顾问 <a href="https://www.linkedin.com/pulse/step-towards-true-digital-transformation-mainstay-company/">Declan Morris 表示</a>:"客户不仅期望零停机时间,而且要求应用程序无论在世界任何地方都具有一致的性能."他还预测到,接下来是无服务器计算和功能即服务(FaaS

[转帖]VMware 容器解决方案一览

VMware 容器解决方案一览 https://linux.cn/article-6984-1.html 作者: Kenneth Hui 译者: DockerOne 夏彬 | 2016-02-07 09:18   收藏: 2 本文介绍了VMware最近宣布的两项容器解决方案,分别是vIC(整合了vSphere的容器技术vSphere Integrated Containers)和Photon平台,并与现有方案进行了对比. 最近,VMware宣布了几项关于容器的和如何构建云原生应用cloud-na

无服务器技术常见的五大误解

无服务器技术的快速增长让企业有机会节省服务器费用,并且帮助开发人员节省时间,能够关注于编码,而不是后台运维上.这样的切换带来的一个挑战是保持标准理解的难度.在上周于奥斯丁举办的 无服务器大会 上,我们就该领域相关的常见误解采访了Heavybit社区的专家. 误解 #1:无服务器是软件的全新变革方向 "一种常见的误解是无服务器是软件的全新变革方向,"Nick Martin说,他是 Meteor 的联合创始人和CTO."的确,这是让软件开发更快更容易的变革的下一步.就像编译器,数