欢迎访问深圳敏捷云计算科技有限公司!

了解现代应用部署策略:甲骨文云OCI基础设施DevOps带来的革新

2024-03-05 原创文章

在云中高效运行您的应用程序,快速交付软件至关重要。Oracle DevOps服务为开发者提供了一个持续集成和部署(CI/CD)平台,您可以使用它在Oracle云上轻松构建、测试和部署软件及应用程序。


DevOps构建和部署管道减少了变更引起的错误,并缩短了客户在构建和部署发布上的时间。该服务还提供了私有Git仓库来存储您的代码,并支持与外部代码仓库的连接。无论您是将工作负载迁移到OCI(从本地或其他云),还是在OCI上开发新应用程序,您都可以使用DevOps服务简化软件交付生命周期。


架构

这个参考架构描述了两种不同的部署策略,即蓝绿部署策略和金丝雀部署策略。


部署策略是模型和实践,使应用程序的修改或升级成为可能。它们允许DevOps团队定义应用程序如何部署到生产环境。在不同的部署策略之间选择,使管理员能够在部署新版本的风险、新版本对用户的影响以及实施策略所需的基础设施开销之间做出正确的权衡。这里介绍的策略为客户提供了更多选项,以便根据他们的应用程序需求做出正确的权衡。

蓝绿部署

蓝绿部署策略允许DevOps团队通过使用两个相同的环境来发布应用程序的新版本,其中一个在特定时间处于活动状态。应用程序的当前版本部署在活动环境中,而新版本则部署在待命环境中。


部署到待命环境不会影响活动环境或用户流量。DevOps发布管道可以针对新版本运行验证测试,一旦获得批准,通过简单地切换用户流量到待命环境,即可将其提升为生产版本。对于应用程序的每个新版本,都会重复此过程。

这种策略的主要优势是它提供了近乎零停机时间和即时回滚能力。如果新版本出现任何问题,流量可以立即恢复到之前的稳定版本。此外,待命环境可用于调试应用程序发布中的问题。


蓝绿部署提供了以下好处:

  • 它能够快速且无风险地进行部署。
  • 它提供了有效且简单的回滚机制。
  • 它是进行A/B软件测试的有效方式。
  • 它几乎不需要停机时间,因为生产环

境始终由一个活跃环境(由负载均衡器控制)提供服务。


  • 然而,您应该意识到这些缺点:
  • 运行两个相同的环境成本高昂,且维护资源密集。
  • 在两个相同环境之间管理发布时,需要密切监控两个环境。
  • 管理部署之间的数据库依赖关系可能很复杂。


下图展示了蓝绿部署架构:



遵循您的指示,保持原文的结构,继续进行修改:

Canary金丝雀部署

在金丝雀部署策略中,应用程序的发布逐渐向一部分用户进行。最初,新版本被部署到一个没有用户流量的金丝雀环境中。DevOps发布管道可以对新版本进行验证测试,一旦准备就绪,只将一部分用户的流量路由到金丝雀环境。

这种技术允许DevOps团队针对真实用户流量评估新版本的应用程序。在将新版本推广到更大的用户群之前,他们可以比较两个版本的应用程序。如果出现任何问题,这些用户可以轻松切换回之前的版本,从而也提供了风险缓解。


Canary金丝雀部署提供以下好处:

  • 您可以与真实用户一起测试两个应用程序版本。
  • 新版本发布零停机时间。
  • 回滚到以前的版本非常容易,且风险最小。


然而,您应该意识到这些缺点:

  • 大规模测试和验证新发布的复杂性。
  • 从用户测试中获取对新发布的反馈耗时。


  • 下图展示了Canary金丝雀部署策略:


这些架构包含以下组件:

地域

  • OCI地域是包含一个或多个数据中心的本地地理区域,这些数据中心被称为可用性域。各个地域相互独立,它们之间可能相隔很远(跨越国家甚至大陆)。该架构使用单一地域。


DevOps项目

  • 实施CI/CD工作流所需的DevOps资源的逻辑分组。DevOps资源可以是制品、构建管道、部署管道、外部连接、触发器和环境。DevOps项目便于为所有DevOps资源启用日志记录、监控和通知。


构建管道

  • 构建管道从源代码仓库获取提交ID,并使用该源代码运行构建指令。构建管道定义了构建过程的一系列阶段:构建、测试和编译软件制品,将制品交付给OCI仓库,以及可选的触发部署。您在构建规范文件中定义构建运行的流程和指令。


构建阶段

  • 阶段是管道运行期间发生的单个动作。这里提到的各种构建阶段包括:管理构建阶段:用于构建和测试源代码的管理构建阶段。交付制品阶段:将构建阶段的输出推送到各种仓库的阶段;例如,将容器镜像推送到容器仓库或将部署清单推送到制品注册表。调用部署:一旦构建阶段完成,调用部署管道的阶段,同时解析从管理构建阶段导出的变量到部署管道阶段。


代码仓库

  • DevOps服务托管的私有Git仓库。您可以使用这些DevOps代码仓库存储、管理和开发源代码。


部署管道

  • 一系列步骤,用于将一组制品交付和部署到目标环境。通过定义可以串行或并行运行的阶段,可以控制软件发布的流程和逻辑。


部署阶段

  • 阶段是管道运行期间发生的单个动作。用于蓝绿部署的构建阶段包括:
  • 蓝/绿OKE部署或蓝/绿实例组部署:在目标环境部署更新代码的阶段。
  • 部署验证:一个可选阶段,您可以使用函数来验证部署。
  • 控制:批准:批准将部署到目标生产环境的控制阶段。
  • 蓝/绿OKE流量转移或蓝/绿实例组流量转移:最终阶段,生产流量转移到最新部署的环境。


金丝雀部署的构建阶段包括:

  • 金丝雀OKE部署或金丝雀实例组部署:在目标环境部署更新代码的阶段。
  • 部署验证:一个可选阶段,您可以使用函数来验证部署。
  • 金丝雀OKE流量转移或金丝雀实例组流量转移:根据流量转移限制(转移的流量百分比),将流量切换到金丝雀环境的阶段。
  • 控制:批准:批准将部署到目标生产环境的控制阶段。
  • 金丝雀部署实例组生产或OKE部署生产:最终阶段,生产流量转移到最新部署的环境。


DevOps制品

  • DevOps制品是对构成您应用程序的任何文件、二进制文件、包、清单或镜像的引用或指针。创建制品时,需告知Oracle DevOps实际制品的源位置。DevOps支持OCI容器镜像注册表和OCI制品注册表仓库。


制品仓库

  • 制品仓库创建仓库以对类似的制品进行分组。创建后,您可以将制品上传到此仓库。这些制品是文本文件、二进制文件和部署清单的集合,它们被交付到目标部署环境。每个制品都有一个名称,由其路径:版本组成。路径是用于组织制品的字符串。


OCI日志和通知服务

  • OCI日志服务存储与部署相关的日志。部署运行时输出和部署的最终结果显示为日志条目。OCI通知服务提供对部署项目及其资源的最新状态的可见性,并采取任何必要的行动。例如,当重要事件发生时,比如部署管道中等待批准的阶段,您会收到通知。收到通知消息后,您可以前往DevOps部署管道并批准该阶段。


部署环境

  • 这个环境是部署制品的计算资源的集合。环境可以是函数、计算虚拟机(VM)或裸机实例,或者是OKE集群。蓝绿部署仅适用于OKE集群和计算虚拟机。



推荐

在使用Oracle DevOps服务部署持续集成和部署(CI/CD)平台时,以下建议可以作为起点。您的需求可能与此处描述的架构不同。


计算形状

  • 本架构使用带有E3或E4弹性形状的Oracle Linux OS镜像,最低资源配置用于托管OKE集群节点中的计算主机。如果您的应用程序需要更多内存或核心,您可以选择不同的形状。


VCN

  • 创建VCN时,根据您计划连接到VCN子网的资源数量,确定所需CIDR块的数量及每个块的大小。使用标准私有IP地址空间内的CIDR块。创建VCN后,您可以更改、添加和移除其CIDR块。本架构使用公共VCN来托管Oracle容器引擎(Kubernetes)。您也可以使用私有VCN。在这种情况下,使用NAT网关以便集群通过公共互联网访问。


Oracle容器引擎(Kubernetes,OKE)

  • 本架构将OKE集群作为目标环境之一进行部署。工作节点部署在E3或E4 Oracle Linux OS上。本架构在集群中使用三个工作节点,但您可以在每个集群上创建多达1000个节点。


实例组

  • 如果您选择此架构部署到实例组,则会在您的租户中创建一个新的计算实例,并可选择形状。


容器镜像注册表

  • 本架构将注册表部署为内部使用的私有Docker注册表。Docker镜像被推送到注册表并从中拉取。您也可以将注册表作为公共Docker注册表使用,使任何具有互联网访问权限并知道相应URL的用户能够从Oracle云中的公共仓库中拉取镜像。


制品注册表

  • 本架构为实例组、OKE和Functions部署使用的软件和配置创建一个制品。架构为内部使用创建一个制品注册表仓库。软件二进制文件、文本和部署配置被上传至制品注册表仓库并从中下载。


[                                                                                                              

考虑因素

在使用Oracle DevOps服务部署持续集成和部署(CI/CD)平台时,请考虑以下因素。

DevOps支持的部署

  • DevOps支持部署到OKE、计算主机和函数。本架构部署到OKE集群。根据您的具体需求,考虑部署到其他端点。

Linux支持

  • 仅支持Linux主机用于实例组部署到计算实例。

部署制品

  • 使用DevOps进行部署的制品需要存放在OCI制品注册表或容器镜像注册表仓库中。

应用程序分组

  • 作为最佳实践,将每个应用程序及其所有微服务分组到单个项目中。



部署

这个参考架构的Terraform代码作为样本堆栈可在Oracle云基础设施资源管理器中获取。您也可以从GitHub下载代码,并根据您的具体需求进行定制。

  • 使用Oracle云基础设施资源管理器中的样本堆栈进行部署:点击对应于您所需部署策略的按钮,然后按照第2-6步的指示操作:

  1. 如果您尚未登录,请输入租户和用户凭据。
  2. 选择您希望部署堆栈的区域。
  3. 按照屏幕提示和指示创建堆栈。
  4. 创建堆栈后,点击Terraform操作,并选择计划(Plan)。
  5. 等待作业完成,并审查计划。
  6. 如需进行任何更改,请返回到堆栈详情页面,点击编辑堆栈,并进行必要的更改。然后,再次运行计划(Plan)操作。
  7. 如果不需要进一步更改,请返回到堆栈详情页面,点击Terraform操作,并选择应用(Apply)。

使用GitHub中的Terraform代码进行部署:

  1. 访问GitHub。
  2. 克隆或下载仓库到您的本地计算机。
  3. 按照README文档中的指示进行操作。


开启您的Oracle云之旅:Agilewing - 您的智能云服务伙伴

作为Oracle的高级合作伙伴,Agilewing正重新定义企业体验Oracle云服务的方式。借助于其简化的开户流程和一流的技术支持,Agilewing将复杂的开户和操作流程转化为一种轻松、直观的体验。通过我们的一站式服务,您可以迅速开启并享受Oracle云的全方位服务,从而无缝融入云端世界。


Agilewing的AgileCDN服务,结合了OCI的云基础服务,提供了一流的全球内容加速解决方案。超过2800个全球POP节点和7000个直连点的强大网络,确保了无论您的业务扩展到全球哪个角落,都能保持高效稳定的运行。


利用Oracle云的先进技术,Agilewing致力于简化云服务搭建、云迁移和业务出海的过程。我们的合作模式为客户带来经济高效的解决方案,使他们能够更加专注于核心业务,同时享受Oracle云的高性能和安全保障。


Oracle云服务,作为一个充满潜力的领域,以其高性能、安全性和全球统一的服务标准,为各类企业开启了新的机遇之门。通过Agilewing的专业服务,无论是个人用户还是企业,都能轻松步入这个充满技术革新和高效能的新时代。现在,就让Agilewing引领您开始探索Oracle云服务,打开一个全新的世界大门。