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