服务器太多了不好管?UCloud 根据 Terraform 的资源编列东西详解

频道:我们的头条 日期: 浏览:298

布景

跟着用户在 UCloud 上资源用量的指数增加,传统 API/SDK 手动编写脚本的资源办理方法现已无法效劳器太多了不好管?UCloud 依据 Terraform 的资源编列东西详解满意其需求。为此,UCloud 研制团队依据 Terraform 编写了一套自己的资源编饿鬼随行排东西,协助用户下降云上资源的办理本钱,为其供给安全牢靠、高度一致的产品运用体会,尽或许消除搬迁上云时的危险。

Terraform 代表了业界前沿的技能和规范,咱们依据此,并协作 UCloud CLI 等东西,编写了新一代刁卓中戏 UCloud 资源编列东西,进一步拓宽 Terraform 的功用,完结根底设施可编程。在一个经过 ULB 卸载流量至云主机的事例中,比较于传统方法,新计划下的构建时刻从原先的 3 分 20 秒缩短至 43 秒,编列的功率、安稳性和可描绘性都得到了显着进步。

Terraform是什么?

Terraform 是 Hashicorp 公司开源的一种多云资源编列东西,现在现已构成完好生态,并与多家干流云厂商树立协作。

运用者经过一种特定的装备言语(HCL, Hashicorp Configuration Language)来描绘根底设施,由 Terraform 东西一致解析,构建资源之间的联系,生成履行计划,并经过调用 UCloud 公有云 API 来完结整个根底设施生命周期的办理100款盘编走运带。

相关于其它的云上资源办理方法,Terraform 的主要特点有:

1. 有广泛的兼容性,现在海内外累计已有超越 40 家公有云厂商支撑,其间包含 UCloud 在内的 4 家国内梁岩岩云厂商,还有 200 多个软件效劳商为其供给支撑。

2. 依据 IaC(根底设施即代码,Infrastructure as Code)的规划,可以将根底设施以一种范畴特定言语描绘出来,消除了在根底设施主动化时描绘语义上的歧义,一起减轻人为因素形成的不确定影响。

3. Terraform 在履行编列动作前,会生成一份可读性杰出的履行计划,要害根底设施的改动可以得到充沛查看,确保了根底设施的牢靠性。

4. 依据 DAG(有向无环图,Directed Acyclic Graph)描绘资源与资源之间的联系,由于 DAG 杰出的拓扑性质,当资源特点与资源联系发作改动时,改动动作将被充沛并行地履行。

(图片来源于Terraform)

下图是一张资源编列与传统资源办理方法的比照表:

表格1:资源编列与传统资源办理方法比照

可以看出,在主动化 DevOps 环境下,资源编列相对传统资源办理方法具有显着优势,现在已覆盖了 IaaS宝批龙大不同 层的中心产品,但跟着时刻的推移,将来 UCloud 资源编列会支撑更多的产品。

运用场景

用户可以很简略的从Terraform获益,由于初始化云效劳时若短少资源编列东西,将投入很多的时刻本钱,并且关于云上资源的改动,往往需求很杂乱的行圆才智云改动逻辑以确保根底设施的安全性。

UCloud 资源编列东西可以很好地处理如下常见的问题:

-CI/CD 主动化资源办理

-高峰期运用缩扩容

-布置杂乱资源拓扑(例如两地三中心的运用架构命运谷之决胜宜昌)

例如,驿氪作为一家SaaS处理计划供给商,现已将UCloud Terraform编列体系接入自身事务。

下图是驿氪事务架构的示意图。它一起运用了多家云效劳,需求一致的资源办理渠道进行多云办理,而独立研制一套资源办理渠道,需求对接各云厂商接口,一起还要研制人员深化了解各家云效劳的产品细节,这无疑会加剧企业的研制本钱和运营本钱。

而在应对SaaS 事务时,Terraform可以灵敏的动态调整资源,用户只需求调整部分参数,就可以运用模板进行非常快速的资源办理,相较于自建办理渠道,UCloud Terraform可以极大节约用户的运营本钱和功率。

生命周期

以初次履行 Terraform 创立 UClo贵女如斯ud 云上资源为例,这一资源编列动作的生命周期如下图所示:

图:Terraform 生命周期

图中立方体所示分别为:

-Terraform 中心进程:担任资源界说文件,构建有向无环图,办理状况存储;

-Provider 进程:即供给资源编列才能的进程,包含由云厂商完结的才能(比方 UCloud 的资源编列完结),和运用程序供给的才能(比方 TLS 自签名证书)等;

-Provisioner 进程:即供给资源编列后处理操作的进程,比方履行 Shell 指令,上传文件等。

以中心的有向无环图为分界线,左边的部分是 Terraform 效劳器太多了不好管?UCloud 依据 Terraform 的资源编列东西详解自身供给的才能,右侧是由云厂商供给的才能。

Terraform 中心的杰出笼统,确保了资源编列的安全和安稳,为 UCloud 资源编列供给了坚实的工程根底。

UCloud资源编列实践

在一个出产环境的资源编列体系中,往往要依靠数目巨大的云资源后台办理效劳。资源编列的工程完结中,以下几个方面的底子诉求需求首要得到确保:

-确保资源编列在杂乱终端环境下的成功率。这个是最基本也是最中心的诉求。

-确保产品的一致性。运用户可以滑润搬迁,改动无感知。

-确保产品的工程质量。资源编列作为要害根底设施的接入方法,自身需求满意安稳牢靠。

下文,咱们将具体共享 UCloud 在依据 Terraform 的资源编列东西研制中,在容错才能、接入才能和工程能效劳器太多了不好管?UCloud 依据 Terraform 的资源编列东西详解力优化上的一些实践。

容错才能优化

容错才能是衡量体系可用性的一个重要维度,资源编列作为 UCloud 效劳的进口,自身有必要满意安稳,具有对毛病可以做出合理应对的才能,包含对上游效劳反常的容错才能,以及关于输入反常的纠错才能。

首要,郭博雄Terraform 的杀手级特性是履行计划与进程别离,用户在履行真实的资源编列动作改动现网根底设施之前,可以先生成履行计划,比较资源界说文件和当时资源状况的差异,查看要害根底设施的改动。

UCloud 在完结资源编列的进程中,凭借 Terraform 履行计划的 CustomDiff 特性,自界说了部分资源的 Diff 进程。比方,两个地域之间仅能存在一条高速通道(UDPN),假如执鞍海快客行编列动作前现已存在了一条高速通道(UDPN),将会把一切的编列动作阻挠在履行计划阶段,进步终端用户的运用功率。

图:自界说 Diff 以在履行计划中查看输入

关于过错的处理,UCloud 编列东西经过整理整个编列作业流的生命周期,将过错信息严厉压缩在(动词、附思考乐oa加动作、资源名、ID)这个形式化的四元组中,转化为人类可读的描绘信息反馈给运用者,关于输入反常可以在供给必定的交互纠错才能的前提下,准确定位到源码行。

图:过错信息四元组的自然言语表明样例

其次,UCloud 经过下文介绍的 API 一致性工程,辨认出了一切操作的幂等性质(即该操作是否存在副作用,导致真实的资源创立),并对一切幂等(无副作用的)操作履行主动重试,大幅进步了编列东西的容错才能,一起确保了主动重试机制是真实安全的。关于非幂等操作,得益于 Terraform 的状况办理机制,可以简略地从头履行编列计划,仅重试失利的创立进程。

UCloud 编列东西还供给关于异步操作的同步封装,运用 Terraform 内建的等候机制,创立资源后,将会轮询等候资源完结可以查询刚才回来成功,确保操作的原子性和资源状况的一致性。

最终,关于上述的重试或等候机制,运用指数级增加的距离(Exponential Backoff),以及高雅退出(Gracefully Shutdown)的计划,进一步进步资源编列的容错才能。

接入才能优化

依据 Terraform 的资源编列有必定固有的局限性,比方其自身更适合根底设施的构建,不适合 adhoc 的暂时日常作业,比方列表查询和开关机这样的操作。

如要批量重启主机,运用 Terraform 的做法是运用 data source 查询出对应的数据,界说输出变量,再将输出变量值作为参数传递给外部的脚本。在这样的即席查询场景下,相关于 Ansible 等装备办理东西并没有显着的优势。

因而 UCloud 在资源编列之外,开发了 UCloud CLI 东西来扩展资源编列的才能。例如,运用 CLI 来查询和重启经过 UCloud 编列东西创立的资源:

UCloud 完结了资源编列毛选第六卷才是精华与 UCloud CLI 的集成,资源编列东西可以直接运用 CLI的权限装备信息。也可以经过编列东西的特性,调用 UCloud CLI 进行额定的资源办理操作。

图:Terraform 与 CLI 集成用法示例

打通资源编列与 UCl毛选第六卷才是精华oud CLI 之后,资源编列可以复用 CLI 即席查询的才能,而CLI 可以复用资源编效劳器太多了不好管?UCloud 依据 Terraform 的资源编列东西详解排所持有的资源拓扑信息,例如主机列表,网络 CIDR 信息等,极大拓宽了两边的的产品接入才能。

工程才能优化

UCloud 资源编列从立项之初,就将终端用户运用上的一致性和可用性作为中心诉求。要满意这些诉求,在工程上有必要攻破几个要害的技能难关:

1. 尽或许运用户完结跨版别、跨云的滑润搬迁。

2. 一起对资源编列东西所依靠的根底 API 的完结主动化办理,从源头上进步编列东西的可用性。

3. 资源编列作为要害根底设施的接入方法,自身需求满意的质量确保办法。

  • 滑润搬迁

首要,关于资源编列东西的孙歆艾晋级,UCloud 严厉依照 Terraform 的 Schema 改动战略,每逢资源的特点有破坏性的改动,都会随之供给版别搬迁的完结,使终端用户在晋级东西时,主动将其资源状况滑润搬迁至新版别。

其次,关于云渠道之间的搬迁,UClou魔法妈妈故事妙妙屋d 完结了通用的风格转化函数,经过将 UCloud 接口的大写驼峰(Camel)命名,一致映射成 Terraform 常用的小写下划线(Snake)风格,并运用 Terraform 主张的产品命名法,下降用户的跨云搬迁本钱。终端用户只需求少数改动模板,即可经过资源编列东西滑润接入 UCloud。

  • 改动主动化

资源编列作为 UCloud 重要的产品接入方法,关于 UCloud 全线产品都有很强的依靠,接口改动对接时的一点细小过错,都或许导致破坏性的结果。

所以一致性工程的重要方针是,快速呼应产品新特性的改动,一起尽或许下降人工本钱,使改动主动化,削减过错的发作。

为了使 API 可以得到一致办理,一起避免产品间竖井式的信息阻隔,UCloud 很早以前就打造了公共、一致的 API 办理渠道,将所效劳器太多了不好管?UCloud 依据 Terraform 的资源编列东西详解有现网 API 的界说收敛至一致的 API 注册中心上,运用自界说的格局来形式化地描绘 API Schema。API 办理渠道将 API 的场景笼统成测验集(Test Set),一次 API 的调用笼统成测验用例(Test Case),并运用自界说的表达式语法结构随机的参数注入到用例中履行。

图:API 办理渠道示意图

依据后宫上位记 API 办理渠道,UCloud 资源编列团队编写了 API SDK 的主动化生成程序,经过严厉形式化的 API 界说,转译成 Go SDK 代码。一起经过编写一个递归下降的表达式解析器,将测验用例中表达式语法,效劳器太多了不好管?UCloud 依据 Terraform 的资源编列东西详解转译成等价的 Go 代码。完结了 API 界说和 Go 代码的直接映射,低本钱同步上游改动。

图:经过编写 API 建模东西转译 API SDK 代码

此外在这个进程中,UCloud 经过在 API 办理渠道与 SDK 之间编写 API 熔火前哨的攻势建模东西,用以笼统出一个中心效劳器太多了不好管?UCloud 依据 Terraform 的资源编列东西详解层,在该层一致标示出 API 的幂等性质,为资源编列东西供给了真实安全的重试机制。

这样就完结了整个调用链路上的接口一致性工程建造,完结了从 API 办理渠道到 SDK 到 Terraform 的完好语义映射,下降了 SDK 的开发和保护本钱,一起消除了人为改动带来的不确定影响。

  • 质量工程建造

资源编列作为大规模云上资源办理的引荐方法,涉及到要害根底设施的操作与办理,编列东西自身的质量非常要害。

表格2:资源编列继续集成查看表

如表2所示,作为一个开源项目,UCloud 资源编列东西共有三个质量周期,

-开源协作周期,运用 Travis CI 进行代码风格查看和单元测验,不会建议真实的 API 恳求;

-兼并主分支周期,UCloud 运用 Gitlab CI on Kubernetes 进行风格查看、单元测验和集成测验,其间集成测验会调用现网 API 操作真实的云上资源,并在每天清晨进行 Daily Regression;

-发布正式 Release 到 Terraform 官方库房周期,协作方 Hashicorp 运用 TeamCity 进行全量检验测验,当一切测验完结后,发布新版别。

为了确保代码不会随时刻堕落,提早铲除一些危险,比方拼写过错、安全密钥走漏、笼统不合理等等,UClo我和姐夫ud 接入产品团队选取了三种不同维度的静态查看东西来量化代码质量,其间包含:

-GoReportCard,用来做最基本的风格查看

-SonarCloud,发现代码的 Bug 和安全问题

-Gocyclo,核算函数的圈复轮x杂度(圈杂乱度是用来衡量一个函数杂乱程度的目标,和操控流的杂乱程度相关)

并经过周期性的代码优化,将代码质量的量化目标一直维持在 A+ 评级

写在最终

经过长时刻的开展,Terraform 现已成为一个业界通用的资源编列东西,且近年来海内外的友商也连续开端支撑依据 Terraform 的资源编列体系,证明了业界对通用资源编列体系的强需求。

UCloud 深化研究了 Terraform 的内部机理,并依据此为 UCloud 下一代资源编列体系进行了深度的探究,在研制进程中屡次优化,打通整个链路上的根底工程建造,最终经过充沛的质量工程实践,为资源编列的牢靠性与安稳性保驾护航。

点击下方“阅览原文”,了解更多UCloud Terraform产品概况!

热门
最新
推荐
标签