• 减少运维工作量,如何通过 ROS 轻松实现资源编排新方式


    头图.png

    在日常工作中,我们一定遇到过需要快速构建系统的工作情形:

    • 作为资源管理人员,需要接收一定数量以及配置的资源申请,这些申请要求网络、存储设备按需到位;
    • 作为开发人员,需要将一套开发环境,复制一份测试环境以及线上环境;
    • 架构师规划一套系统,需要在云上进行搭建。

    这些场景都展现着我们日常所遇的各种困难:

    • 对各类云端资源需要进行广泛支持与管理:这其中需要包括常用基础IaaS 资源及 PaaS 服务,比如主机、路由器、负载均衡器等计算网络资源以及各种数据库、缓存、大数据、存储服务;

    • 资源编排使用难度大:技术栈复杂而难用,实现复杂拓扑关系需要系统化知识与丰富经验;

    • 大量机械重复的手动配置操作:不仅是各资源及其拓扑关系按配置进行手工部署,各资源间的拓扑关系更是令人头疼;

    • 学习成本高:过往的资源管理依赖于通过命令行调用API 的方式,提升了操作难度和学习成本。

    由此可见,自动化运维成了运维人员的业务刚需,各大云厂商也相继推出各自的资源编排服务(Resource Orchestration,以下简称 ROS)。ROS 的理念是“基础设施即代码”,一方面是用代码思维的版本管理来记录基础设施变化,另一方面通过代码实现自动化运维,简化编写代码复杂度,用户通过使用 Json / Yaml 格式模版描述多个云计算资源(如 ECS、RDS、SLB)的配置、依赖关系等,并自动完成所有云资源在多个不同地域以及多个账户中的部署和配置,就像乐高积木一般,运维人员轻松完成搭建。

    经过多次调研后,我们发现针对于云服务器最多的场景是基于云服务器“此刻的状态”再创建 1-N 台云服务器,新创建的云服务器系统盘和数据盘都是“此刻的状态”。我们以一个网站服务为例,一般运维工程师会在系统盘或数据盘中安装一些应用,如:Tomcat、Jenkins、MySql、网站自身的数据/文件等等。如果需要再创建一台云服务器与目前已有云服务器的系统或数据状态保持一致,可以将系统盘做成自定义镜像,数据盘做成快照,然后再新购买云服务器时镜像选择该自定义镜像,数据盘的快照选择该快照,安全组的规则配置与原云服务器一致的规则,就可以创建一台基于原云服务器“此刻状态”的新云服务器。

    如果只需创建这一台云服务器且不需要记录历史状态,上述方法是比较合适的。

    但实际情况远远比这复杂得多,比如可能会频繁创建/释放云服务器;或者生成镜像的操作人员与购买云服务器的人员不是同一个人,一但购买选项没有选正确,新购的这台云服务器就不能投入业务中,按量计费的需要再释放,包年包月的需要等到到期释放或者做数据迁移,势必带来成本损失;想记录或跟踪云服务器的历史演变,如安全组配置变化、基础镜像等信息,也需要单独记录。

    面对上述问题,运维人员使用 ROS 的模板作为交付物,将资源固定参数在模板资源中定义,将可变参数在模板参数中定义,方便运行时输入实际参数。这样在频繁创建云服务器时,只需要输入可变参数中的内容即可,如镜像 ID、快照 ID,或者克隆原云服务器,或者没有可变参数,将所有定义都在资源中描述,根据实际业务要求进行模板编写。模板也可以存放在 Github 中,可以像管理代码一样跟踪模板历史,也可以基于模板之上创建适合于企业内部的运维工具,实现自动化运维,以“基础设施即代码”的理念代替“重复劳动”。

    我们可以看到 ROS 的强大特性:

    • 可读、易编写的文本文件:运维人员可以直接编辑 JSON 格式文本,或使用 ROS 控制台提供的可视化编辑器编辑模板。通过 SVN、Git 等版本控制工具控制模板版本,以达到控制基础设施版本目的。也可通过 API、SDK 等方式将 ROS 的编排能力与自己的应用进行整合,实现基础设施即代码(Infrastructure as Code);

    • 标准化的资源和应用交付方式:独立软件供应商(ISV)可以通过 ROS 模板交付包含云资源和应用的整体系统和解决方案。ISV 可以通过这种交付方式,整合阿里云的资源和 ISV 的软件系统,实现统一交付;

    • 通过资源栈(Stack)统一管理一组云资源(一个资源栈即为一组阿里云资源):对于云资源创建、删除、克隆等操作,以资源栈为单位来完成。在 DevOps 实践中,可以使用 ROS 克隆开发环境、测试环境和线上环境,实现应用的整体迁移、扩容。

    在了解 ROS 的强大后,我们就在日常使用过程中会创建各种数量的 ROS 模板。这也就造成了我们在日常的运维管理中,需要更便捷的工具对模板进行管理。为了更好的管理本地与云端的 ROS 模版,我们上线了 Alibaba Cloud Toolkit - Alibaba ROS Templates,通过一个资源配置文件(.ros.config.yml),协助用户对模板文件进行管理操作。

    说明:.ros.config.yml 文件是 Alibaba ROS Templates 工具用于管理模板的源文件。

    第一步:在 IntelliJ IDEA 中打开您的工程。

    第二步:创建模板,有以下两种创建方式:

    • 在 IntelliJ IDEA 中右键单击您的工程名称,选择 New > AlibabaCloud ROS YAML Template 或选择 New > AlibabaCloud ROS JSON Template。

    注意:使用这种方式创建的模板不会被 Alibaba ROS Templates 工具管理。如需使用模板工具管理,则需要在 .ros.config.yml 文件中增加模板路径,并将模板移动至 JSON 和 YAML 文件夹下。

    • 打开 IntelliJ IDEA 右边框 Alibaba ROS Templates 工具,单击 Create,输入模板的名称,选择模板的类型,创建本地模板。

    第三步:在 Resources 参数中输入资源类型。

    • AlibabaCloud ROS YAML Template 示例

    1.gif

    • AlibabaCloud ROS JSON Template 示例

    2.gif

    第四步:说明 Ctrl+ 鼠标左键可实现参数位置与参数之间的跳转, 使用 Ctrl+ 鼠标悬浮可实现参数的悬浮信息。模板管理功能操作说明如下表所示:

    表1.jpg

    右键单击本地模板,可根据需求进行操作:

    3.png

    功能操作说明如下:

    • Upload:上传模板
    • Rename:重命名模板名称
    • Delete:删除本地模板

    右键单击远端模板,可根据需求进行操作:

    4.png

    功能操作说明如下:

    • Download:下载模板
    • Properties:查看模板属性信息
    • Delete:删除远端模板

    说明双击远端模板,默认会打开一个临时文件,右键菜单选择 Alibaba Cloud ROS > Update Template,显示对比远端模板修改情况,可更新远端模板。

    资源栈管理

    Alibaba Cloud Toolkit - Alibaba Cloud ROS (Alibaba Cloud View)是一个用于管理阿里云资源编排产品(ROS)资源栈的工具,能帮助您便捷地管理远端资源栈。

    • 在 IntelliJ IDEA 中打开您的工程;
    • 在 IntelliJ IDEA 窗口中选择 Alibaba Cloud View > Alibaba Cloud ROS,可根据您的需求进行相关操作。

    5.png

    资源栈管理功能操作说明如下表所示:

    表2.jpg

    • Resources:显示该资源栈内的所有资源信息

    • Parameters:显示该资源栈的参数信息

    关于 Cloud Toolkit

    作为集开发、测试、诊断、部署为一体的免费本地多 IDE 插件,Cloud Toolkit 帮助开发者真正实现任意服务器或 ECS、EDAS、Kubernetes、SAE、函数计算等一键式研发部署,支持 Java 规约、高效执行终端命令和 SQL 等常见工具,研发速度提升 8 倍以上,大幅降低研发成本。

    产品完全免费并覆盖 IntelliJ IDEA、Eclipse、Pycharm、Maven、VS Code 等不同 IDE 环境。持续更新+社群支持,确保开发者放心使用,真正做到研发团队降本提效。

    对应下载传送门

    附产品使用文档https://help.aliyun.com/document_detail/29968.html

    首届云原生微服务大会

    首届云原生微服务大会 PC 端地址:https://developer.aliyun.com/topic/microservices2020#/

    阿里巴巴云原生关注微服务、Serverless、容器、Service Mesh 等技术领域、聚焦云原生流行技术趋势、云原生大规模的落地实践,做最懂云原生开发者的公众号。”

  • 相关阅读:
    非同名数据库导入sql
    mybatis中的异常
    使用MyBatis时为什么Dao层不需要@Repository
    springboot项目启动后执行一段程序的方式
    构建SpringBoot项目
    springboot项目添加webapp目录
    springboot项目启动异常
    使用restTemplate出现的异常
    Spring中Bean的属性赋值@Value()---使用类配置的方式
    使用BeanUtils复制Java对象
  • 原文地址:https://www.cnblogs.com/alisystemsoftware/p/13517707.html
Copyright © 2020-2023  润新知