Kubernetes蓝绿色部署,我正在修补Kubernetes-application-service,以将流量从app-v1重定向到app-v2(在负载均衡器后面)。如果在“修补”期间正在进行任何连接,将断开连接吗?如果不 !!我该如何测试?
从app-v1到app-v2进行热切换(没有任何连接丢失)的情况下,您进行版本部署的最佳方法是什么?
答案 0 :(得分:1)
问题似乎与同时支持两个版本有关。这就是Canary deployment,它使生产流量逐渐从app-v1转移到app-v2。
这可以通过以下方式实现:
app-v1
和app-v2
。除了您的问题之外,还有蓝绿色部署。
蓝绿色部署是关于具有两个相同的环境,其中一个环境同时处于活动状态,假设blue
现在在生产中处于活动状态。准备好要部署的新版本后,green
就将分别进行部署和测试。最后,当您对绿色环境下的测试结果感到满意时,便将流量切换到绿色环境。因此green
处于活动状态,而blue
处于空闲状态或稍后终止。
(引自马丁·福勒article)。
在Kubernetes中,可以通过具有两个相同的部署来实现。这是一个不错的reference。
基本上,您可以有两个相同的部署,假设您有当前部署my-deployment-blue
正在生产中。准备好新版本后,可以将其部署为全新的部署,假设为my-deployment-green
,然后使用单独的测试服务来测试green
环境。最后,在所有测试通过后,将流量切换到my-deployment-green
。
答案 1 :(得分:0)
如果您尝试在Kubernetes中实现“蓝色/绿色”,那么我的回答可能会对您有所帮助。
通过设置以下配置进行滚动更新
如何? 部署控制器首先将最新版本扩展到已过时版本的100%。最新版本运行正常后,它将立即将过时的版本缩小到0%。
示例代码:
kind: Deployment
metadata:
name: nginx-deployment
labels:
app: nginx
spec:
replicas: 3
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.14.2
ports:
- containerPort: 80
strategy:
rollingUpdate:
maxSurge: 100%
maxUnavailable: 0
type: RollingUpdate