以 Istio Ingress Gateway 的形式发布 httpserver 服务

相关源码: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

安装完成


image.png
image.png

安装 jaeger

kubectl apply -f jaeger.yaml
image.png

部署服务

# 创建 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
image.png

访问服务

curl http://192.168.56.111/service0
image.png

查看 tracing

istioctl dashboard --address 0.0.0.0 jaeger
image.png

在浏览器中打开: http://192.168.56.100:16686

image.png
image.png

支持 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
image.png

创建 VirtualHost 和 Gateway

kubectl apply -f istio-specs-https.yaml -n tracing
k get vs,gateway
image.png

发送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
image.png

你可能感兴趣的:(以 Istio Ingress Gateway 的形式发布 httpserver 服务)