发布时间:2023-06-02 16:30
所有步骤都是从官网例子整理出来的:
https://istio.io/latest/zh/docs/tasks/observability/logs/access-log/
先下载istio
然后转到 Istio 包目录
将 istioctl 客户端加入搜索路径
使用istioctl进行安装(这里采用的是 demo 配置组合)
$ istioctl install --set profile=demo –y
$ kubectl label namespace default istio-injection=enabled
部署官网bookinfo的例子
$ kubectl apply -f samples/bookinfo/platform/kube/bookinfo.yaml
yml文件
https://raw.githubusercontent.com/istio/istio/release-1.12/samples/bookinfo/platform/kube/bookinfo.yaml
$ kubectl exec \"$(kubectl get pod -l app=ratings -o jsonpath=\'{.items[0].metadata.name}\')\" -c ratings -- curl -s productpage:9080/productpage | grep -o “<title>.*</title>”
这里bash脚本比较长,拆分来看:
$ kubectl exec
(执行容器)
\"$(kubectl get pod -l app=ratings -o
jsonpath=\'{.items[0].metadata.name}\')\"
-c ratings
(容器名)
-- curl -s productpage:9080/productpage | grep -o “
(bash)
该脚本用于验证应用是否已在集群中运行,并已提供网页服务
创建 Istio 入站网关(Ingress Gateway), 它会在网格边缘把一个路径映射到路由
1.把应用关联到 Istio 网关:
$ kubectl apply -f samples/bookinfo/networking/bookinfo-gateway.yaml
yml文件:
https://raw.githubusercontent.com/istio/istio/release-1.12/samples/bookinfo/networking/bookinfo-gateway.yaml
$ istioctl analyze
判断你的 Kubernetes 集群环境是否支持外部负载均衡:
$ kubectl get svc istio-ingressgateway -n istio-system
如果 EXTERNAL-IP 的值为 (或者一直是 状态), 则你的环境则没有提供可作为入站流量网关的外部负载均衡。 在这个情况下,你还可以用服务(Service)的 节点端口( NodePort) 访问网关。
$ export INGRESS_HOST=$(kubectl -n istio-system get service istio-ingressgateway -o jsonpath=\'{.status.loadBalancer.ingress[0].ip}\')
$ export INGRESS_PORT=$(kubectl -n istio-system get service istio-ingressgateway -o jsonpath=\'{.spec.ports[?(@.name==\"http2\")].port}\')
$ export SECURE_INGRESS_PORT=$(kubectl -n istio-system get service istio-ingressgateway -o jsonpath=\'{.spec.ports[?(@.name==\"https\")].port}\')
有些环境需要使用主机名访问
$ export INGRESS_HOST=$(kubectl -n istio-system get service istio-ingressgateway -o jsonpath=\'{.status.loadBalancer.ingress[0].hostname}\')
1.设置环境变量 GATEWAY_URL:
$ export GATEWAY_URL=$INGRESS_HOST:$INGRESS_PORT
2.确保 IP 地址和端口均成功的赋值给了环境变量:
$ echo \"$GATEWAY_URL\"
192.168.99.100:32194(这是例子返回的url,具体看本机)
3.获取该应用
$ echo \"http://$GATEWAY_URL/productpage\"
Istio和几个遥测应用做了集成。 遥测能帮你了解服务网格的结构、展示网络的拓扑结构、分析网格的健康状态。
仪表板包括Kiali 、 Prometheus、 Grafana、 还有 Jaeger,例子里使用Kiali
1.安装 Kiali 和其他插件,等待部署完成。
$ kubectl apply -f samples/addons
$ kubectl rollout status deployment/kiali -n istio-system
2.访问 Kiali 仪表板。
$ istioctl dashboard kiali
在左侧的导航菜单,选择 Graph ,然后在 Namespace 下拉列表中,选择 default 。
Kiali 仪表板展示了网格的概览、以及 Bookinfo 示例应用的各个服务之间的关系。 它还提供过滤器来可视化流量的流动。