我正在尝试从nginx
入口切换为使用Istio
来利用路由权重进行金丝雀部署和集成监控等。
我的常规路由定义为:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: solar-demo
annotations:
nginx.org/server-snippet: "proxy_ssl_verify off;"
spec:
rules:
- host: shmukler.example.com
http:
paths:
- path: /city/*
backend:
serviceName: solar-demo
servicePort: 3000
- path: /solar/*
backend:
serviceName: solar-demo
servicePort: 3001
--
kind: Service
apiVersion: v1
metadata:
name: solar-demo
spec:
ports:
- name: city
protocol: TCP
port: 3000
targetPort: 3000
- name: solar
protocol: TCP
port: 3001
targetPort: 3001
selector:
app: solar-demo
现在我什至不需要auth
。当我启动install/kubernetes/istio-demo.yaml
时,它在istio-system
命名空间中创建了一堆pod和服务。
我可能(错误地)认为我需要定义VirtualService
和路由规则。写道:
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: solar-demo
spec:
hosts:
- shmukler.example.com
http:
- route:
- destination:
host: shmukler.example.com
subset: blue
weight: 90
- destination:
host: shmukler.example.com
subset: green
weight: 10
常规服务中是否定义了端口,而VirtualService
中的权重和路径呢?我是否需要将任何内容粘贴到istio-system
名称空间中?是否有可能,我需要扩展istio-demo.yaml
来进行路由,只是为了使事情滚动?
任何指针都值得赞赏。