蓝/绿部署策略
蓝/绿部署是一种发布新软件的策略,它使用两个尽可能相同的生产环境,轮流为用户请求提供服务,而另一个用于执行测试的最后阶段。
的HelmBlueGreenDeployStep将这两个环境称为蓝色的而且绿色.这些环境可以是游戏闲置或生活角色,这取决于用户的请求被转发到哪个环境。当前处理用户请求的环境被认为是Live环境,而另一个被认为是Idle环境。为了推出一个新版本,我们首先将它部署到扮演Idle角色的环境中。在那里,我们可以验证新版本,以检查它是否适合用户使用。如果这是正确的,我们可以转换环境角色,使以前的Idle环境变成Live并开始处理用户请求,而以前的Live环境变成Idle。这种策略的主要优点之一是回滚新版本就像再次翻转环境角色一样简单。
在Helm的上下文中,蓝色和绿色环境都表示为两个单独的版本,它们共存于同一个名称空间中。的HelmBlueGreenDeploystep通过为每个角色创建专用的公共服务副本,将空闲或活动角色分配给这些版本。通过这样做,我们可以通过将这些服务更新为来自特定环境的服务的副本来轻松地更改发布角色。管道创建的角色服务可以用于提供额外的入口点组件,如DNS记录、入口规则或服务网格。
为了实现完整的蓝/绿部署策略工作流,管道提供了三个本地步骤:
- HelmBlueGreenDeploy从运行时发现哪个版本正在扮演空闲角色,将图表部署到它,并创建或更新空闲角色服务。
- HelmBlueGreenRoleSwitch从运行时发现哪个版本正在扮演每个角色,并通过创建或更新角色服务来翻转它们。
- HelmBlueGreenCleanup从运行时发现哪个版本正在扮演Idle角色并卸载它。
YAML模式
HelmBlueGreenRoleSwitch本机步骤的YAML模式如下:
管道:- name:步骤:- name: 类型:HelmBlueGreenRoleSwitch配置:#继承所有的标签从bash;//www.si-fil.com/confluence/display/JFROG/Bash deployStep: integrations: - name: # required execution: onStart: - echo“Preparing for work…”onSuccess: - echo“Job well done!”onFailure: - echo“uh oh, something went wrong”onComplete: #always - echo“清理一些东西”
标签
名字
一个字母数字字符串(允许使用下划线),用于标识步骤。
类型
必须HelmBlueGreenRoleSwitch
对于这个步骤类型。
配置
指定步骤执行环境的所有配置选择。该步骤继承Bash/PowerShell步骤配置标签,包括这些相关的标签:
标签 |
使用说明 |
必需的/可选 |
---|---|---|
集成 |
必须指定Kubernetes集成. |
要求 |
此外,可以定义这些标记来支持该步骤的本机操作:
从Bash派生的标记
标签 |
使用说明 |
必需的/可选 |
---|---|---|
deployStep |
HelmBlueGreenDeploy部署Helm Chart的步骤名,以及配置蓝色/绿色策略的位置。引用的部署步骤必须在同一个Pipeline中声明。 | 要求 |
执行
声明在执行前和执行后阶段执行的shell命令序列集合:
标签 |
使用说明 |
必需的/可选 |
---|---|---|
onStart |
在本机操作之前执行的命令 | 可选 |
调用onSuccess |
成功完成后执行的命令 | 可选 |
onFailure |
在完成失败时执行的命令 | 可选 |
onComplete |
在任何补全时执行的命令 | 可选 |
对象执行的操作onExecute
阶段是此步骤类型固有的,不能被覆盖。
例子
以下示例展示如何配置HelmBlueGreenRoleSwitch步骤。
示例1
这个管道展示了如何使用蓝色/绿色策略部署Helm图表,并将其提升到Live角色。
管线:—name: helmBlueGreenDeployPipeline步骤:—name: helmDeployStep type: HelmBlueGreenDeploy配置:helmVersion: 3 namespace: app-namespace blueReleaseName: app-blue greenReleaseName: app-green roleServices:—blueReferenceName: app-blue-service greenReferenceName: app-green-service idleName: app-idle-service liveName: app-service integrations:—name: kubernetes_integration inputResources:—name: helmChartResour2022世界杯阿根廷预选赛赛程ce -name: helmRoleSwitch type:HelmBlueGreenRoleSwitch配置:deployStep: helmDeployStep集成:—name: kubernetes_integration inputSteps:—name: helmDeployStep
工作原理
当你使用HelmBlueGreenRoleSwitch管道中的本机步骤,它在后台执行以下功能:
- restore_pipeline_files(恢复引用的HelmBlueGreenDeploy步骤配置)
- kubectl get service(获取Live Services来读取注释并发现当前环境所扮演的角色)
- kubectl get service(获取helm部署的服务,用于创建或更新角色服务)
- 清理和更新角色服务定义(使用
金桥
在Bash节点和金桥
而且ConvertFrom-Json
PowerShell节点上) - kubectl apply(创建或更新角色服务)
管道管理服务
由pipeline管理的角色Services可以通过以下标签和注释元数据来标识:
名字 | 类型 | 价值 |
---|---|---|
app.kubernetes.io /管理 | 标签 | “管道” |
pipelines.www.si-fil.com/pipeline | 注释 | 管道的名字 |
pipelines.www.si-fil.com/deploy-step | 注释 | 步骤名称 |
pipelines.www.si-fil.com/run | 注释 | 最后一次运行更新服务的编号 |
pipelines.www.si-fil.com/reference | 注释 | 服务名称 |
pipelines.www.si-fil.com/environment | 注释 | 目前环境扮演着这个角色 |