从原子操作走向模板部署,详解云上资源自动化部署新模式

简介: 听阿里云技术专家详解云上资源自动化部署新模式——基于资源编排、Terraform托管、ROS CDK的自动化部署最佳实践。

5 月 29 日,阿里云开发者大会的《应用开发的基础设施云上优化》分论坛上,阿里云技术专家王斌鑫发表了主题为《云上资源自动化部署新模式》的分享,详细阐述了云上资源自动化部署新模式——基于资源编排、Terraform托管、ROS CDK的自动化部署最佳实践。

本文为根据王斌鑫的演讲整理成文。

image.png

当前云上资源部署模式

云上资源传统部署模式的挑战

image.png

大部分用户一般是通过控制台/API/SDK 等传统模式进行云上资源的部署,这种部署模式会面临规模、效率、规范和成本四个方面的挑战:

  1. 规模上,随着业务的发展需要管理的资源规模不断上升,部署和管理种类繁多的资源带来挑战。
  2. 效率上,随着规模上升,手动批量部署变得难以为继。
  3. 规范上,如何确保对基础设施的变更均符合组织管理规范。
  4. 成本上,手动部署的方式无法极致地利用云上弹性能力,其成本仍有优化空间。

阿里云自动化部署模式

资源编排服务(ROS)的核心价值

image.png

面对传统部署模式的挑战,我们在想是否能够帮助客户对云上资源进行自动化部署?因此有了阿里云资源编排服务(ROS),它基于基础设施即代码(IaC)的理念,让开发者和管理员使用模版的方式,编排云上的多种资源,进行自动化部署。

对比手动部署,使用资源编排服务 ROS 进行自动化部署会带来如下好处:

效率提升,针对诸如 SAP 这样复杂的解决方案能有效提升部署效率,也能够帮助 MSP、ISV、onECS 服务提升部署效率;

架构优化,ROS 提供了种类丰富的阿里云最佳实践模板,用户无需丰富的架构经验即可部署解决方案级别的架构;

流程管控,由 IT 管理员统一管理基础设施以避免各类风险,且可基于模板进行审核再进一步结合 CI/CD 以规范化 IT 管理流程;

节省成本,自动化部署方式可以按需部署和释放资源,从而极致地使用云上弹性能力来降低成本。

ROS 的使用流程和核心功能

image.png

使用 ROS 进行自动化部署的过程非常简单:

  1. 按照 ROS 模板语法编写模板,定义想要创建的各类云上资源。
  2. 在 ROS 控制台 使用模板创建资源栈,以执行部署。其中,资源栈是一组资源的集合,这些资源均是模板中定义的资源。
  3. 在 ROS 控制台查看资源栈,可以查看栈中各种资源的创建情况,并可以跳转到对应资源的控制台。

值得一提的是,ROS 服务本身完全免费,集成了身份认证和安全审计的功能,资源创建结果是可视化的,且能够进行多账号跨地域地部署,支持资源栈和实际资源的差异检测并进行修正。

除了直接使用 ROS 模板来做自动化部署,是否还有别的方式呢?

新模式一:Terraform 托管

Terraform 是什么

image.png

Terraform 同 ROS 一样,也是基于基础设施即代码(IaC)的理念的自动化编排工具。它使用一种特定的配置语言(HCL, Hashicorp Configuration Language)来描述基础设施资源,语法样例如上图所示。

Terraform & ROS

image.png

既然 Terraform 和 ROS 都是基于相同的理念的自动化编排工具,那它们的目标也是一致的,都是为用户打造良好的云上部署体验。

两者有很多相同之处,比方说 Terraform 的配置文件相当于 ROS 的模板,Terraform 的状态相当于 ROS 的资源栈,Terraform 的 CLI 程序则相当于 ROS 的编排引擎。

两者也各有优势,Terraform 的语法更简洁,对多云支持地很完善;而 ROS 则提供免费的服务托管,且有云原生的鉴权和审计能力。

那么是否能够将两者的优势结合呢?因此就有了 Terraform 托管能力。

Terraform 托管

image.png

用户直接在本地使用 Terraform 时,需要根据当前的操作系统下载对应的 Terraform CLI,编写模板,管理所使用的各类 Provider 的版本,且要管理状态等文件。

而使用 Terraform 托管功能时,只需在 ROS 的控制台编写 Terraform 模板便可直接部署,后续则通过资源栈来管理模板中定义的资源。底层的各类管理都交给 ROS。

image.png

在使用原理上,ROS 控制台会将 Terraform 模板组合成符合 ROS 语法规范的模板,ROS 服务端会其进行语法校验,生成租户信息,调度到 ROS 的 Terraform 服务进行资源的部署。

定时与多云场景实践

image.png

我们可以在很多场景中使用 Terraform 托管的功能。

场景一:定时部署资源

假设我们需要通过 Terraform 定时部署资源,传统方式下需要本地创建定时任务,执行 Terraform CLI 来做。而在云上,我们可以:

  • 事先编写一个 Terraform 模板,声明想要部署的云资源;
  • 事先编写一个 OOS 运维模板来声明由它调用 ROS 进行资源部署;
  • 在 OOS 中设置为定时执行,OOS 会定时触发 ROS,ROS 则会使用 Terraform 托管功能进行资源部署。

场景二:多云管理

如果我们既想要对多种云平台(如阿里云、AWS 等)的资源进行部署,又想有可视化的结果反馈,可以直接编写 Terraform 的模板来声明各个云上资源,并使用 ROS 的 Terraform 托管功能来进行部署。

Terraofrm 托管总结

image.png

Terraform 托管功能能让用户在云上直接使用 Terraform,和直接使用 ROS 模板部署有一致的控制台体验,且兼容了 ROS 原生的 API,同时兼备了统一的身份认证和权限控制。相比于本地使用 Terraform,不再需要管理多种 Provider 和多个 Terraform CLI 版本。

新模式二:ROS CDK

现有资源定义方式的不足

image.png

事实上,通过直接编写 ROS 模板,或者通过可视化编辑器生成模板,然后进行资源部署的方式是能够大大提升资源的部署效率的,但是也有一些不足之处:

  • 缺少对过程式的支持
  • 复杂场景的编写效率较低
  • 对程序的友好性较低
  • 动态性支持较差

针对这些问题,是否可以更进一步,在模板之上解决这些不足呢?

ROS CDK 是什么

image.png

ROS CDK 是资源编排(ROS)提供的一种命令行工具和多语言 SDK,利用面向对象的高级抽象模式对云资源进行标准定义,从而快速构建云资源。

ROS CDK 以应用作为资源管理的入口,一个应用管理多个资源栈,而每个资源栈中则可以有多个构件。构件可以理解为云上资源的组件,能包含一个或多个资源。

我们可以选择自己熟悉的编程语言(TypeScript/JavaScript/Java/Python/C#)编写应用代码声明想要部署的资源,ROS CDK 会将项目代码转换成 ROS 模板,然后使用该模板进行自动化部署。

使用步骤和项目生命周期

image.png

ROS CDK 的使用步骤也很简单:

  1. 首先,就是初始化项目,配置阿里云的访问凭证(AccessKey)
  2. 其次,就是编写资源代码和测试用例进行本地测试
  3. 最后,通过 CDK CLI 或者直接程序进行资源部署,并管理资源栈

在进行部署的阶段,CDK 会根据用户编写的资源代码进行构造,实例化出各种资源对象;然后在准备阶段做终态前的调整(通常由框架自动完成);进而验证各种资源属性,确保能够正确部署;最终合成出一个 ROS 模板,并使用该模板部署为资源栈。

代码、模板示例

image.png

上图中,左边是 ROS CDK 的资源代码,其中声明了一个 VPC,并使用循环动态生成 3 个 VSwitch。而右边则是由 ROS CDK 生成的 ROS 模板。由此可以看出针对动态生成的场景,ROS CDK 可以大大简化模板编写的复杂度。

应用程序集成 CDK 实现持续部署场景

image.png

假设我们需要实现一个 CI/CD 系统,能够部署这样的资源架构:使用 API 网关中提供 API,使用函数计算的函数提供业务逻辑,要分别部署测试、预发、线上环境的资源,并且支持从测试发布到预发,从预发部署到线上。

针对这样的资源架构,在直接使用 ROS 模板的方式中,需要分别为三个环境准备三个模板,而环境间的部署则还需要动态拼接模板,对应用程序来说并不友好。这里就建议使用 ROS CDK,这样应用程序可以根据环境的不同指定对应的变量,生产对应的资源,从而满足环境的动态性部署。

ROS CDK 总结

image.png

相较于直接使用 ROS 模板部署,使用 ROS CDK 允许开发者选择自己熟悉的编程语言,并能借助其动态特性来实现复杂的编排效果。ROS CDK 能够非常容易地集成到应用程序中,从而能够方便地在程序中进行资源部署。

总结

image.png

企业上云规模逐渐增大,企业云上资源的部署方式从人工开始走向自动,从单云走向多云,从原子操作走向模板部署。随着基础设施即代码的理念而兴起,资源的部署模式也因场景的不同而不同,总体来说有以下四个部署模式的建议:

  1. 作为入门级用户,只需管理有限几个资源,直接使用控制台的方式是最为简单直观的;
  2. 作为企业 IT 管理员,需管理规模较大的云上资源,使用 ROS 模板管理基础设施会是最有效率的选择;
  3. 作为运维研发人员,需要在业务系统中实现资源部署逻辑,那么 ROS CDK 会是最佳选择;
  4. 作为多云管理员,需可视化管理阿里云、AWS、Azure 等多种云的资源,使用 ROS Terraform 托管功能是不二之选。
相关实践学习
使用ROS创建VPC和VSwitch
本场景主要介绍如何利用阿里云资源编排服务,定义资源编排模板,实现自动化创建阿里云专有网络和交换机。
阿里云资源编排ROS使用教程
资源编排(Resource Orchestration)是一种简单易用的云计算资源管理和自动化运维服务。用户通过模板描述多个云计算资源的依赖关系、配置等,并自动完成所有资源的创建和配置,以达到自动化部署、运维等目的。编排模板同时也是一种标准化的资源和应用交付方式,并且可以随时编辑修改,使基础设施即代码(Infrastructure as Code)成为可能。 产品详情:https://www.aliyun.com/product/ros/
相关文章
|
1月前
|
JavaScript Java 测试技术
基于springboot+vue.js+uniapp的办公自动化管理系统附带文章源码部署视频讲解等
基于springboot+vue.js+uniapp的办公自动化管理系统附带文章源码部署视频讲解等
20 0
|
3月前
|
JavaScript Java 测试技术
基于SpringBoot+Vue+uniapp的办公自动化管理系统的详细设计和实现(源码+lw+部署文档+讲解等)
基于SpringBoot+Vue+uniapp的办公自动化管理系统的详细设计和实现(源码+lw+部署文档+讲解等)
|
2月前
|
运维 监控
如何使用OOS有效进行云上自动化运维
OOS(运维编排服务)是一种云上自动化运维工具,可以帮助你有效进行云资源的管理和维护。以下是如何使用OOS有效进行云上自动化运维的一些建议: 1. **利用自动化能力**:OOS提供了批量操作、
|
4天前
|
JSON JavaScript 开发者
Composerize神器:自动化转换Docker运行命令至Compose配置,简化容器部署流程
【8月更文挑战第7天】Composerize神器:自动化转换Docker运行命令至Compose配置,简化容器部署流程
Composerize神器:自动化转换Docker运行命令至Compose配置,简化容器部署流程
|
11天前
|
运维 Linux Apache
【一键变身超人!】Puppet 自动化运维神器 —— 让你的服务器听话如婴儿,轻松管理资源不是梦!
【8月更文挑战第9天】随着云计算与容器化技术的发展,自动化运维已成为现代IT基础设施的核心部分。Puppet是一款强大的自动化工具,用于配置管理,确保系统保持预期状态。通过易于理解的配置文件定义资源及其依赖关系,Puppet实现了“基础设施即代码”的理念。本文简要介绍了Puppet的安装配置方法及示例,包括Puppet Agent与Master的安装、基本配置步骤和一个简单的Apache HTTP Server管理示例,展示了Puppet在实际应用中的强大功能与灵活性。
24 9
|
5天前
|
弹性计算 JSON 开发工具
"一键玩转阿里云ECS!Python大神揭秘:如何自动化创建镜像并跨地域复制,让你的云资源部署秒变高效达人!"
【8月更文挑战第14天】本文介绍如何使用Python与阿里云SDK自动化管理ECS镜像,包括创建镜像及跨地域复制,以优化云资源部署。首先安装`aliyun-python-sdk-ecs`并配置阿里云凭证。接着,通过Python脚本实现镜像创建与复制功能,简化日常运维工作并增强灾难恢复能力。注意权限及费用问题。
19 2
|
18天前
|
运维 安全 网络安全
自动化运维:使用Python脚本实现批量部署
【8月更文挑战第2天】在现代IT基础设施管理中,自动化运维成为提升效率、减少人为错误的关键。本文将通过一个实际的Python脚本示例,展示如何实现服务器的批量部署,包括环境准备、代码实现及执行过程。文章旨在为运维工程师提供一种简化日常任务的方法,同时强调安全性和可维护性的重要性。
|
19天前
|
运维 安全 测试技术
自动化运维的利剑:Ansible在企业级部署中的应用与挑战
本文深入探讨了Ansible,这一领先的IT自动化工具,如何在企业级部署中扮演关键角色。我们将通过实际案例分析,揭示Ansible在简化配置管理、加速应用部署和提高运维效率方面的优势。同时,文章也将不回避Ansible实施过程中可能遇到的技术挑战与限制,并提供针对性的解决策略。阅读本文后,您将获得一个全面的视角,理解Ansible在现代企业运维中不可或缺的地位,以及如何克服其面临的主要问题。
27 1
|
3天前
|
监控
只需部署这个脚本就可玩自动化,还是思科牛逼!
只需部署这个脚本就可玩自动化,还是思科牛逼!
|
20天前
|
运维 中间件 PHP
深入理解PHP中的中间件模式自动化运维之脚本编程实践##
【7月更文挑战第31天】在PHP开发中,中间件模式是一种强大的设计模式,它允许开发者在请求处理流程中注入自定义的处理逻辑。本文将通过实际代码示例来探讨如何在PHP项目中实现和使用中间件,以及这种模式如何提升应用程序的可维护性和扩展性。 【7月更文挑战第31天】 在现代IT运维管理中,自动化不再是可选项,而是提高生产效率、确保服务质量的必需品。本文将通过Python脚本编程的角度,探讨如何利用代码简化日常运维任务,提升工作效率。我们将从实际案例出发,逐步剖析自动化脚本的设计思路、实现过程及其带来的益处。 ##
15 0