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

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.mzph.cn/diannao/40894.shtml

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

相关文章

WRF学习——使用CMIP6数据驱动WRF/基于ncl与vdo的CMIP6数据处理

动力降尺度 国际耦合模式比较计划(CMIP)为研究不同情景下的气候变化提供了大量的模拟数据,而在实际研究中,全球气候模式输出的数据空间分辨率往往较低(>100Km,缺乏区域气候特征,为了更好地研…

【pytorch14】感知机

单层感知机模型 对于单层的感知机,它的激活函数是一个sigmoid 对于符号的定义做一个规范化,输入层每一层进行一个编号 输入是第0层,上标0表示属于输入层,下标0到n表示一共有n个节点(这里严格来说应该是0~n-1,为了书写…

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

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

Jemeter--关联接口压测

Jemeter–独立不变参接口压测 Jemeter–独立变参接口压测 Jemeter–关联接口压测 案例分析 比如:有个波次复核接口很慢,优化后需要压测。但是波次复核接口数据是由另外两个接口(配单详情、内盒信息)的数据组合而来,而…

fastadmin最新版导出数据时 表格中会有 html标签的解决办法

fastadmin 自带的导出方法, 是一个纯前端的导出, 没有请求后台的接口 当我们使用导出功能时, 有些数据, 我们在设计的时候,配置的是 枚举类型的 但是当我们导出数据的时候, 居然导出的数据中带有 html 的…

k8s-第十节-Ingress

Ingress 介绍 Ingress 为外部访问集群提供了一个 统一 入口,避免了对外暴露集群端口;功能类似 Nginx,可以根据域名、路径把请求转发到不同的 Service。可以配置 https 跟 LoadBalancer 有什么区别? LoadBalancer 需要对外暴露…

【12321骚扰电话举报受理中心-短信验证安全分析报告】

前言 由于网站注册入口容易被黑客攻击,存在如下安全问题: 暴力破解密码,造成用户信息泄露短信盗刷的安全问题,影响业务及导致用户投诉带来经济损失,尤其是后付费客户,风险巨大,造成亏损无底洞…

交流负载箱的主要功能有哪些?

交流负载箱可以模拟各种实际用电设备的功率、电流、电压等参数,使得电源系统在运行过程中能够承受实际负载的考验,确保电源系统的稳定运行。通过交流负载箱对电源设备进行测试,可以检测出电源设备在过载、短路等异常情况下的保护功能是否正常…

Linux和mysql中的基础知识

cpu读取的指令大部分在内存中(不考虑缓存) 任何程序在运行之前都的加入到内存。 eip->pc指针,指明当前指令在什么位置。 代码大概率是从上往下执行的,基于这样的基本理论。既可以将一部分指令加载到CPU对应的缓存中&#xf…

【CSAPP】-datalab实验

实验原理与内容 本实验每位学生拿到一个datalab-handout.tar文件。学生可以通过U盘、网盘、虚拟机共享文件等方式将其导入到Unbuntu实验环境中,选择合适位置存放。然后在Ubuntu环境下解压。解压后,根据文件中的叙述和要求更改bits.c文件。本次实验的主要…

【全网最全】2024年APMCM第十四届亚太地区大学生数学建模竞赛(中文赛项)完整思路解析+代码+论文

我是Tina表姐,毕业于中国人民大学,对数学建模的热爱让我在这一领域深耕多年。我的建模思路已经帮助了百余位学习者和参赛者在数学建模的道路上取得了显著的进步和成就。现在,我将这份宝贵的经验和知识凝练成一份全面的解题思路与代码论文集合…

云计算【第一阶段(26)】Linux网络设置

一、查看网络配置 1.查看网络接口信息ifconfig 查看所有活动的网络接口信息 2.ifconfig命令 查看指定网络接口信息 ifconfig 网络接口 (1)第一行:以太网卡的名字 ens33其中en代表以太网卡, centos6的是eth0, e…

中国算力网络市场发展分析

中国算力网络市场发展现状 算力涵盖计算、内存、存储等全方位能力,广泛分布于网络边缘、云计算中心、联网设备及转发节点。随着数字化技术革新,算力与网络正深度融合,推动“算网一体化”的演进。这一新型基础设施日渐凸显其重要性&#xff0c…

精准畜牧业:多维传感监测及分析动物采食行为

全球畜牧业呈现出一个动态且复杂的挑战。近几十年来,它根据对动物产品需求的演变进行了适应,动物生产系统需要提高其效率和环境可持续性。在不同的畜牧系统中有效行动取决于科学技术的进步,这允许增加照顾动物健康和福祉的数量。精准畜牧业技…

Samtec汽车电子 | 汽车连接器如何在高要求、极端的环境中工作

【摘要/前言】 汽车电子,这些年来始终是极具流量的热门话题,目前不断发展的智能座驾、辅助驾驶等赛道都是对相关产业链需求的进一步刺激,这里蕴含着一片广阔的市场。 同样,广阔的市场里有着极高的准入门槛和事关安全的技术挑战。…

Windows安全认证机制——Windows常见协议

一.LLMNR协议 1.LLMNR简介 链路本地多播名称解析(LLMNR)是一个基于域名系统(DNS)数据包格式的协议,使用此协议可以解析局域网中本地链路上的主机名称。它可以很好地支持IPv4和IPv6,是仅次于DNS解析的名称…

代谢组数据分析(十三):评估影响代谢物的重要临床指标

欢迎大家关注全网生信学习者系列: WX公zhong号:生信学习者Xiao hong书:生信学习者知hu:生信学习者CDSN:生信学习者2介绍 相关性分析是通过计算两个变量之间的相关系数来评估它们之间线性关系的强度和方向。最常用的是皮尔逊相关系数(Pearson correlation coefficient),…

软件测试常见的面试题(46道)

01、您所熟悉的测试用例设计方法都有哪些?请分别以具体的例子来说明这些方法在测试用例设计工作中的应用。 答:有黑盒和白盒两种测试种类,黑盒有等价类划分法,边界分析法,因果图法和错误猜测法。白盒有逻辑覆盖法&…

VBA通过Range对象实现Excel的数据写入

前言 本节会介绍通过VBA中的Range对象,来实现Excel表格中的单元格写入、区域范围写入,当然也可以写入不同类型的数据,如数值、文本、公式,以及实现公式下拉自动填充的功能。 一、单元格输入数据 1.通过Value方法实现输入不同类型…

Windows上使用Navicat连接ubuntu上的mysql8报错:10061和1130

问题一:can’t connect to mysql server on ‘192.168.xxx.xxx’(10061) 解决: sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf,bind-address绑定了登陆的IP,把这两行代码注释掉,然后重启mysql。 问题二:1…