通过运行工作流,将应用部署至目标环境。本文为您介绍如何运行工作流。
前提条件
使用限制
- 每个火山引擎账号的工作流运行时长与流水线运行时长一起计算,具体时长限制值参见 使用限制。
- 每个火山引擎账号的工作流并发数与流水线并发数一起计算,具体并发数限制值参见 使用限制。
- 多部署任务对同一环境触发部署时,采用抢占原则。当环境处于部署中、回滚中时,后续到达的部署任务直接失败。主要涉及以下场景:
- 一条工作流(包含部署任务)对同一环境多次触发运行。
- 多条工作流(包含部署任务)对同一环境触发运行。
- 已对环境发起立即部署的情况下,使用工作流(包含部署任务)对当前环境触发运行。
- 已使用工作流(包含部署任务)对当前环境触发运行的情况下,对环境发起立即部署。
操作步骤
登录应用交付页面。
- 登录 持续交付控制台。
- 在左侧导航栏选择 工作区。
- 单击目标工作区名称,进入当前工作区。
- 在左侧导航栏选择 应用交付 > 应用管理。
在应用管理页面,支持通过以下任一方式运行工作流。
- 通过发布页面运行工作流
- 选择目标应用卡片,单击 工作流。
- 在当前应用的工作流页面,选择目标工作流,单击 操作 列的 运行 按钮。
- 通过环境页面运行工作流
- 选择目标应用卡片,单击 环境。
- 在当前应用的环境页面,选择目标环境卡片,单击 去发布。
- 在弹出的发布信息框中,选择要使用的目标工作流,单击 确定。
在当前应用的运行页面,按要求配置以下信息。
运行配置
配置项 | 说明 |
---|
环境等级 | 显示当前工作流关联的环境等级。本示例为开发。 |
环境 | 当前发布工作流要部署的环境实例。仅支持选择一个环境实例。 - 通过发布页面运行工作流时,需选择要部署的具体环境实例。
- 通过环境页面运行工作流时,环境 显示为当前环境实例。
|
应用编排 | 显示应用编排的版本。支持单击查看当前版本的应用编排是否符合预期。 |
镜像部署配置
配置项 | 说明 |
---|
镜像仓库 | 显示您创建工作流时选择的镜像仓库。实际部署时将从这个仓库拉取镜像。 |
镜像 | 指定应用的各组件使用的容器镜像。镜像地址格式为repo:tag 。 - K8s YAML 应用只包含一个组件,请输入该组件使用的镜像地址。此处的镜像即对应
Deployment.yaml 文件中的镜像占位符 image.backend 的值。 - OAM 应用包含多个组件,请依次输入每个组件使用的镜像地址。
|
部署策略 | 配置应用的部署策略。支持 原生部署 和 分批发布 两种部署策略。 - 原生部署:基于 Kubernetes 原生的滚动升级能力。无分批发布诉求或存在 HPA(Horizontal Pod Autoscaler)等场景可以使用该策略。
- 分批发布(推荐):支持分批、暂停、继续的精细化部署能力,更加可控。
- 滚动批次:设置分批发布策略的批次。每个批次发布完成后流程进入等待状态,需人工确认是否继续部署。 默认为 2 次,可选范围:2 ~ 10 次。
- 每批比例:设置每批发布的比例。最后一个批次比例由前序批次调整后自动算出,不允许修改。比例之和必须为 100%。
实例数量 * 每批比例 = 一次升级的数量(第 1 批 ≤ 1 时,向上取 1;其余批次,不为整数时向下取整)。例如: 10 个实例分 3 批部署,批次比例为 30%、30%、40%,则每批部署数量为 3、3、4。
说明 OAM 应用的所有组件采用统一的部署策略。示例如下:
某 OAM 应用分两个部署阶段,部署阶段一包含 3 个组件,部署阶段二包含 2 个组件。该应用采取分批发布策略:分两批,第一批 20%,第二批 80%。
结合 OAM 应用不同部署阶段串行部署,同一部署阶段内组件并行部署的特点,实际部署过程如下:阶段一的 3 个组件同时进行第一批部署,均达到 20% 后,启动第二批部署。阶段一的 3 个组件均完成两批部署后,启动阶段二的部署。 |
环境配置 | - 单击 查看详情,检查配置是否符合环境诉求。例如:启用的配置项是否正确、配置项的值是否正确。如果不正确支持快速修改。
- 若本次部署版本相对上次部署存在配置变更,界面将展示 查看变更详情 链接,单击可了解配置的变更详情。
|
脚本执行配置
配置项 | 说明 |
---|
配置值 | 如果您在脚本执行任务中配置了占位符作为变量传参,需输入占位符对应的值,仅支持输入常量。 |
单击 运行,跳转至工作流的最近一次运行详情页面,开始运行工作流。
后续操作
- 工作流运行过程中,可以在当前应用的工作流最近一次运行详情页面,观测工作流运行进程。详细介绍请参见 观测工作流运行详情。
- 如果希望对外开放应用,需在应用部署成功后,为应用创建 Service 和 Ingress 资源。具体操作可参见 服务(Service) 和 路由(Ingress)。