istio的demo(bookinfo)
下载 Istio,下载内容将包含:安装文件、示例和 istioctl 命令行工具。
到以下页面找istio-1.5.5-linux.tar.gz下载
http://www.jrnsoft.com/ziyuan.html
也可以到官网下载,但速度非常慢
curl -L https://istio.io/downloadIstio | ISTIO_VERSION=1.5.5 sh -
切换到 Istio 包所在目录下。例如:Istio 包名为 istio-1.5.1,则:
cd istio-1.5.1
将 istioctl 客户端路径增加到 path 环境变量中,macOS 或 Linux 系统的增加方式如下:
vi /etc/profile
export PATH=/root/istio-1.6.0/bin:$PATH
安装 demo 配置
istioctl manifest apply --set profile=demo
istio1.5.1依赖的image
istio/pilot:1.5.5
istio/proxyv2:1.5.5
grafana/grafana:6.5.2
quay.io/kiali/kiali:v1.15
prom/prometheus:v2.15.1
jaegertracing/all-in-one:1.16
直接使用docker pull下载速度太慢
已经使用docker save导出相关镜像tar包,保存在以下地址
http://www.jrnsoft.com/ziyuan.html
下载后使用docker load < xxxx.tar导入镜像
非自动注入执行启动bookinfo命令为
kubectl apply -f <(istioctl kube-inject -f /root/istio-1.5.5/samples/bookinfo/platform/kube/bookinfo.yaml)
上面的命令会启动全部的四个服务(productpage\details\ratings\reviews),
其中也包括了 reviews 服务的三个版本(v1、v2 以及 v3)。
bookinfo需要的镜像
docker.io/istio/examples-bookinfo-ratings-v1:1.15.0
docker.io/istio/examples-bookinfo-details-v1:1.15.0
docker.io/istio/examples-bookinfo-productpage-v1:1.15.0
docker.io/istio/examples-bookinfo-reviews-v1:1.15.0
docker.io/istio/examples-bookinfo-reviews-v2:1.15.0
docker.io/istio/examples-bookinfo-reviews-v3:1.15.0
镜像大约700M,直接使用docker pull下载速度太慢
已经使用docker save导出相关镜像tar包,保存在以下地址
http://www.jrnsoft.com/ziyuan.html
下载后使用docker load < xxxx.tar导入镜像
确认集群是否支持 负载均衡
kubectl get svc istio-ingressgateway -n istio-system
如果 EXTERNAL-IP 有值(IP 地址或主机名),则说明您的环境具有可用于 Ingress 网关的外部负载均衡器。
由于使测试环境用的本地k8s集群肯定不支持,本次使用nodeport 方式访问网关
设置 istio-ingressgateway service 为 node port
修改 service type
kubectl patch service istio-ingressgateway -n istio-system -p '{"spec":{"type":"NodePort"}}'
查看service
kubectl get svc istio-ingressgateway -n istio-system
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
istio-ingressgateway NodePort 10.110.171.111
15020:32681/TCP,80:31380/TCP,443:31390/TCP,31400:31400/TCP,15029:30352/TCP,15030:3133
8/TCP,15031:31328/TCP,15032:30977/TCP,15443:31688/TCP 23m
部署 istio gateway
部署:
kubectl apply -f samples/bookinfo/networking/bookinfo-gateway.yaml
查看 gateway:
kubectl get gateway
NAME AGE
bookinfo-gateway 46s
设置 INGRESS_PORT:
export INGRESS_PORT=$(kubectl -n istio-system get service istio-ingressgateway -o
jsonpath='{.spec.ports[?(@.name=="http2")].nodePort}')
确认 port
echo $INGRESS_PORT
31380
应用缺省目标规则
kubectl apply -f samples/bookinfo/networking/destination-rule-all-mtls.yaml
浏览器访问 http://实机ip:30045/productpage