本文主要介绍云效 AppStack 应用 Kubernetes 部署编排操作方法。
选择部署方式
云效 AppStack 应用编排支持 Kubernetes 部署(适用于云原生部署场景)、支持主机部署(适用于传统主机部署场景)、也支持 Kubernetes 和主机混合部署场景(适用于应用由传统主机部署向云原生转型场景)。进入
,选择 Kubernetes 部署 方式。创建 Kubernetes 部署编排
在 应用编排模板 )或者云效示例模板。 一个应用通常包含 Kubernetes 的工作负载、网络、配置、存储等资源类型。
处,点击 从模板开始 ,选择企业自定义应用编排模板(详见全局设置点击 确定 后,所选模板实例化为当前应用的编排内容(模板仅用于初始化,修改模板不会影响已有应用),进入编排编辑页面。
在应用编排编辑页面,可以对编排内容再次修改。
可以修改 编排组件 名称或描述
可以修改组件 YAML 具体内容
可以添加/删除组件
可以修改 镜像,可以修改 占位符
使用占位符和变量
云效 AppStack 应用编排支持使用占位符 {{ }}
和变量实现一套编排多环境差异化部署,实现变量部署时动态注入。
制品占位符
支持定义制品占位符{{ .AppStack.image.xxx}}
{{ .AppStack.artifact.xxx }}
,在部署单时动态输入镜像/制品包,或者在流水线部署阶段执行时自动注入上游构建阶段产出的制品。
自定义占位符
以添加一个 port 自定义占位符实现多环境在不同端口启动服务场景为例:
修改YAML内容,在 YAML 编辑区域敲击
{{ .Values.port }}
,定义占位符。点击 提取占位符。
在占位符列表将出现新增的 port 占位符。
在开发环境、测试环境变量组里分别添加 port 变量,取值分别为 8080、8081。
在占位符列表,将 port 占位符取值来源为变量,变量选择 port。
点击 保存,编排校验通过后,即完成了一套 K8s 编排在不同环境不同端口号启动服务的配置。开发环境部署时,将 8080 赋值给 containerPort;测试环境部署时,将 8081 赋值给 containerPort。
预置占位符
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 语法可以灵活编排你的应用,以下为两个常用场景示例。
示例场景1:使用 if 差异化配置 YAML 区块
使用if
关键字为生产环境增加更多附加标识。
......
template:
metadata:
labels:
run: app-demo
# 使用 if 差异化配置
{{- if eq .AppStack.envName "production" }}
msePilotAutoEnable: "on"
msePilotCreateAppName: "app-demo"
{{- end}}
spec:
containers:
......
示例场景2:使用 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 提供 Deployment、ConfigMap、Service、Secret、Ingress、PVC 这六种资源组件模板。也可以选择空模板,自定义编排内容。
点击 确定,编排中会增加新组件,并预填充对应类型的 YAML 文件模板内容,应用按需修改即可。
设置组件部署顺序
Kubernetes 应用编排支持设置组件部署顺序,支持以拖拉拽的方式自定义调整顺序。部署顺序为应用环境部署、回滚时的组件资源下发顺序,组件支持串行部署、并行部署。环境删除时将按部署逆序删除组件资源。
删除组件
点击组件 tab 选中,点击 tab 页上的叉号,保存后即可将组件删除。
编辑组件
点击组件 tab 选中,点击 设置组件 图标,打开设置组件弹窗,可以修改组件名称和描述。
暂存/保存编排
AppStack 每隔数秒会自动暂存编排的修改,也可以点击 暂存 按钮主动进行暂存,暂存并不会真正生效,只是记录一个编排修订版本。
点击 保存 按钮,记录编排修订版本,注意️:编排文件的更新并不会立即生效到应用环境,环境需要在下一次部署后生效新版本的应用编排。