TOSCA 云编排初学者

一则或许对你有用的小广告

欢迎加入小哈的星球 ,你将获得:专属的项目实战 / Java 学习路线 / 一对一提问 / 学习打卡/ 赠书活动

目前,正在 星球 内带小伙伴们做第一个项目:全栈前后端分离博客项目,采用技术栈 Spring Boot + Mybatis Plus + Vue 3.x + Vite 4手把手,前端 + 后端全栈开发,从 0 到 1 讲解每个功能点开发步骤,1v1 答疑,陪伴式直到项目上线,目前已更新了 204 小节,累计 32w+ 字,讲解图:1416 张,还在持续爆肝中,后续还会上新更多项目,目标是将 Java 领域典型的项目都整上,如秒杀系统、在线商城、IM 即时通讯、权限管理等等,已有 870+ 小伙伴加入,欢迎点击围观

本文旨在用最简单的术语介绍 TOSCA (Topology and Orchestration Specification for Cloud Applications),让用户了解它是什么,为什么它对 Cloudify 很重要,以及它的一些基本概念。

简而言之,什么是 TOSCA?

首先,TOSCA 是一个规范,旨在标准化我们如何描述软件应用程序以及它们在“云”中运行所需的一切。

这意味着 TOSCA 提供了一种方法,不仅可以描述应用程序,还可以描述其依赖关系和支持(云)基础设施。

TOSCA的基本概念是什么?

TOSCA 中有两个基本构建块:节点和关系。

节点可以是基础设施组件,如子网、网络、服务器(它甚至可以代表服务器集群),也可以是软件组件,如服务或运行时环境。

同时,关系描述了节点如何相互连接。

TOSCA 有类型的概念。

例如,一个“计算”节点,代表具有 CPU 的资源。这些类型可以用在“服务模板”中,或者在 Cloudify 中称为“蓝图”。

在蓝图中,节点类型用于“节点模板”。所以在 Cloudify 中,服务器可能如下所示:


 some_virtual_host:
      type: cloudify.nodes.Compute

这是一个名为“some_virtual_host”的节点模板,节点类型为“cloudify.nodes.Compute”。

节点和关系都可以有可编程的实现,这样一个编排器,比如 Cloudify,可以在蓝图中读取它们的定义,并调用某些动作。

因此,例如,在 Cloudify 中,这可以表示为:


 some_virtual_host:
      type: cloudify.nodes.Compute

基本类型,无论是节点类型还是关系类型,都可以由用户派生以创建新类型。在这里,我们演示了从 Compute 类型到“BladeServer”类型的假设派生。


 some_virtual_host:
      type: cloudify.nodes.Compute

Cloudify 与 TOSCA 有何关系?

在年轻的 云编排工具 和产品市场中,Cloudify 的目标是成为实施该标准的最佳人选。

Cloudify 的 DSL 基于 TOSCA 的 YAML Simple Profile,这是他在 YAML 中编写 TOSCA 蓝图 的一种方式。 (最初,TOSCA 是用 XML 编写的,但由于 XML 有很多不必要的标点符号,因此 YAML 配置文件更易于使用。)

Cloudify 的核心部分是 Cloudify DSL Parser,它旨在读取和验证 TOSCA (YAML) 蓝图,并提供一种将操作映射到 Cloudify 插件的 机制。

所有 TOSCA 蓝图都指定了蓝图中遵循的 TOSCA 定义版本。在 Cloudify 中,我们目前使用特定的 Cloudify DSL 版本来查找特定于 Cloudify 的命名空间。

在接下来的几个 Cloudify 版本中,DSL 将得到扩展,以包含更多此处未讨论的 TOSCA 功能。

即使在今天,它们也非常接近。在本文中,我提供了 Cloudify 代码片段,而不是 TOSCA 代码片段。

这个片段:


 some_virtual_host:
      type: cloudify.nodes.Compute

可以很容易地是:


 some_virtual_host:
      type: cloudify.nodes.Compute

关于 TOSCA 和 Cloudify DSL 对齐位置的完整讨论超出了本文的范围,Cloudify 的全部功能也是如此。

相反,我专注于概述 TOSCA 基础知识。 TOSCA 旨在易于采用,我希望本文对介绍基本概念有所帮助。

为了进一步阅读,我建议阅读 TOSCA Simple Profile 文档

我还推荐有关 Cloudify 版本 3.2 的 Cloudify DSL 的文档: Cloudify DSL

在我即将发布的博客文章中,我将开始使用更高级的示例来扩展 TOSCA 和 Cloudify。