本文主要介绍 Kubernetes 环境部署运维,支持滚动升级、分批发布部署策略,支持环境部署、扩缩容、回滚等操作。
1. 部署策略
云效 AppStack Kubernetes 环境部署支持滚动升级、分批发布策略,支持设置批次之间暂停策略、部署超时时间等。进入应用,找到目标环境 -> 环境设置 -> 部署设置,可以按需设置部署策略。
AppStack 提供「托管复本数」和「非托管复本数」两种部署模式:
托管复本数:针对环境下 Deployment 工作负载,「托管复本数」模式云效 AppStack 将对 Deployment replicas 进行强管控,部署策略中指定的「目标实例数」为准进行 patch 下发,支持通过环境扩缩容操作调整复本数。该模式下请避免通过其他工具或平台操作资源,以免环境基线不一致导致部署失败。
非托管复本数:针对环境下 Deployment 工作负载,「非托管复本数」模式云效 AppStack 将使用应用编排+环境变量组渲染后的 YAML直接下发部署, 以渲染后的 YAML 中的 replicas 为准,不做复本数强管控。HPA等弹性水位场景建议使用该模式。
1.1 「托管复本数」模式
AppStack 环境部署「托管复本数」模式,对本应用、本环境下的 Deployment 资源生效:
目标实例数:期望的 Deployment replicas 复本数,请填写正整数。指定目标实例数后,会使用该数量 patch 到部署 YAML 中(以该数量替换 YAML 中的 replicas 值),以指定的目标实例数下发部署。后续可以通过环境上的扩缩容操作调整复本数。
部署策略:
滚动升级:以 K8s 原生滚动方式部署,逐步更新应用 Pod 实例,直到新版本数量达到指定的目标实例数。
分批发布:
分批数量:发布的分批数,请填写正整数(需要小于等于目标实例数)。
分批详情:每批次的更新的 Pod 数量,各批次数量相加之和等于目标实例数。
暂停策略:
不暂停:不暂停,每批次自动开始;上一批次结束,下一批次自动执行。
首批暂停:第 1 批部署结束后暂停,需要手动点击「继续」触发第 2 批;第 3 及后续批次自动执行(如有)。
每批暂停:第 1 批部署结束后暂停,后续每一批次都需要手动点击「继续」触发。
超时时间:每批次超时时间,单位分钟,支持 1-30 的正整数。
以下示例,目标实例数 3,分 2 批,第一批 1 个复本,第二批 2 个复本,单批次超时时间 10 分钟。可以按批次查看部署进度。
以下示例,目标实例数 3,滚动升级,逐步更新应用 Pod 实例。
1.2 「非托管复本数」模式
AppStack 环境部署「非托管复本数」模式,对本应用、本环境下的 Deployment 资源生效:
部署策略:
滚动升级:以 K8s 原生滚动方式部署,逐步更新应用 Pod 实例。
分批发布:支持按比例分批发布。
分批数量:发布的分批数,请填写正整数。
分批详情:每批次的更新的 Pod 数量比例,各批次比例相加之和需要等于100%。
暂停策略:
不暂停:不暂停,每批次自动开始;上一批次结束,下一批次自动执行。
首批暂停:第 1 批部署结束后暂停,需要手动点击「继续」触发第 2 批;第 3 及后续批次自动执行(如有)。
每批暂停:第 1 批部署结束后暂停,后续每一批次都需要手动点击「继续」触发。
超时时间:每批次超时时间,单位分钟,支持 1-30 的正整数。
若部署编排 YAML 中指定了 replicas: n,则按策略逐步更新新版本 Pod 数量达到 n。
若部署编排 YAML 中未指定 replicas,且 K8s 集群上已存在该 Deployment,且集群上复本数为 m,则按策略逐步更新新版本 Pod 数量达到 m。
2. 部署运维操作
2.1 部署
应用环境部署通常用于应用制品或配置有变更时去更新环境服务。
提交部署单
进入 应用-环境 ,在环境列表找到目标环境卡片,点击 立即部署 ;也可以进入目标环境详情页面,点击右上角操作区域的 部署 按钮。
第一步:填写部署内容
工单名称:名单名称,默认填充:${秒级时间戳}-部署,可按需修改。
部署版本号:部署版本号,自动生成:${秒级时间戳}-${三位毫秒},不可修改。
镜像列表:镜像由Kubernetes 部署编排里定义的镜像占位符决定,可直接输入镜像地址(请确保待部署到的 K8s 集群可直接拉取到镜像)。
自定义参数:自定义参数由Kubernetes 部署编排定义,当占位符 部署时可改 开关打开时,可以在提交部署单时动态修改取值。
第二步:确认部署选项
展示当前环境待部署的所有组件列表,点击 YAML 可以查看各个组件的部署配置
特别的,针对 Deployment 工作负载类型的组件,可以查看部署策略,如果需要可前往 环境设置-部署设置 调整部署策略,详见 1.部署策略。
点击 提交 部署单,生成部署工单,跳转工单详情页面。
观测部署过程
上述提交部署单后,跳转部署单详情页面,可以观测部署进度。也可以从 应用-工单 列表页面,找到目标部署单,点击进入工单详情观测进度。
工单概要:展示 工单名称、工单ID、工单类型、提交人、提交时间、结束时间等基本信息。
环境部署流程:按顺序展示当前环境部署的所有组件,部署内容和部署顺序由应用编排决定(云效 AppStack 当前按照 helm chart 默认顺序执行),点击卡片可以查看具体资源的部署详情。
资源部署详情:展示指定资源的部署详情。
非工作负载
展示 资源名、部署版本、部署配置、以及其他资源类型相关信息。
工作负载(当前仅支持Deployment)
基本信息展示 资源名、制品、目标实例数、部署策略、部署配置等。
部署进度可以按批次展示实例部署状态,点击实例块可以查看Pod更多 基本信息 和 关键事件,还可以查看容器日志等。
暂停/继续
部署过程中,可以点击 暂停 当前任务,可用于异常情况下暂停任务观察服务状态。
已手动暂停的任务或者受暂停策略控制暂停的任务,可以点击 继续 执行任务。
终止
部署过程中,可以手动 终止 当前部署任务,可选 置为成功 或 置为失败 。可用于一些不需要继续部署的特殊场景:如,SRE通过手工运维集群,已部署应用服务到目标版本,无需工单继续处理的情况。
回退
部署过程中,可以点击 回退 ,回退当前环境到上次部署状态。点击 回退 后,当前部署任务将取消,并生成新的回退任务,回退任务将使用环境的最近的部署基线进行一次重新部署。 可用于当前部署版本不符合预期,需要快速恢复环境到上次可用状态的场景。
查看执行日志
点击 执行日志 可以查看工单部署的全部详细日志,可以用于问题追溯和排查。
2.2 扩缩容
环境扩缩容通常用于环境工作负载过高或过低时,动态调整环境对外提供服务实例数。仅「托管复本数」模式支持在环境上提交扩缩容;「非托管复本数」模式请通过调整 YAML 中的 replicas 调整复本数。
提交扩缩单
进入应用-环境 ,进入目标环境详情页面,点击右上角操作区域的 扩缩 按钮。
填写扩缩单参数
工单名称:默认填充:${秒级时间戳}-部署,可按需修改。
版本号:展示当前环境最近一次部署的版本号。
组件信息:展示当前环境待扩缩的工作负载组件信息。
镜像列表:环境最近一次部署的镜像,只读不可改。
目标实例数:本次扩缩操作期望达到的环境目标实例数。
部署策略:指定扩缩容策略,可选滚动升级和分批发布。
滚动升级:以 K8s 原生滚动方式扩缩,逐步新增或缩减 Pod 实例。
分批发布:
分批数量:根据待扩容/缩容的实例数(增量),划分合适的分批数,以及每批扩/缩数量。
分批详情:根据待扩容/缩容的实例数、分批数,划分每批扩/缩实例数量。
暂停策略 :针对待扩缩的批次可选暂停策略,支持 不暂停、首批暂停、每批暂停 三种策略。
超时时间:每批次超时时间,单位分钟,支持 1-30 的正整数。
点击 提交 ,生成扩缩容工单,跳转工单详情页面。
观测扩缩过程
扩缩单详情页,针对环境下的工作负载进行实例数扩缩容,可以查看实例扩缩进度。
如果环境部署策略为分批发布,则环境扩缩容成功后会自动调整分批详情,调整批次数以及每批次数量,以适应下一次环境部署。
2.3 回滚
回滚可一次性将环境快速恢复到目标版本,适用于新版本发布后不符合预期,需要回滚到最近可用版本场景。回滚相当于使用历史版本进行一次重新部署,请谨慎操作!
提交回滚单
进入 应用-版本 ,在版本列表找到目标回滚版本,点击 回滚 提交回滚工单;或者进入目标环境详情,点击右上角操作区域 回滚 提交回滚工单。
填写回滚单参数
工单名称:默认填充:${秒级时间戳}-回滚,可按需修改。
回滚版本:选择待回滚到的版本。
组件信息:展示目标回滚版本下环境待回滚的组件,其中工作负载类型展示待回滚的 镜像列表 、目标实例数, 可按实际情况调整回滚策略(部署策略),指定分批数和暂停策略。 请仔细核对待回滚的组件信息是否符合预期。
点击 提交 ,生成回滚工单,跳转工单详情页面。
观测回滚过程
回滚进度展示老版本和目标版本,目标版本为环境回滚到的版本,其他同观测 K8s 环境部署过程。
2.4 环境删除
当环境不需要使用时,通常适用于开发、测试等线下环境联调测试完毕后,不需要再使用了,可以使用环境删除功能释放资源。 详见 删除环境。