我有2个应用程序(Web和Api),分别有2个服务和2个Istio virtualServices。每个服务还有2个版本(v1和v2)。
我想做三件事-
对于Web,除 test-user 之外的所有流量都只会将 100%路由到版本 v1 。
< / li>对于Web,对于测试用户,流量只会将 100%路由到版本 v2 (反之亦然)第一点。)。质量检查小组上线之前,将对版本 v2 执行测试,一旦获得质量检查小组验证,会将流量从 100%迁移到 v2 每个用户并删除版本 v1 。
对于Api,对于版本 v1 (稳定),流量将分布 95%,对于版本 v2的流量分布为 5% (发布)。
Web清单文件:
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: web-vs
spec:
hosts:
- web.example.com
http:
- match:
- headers:
end-user:
exact: test-user
route:
- destination:
host: web-svc
subset: v2
- route:
- destination:
host: web-svc
subset: v1
---
apiVersion: v1
kind: Service
metadata:
name: web-svc
labels:
app: web
spec:
ports:
- name: http
port: 3000
targetPort: 3000
selector:
app: web
API清单文件:
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: api-vs -------------> #1
spec:
hosts:
- api-svc
http:
- route:
- destination:
host: api-svc
subset: v1
weight: 95
- destination:
host: api-svc
subset: v2
weight: 5
---
apiVersion: v1
kind: Service
metadata:
name: api-svc -------------> #2
labels:
app: api
spec:
ports:
- name: http
port: 8000
targetPort: 8000
selector:
app: api
流量路由策略-
当我们点击URL web.example.com 时,它将通过服务 web-svc 提供流量。 (已设置)
在后端,服务 web-svc 将在内部调用服务 api-svc ,服务 api-svc 将分发流量 95%到 v1 和 5%到 v2 。 (这就是我努力应对的路由问题。)
答案 0 :(得分:0)
我认为问题在于缩进和主机。在Istio docs中,尝试执行以下操作:
var stRef = st.ref(`event-photos/${eventId}`); // st is firebase.storage() var upTask = stRef.put(this.fileBlob); upTask .then(snapshot => { return snapshot.ref.getDownloadUrl(); }) .then(url => { return db .collection('events') .doc(eventId) .set({ image_url: url }); }) .catch(error => { alert(error.message); });
已编辑:目标主机。