istio入门-官网bookinfo项目(笔记)

中文官网:https://istio.io/latest/zh/ 

前言

目前的Java分布式框架,已经比较成熟了,比如spring cloud和dubbo,可以实现比较好的服务治理。istio也有它的适用场景,服务治理方面做得也不错,它的适用场景:

  • 跨语言,运行与k8s平台的容器里面,不限于开发语言,Java、Go、Ruby、Python...都可以支持;
  • 代码侵入性低,老旧项目不改动或少改动代码就可以微服务化;
  • 服务治理平台升级,不需要动业务代码;
  • 灰度发布,基于Envoy代理,istio可以很好的处理服务灰度发布和浏览控制;
  • ...

环境

minikube跑的k8s环境,搭建minikube环境,可查看我的另外一篇文章《Kubernetes—minikube安装(笔记)》

安装istio(官网搬运工)

下载 Istio

# 转到 Istio 发布 页面,下载针对你操作系统的安装文件, 或用自动化工具下载并提取最新版本(Linux 或 macOS):
curl -L https://istio.io/downloadIstio | sh -
# 转到 Istio 包目录。例如,如果包是 istio-1.9.1:
cd istio-1.9.1
# 将 istioctl 客户端加入搜索路径(Linux or macOS):
export PATH=$PWD/bin:$PATH

 安装 Istio

# 采用demo配置组合,还有其他安装配置:default、demo、minimal、sds,可自行官网查看
istioctl install --set profile=demo -y
# 给命名空间添加标签,指示Istio在部署应用的时候,自动的注入Envoy边车代理
kubectl label namespace default istio-injection=enabled

部署bookinfo示例应用

bookinfo的架构

# 部署 Bookinfo 示例应用:
kubectl apply -f samples/bookinfo/platform/kube/bookinfo.yaml
# (这里会花几分钟启pod)
# 查看service
kubectl get services
# 查看pod
kubectl get pods
# 验证方方面面均工作无误
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>"

对外开放应用程序

# 把应用关联到 Istio 网关:
kubectl apply -f samples/bookinfo/networking/bookinfo-gateway.yaml
# 确保配置文件没有问题
istioctl analyze

确定入站IP和端口

# 设置入站端口:
export INGRESS_PORT=$(kubectl -n istio-system get service istio-ingressgateway -o jsonpath='{.spec.ports[?(@.name=="http2")].nodePort}')
export SECURE_INGRESS_PORT=$(kubectl -n istio-system get service istio-ingressgateway -o jsonpath='{.spec.ports[?(@.name=="https")].nodePort}')
# 确认端口被成功的赋值给了每一个环境变量:
echo "$INGRESS_PORT"
echo "$SECURE_INGRESS_PORT"

# 设置入站 IP:
export INGRESS_HOST=$(minikube ip)
# 确认 IP 地址被成功的赋值给了环境变量:
echo "$INGRESS_HOST"
# 设置环境变量 GATEWAY_URL:
export GATEWAY_URL=$INGRESS_HOST:$INGRESS_PORT
# 确保 IP 地址和端口均成功的赋值给了环境变量:
echo "$GATEWAY_URL"

# 验证外部访问
# 运行下面命令,获取 Bookinfo 应用的外部访问地址
echo "http://$GATEWAY_URL/productpage"
# 把上面命令的输出地址复制粘贴到浏览器并访问,确认 Bookinfo 应用的产品页面是否可以打开

kiali仪表板

测试请求:

用jmeter测试请求bookinfo项目: http://192.168.11.223:30267/productpage

使用下面说明部署 Kiali 仪表板、 以及 Prometheus、 Grafana、 还有 Jaeger

注意,如果是本机测试环境Kiali 、 Prometheus、 Grafana、 Jaeger 需要nodePort出来才能访问!

# 安装 Kiali 和其他插件,等待部署完成。
kubectl apply -f samples/addons
kubectl rollout status deployment/kiali -n istio-system
# 访问 Kiali 仪表板
istioctl dashboard kiali

kiali界面

kiali需要nodePort出来,端口可添加nodePort属性指定,30000-32767范围内,不写的话会随机:

1.修改samples/addons/kiali.yaml,加上type: NodePort,然后再执行 kubectl apply -f samples/addons 部署;

2.查看执行kubectl get svc -n istio-system,查看service;

3.浏览器访问 http://192.168.11.223:<nodePort>

Kiali界面

Jaeger链路追踪面板

Jaeger需要nodePort出来,端口可添加nodePort属性指定,30000-32767范围内,不写的话会随机::

1.修改samples/addons/jaeger.yaml,加上type: NodePort,然后再执行 kubectl apply -f samples/addons/jaeger.yaml 部署;

2.查看执行kubectl get svc -n istio-system,查看service;

3.浏览器访问 http://192.168.11.223:<nodePort>

Prometheus 查询度量指标

Prometheus需要nodePort出来,端口可添加nodePort属性指定,30000-32767范围内,不写的话会随机::

1.修改samples/addons/prometheus.yaml,加上type: NodePort,然后再执行 kubectl apply -f samples/addons/prometheus.yaml 部署;

2.查看执行kubectl get svc -n istio-system,查看service;

 3.浏览器访问 http://192.168.11.223:<nodePort>

Grafana 可视化指标

Grafana也是需要nodePort出来,端口可添加nodePort属性指定,30000-32767范围内,不写的话会随机::

1.修改samples/addons/grafana.yaml,加上type: NodePort,然后再执行 kubectl apply -f samples/addons/grafana.yaml 部署;

2.查看执行kubectl get svc -n istio-system,查看service;

 3.浏览器访问 http://192.168.11.223:<nodePort>/dashboard/db/istio-mesh-dashboard

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小小绿豆

你的鼓励是我创作最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值