相关源码:https://gitee.com/tjudream/cloudnative/tree/master/mod12
安装 Istio
wget https://github.com/istio/istio/releases/download/1.12.5/istio-1.12.5-linux-amd64.tar.gz
tar zxvf istio-1.12.5-linux-amd64.tar.gz
cd istio-1.12.5/
cp bin/istioctl /usr/local/bin/
istioctl install --set profile=demo -y
安装完成
安装 jaeger
kubectl apply -f jaeger.yaml
部署服务
# 创建 ns tracing
kubectl create ns tracing
# 为 tracing 的 ns 创建 istio 的标签,在此 ns 下创建 pod 的时候自动注入 istio 的 sidecar 容器
kubectl label ns tracing istio-injection=enabled
# 创建服务 service2
kubectl -n tracing apply -f service2.yaml
# 创建服务 service1 --> service2
kubectl -n tracing apply -f service1.yaml
# 创建服务 service0 --> service1
kubectl -n tracing apply -f service0.yaml
# 创建 VirtualService 和 Gateway
kubectl apply -f istio-specs.yaml -n tracing
查看 ingress 的 IP
k get svc -nistio-system
访问服务
curl http://192.168.56.111/service0
查看 tracing
istioctl dashboard --address 0.0.0.0 jaeger
在浏览器中打开: http://192.168.56.100:16686
支持 https
生成证书并配置
# 生成证书和私钥
openssl req -x509 -sha256 -nodes -days 365 -newkey rsa:2048 -subj '/O=istioexam Inc./CN=istioexa.com' -keyout istioexam.com.key -out istioexam.com.crt
# 配置证书
kubectl create -n istio-system secret tls istioexam-credential --key=istioexam.com.key --cert=istioexam.com.crt
k get secret -n istio-system
创建 VirtualHost 和 Gateway
kubectl apply -f istio-specs-https.yaml -n tracing
k get vs,gateway
发送https请求
curl -k --resolve istioexam.com:443:192.168.56.111 https://istioexam.com/service0
或者修改 /etc/hosts
# 在 /etc/hosts 中新增一行
sudo vim /etc/hosts
192.168.56.111 istioexam.com
# 发送 https 请求
curl -k https://istioexam.com/service0