基于Istio的多网关运行时:配置、部署和应用

news2024/10/6 8:30:09

1. 引言

Istio是一个开源的服务网格,主要应用于简化微服务架构中的服务间通信、提供强大的监控能力以及加强服务的安全管理。通过利用Sidecar模式部署的Envoy代理,Istio能够在几乎无需修改服务代码的情况下,实现服务发现、负载均衡、加密通信、访问控制等功能。本文将就如何在 Kubernetes 集群环境下,在 istio-system之外的命名空间中配置、部署和应用用户自定义的网关运行时 Ingress Gateway进行探讨。

2. Istio 处理入站请求的流程

在 Kubernetes 集群环境中,默认配置下的 Istio 将会部署至 istio-system 命名空间下,通过向 pod 中自动注入代理容器,Istio 将 pod 纳入服务网格的管理之中,实现对服务间通信的统一管理和控制。在 istio-system 命名空间中,网关运行时负责处理所有流入服务网格的外部流量。网关运行时将根据 CRD 资源 Gateway 中的定义监听特定的域名与端口,并根据 Virtual Service 与 Destination Rule 将请求智能地路由到后端的 Kubernetes Service,并最终访问到对应的微服务。

3. 为什么需要部署多个网关运行时 Ingress Gateway?

为了保证关键应用的可访问性,用户可能希望将关键应用与一般业务应用进行隔离或单独配置。此外,在多租户的情景下,仅利用 Istio-system 命名空间下的默认 Istio 进行管理可能会引起网关运行时宕机,进而导致在访问各租户部署的应用时出现异常。

为避免上述可能出现的问题,用户可以在其他命名空间中,为每个租户或一组相关服务单独地部署一套网关运行时Ingress Gateway。这样做能够:

1.      有效隔离应用间的网络流量,减少相互影响,提高系统的稳定性和安全性;

2.      能够令用户根据自身需求定制化网络策略和配置,如不同的安全策略、路由规则等,而不受全局配置的限制;

3.      此外,在默认的 Ingress Gateway出现问题而下线时,应用其它命名空间部署的网关运行时可以减少默认 Ingress Gateway 下线对关键应用的影响,便于故障排查和恢复,同时减少对整体服务的影响。

4.   用户自定义网关运行时Ingress Gateway的配置与部署

Ingress Gateway 在 Kubernetes 其他命名空间中的部署依赖于五类 Kubernetes资源,它们默认位于 istio-system 命名空间下,其类型与默认名称如下所示:

1.      Deployment: istio-ingressgateway;

2.      Service: istio-ingressgateway;

3.      ServiceAccount: istio-ingressgateway-service-account;

4.      Role: istio-ingressgateway-sds;

5.      RoleBinding: istio-ingressgateway-sds。

通过获取 istio-system 命名空间中的 Ingress Gateway 的上述五类资源的 YAML 文件,我们即可获得一个网关运行时的配置副本模板。之后,通过对上述资源 YAML 文件中的特定字段进行自定义,用户即可在自己拥有权限的命名空间中部署独立的 Ingress Gateway 管理应用流量。具体配置修改如下:

对于 Deployment,为了保证 Gateway 资源中的选择器 Selector 能够精准匹配到用户配置的 Ingress Gateway,需要对 Deployment 资源的 Label 进行单独配置,其中的 app 字段与 istio 字段可由用户自行定义,如 app: “user-defined”,istio: “user-ingressgateway” 等。之后,再在 Gateway 的 spec.selector 字段中配置上述 label。应保证 Gateway 资源 YAML 中 spec.selector 字段与用户自建的网关运行时的用户修改后的 Label 一致,否则会导致 Gateway 资源不能与用户自建的网关运行时关联。

为了防止 Istio 将用户命名空间中部署的 Ingress Gateway 作为普通应用纳入服务网格中管理,需要在其 Deployment 的 spec.template.annotations 字段中保证sidecar.istio.io/inject: "false" 字段的存在。

而在 Service 中,可以根据实际需求修改 Service 的类型为 NodePort 或 LoadBalancer。在改为 NodePort 时,需要保证 Service 中配置的五个端口值(status-port,http2,https,tcp,tls)均未被占用。

对于 ServiceAccount、Role与RoleBinding,在修改ServiceAccount与Role的资源名后需要在 RoleBinding 中对应地更新资源名称。

通过利用修改后的 YAML 在 Kubernetes 集群的特定命名空间中进行部署,即可实现用户自定义的 Ingress Gateway。在完成 Gateway 的配置之后,后续的 Virtual Service 与 Destination Rule 的配置则与在默认的网关运行时上进行配置的步骤相同。

5.   用户自定义网关运行时Ingress Gateway的应用

在完成上述配置之后,便实现了用户自建的网关运行时 Ingress Gateway – Gateway – Virtual Service 等资源的联动,用户能够根据 Gateway 的定义利用域名:端口访问 Kubernetes 集群中的资源。下图为一个简单样例,展示了在按照上述流程设置成功后,访问集群中某命名空间中的 nginx 的测试页面。其中,在 Gateway 和 VirtualService 中配置了 a.cn 的路由规则,并在 host 文件中对 a.cn 配置了对应的 IP 地址,端口号为用户自建的网关运行时的 Service 中的 http2 对应的 Nodeport 端口。

6.   总结

本文主要介绍了如何通过获取位于Kubernetes集群环境中的 istio-ingressgateway 的 yaml 资源模板,以及如何经过用户自行修改配置并在自己指定的命名空间中部署与应用。

种草环节:欢迎大家下载我们的inBuilder低代码平台开源社区版,可免费下载使用,加入我们,开启开发之旅!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1895442.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C语言实战 | Flappy Bird游戏

Flappy Bird游戏是由一名越南游戏制作者独自开发的,曾经风靡全球。游戏规则非常简单,玩家必须控制一只小鸟,跨越由各种长度的水管所组成的障碍物,如果撞上管道游戏就结束,如图11.11所示。 ■ 图11.11Flappy Bird 游戏 …

go语言day08 泛型 自定义错误处理 go:协程

泛型: 抛错误异常 实现error接口类型 用java语言解释的话,实现类需要重写error类型的抽象方法Error().这样就可以自定义异常处理。 回到go语言,在Error()方法中用*argError 这样一个指针类来充当error接口的实现类。 在f2()方法中定义返回值…

IMU用于仿生水下机器人姿态估计

近期,自中国农业大学的研究团队从海豚身上汲取灵感,成功研发出一种创新性的双腱驱动机器人海豚尾鳍。这项创新性的设计不仅能够实现全方向运动,还能精细地模拟海豚的推力特性,揭示了其背后隐藏的力学秘密。 这款机器人尾鳍设计独特…

23432443

c语言中的小小白-CSDN博客c语言中的小小白关注算法,c,c语言,贪心算法,链表,mysql,动态规划,后端,线性回归,数据结构,排序算法领域.https://blog.csdn.net/bhbcdxb123?spm1001.2014.3001.5343 给大家分享一句我很喜欢我话: 知不足而奋进,望远山而前行&am…

A股现在3000点已经是顶了吗?

今天的A股,让人咬牙切齿了,你们知道是为什么吗?盘面上出现2个重要信号,一起来看看: 1、今天两市高开低走,近4900家股票回落,股民痛心疾首了。昨晚中概股都涨疯了,美股的科技股微软和…

【web APIs】快速上手Day03(Dom事件进阶)

目录 Web APIs - 第3天全选文本框案例事件流事件捕获事件冒泡阻止冒泡解绑事件on事件方式解绑addEventListener方式解绑 注意事项-鼠标经过事件的区别两种注册事件的区别 事件委托综合案例-tab栏切换改造 其他事件页面加载事件元素滚动事件页面滚动事件-获取位置页面滚动事件-滚…

2024亚太杯中文赛数学建模选题建议及各题思路来啦!

大家好呀,2024年第十四届APMCM亚太地区大学生数学建模竞赛(中文赛项)开始了,来说一下初步的选题建议吧: 首先定下主基调, 本次亚太杯推荐大家选择B题目。C题目难度较高,只建议用过kaiwu的队伍…

商务视频推广打造有吸引力的7个秘诀-华媒舍

商务视频推广是现代企业发展的重要工具,它能够帮助企业吸引更多的目标客户,提升品牌知名度,增加销售量。但是,如何打造一部有吸引力的商务视频推广呢?本文将为您介绍7个秘诀,帮助您在商务视频推广中取得成功…

中国国家标准介绍

一、介绍 中国国家标准信息公共服务平台,这是由中国国家市场监督管理总局和中国国家标准化管理委员会共同运营的官方网站 https://openstd.samr.gov.cn/ 标准分为三类: GB:强制性国家标准GB/T:推荐行国家标准GB/Z:指导…

【Linux系统】文件系统 软硬链接

文件被打开了? 这个文件已经被打开???什么意思,我们的Linux中存在非常多的文件,被打开的文件是少量的,我们要找到这个文件,先在磁盘中找到,就必须要通过这个文件的文件名…

一站式广告监测新体验,Xinstall助你广告投放更精准

在这个移动互联网飞速发展的时代,App推广与运营成为了每个开发者与广告主关注的焦点。然而,面对琳琅满目的广告平台和复杂的投放环境,如何精准评估广告效果、优化投放策略,成为了摆在面前的一道难题。今天,我们就来聊聊…

Linux中为什么etc是存放配置文件

在计算机系统中,/etc 是一个目录的名称,通常位于Unix和类Unix操作系统中,如Linux。这个目录用于存放系统配置文件。/etc 的命名来源于早期Unix系统中的 "etcetera"(拉丁语 "et cetera" 的缩写,意为…

RK3568驱动指南|第十六篇 SPI-第195章 实践:移植官方mcp2515驱动

瑞芯微RK3568芯片是一款定位中高端的通用型SOC,采用22nm制程工艺,搭载一颗四核Cortex-A55处理器和Mali G52 2EE 图形处理器。RK3568 支持4K 解码和 1080P 编码,支持SATA/PCIE/USB3.0 外围接口。RK3568内置独立NPU,可用于轻量级人工…

Ollama基于Casaos一键部署,并接入Dify知识库,无需再为API付费

什么是Ollama Ollama是一个开源的大型语言模型服务工具,它帮助用户快速的运行大模型。浪浪云将它做为一键部署通过简单的安装,用户可以执行一条命令就可以运行开源大型语言模型,如 llama3 ,通以千问。极大地简化了部署和管理LLM的过程&#x…

vue通过后台返回的数字显示不同的文字内容,多个内容用、隔开

后台返回的数据 显示效果&#xff1a; html&#xff1a; <el-table-columnalign"center"label"使用过的小程序"width"124"v-if"activeTab 0"><template #default"scope"><divv-for"(item, index) in s…

Redis 典型应用——分布式锁

一、什么是分布式锁 在一个分布式的系统中&#xff0c;也会涉及到多个节点访问同一个公共资源的情况&#xff0c;此时就需要通过锁来做互斥控制&#xff0c;避免出现类似于 "线程安全" 的问题&#xff1b; 而 Java 中的 synchronized&#xff0c;只能在当前进程中生…

如何利用小程序容器技术搭建小程序生态?

小程序&#xff0c;作为现代移动互联网生态中的重要基础设施&#xff0c;正以其独特的创新性和便捷性展现出勃勃生机。截至2021年&#xff0c;全网小程序的数量已经突破了700万&#xff0c;其中微信小程序的开发者达到了300万之多。这一数字不仅代表了小程序在技术层面的成熟度…

PKUMOD同学又双叒获奖啦~

近期王选所数据管理研究室的同学们 凭借在各自领域的卓越表现 获得了多项荣誉和奖励 让我们共赏风采~ 期待他们在未来的科研道路上 取得更加辉煌的成就 庞悦 前沿交叉学科研究院2020级博士生 荣获2024年北京大学校长奖学金 庞悦&#xff0c;北京大学元培学院2016级本科生&…

1000W高清内窥镜定义掏耳勺新高度,西圣Find智能挖耳勺发布!

随着生活水平的提高&#xff0c;人们对个人健康越来越重视。特别是在日常生活中的一些小细节上&#xff0c;比如掏耳朵。传统的掏耳勺只能凭感觉和经验操作&#xff0c;在传统的耳勺与棉签下&#xff0c;很容易损伤耳道&#xff0c;甚至引发感染。为了解决这个问题&#xff0c;…

Word “当前页“ 与 “前一页“ (含部分内容)间有大半页空白,删除空白方法

鼠标光标选中需要向上移的句子&#xff0c;右键点击“段落”&#xff0c;然后在跳出的窗口中按照“换行和分页”中的红色方框内取消勾选后&#xff0c;点击确定即可。