应用编排原理

本文主要介绍云效 AppStack 应用编排原理和操作方法,同时支持 Kubernetes 编排和主机编排。

应用编排原理

云效 AppStack 应用编排用于定义应用部署架构,同时支持 Kubernetes 部署和主机部署场景,编排生效逻辑如下:

image

云效 AppStack 应用编排以面向终态的方式定义应用环境部署配置。环境部署时,根据环境部署方式读取相应类型的编排文件,并使用部署参数替换编排文件中的占位符,渲染成最终生效的YAML文件(K8s部署场景)或者脚本(主机部署场景), 下发到环境关联的集群或者主机上执行部署操作。

  • 应用编排:用于定义应用的部署架构,每个应用一套编排,可以同时支持K8s YAML部署架构编排(一组描述K8s资源文件的集合)和主机脚本部署架构编排(一组描述制品包部署配置文件的集合)。

  • 编排组件:应用编排中的一个组件,K8s场景是一个可独立部署的资源,对应一个K8s YAML文件;主机场景是一个可独立部署的服务,对应一个或者一组软件包部署和相关依赖信息的配置。

  • 占位符:顾名思义,应用编排文件中一个预先占住的固定位置,用于动态替换内容。

  • 变量:一个key/value键值对。

  • 变量组:一组变量的集合,即一组key/value键值对的集合。

  • 应用编排版本:应用编排文件的每次修改都会生成一个版本,用来记录编排文件的变化,方便后续查阅和回滚特定版本。

云效 AppStack 应用编排提供了占位符和变量组机制,你可以使用占位符替换编排文件中的部分关键字,以便达到一套编排多环境差异化部署的效果。AppStack 预置了一些常用的占位符来简化你的配置,你也可以根据你的场景添加更多自定义的占位符。

场景示例1:使用多个 K8s namespace 隔离多个环境

  • Kubernetes 部署场景下,线下环境有可能使用同一个 K8s 集群。我们通常会使用 Kubernetes 的多个命名空间(namespace)来隔离多套环境,如开发环境使用dev,测试环境使用test(通常生产环境是单独的集群)。 在 YAML 文件中将 namespace 这个关键字的值替换为占位符 {{ .Values.namespace }},占位符赋值为变量 ${namespace},这个变量在开发、测试环境分别使用值 dev、test,在提交部署时进行变量替换,应用环境将部署到指定的 Kubernetes 命名空间。

场景示例2: 为线下环境与生产环境在不同的端口启动服务

  • 主机部署场景下,线下环境与生产环境有可能需要在不同的端口启动服务。在主机 启动脚本 将启动端口号定义成 {{ .Values.port }},占位符赋值为变量 ${port},这个变量在开发、测试环境分别使用值 8080、8081,在提交部署时进行变量替换,应用环境将在指定的端口启动服务。

选择部署方式

  • 云效 AppStack 应用编排支持 Kubernetes 部署(适用于云原生部署场景)、支持主机部署(适用于传统主机部署场景)、也支持 Kubernetes 和主机混合部署场景(适用于应用由传统主机部署向云原生转型场景)。

  • 当应用架构转型时,云效 AppStack 也支持新增或删除某种编排方式,帮助应用实现平滑架构迁移。

image

Kubernetes 部署编排

详见 Kubernetes 部署编排

主机部署编排

详见 主机部署编排

编排配置变更与环境部署

当应用部署配置变更时,通常需要逐环境部署验证通过后才可以发布到生产环境。云效AppStack支持编排更新提交时增加环境标签,用于标识本次修改为草稿版本、或可以用于某个环境部署了。环境部署时可选编排版本,在编排配置测试验证过程中不阻塞生产正常发布。

下面以一个示例应用 myapp 描述编排配置变更流程。myapp 应用为 Kubernetes YAML文件编排方式,有测试、预发、生产三套环境。初始,测试、预发、生产三套环境均使用 V1 版本的编排,由于部署架构变更,需要修改编排配置到 V2 版本(如容器的 containerPort 端口号从 80 修改为 8080)。

image.png

① 进入应用编排,修改YAML文件,生成新的版本号。经过两次提交后,确认YAML无误,将 V2 版本标识为可部署到测试环境验证,打上「测试环境」标签。

② 部署测试环境,选择 V2 版本编排部署环境,进行测试验证。

image.pngimage.pngimage.png

③ 测试环境验证 V2 版本编排符合预期后,标识本版本可进入预发验证,打上「预发环境」标签。

④ 部署预发环境,选择 V2 版本编排部署,进行预发验证。

image.png

⑤ 预发环境验证 V2 版本编排符合预期后,标识本版本可发布生产使用,打上「生产环境」标签。

⑥ 生产发布时,研发流程运行到生产环境部署任务,会提示有新的可用编排版本。手动创建部署单,选择 V2 版本编排部署,将编排配置发布生产。

image.pngimage.pngimage.png

至此,就完成了一次编排配置变更,从测试验证、到预发部署、到最终发布生产的全部过程。