我尝试使用Flagger进行蓝绿部署测试
最近有一个项目使用Flagger进行了蓝绿部署,从安装Flagger到确认蓝绿部署的运作都试了一遍,所以记录一下结果。
这次还设置了通知到Slack,如果有更新或者促销完成,就会收到Slack的通知。
信号灯的安装和蓝/绿部署
安装旗帜标记程序
基本上请参考以下页面。除了为启用Istio并部署GKE集群提供的步骤外,还有更通用的步骤可供尝试。
https://docs.flagger.app/install/flagger-install-on-kubernetes
一般来说,安装Flagger需要使用helm来完成。首先,需要添加helm的仓库。
helm repo add flagger https://flagger.app
接下来,在Flagger中添加要使用的Canary CRD。它的名称是Canary,但不仅限于Canary部署,也适用于蓝绿部署。
kubectl apply -f https://raw.githubusercontent.com/weaveworks/flagger/master/artifacts/flagger/crd.yaml
在Flagger中使用prometheus作为度量服务器。本次使用istio示例的prometheus安装配置文件(假设已经提前从某处下载了istio的发布版本。如果未下载,也可以直接指定istio存储库)。
Kubectl apply -f ./istio/samples/addons/prometheus.yaml
使用helm在Flagger上进行安装。由于在helm安装时使用了相关参数来启用功能,因此这次我们将注册istio作为网格提供者,prometheus作为度量服务器,并在通知中注册slack。您需要预先在slack上注册应用并获取webhook url。另外,通知的目标频道将被覆盖为应用端的频道。
helm upgrade -i flagger flagger/flagger \
--namespace=istio-system \
--set crd.create=false \
--set meshProvider=istio \
--set metricsServer=http://prometheus:9090 \
--set slack.url=https://hooks.slack.com/services/your/webhook/url \
--set slack.channel=general \
--set slack.user=flagger-app
蓝/绿部署
参考のため、Blue/green deploymentは次のページを参照して検証しました。
https://docs.flagger.app/tutorials/kubernetes-blue-green
そして、使用したコードは次のリポジトリに保存されています。
https://github.com/uS-aito/argocd-and-flagger-labo
首先需要创建一个测试命名空间,因为Blue/green部署的验证将在测试命名空间上进行。
kubectl create ns test
首先,部署用于各种测试的Pod。
kubectl apply -k github.com/weaveworks/flagger//kustomize/tester
接下来,部署示例应用程序。
Kubectl apply -f app -R
已部署了包含Podinfo容器的deployment资源和使用CPU的hpa资源,用于在2-4个Pod之间进行调整。
Flagger首先部署希望进行渐进式交付管理的deployment资源,然后部署指定了spec.targetref的canary资源。这个canary资源基于指定的deployment部署主要的deployment(资源名称在原始deployment上加上”-primary”)并将原始deployment的Pod数缩放为0。随后,每当原始deployment发生更改时,部署canary deployment(资源名称在原始deployment上加上”-canary”),执行指标检查等操作后,引导流量。
部署Canary资源。
Kubectl apply -f canary.yaml
只要在原始部署中需要进行Pod重建的更新被加入以后,就会执行自金丝雀部署创建之后的操作。您可以通过以下命令来确认这个过程。
kubectl -n test describe canary/podinfo
通知送至Slack助手。
由于在安装flagger时指定了Slack的Webhook URL,因此每当发生事件时都会收到通知。以下是通知的一个示例。

