我有两个部署文件
1。
的部署-1.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: process
labels:
app: process
spec:
replicas: 3
selector:
matchLabels:
app: process
template:
metadata:
labels:
app: process
version: v1
spec:
containers:
- name: pull
image: parma/k8s-php:red
ports:
- containerPort: 80
2。
的部署-2.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: process
labels:
app: process
spec:
replicas: 3
selector:
matchLabels:
app: process
template:
metadata:
labels:
app: process
version: v2
spec:
containers:
- name: pull
image: parma/k8s-php:green
ports:
- containerPort: 80
由于我在spec.template.metadata中指定了两个不同的版本,因此它不会为两个副本集运行6个pod,它只启用并运行最新的replicaset。
有没有办法实现canary部署,方法是保持单个部署中的replicaset启动并运行v1中的3个pod和v2中的3个pod
答案 0 :(得分:1)
从技术上讲,这将是两个完全独立的部署。是什么让他们成为“基线”和“金丝雀”是你如何向他们发送流量。如果您在服务中指定了通用选择器(仅{app:process}),则两个部署都会看到一小部分流量。
答案 1 :(得分:0)
您要实现的名称是Canary Deployment。它是A / B测试的一项重要功能,可帮助进行持续的交付和生产测试,而不必在负载平衡器和网关中部署相同的秘密。市场上有很多选择(Spring Zuul或Istio Envoy),可以提供一种解决方案,以将内容从一个部署筛选到一定比例,将另一个部署筛选到其他比例...