这里按照https://www.ljh.cool/40743.html继续配置istio
基于istio升级思路很明确,将普通的ingress暴露方式全部通过istio方式取代,比如下面的服务
kiali可以查看到调用界面网络关系
之前的项目是使用了传统的ingress暴露服务,现在需要更新到istio上实现流量治理
假如我们需要更新portal-service服务:
kubectl -n ms delete deployments.apps portal
修改标签配置来确定版本:
这里我们修改portal代码,并构建v1版本
vim simple-microservice/portal-service/src/main/resources/templates/index.ftl
vim simple-microservice/k8s/docker_build.sh
镜像版本号和标签尽量保持一致
修改deployment为v1版本,并打上标签
vim simple-microservice/k8s/portal.yaml
发布一下portal-service v1版本:
./docker_build.sh portal-service
按照相同的操作,这里发布一下v2版本:
vim simple-microservice/portal-service/src/main/resources/templates/index.ftl # 修改页面:micro istio v2
vim simple-microservice/k8s/docker_build.sh # image修改为v2
vim simple-microservice/k8s/portal.yaml # 修改为v2版本,标签打上v2
发布v2版本的portal-service微服务
./docker_build.sh portal-service
这里portal-service两个版本的服务页面共同承担访问压力,流量为1:1
下面通过istio进行流量治理
vim portal-gw-vs-dr.yaml
apiVersion: networking.istio.io/v1alpha3
kind: Gateway
metadata:
name: portal-gw
namespace: ms
spec:
selector:
istio: ingressgateway # 使用默认的istio ingress gateway
servers :
- port:
number: 8080
name: http
protocol: HTTP
hosts:
- "portal.istio.com" # 发布域名,通过hosts与VirtualService关联
---
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: portal-vs
namespace: ms
spec:
hosts:
- "portal.istio.com" # 发布域名
gateways:
- portal-gw
http:
- route:
- destination:
host: portal # 最终流量导向到nginx service,VirtualService、DestinationRule、Service名称贯穿始终
port:
number: 8080
subset: v1 # 引用DestinationRule中的subset名称
weight: 80
# 假如v2版本测试完成,我们可以调整v2的权重进行灰度发布
- destination:
host: portal
port:
number: 8080
subset: v2
weight: 20
---
apiVersion: networking.istio.io/v1alpha3
kind: DestinationRule
metadata:
name: portal-dr
namespace: ms
spec:
host: portal
subsets:
- name: v1 # 定义subsets名称
labels:
version: v1 # subset v1指向具有version=v1的Pod #这里注意最终是寻找pod的标签,不是deployment的标签
- name: v2
labels :
version: v2 # subset v2指向具有version=v2的Pod
端口开访转发到了30080(istio-system service查看):v1:v2版本流量大体为80:20
流量线路分析:
通过vs的subset和weight,通过destination rule关联pod的标签,实现细粒度流量管控
发布者:LJH,转发请注明出处:https://www.ljh.cool/41145.html