https://istio.io/latest/zh/docs/setup/install/istioctl/ (官方文档)
https://istio.io/latest/zh/docs/setup/getting-started/#dashboard (入门教程—bookinfo)

安装

参考凤凰架构
image.png
image.png

检查 Istio 状态

kubectl get pods -n istio-system
image.png
image.png
image.png

开启边车

默认 Istio 不会开启 Sidecar 注入,这个需要我们手动开启。
我们可以通过给命名空间 default 打上 label,让我们部署的 Pod 自动打开 Sidecar。

  1. kubectl label ns default istio-injection=enabled

image.png

部署测试样例bookinfo应用

image.png
https://istio.io/latest/zh/docs/examples/bookinfo/
Bookinfo 应用中的几个微服务是由不同的语言编写的。 这些服务对 Istio 并无依赖,但是构成了一个有代表性的服务网格的例子:它由多个服务、多个语言构成,并且 reviews 服务具有多个版本。
image.png

部署

kubectl apply -f samples/bookinfo/platform/kube/bookinfo.yaml
image.png
image.png

查看资源

image.png

开启istio网关—让外部可以访问

https://istio.io/latest/zh/docs/tasks/traffic-management/ingress/ingress-control/
kubectl delete -f samples/bookinfo/networking/bookinfo-gateway.yaml
网关需要配置vitrueService才能使用

  1. apiVersion: networking.istio.io/v1alpha3
  2. kind: Gateway
  3. metadata:
  4. name: bookinfo-gateway
  5. spec:
  6. selector:
  7. istio: ingressgateway # use istio default controller
  8. servers:
  9. - port:
  10. number: 80
  11. name: http
  12. protocol: HTTP
  13. hosts:
  14. - "*"
  15. ---
  16. apiVersion: networking.istio.io/v1alpha3
  17. kind: VirtualService
  18. metadata:
  19. name: bookinfo
  20. spec:
  21. hosts:
  22. - "*"
  23. gateways:
  24. - bookinfo-gateway
  25. http:
  26. - match:
  27. - uri:
  28. exact: /productpage
  29. - uri:
  30. prefix: /static
  31. - uri:
  32. exact: /login
  33. - uri:
  34. exact: /logout
  35. - uri:
  36. prefix: /api/v1/products
  37. route:
  38. - destination:
  39. host: productpage
  40. port:
  41. number: 9080

image.png

访问异常—503

image.png

解决

暂时没搞明白具体原因,跟着issuse走,解决了问题
https://github.com/istio/istio/issues/14942

kubectl -n istio-system delete pod $(kubectl -n istio-system get pod -lapp=istio-ingressgateway -ojsonpath=’{.items[0].metadata.name}’) image.png

访问bookinfo正常

image.png

开启Istio 的控制面板服务 kiali

https://istio.io/latest/zh/docs/ops/integrations/kiali/
Istio 提供了一个基础的安装示例用于快速使用和运行 Kiali:

kubectl apply -f https://raw.githubusercontent.com/istio/istio/release-1.12/samples/addons/kiali.yaml

image.png
国内因为网络原因,镜像拉取失败
image.png
image.png
image.png

解决国内镜像问题

https://www.imlc.me/zai-guo-nei-ru-he-la-qu-quay.io-de-jing-xiang
image.png
image.png

重新部署

image.png
image.png

开启kali web UI

istioctl dashboard kiali

如果zsh找不到istioctl,则
~/istio-1.12.2/bin/istioctl dashboard kiali
image.png

网络可视化—通过kiali观测

https://istio.io/latest/zh/docs/tasks/observability/kiali/
通过浏览器访问服务,可以实时在kiali看到网络流量拓扑图
下图可以看到流量通过istio-gateway —> vitrue service —> sidecar —> 实际的应用服务容器
image.png

蓝绿部署

灰度发布(金丝雀发布+AB测试)