本文主要介绍云效 AppStack 应用 Kubernetes 部署编排操作方法。
创建 Kubernetes 部署编排
基于K8s集群的容器化部署方式,使用YAML定义应用部署架构,支持多种K8s资源类型。
在
,单击 从模板开始 。选择应用编排模板应用编排模板 )或者云效示例模板。
(详见全局设置单击 确定 后,所选模板实例化为当前应用的编排内容(模板仅用于初始化,修改模板不会影响已有应用),进入编排编辑页面。
在应用编排编辑页面,您可以对编排内容进行以下修改:
修改 编排组件 名称或描述。
修改组件 YAML 具体内容。
添加/删除组件。
修改 镜像与占位符。
使用占位符和变量
云效 AppStack 应用编排支持使用占位符 {{ }}
和变量实现一套编排多环境差异化部署,实现变量部署时动态注入。
制品占位符
支持定义制品占位符{{ .AppStack.image.xxx}}
与{{ .AppStack.artifact.xxx }}
,在部署单时动态输入镜像/制品包,或者在流水线部署阶段自动注入上游构建阶段产出的制品。
自定义占位符
以添加 port 自定义占位符实现多环境不同端口启动服务为例:
修改YAML内容,在 YAML 编辑区域敲击
{{ .Values.port }}
,定义占位符。单击 提取占位符。
占位符列表中将出现新增的 port 占位符。
在开发和测试环境变量组里分别添加 port 变量,取值为 8080 和 8081。
在占位符列表中,将 port 占位符的取值来源设置为变量,并选择 port。
单击 保存,编排校验通过后,即完成了 K8s 编排在不同环境不同端口启动服务的配置。开发环境部署时,将 8080 赋值给 containerPort;测试环境部署时,将 8081 赋值给 containerPor。
预置占位符
AppStack 提供预置占位符,简化应用编排配置。
占位符命名空间 | 名称 | 数据类型 | 类型 | 预填值 | 使用说明 |
AppStack | appName | 字符串 | 变量 | ${APPSTACK_APP_NAME} | AppStack 预置占位符,值为当前应用名 |
AppStack | envName | 字符串 | 变量 | ${APPSTACK_ENV_NAME} | AppStack 预置占位符,值为当前环境名称 |
AppStack | image | 对象 | 常量 | -- | AppStack 预置占位符,用于定义镜像, 如 |
AppStack | artifact | 对象 | 变量 | -- | AppStack 预置占位符,用于定义制品, 如 |
应用编排示例场景
使用Go template语法灵活编排
云效AppStack应用编排支持Go template语法,使用Go template语法可以灵活编排你的应用,以下为两个常用场景示例。
使用 if 差异化配置 YAML 区块,
if
关键字为生产环境增加附加标识。...... template: metadata: labels: run: app-demo # 使用 if 差异化配置 {{- if eq .AppStack.envName "production" }} msePilotAutoEnable: "on" msePilotCreateAppName: "app-demo" {{- end}} spec: containers: ......
使用 range 遍历对象循环配置,
range
关键字遍历对象,循环配置。metadata: name: spring-boot-{{ .AppStack.envName }} labels: run: spring-boot-{{ .AppStack.envName }} # 使用 range 遍历标签对象配置 labels {{ range $key,$value := .Values.labels }} {{ $key }}: {{ $value }} {{ end }} namespace: {{ .Values.namespace }}
labels 变量取值如
{"key1":"value1","key2":"value2"}
,环境部署时,最终渲染 YAML 如下。
编辑应用编排
添加组件
Kubernetes应用编排通常对应一到多个组件,可以按需添加多个不同类型的资源服务组件。
在编排组件区域,单击
。填写组件名称(组件唯一标识)和描述。
选择组件模板,云效 AppStack 提供使用的Kubernetes资源组件类型的YAML模板如下:
组件模板
描述
Deployment
Deployment (无状态应用)。
ConfigMap
ConfigMap (非机密配置数据)。
Service
Service (服务访问策略)。
Secret
Secret(机密配置数据) 。
Ingress
Ingress(从集群外部到集群内服务的HTTP/HTTPS路由规则)。
PVC
PVC(持久卷存储声明)。
空模板
支持任意kubernetes内置资源类型,也支持CRD。
您也可以选择空模板,自定义编排内容。
设置组件部署顺序
Kubernetes应用编排支持通过拖拉拽自定义调整组件部署顺序。部署顺序决定了应用环境部署、回滚时的组件资源下发顺序,支持串行和并行部署。环境删除时将按部署逆序删除组件资源。
删除组件
选中组件tab,单击叉号并保存即可删除组件。
编辑组件
选中组件tab,单击设置组件图标,打开弹窗修改组件名称和描述。
暂存/保存编排
AppStack每隔数秒会自动暂存编排的修改,您也可以单击暂存按钮手动暂存,暂存只是记录一个编排修订版本,不会立即生效。
单击保存按钮记录编排修订版本,注意️:编排文件的更新需要在下一次部署后才会生效。