创建灰度发布任务
本节介绍如何创建灰度发布任务。
前提条件
您需要加入一个项目并在项目中具有 Service Mesh 管理权限。有关更多信息,请参阅“项目成员”和“项目角色”。
KubeSphere 平台需要安装并启用 KubeSphere 服务网格扩展组件。
提前准备新版本的容器镜像并上传到容器镜像服务,同时确保容器镜像服务与 KubeSphere 网络连接正常。
操作步骤
请参阅参数描述设置灰度发布任务的参数。
以具有 Service Mesh 管理权限的用户登录 KubeSphere Web 控制台并进入您的项目。
在左侧导航栏选择服务网格 > 灰度发布。
根据需要选择灰度发布任务的类型,将光标悬停在蓝绿部署、金丝雀发布或流量镜像区域,然后点击创建。
在基本信息页签,设置灰度发布任务的名称,然后点击下一步。
在服务设置页签,选择需要进行灰度发布的应用和服务,然后点击下一步。
在新版本设置页签,设置新版本的服务版本号、容器组副本数量和容器,然后点击下一步。
在策略设置页签,设置灰度发布任务的流量转发策略,然后点击创建。
灰度发布任务创建完成后将显示在灰度发布页面的发布任务页签。
参数描述
以下介绍如何设置灰度发布任务的参数。
基本信息
设置任务的名称。名称只能包含小写字母、数字和连字符(-),必须以小写字母或数字开头和结尾,最长 253 个字符。
服务设置
选择需要进行灰度发布的自制应用和服务。
点击下拉列表选择一个自制应用。
在需要进行灰度发布的服务右侧点击选择。
说明 灰度发布仅支持自制应用,不支持基于模板的应用。
新版本设置
设置新版本的服务版本号、容器组副本数量和容器。
参数 描述 新版本号
新版本的服务版本号。新版本号只能包含小写字母和数字, 最长 16 个字符。
副本
新版本的容器组副本数量。点击
/
可增加/减少容器组副本的数量。
添加容器
创建容器组中运行的容器。您可以在容器组中创建多个容器。
点击添加容器可创建容器。
将光标悬停在已创建的容器上,然后在右侧点击
可编辑容器的设置。
将光标悬停在已创建的容器上,然后在右侧点击
可删除容器。
直接在文本框中输入容器镜像的 URL 可替换旧版本的容器镜像,同时保持其他容器设置不变。
新版本设置 > 添加容器 > 容器设置
设置容器的镜像、名称、类型和资源。
参数 描述 镜像
创建容器所需的镜像。
输入镜像的名称(例如 nginx:latest)或路径(例如 docker.io/nginx:latest),然后按 Enter 键可搜索镜像。
如果您只输入镜像的名称,默认情况下将从 Docker Hub 拉取镜像。如需使用私有镜像服务,您需要创建包含私有镜像服务信息的保密字典,然后在镜像文本框左侧选择私有镜像服务。
点击
可浏览当前镜像服务中的镜像。
容器名称
容器的名称。名称只能包含小写字母、数字和连字符(-),必须以小写字母或数字开头和结尾,最长 63 个字符。
容器类型
容器的类型。
初始化容器:为工作容器进行初始化工作的容器。工作容器只有在所有初始化容器成功完成之后才会启动。如果初始化容器运行失败,系统会把容器组的状态设置为失败。
工作容器:运行应用程序的容器。通常建议每个容器组中只运行一个工作容器。
CPU 预留
为容器预留的 CPU 资源,单位为核。
CPU 上限
允许容器使用的 CPU 资源上限,单位为核。
内存预留
为容器预留的内存资源,单位为 MiB。
内存上限
允许容器使用的内存资源上限,单位为 MiB。
新版本设置 > 添加容器 > 端口设置
设置容器的端口。点击使用默认镜像端口可将容器端口设置为镜像的默认端口。点击添加端口可为容器设置多个端口。
参数 描述 协议
容器中的应用程序实际监听的协议。如需使用 KubeSphere 提供的应用治理功能,请确保此处选择的协议与容器中的应用程序实际监听的协议保持一致。
名称
端口的名称。如需使用 KubeSphere 提供的应用治理功能,请使用协议名称小写作为端口名称的前缀(例如 http-)。
容器端口
容器中的应用程序实际监听的端口号。
新版本设置 > 添加容器 > 镜像拉取策略
设置容器组创建或更新时是否从镜像服务拉取镜像。
参数 描述 优先使用本地镜像
容器组创建或更新时,优先使用容器运行时存储在节点的镜像文件。
每次都拉取镜像
容器组创建或更新时,每次都尝试从镜像服务拉取镜像。
仅使用本地镜像
容器组创建或更新时,仅使用容器运行时存储在节点的镜像。如果本地不存在所需的镜像,容器创建将出现异常。
新版本设置 > 添加容器 > 健康检查
检查容器的健康状态。使用此功能前,您需要在容器的应用程序中进行设置,使应用程序可以返回健康检查的结果。
KubeSphere 支持以下健康检查类型:
参数 描述 存活检查
检查容器是否存话。如果存活检查失败,系统将尝试重启容器。
就绪检查
检查容器是否已就绪。如果就绪检查失败,系统将禁止通过服务访问容器所在的容器组。
启动检查
检查容器是否已启动。如果启动检查失败,系统将禁用容器的其他探针,并尝试重启容器。
KubeSphere 支持以下检查方式:
参数 描述 HTTP 请求
向容器组的虚拟 IP 地址发送 HTTP GET 请求,如果响应状态码为 2XX 或 3XX 则表明检查成功。
命令
在容器中运行命令,如果命令的退出码为 0 则表明检查成功。
TCP 端口
尝试与指定的容器端口建立 TCP 连接,如果连接建立成功则表明检查成功。
新版本设置 > 添加容器 > 健康检查 > 添加探针
创建探针对容器进行存活检查、就绪检查或启动检查。
点击添加探针可创建探针。
将光标悬停在已创建的探针上,然后在右侧点击
可编辑探针的设置。
将光标悬停在已创建的探针上,然后在右侧点击
可删除探针。
参数 描述 路径
HTTP 请求的协议(HTTP 或 HTTPS)、请求目标相对于容器组虚拟 IP 地址的路径以及请求的端口号。仅在健康检查方式为 HTTP 请求时可用。
命令
将要在容器中运行的命令。您可以使用半角逗号(,)分隔命令及其参数。仅在健康检查方式为命令时可用。
端口
用于 TCP 检查的容器端口号。仅在健康检查方式为 TCP 端口时可用。
初始延迟
容器启动后探针启动前的延迟时间,单位为秒。
超时时间
探针超时时间,单位为秒。探针超时后,检查将被视为失败。取值必须为整数,最小值为 0。
检查间隔
执行检查的时间间隔,单位为秒。取值必须为整数,最小值为 1。
成功阈值
检查失败后再次被视为成功所需的最小连续成功次数,最小值为 1。对于存活探针和启动探针,此参数值必须为 1。
失败阈值
检查成功后再次被视为失败所需的最小连续失败次数,最小值为 1。
新版本设置 > 添加容器 > 生命周期管理
设置容器启动后或终止前需要执行的动作,以进行环境检查或体面终止。使用此功能前,您需要在容器的应用程序中进行配置,使应用程序可以返回动作的执行结果。
参数 描述 启动后动作
容器启动后需要执行的动作。如果该动作执行失败,系统将尝试重启容器。
终止前动作
容器终止前需要执行的动作。该动作遵循以下规则:
如果终止前动作执行失败,系统将立即终止容器。
容器的体面终止期限默认值为 30s,如果达到体面终止期限时终止前动作仍在执行,系统将提供一次性宽限期 2s。
宽限期结束后,无论终止前动作是否已执行结束,系统都将终止容器。
KubeSphere 支持以下启动后动作和终止前动作的执行方式:
参数 描述 HTTP 请求
向容器组的虚拟 IP 地址发送 HTTP GET 请求,如果响应状态码为 2XX 或 3XX 则表明动作执行成功。
命令
在容器中运行命令,如果命令的退出码为 0 则表明动作执行成功。
TCP 端口
尝试与指定的容器端口建立 TCP 连接,如果连接建立成功则表明动作执行成功。
新版本设置 > 添加容器 > 生命周期管理 > 添加动作
创建容器启动后动作或终止前动作。
点击添加动作可创建动作。
将光标悬停在已创建的动作上,然后在右侧点击
可编辑动作的设置。
将光标悬停在已创建的动作上,然后在右侧点击
可删除动作。
参数 描述 路径
HTTP 请求的协议(HTTP 或 HTTPS)、请求目标相对于容器组虚拟 IP 地址的路径以及请求的端口号。仅在动作执行方式为 HTTP 请求时可用。
命令
将要在容器中运行的命令。您可以使用半角逗号(,)分隔命令及其参数。仅在动作执行方式为命令时可用。
端口
用于 TCP 检查的容器端口号。仅在动作执行方式为 TCP 端口时可用。
新版本设置 > 添加容器 > 启动命令
设置容器启动时在容器内部执行的命令。
参数 描述 命令
需要执行的命令的名称。
参数
需要执行的命令的参数。您可以使用半角逗号(,)分隔多个参数。
新版本设置 > 添加容器 > 环境变量
设置容器的环境变量。
点击添加环境变量可设置多个环境变量。
点击批量引用可使用配置字典或保密字典中的数据创建环境变量。配置字典或密保字典必须与容器属于同一个项目才能被容器引用。容器创建后环境变量的值不会随配置字典或保密字典设置的变更而动态变化。
在已创建的环境变量右侧点击
可删除环境变量。
参数 描述 键
环境变量的名称。
值
环境变量的值。
资源
配置字典或保密字典的名称。仅在引用配置字典或保密字典时可用。
资源中的键
配置字典或保密字典中的键。与该键对应的值将被用作环境变量的值。仅在引用配置字典或保密字典时可用。
新版本设置 > 添加容器 > 容器组安全上下文
设置容器进程在 Linux 系统中的权限。
参数 描述 访问控制
容器进程的访问权限。
特权模式:以主机上的 root 用户运行容器进程。
允许特权提升:允许容器进程获取比父进程更多的特权。当特权模式启用时,此选项默认启用。
根目录只读:将容器文件系统的根目录设置为只读。
用户和用户组
运行容器进程入口点的用户和用户组。
仅允许非 root 用户运行:启动容器之前检查容器是否将以 root 用户运行。如果容器将以 root 用户运行则不启动容器。启用此功能时系统将忽略特权模式设置。
用户:执行容器进程入口点的 UID。默认为镜像元数据中指定的 UID。
用户组:执行容器进程入口点的 GID。默认为容器运行时的默认 GID。
SELinux 上下文
容器进程的 SELinux 标签,包括等级、角色、类型和用户。有关更多信息,请参阅 SELinux 官方文档。
权能
在 Linux 系统中对容器进程额外添加或移除的权限。请参阅 Linux 官方文档获取 Linux 进程的权能列表。
为容器进程添加或移除权能时,您需要去掉权能名称中的 CAP_ 前缀。例如,在移除文本框中输入 SYS_TIME 可移除容器进程的 CAP_SYS_TIME 权能。
点击添加可设置多条权能添加或移除指令。
新版本设置 > 添加容器 > 同步主机时区
勾选同步主机时区左侧的复选框将使容器和主机的时区同步。
策略设置
设置灰度发布任务的业务流量转发策略。
对于蓝绿部署,在新版本或旧版本右侧点击接管可将业务流量全部转发给该版本。
对于金丝雀发布任务,您可以选择指定新旧版本的流量分配比例,或根据请求参数将请求转发给新版本或旧版本。
参数 描述 指定流量分配
拖动滑块可设置新旧版本接收业务流量的百分比。
指定请求参数
将参数满足特定条件的请求转发给新版本,其他请求转发给旧版本。
说明 流量镜像任务将业务流量的副本发送给新版本进行测试,而不实际暴露新版本,所以不需要设置业务流量转发策略。
反馈
这篇文章对您有帮助吗?
通过邮件接收 KubeSphere 最新的技术博客与产品更新的通知
感谢您的反馈。如果您有关于如何使用 KubeSphere 的具体问题,请在 Slack 上提问。如果您想报告问题或提出改进建议,请在 GitHub 存储库中打开问题。