Istio 1.8—环境搭建

Istio是一个服务治理的开放平台,1.8与前版本的命令不太一样;官网给了一个安装流程Getting Started

安装过程

下载istio 1.8版本

istio-1.8.1/
├── bin
├── LICENSE
├── manifests
├── README.md
├── samples
└── tools

设置istioctl

cp bin/istioctl /usr/local/bin/
cp tools/istioctl.bash ~/.istioctl.bash
source ~/.istioctl.bash

安装profile

可以看到内置的profile,几个profile的区别config-profiles;安装demo的profile,因为可以有一个bookinfo的应用来做为实验,

# istioctl profile list
Istio configuration profiles:
    default
    demo
    empty
    minimal
    openshift
    preview
    remote
# istioctl install --set profile=demo
This will install the Istio demo profile with ["Istio core" "Istiod" "Ingress gateways" "Egress gateways"] components into the cluster. Proceed? (y/N) y
Detected that your cluster does not support third party JWT authentication. Falling back to less secure first party JWT. See https://istio.io/v1.8/docs/ops/best-practices/security/#configure-third-party-service-account-tokens for details.
✔ Istio core installed
✔ Istiod installed
✔ Egress gateways installed
✔ Ingress gateways installed
✔ Installation complete

其他配置

配置istio允许注入envoysidecar代理

kubectl label namespace default istio-injection=enabled

部署示例bookinfo

kubectl apply -f samples/bookinfo/platform/kube/bookinfo.yaml
kubectl apply -f samples/bookinfo/networking/bookinfo-gateway.yaml
kubectl apply -f samples/addons

查看bookInfo访问地址:http://10.0.4.144:32351/productpage

# echo $(kubectl get po -l istio=ingressgateway -n istio-system -o jsonpath='{.items[0].status.hostIP}'):$( kubectl -n istio-system get service istio-ingressgateway -o jsonpath='{.spec.ports[?(@.name=="http2")].nodePort}')/productpage
10.0.4.144:32351/productpage

配置kiali后台访问地址:http://10.0.4.175:20001/

kubectl -n istio-system port-forward   $(kubectl -n istio-system get pod -l app=kiali -o jsonpath={.items[0].metadata.name}) 20001 --address=10.0.4.175

操作

bookInfo这个应用的详解,里面有几个服务,刷新http://10.0.4.144:32351/productpage,打开kiali里面的【Graph –> Versiond app graph】视图即可开始查看;

  • 微服务details:页面上会显示书的详情信息,ISBN等
  • 微服务reviews-v1:当请求这个微服务的时候,页面是没有星,因为服务不会调用ratings

bookinfo-reviews-v1

bookinfo-reviews-v1

  • 微服务reviews-v2: 当请求v2版本的微服务时,页面是会有1-5个黑色的星

bookinfo-reviews-v1

bookinfo-reviews-v1

  • 微服务reviews-v3: 当请求v3版本的微服务时,页面是会有1-5个红星;

bookinfo-reviews-v1

bookinfo-reviews-v1

其他组件部署

grafana

kubectl -n istio-system port-forward   $(kubectl -n istio-system get pod -l app=grafana -o jsonpath={.items[0].metadata.name}) 3000 --address=10.0.4.175

访问地址: http://10.0.4.175:3000

jaeger

uber的一个分布式链路追踪项目,可以用来查看请求的路由进展情况

kubectl port-forward -n istio-system   $(kubectl get pod -n istio-system -l app=jaeger   -o jsonpath='{.items[0].metadata.name}') 16686 --address=10.0.4.175

访问地址:http://10.0.4.175:16686/

zipkin

zipkin是Java写的,并且集成了各种语言,生态非常的强大,也是一个分布式链路追踪的组件,但是bookinfo没有集成,所以无法展示;

kubectl apply -f  istio-1.8.1/samples/addons/extras/zipkin.yaml

kubectl port-forward -n istio-system   $(kubectl get pod -n istio-system -l app=zipkin   -o jsonpath='{.items[0].metadata.name}') 9411 --address=10.0.4.175

prometheus

kubectl port-forward -n istio-system   $(kubectl get pod -n istio-system -l app=prometheus   -o jsonpath='{.items[0].metadata.name}') 9090 --address=10.0.4.175

访问地址:http://10.0.4.175:9090/