本文作者:丁辉
官方Istio使用示例
前提条件
如果您还没有开始,请遵循 Istio安装和使用 完成 Istio 的部署工作。
本文使用 Istio 官方推荐的 Gateway API 部署举例。
部署 Bookinfo
进入示例目录
1
cd istio-1.28.1
部署应用
1
kubectl apply -f samples/bookinfo/platform/kube/bookinfo.yaml
要确认 Bookinfo 应用正在运行,请从某个 Pod 中(例如从
ratings中)用curl命令对此应用发送一条请求1
kubectl exec "$(kubectl get pod -l app=ratings -o jsonpath='{.items[0].metadata.name}')" -c ratings -- curl -sS productpage:9080/productpage | grep -o "<title>.*</title>"
结果输出
<title>Simple Bookstore App</title>即代表运行成功。对外开放应用
1
kubectl apply -f samples/bookinfo/gateway-api/bookinfo-gateway.yaml
通过注解网关将服务类型更改为
NodePort1
kubectl annotate gateway bookinfo-gateway networking.istio.io/service-type=NodePort --namespace=default
检查网关的状态
1
kubectl get gateway
查看 NodePort 对外端口
1
kubectl get svc bookinfo-gateway-istio
浏览器访问
1
http://$ip:30000/productpage
刷新页面,应该会看到书评和评分发生变化, 因为请求分布在
reviews服务的不同版本上
使用 Kiali 仪表板
安装 Kiali 仪表板
1
2kubectl apply -f samples/addons/prometheus.yaml
kubectl apply -f samples/addons/kiali.yaml修改对外访问模式为 NodePort
1
kubectl patch svc kiali -n istio-system -p '{"spec":{"type":"NodePort"}}'
查看 NodePort 对外端口
1
kubectl get svc kiali -n istio-system
浏览器访问
1
http://$ip:30001/kiali
刷新页面并查看拓扑图
使用 Istio 实现灰度发布
定义服务可用版本
1
kubectl apply -f samples/bookinfo/platform/kube/bookinfo-versions.yaml
首先,运行此命令将所有流量路由到各个微服务的
v1版本1
kubectl apply -f samples/bookinfo/gateway-api/route-reviews-v1.yaml
在浏览器中打开 Bookinfo 站点。网址为
http://$GATEWAY_URL/productpage, 其中$GATEWAY_URL是 Ingress 的外部 IP 地址,其描述参见 Bookinfo 文档。请注意,不管刷新多少次,页面的评论部分都不会显示评价星级的内容。 这是因为 Istio 被配置为将星级评价的服务的所有流量都路由到了
reviews:v1版本,而该版本的服务不访问带评价星级的服务。使用下面的命令把 50% 的流量从
reviews:v1转移到reviews:v31
kubectl apply -f samples/bookinfo/gateway-api/route-reviews-50-v3.yaml
等待几秒钟,等待新的规则传播到代理中生效,确认规则已被替换。刷新浏览器中的
/productpage页面,大约有 50% 的几率会看到页面中带红色星级的评价内容。 这是因为reviews的v3版本可以访问带星级评价,但v1版本不能如果您认为
reviews:v3微服务已经稳定,您可以通过应用 Virtual Service 规则将 100% 的流量路由reviews:v31
kubectl apply -f samples/bookinfo/gateway-api/route-reviews-v3.yaml
现在,当您刷新
/productpage时,您将始终看到带有红色星级评分的书评清理路由规则
1
kubectl delete httproute reviews
清理示例环境
1 | samples/bookinfo/platform/kube/cleanup.sh |
要是这篇文章为您解了惑、带来了帮助,不妨用小小的打赏来支持下我的创作吧,您的鼓励就是我持续分享的最大动力哦,感谢您啦!
- 本文链接: https://blog.offends.cn/Kubernetes/网关/Istio/官方Istio使用示例.html
- 版权声明: 本博客所有文章除特别声明外,均默认采用 CC BY-NC-SA 4.0 许可协议。