当前位置: 首页 > news >正文

Istio Gateway发布服务

1. Istio Gateway发布服务

在集群中部署一个 tomcat 应用程序。然后将部署一个 Gateway 资源和一个与 Gateway 绑定的 VirtualService,以便在外部 IP 地址上公开该应用程序。

1.1 部署 Gateway 资源

vim ingressgateway.yaml

---
apiVersion: networking.istio.io/v1alpha3
kind: Gateway
metadata:name: ingressgateway80
spec:selector:istio: ingressgatewayservers:- port:number: 80name: httpprotocol: HTTPhosts:- '*'

把 hosts 字段设置为 *,可以直接从外部 IP 地址访问入口网关。
在这里插入图片描述

1.2 部署Tomcat 应用

拉取所需的镜像:

docker pull tomcat:latest
docker save tomcat:latest -o tomcat-latest.img
docker load < tomcat-latest.img

部署tomcat
vim tomcat.yaml

---
apiVersion: apps/v1
kind: Deployment
metadata:creationTimestamp: nulllabels:app: tomcatname: tomcat
spec:replicas: 1selector:matchLabels:app: tomcatstrategy: {}template:metadata:creationTimestamp: nulllabels:app: tomcatspec:containers:- image: tomcat:latestimagePullPolicy: IfNotPresentname: tomcatports:- containerPort: 8080resources: {}
status: {}
kubectl apply -f tomcat.yaml

在这里插入图片描述
deployment创建成功,并且有两个容器在运行。一个是 Envoy sidecar 代理,第二个是应用程序tomcat。如下:
在这里插入图片描述

1.3 部署Tomcat service

vim tomcat.yaml

---
apiVersion: v1
kind: Service
metadata:creationTimestamp: nulllabels:app: tomcatname: tomcat
spec:ports:- port: 80name: tcpprotocol: TCPtargetPort: 8080selector:app: tomcat
status:loadBalancer: {}

创建service

kubectl apply -f service.yaml

在这里插入图片描述

1.4 部署VirtualService

为 tomcat 服务创建一个 VirtualService,并将其绑定到 Gateway 资源上
vim virtualservice.yaml

---
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:name: virtualservice
spec:hosts:- "*"gateways:- ingressgatewayhttp:- route:- destination:host: tomcat.default.svc.cluster.localport:number: 80

创建virtualservice

kubectl apply -f virtualservice.yaml

在这里插入图片描述

在 hosts 字段中使用 *,就像我们在 Gateway 中做的那样。我们还将之前创建的 Gateway 资源(gateway)添加到 gateways 数组中。最后,我们指定了一个目的地为 Kubernetes 服务 tomcat.default.svc.cluster.local 的单一路由。

kubectl get svc -l istio=ingressgateway -n istio-system

在这里插入图片描述

如果 EXTERNAL-IP 有值(IP 地址或主机名),则说明环境具有可用于 Ingress 网关的外部负载均衡器。如果 EXTERNAL-IP 值是 (或一直是 ),则说明的环境并没有为 Ingress 网关提供外部负载均衡器的功能。
可以通过以下方法添加外部IP

kubectl edit  service istio-ingressgateway -n istio-system

在这里插入图片描述

添加externalIPs,此处填在为master的IP地址
重新查看,有地址了
在这里插入图片描述
对 GATEWAY_URL 运行 cURL 或在浏览器中打开它,我们将得到 tomcat 的响应如下:
在这里插入图片描述
另外,注意到 server 头设置为 istio-envoy,告诉我们该请求通过了 Envoy 代理。

1.4 清理资源

删除 Deployment、Service、VirtualService 和 Gateway:

kubectl delete deployments tomcat
kubectl delete service tomcat
kubectl delete virtualservice virtualservice
kubectl delete gateways ingressgateway

2. 参考文献

https://www.cnblogs.com/renshengdezheli/p/16838966.html
https://blog.csdn.net/weixin_41709748/article/details/122695478
https://developer.aliyun.com/article/886726
https://www.bookstack.cn/read/istio-handbook/best-practices-how-to-implement-ingress-gateway.md
https://www.cnblogs.com/boshen-hzb/p/10679863.html
https://istio.io/latest/zh/docs/tasks/traffic-management/ingress/ingress-control/

http://www.lryc.cn/news/478502.html

相关文章:

  • 前端vue3若依框架pnpm run dev启动报错
  • python线条爱心
  • GPU的内存是什么?
  • Linux - 弯路系列1:xshell能够连接上linux,但xftp连不上(子账号可以连接,但不能上传数据)
  • 数组逆序重存放
  • 归并排序:高效算法的深度解析
  • 微服务中常用分布式锁原理及执行流程
  • 声学气膜馆助力企业年会与研学活动完美呈现—轻空间
  • Halcon3D image_points_to_world_plane详解
  • A Consistent Dual-MRC Framework for Emotion-cause Pair Extraction——论文阅读笔记
  • 如何debug(Eclipse)
  • 【comfyui教程】ComfyUI有趣工作流推荐:快速换脸,创意随手掌握!
  • css-flex布局属性
  • 【鸿蒙】HarmonyOS NEXT应用开发快速入门教程之布局篇(下)
  • 高阶函数--python
  • MYSQL备库的并行复制
  • 体感游戏开发:参考资料
  • Diving into the STM32 HAL-----Clock Tree笔记
  • 【AIGC】如何充分利用ChatGPT:有效提示框架与基本规则
  • 【1个月速成Java】基于Android平台开发个人记账app学习日记——第7天,申请阿里云SMS短信服务SDK
  • 视频怎么去除杂音保留人声?教你如何实现视频降噪
  • 数学建模学习(136):使用Python基于Fuzzy WSM、Fuzzy WPM、Fuzzy WASPAS的多准则决策分析
  • Python小游戏21——拼图小游戏
  • C# 常用的测试框架合集
  • Android——从相机/相册获取图片
  • MySQL 数据库基准测试报告
  • 计算机毕业设计Python+大模型神经网络电影推荐 知识图谱图神经网络电影推荐可视化系统 注意力机制 秒杀同类电影推荐项目 GNN GAT
  • Python | Leetcode Python题解之第543题二叉树的直径
  • 【浪潮商城-注册安全分析报告-无验证方式导致安全隐患】
  • 如何设置VSCODE快捷键光标移到行首和行尾