带有舵图的蓝绿色部署

时间:2019-09-10 03:24:30

标签: kubernetes kubernetes-helm blue-green-deployment canary-deployment

我们可以使用带有'Helm Charts'的应用程序

helm install --name the-release  helm/the-service-helm --namespace myns

然后,我们使用

对部署进行“滚动升级”
helm upgrade --recreate-pods the-release helm/the-service-helm --namespace myns

是否可以使用“头盔图表” 实现 “蓝色/绿色” 部署?

1 个答案:

答案 0 :(得分:4)

不推荐,但是有解决方案

  • 从Helm手册中可以看到,不建议将Helm用于蓝色/绿色或金丝雀部署。

  • 至少有3种基于Helm的解决方案,请参见下文

  • 但是该情况下有Helm图表。

头盔本身(TL; DR:不推荐)

头盔本身不适合这种情况。查看他们的解释:

  

direct support for blue / green deployment pattern in helm · Issue #3518 · helm/helm

     

Helm在传统软件包管理器的意义上工作更多,以一种优雅的方式将图表从一个版本升级到另一个版本(这要归功于Pod的活跃性/就绪性探针和部署更新策略),就像人们对{{ 1}}上班。与升级工作流的程序包管理器风格相比,蓝/绿部署是非常不同的野兽。蓝色/绿色在工具链中的地位更高,因为围绕这些部署的用例需要采用进/出策略,逐步的流量迁移和回滚。因此,我们认为蓝色/绿色部署对于Helm而言是超出范围的,尽管在幕后利用Helm的工具(或类似istio之类的东西)更有可能能够处理该用例。

其他基于apt upgrade的解决方案

至少有三种基于Helm的解决方案,描述并比较了here

Shipper通过Booking.com

bookingcom/shipper:使用Helm进行Kubernetes原生多集群金丝雀或蓝绿色部署

  

它通过依赖Helm并使用Helm Charts作为配置部署的单位来做到这一点。发货人的Application对象提供了一个界面,用于指定图表的值,就像helm命令行工具一样。   托运人直接从ChartMuseum之类的Chart资料库中消费Charts,并将对象本身安装到集群中。它具有很好的属性,可以使用常规的Kubernetes身份验证和RBAC控件来管理对Shipper API的访问。

使用Helm进行Kubernetes本地多集群金丝雀或蓝绿色的部署

Istio

您可以尝试一些like this

Helm
kubectl create -f <(istioctl kube-inject -f cowsay-v1.yaml) # deploy v1

Flagger

弗拉格团队撰写了一份指南:Blue/Green Deployments - Flagger 本指南向您展示如何使用Flagger和Kubernetes自动执行蓝色/绿色部署

您可以尝试头盔本身

此外,按照Kamol Hasan的建议,您可以尝试以下图表:puneetsaraswat/HelmCharts/blue-green

blue.yml sample

kubectl create -f <(istioctl kube-inject -f cowsay-v2.yaml) # deploy v1

中等博客文章:Blue/Green Deployments using Helm Charts