阿里云首页 云效2020

应用编排

应用编排的定义

是对应用部署架构的描述,通常包含工作负载、配置项、网络、存储声明等,是一组Kubernetes资源组合。

AppStack采用 Kubernetes 原生 YAML 的形式来描述应用部署架构,更多参见Kubernetes的概念定义

前提条件

已经创建了一个应用。具体操作参见 应用管理

应用编排生效原理概述

编排

AppStack 的应用编排主体由 Kubernetes 的 YAML 文件构成。

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

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

我们通常会使用 Kubernetes 的多个命名空间(namespace)来隔离多套环境,开发环境使用dev,测试环境使用test,生产环境使用production。

在 YAML 文件中将 namespace 这个关键字的值替换为占位符 {{ .AppStack.namespace }},占位符的又被赋值为变量 ${namespace},这个变量在默认生成的三个环境使用的值分别为 dev、test、production,在发起部署时进行模版渲染变量替换,AppStack 最终会将应用部署到指定的Kubernetes 命名空间中。

例2: 为线下环境与生产环境分配不同大小的资源

我们通常会为线下测试环境分配较小资源,为生产环境分配足够支撑业务量的资源。

在 YAML 文件中将 replicas 这个关键字的值替换为占位符 {{ .AppStack.replicas }} , 占位符的又被赋值为变量 ${replicas}, 这个变量在默认生成的三个环境使用的值分别为 1、1、10,在发起部署时进行模版渲染变量替换,AppStack 最终会在开发环境部署 1 个复本,在测试环境部署 1 个复本,在生产环境部署 10 个复本。

除多环境差异化部署之外,占位符和变量组的机制还可以在企业内实现统一定义编排模版简化应用编排的效果,即使不熟悉的 Kubernetes 的用户,在模版基础上仅修改部分占位符或变量的值即可完成应用编排。

操作步骤

新建应用编排

  1. 应用-编排 处,点击 从模版创建,选择一个应用编排模版,一个应用通常包含 Kubernetes 的工作负载、网络、配置、存储等资源类型

  2. 点击 查看YAML 可预览编排模版内容

  3. 点击 确定 后,所选模版实例化为当前应用的编排

  4. 点击 组件列表-设置 按钮,可修改组件名称和描述

编排概览

查看应用编排

  1. 点击 应用编排-查看详情 按钮,以只读态打开应用编排详情

  2. AppStack 的示例模版会为你预置好 YAML 文件,无需修改可直接将应用部署起来

编排只读态

编辑应用编排

  1. 点击“编辑”按钮,进入应用编排的编辑态,你可以新增、删除应用组件,修改应用组件的 YAML 内容,使用预置占位符或自定义占位符替换 YAML 中的关键字,将占位符赋值为所需的常量、变量或Null。

添加/删除组件

删除
  1. 点击 1 处按钮,为应用编排添加更多组件

  2. 填写组件ID,组件ID是组件的唯一标识,创建后不可修改,仅支持输入1~63个小写英文字母、数字或“-”,不能以“-”开头或结尾,此限制是为了将应用ID 安全的用于 Kubernetes,参见Kubernetes 对象名称

  3. 点击“确定”,编排中会新生成组件对应的 YAML 文件

  4. 点击 2 处按钮,将组件从编排中移除,需要在保存编辑后才会最终删除,点击 3 处按钮,可撤销移除操作

编辑组件描述

在 YAML 编辑区域编写组件描述,更多参见Kubernetes的概念定义

使用占位符和变量

占位符
  1. 在 YAML 需要替换的关键字处键入 {{ .AppStack.占位符名 }} 可引用预置占位符,键入 {{ .Values.占位符名 }} 可引用自定义占位符,注意⚠️:不符合上述书写格式无法解析为占位符

  2. AppStack 提供以下预置占位符,以便简化配置

占位符命名空间

名称

数据类型

类型

预填值

使用说明

AppStack

appId

字符串

变量

${APPSTACK_APP_ID}

AppStack 系统内置变量,值为当前应用ID

AppStack

envId

字符串

变量

${APPSTACK_ENV_ID}

AppStack 系统内置变量,值为当前环境ID

AppStack

image

字符串

常量

nginx

请替换为需要部署的镜像地址

AppStack

namespace

字符串

变量

${namespace}

AppStack 为每个环境关联的变量组生成的变量,建议修改为实际要部署到的 K8s 命名空间名,通常每个环境使用不用的命名空间

AppStack

replicas

整数

常量

2

可用于替换工作负载的复本数,具体参考 Kubernetes 复本

AppStack

cpuRequest

浮点数

常量

0.5

可用于替换容器CPU请求,具体参考

Kubernetes 容器CPU

AppStack

cpuLimit

浮点数

常量

1

可用于替换容器CPU限制,具体参考

Kubernetes 容器CPU

AppStack

memoryRequest

浮点数

常量

256

可用于替换容器内存请求,具体参考

Kubernetes 容器内存

AppStack

memoryLimit

浮点数

常量

512

可用于替换容器内存限制,具体参考

Kubernetes 容器内存

  1. 点击 提取占位符 ,会从左侧 YAML 编辑区将占位符解析出来,填充到右侧占位符列表

  2. 点击 + 按钮,添加占位符

占位符
  1. 占位符可以赋值为常量、变量、Null,注意,部分 YAML 字段不可为Null

  2. 选择占位符赋值为变量时,可以选择系统预置变量,也可以新建自定义变量

  3. 点击 变量 按钮,可以查看每个变量组中的变量键值

暂存/保存编排

  1. AppStack 每隔数秒会自动暂存编排的修改,也可以点击 暂存 按钮主动进行暂存,暂存并不会真正生效记录一个编排修订版本

  2. 点击 保存 按钮,记录编排修订版本,注意⚠️:此时环境中运行应用并不会立即更新,需要在下一次部署后生效新版本的应用编排。