写点什么

Istio Gateway 的典型应用 --《云原生服务网格 Istio》书摘 07

  • 2019-12-27
  • 本文字数:3142 字

    阅读完需:约 10 分钟

Istio Gateway的典型应用--《云原生服务网格Istio》书摘07

Gateway 的典型应用

下面认识 Gateway 的几种典型应用。


1.将网格内的 HTTP 服务发布为 HTTP 外部访问


3.4.1 节的配置示例介绍了将一个内部的 HTTP 服务通过 Gateway 发布出去的典型场景。如图 3-53 所示,外部服务通过域名http://weather.com访问到应用的入口服务 frontend。VirtualService 本身定义了 frontend 服务从内部和外部访问同样的路由规则,即根据内容的不同,将请求路由到 v2 版本或 v1 版本。注意,这里 Gateway 的协议是 HTTP。



图 3-53 将网格内的 HTTP 服务发布为 HTTP 外部访问


2.将网格内的 HTTPS 服务发布为 HTTPS 外部访问


在实际使用中更多的是配置 HTTPS 等安全的外部访问。例如,在这个场景中,将网格内的 HTTPS 服务通过 HTTPS 协议发布。这样在浏览器端中输入“https://weather.com”就可以访问到这个服务,如图 3-54 所示。



图 3-54 将网格内的 HTTPS 服务发布为 HTTPS 外部访问


如下所示是这种场景的 Gateway 配置,重点是:端口为 443,协议为 HTTPS,TLS 模式为 PASSTHROUGH,表示 Gateway 只透传应用程序提供的 HTTPS 内容。在本示例中,frontend 入口服务自身是 HTTPS 类型的服务,TLS 需要的服务端证书、密钥等都是由 frontend 服务自己维护的。这时要对 frontend 服务做路由管理,在 VirtualService 中需要配置支持 TLSRoute 规则,如果没有配置,则流量会被当作 TCP 处理:


apiVersion: networking.istio.io/v1alpha3


kind: Gateway


metadata:


name: istio-gateway


namespace: istio-system


spec:


selector:


app: ingress-gateway


servers:


- port:


number: 443


name: https


protocol: HTTPS


hosts:


- weather.com


tls:


mode: PASSTHROUGH


这时,Istio 只是通过 Gateway 将一个内部的 HTTPS 服务发布出去。Istio 提供了通道和机制,HTTPS 的证书及网格外部 HTTPS 客户端如何访问 frontend 服务都是 frontend 服务自己的事情。这里的 HTTPS 是应用程序的 HTTPS,不是 Istio 的 Gateway 提供的 HTTPS。对于自身的服务已经是 HTTPS 的应用,Istio 支持通过这种方式把服务发布成外部可访问,但更推荐的是下面的做法,即将网格内一个 HTTP 的服务通过 Gateway 发布为 HTTPS 外部访问。


3.将网格内的 HTTP 服务发布为 HTTPS 外部访问


与上一个场景类似,要求网格外部通过 HTTPS 访问入口服务,差别为服务自身是 HTTP,在发布的时候通过 Gateway 的配置可以提供 HTTPS 的对外访问能力。如图 3-55 所示,外部通过 HTTPS 访问,入口服务 frontend 是 HTTP 服务。



图 3-55 将网格内 HTTP 服务发布为 HTTPS 外部访问


这时配置 Gateway 如下,可以看到端口为 443,协议为 HTTPS。与前一种场景的入口服务自身为 HTTPS 不同,这里的 TLS 模式是 SIMPLE,表示 Gateway 提供标准的单向 TLS 认证。这时需要通过 serverCertificate 和 privateKey 提供服务端证书密钥。从图 3-55 也可以看到 TLS 认证的服务端是在入口的 Envoy 上创建的,入口服务 frontend 本身保持原有的 HTTP 方式:


apiVersion: networking.istio.io/v1alpha3


kind: Gateway


metadata:


name: istio-gateway


namespace: istio-system


spec:


selector:


app: ingress-gateway


servers:


- port:


number: 443


name: https


protocol: HTTPS


hosts:


- weather.com


tls:


mode: SIMPLE


serverCertificate: /etc/istio/gateway-weather-certs/server.pem


privateKey: /etc/istio/gateway-weather-certs/privatekey.pem


这种方式又被称为终结的 HTTPS,在 Gateway 外面是 HTTPS,但从 Gateway 往里的服务间访问还是 HTTP。入口处作为 Gateway 的 Envoy,一方面作为服务提供者的入口代理,将 frontend 服务以 HTTPS 安全协议发布出去;另一方面作为服务消费者的代理,以 HTTP 向 frontend 服务发起请求。正因为有了后面这种能力,对于 frontend 服务上的路由仍然可以使用 HTTP 的路由规则。


这种方式既可以提供第 1 种 HTTP 发布同样的灵活性,又可以满足第 2 种场景要求的入口安全访问。在 Gateway 服务发布时提供了安全的能力,对服务自身的代码、部署及网格内部的路由规则的兼容都没有影响,因此是推荐的一种做法。


4.将网格内的 HTTP 服务发布为双向 HTTPS 外部访问


对于大多数场景,使用上面的方式将入口的 HTTP 服务发布成标准的 HTTPS 就能满足需要。在某些场景下,比如调用入口服务的是另一个服务,在服务端需要对客户端进行身份校验,这就需要用到 TLS 的双向认证,如图 3-56 所示。



图 3-56 将网格内 HTTP 服务发布为双向 HTTPS 外部访问


这种方式的主要流程和第 3 种场景单向认证类似,都是在入口处 Gateway 角色的 Envoy 上开放 HTTPS 服务,外部 HTTPS 请求在 Gateway 处终止,内部 VirtualService 的路由配置仍然是 HTTP。


在如下配置方式中,可以看到,双向认证和单向认证的差别在于,Gateway 上的模式被设定为 MUTUAL 时表示双向认证,同时,为了支持双向认证,除了要配置通过 serverCertificate 和 privateKey 提供服务端证书密钥,还需要提供 caCertificates 来验证客户端的证书,从而实现和调用方的双向认证:


apiVersion: networking.istio.io/v1alpha3


kind: Gateway


metadata:


name: istio-gateway


namespace: istio-system


spec:


selector:


app: ingress-gateway


servers:


- port:


number: 443


name: https


protocol: HTTPS


hosts:


- weather.com


tls:


mode: MUTUAL


serverCertificate: /etc/istio/gateway-weather-certs/server.pem


privateKey: /etc/istio/gateway-weather-certs/privatekey.pem


caCertificates: /etc/istio/gateway-weather-certs/ca-chain.cert.pem


5.将网格内的 HTTP 服务发布为 HTTPS 外部访问和 HTTPS 内部访问


除了以上几种方式,有没有一种方式可以将一个 HTTP 服务通过 Gateway 发布为 HTTPS 服务?同时在网格内部也是 HTTPS 的双向认证?当然有,这是 Istio 安全能力的主要场景,如图 3-57 所示,不用修改代码,HTTP 服务在网格内和网格外都是 HTTPS 安全方式互访。



图 3-57 将网格内的 HTTP 服务发布为 HTTPS 外部访问和 HTTPS 内部访问


这里的 Gateway 的 Manifest 和场景 3 完全相同,不再重复介绍。


我们只需知道 Istio 可以透明地给网格内的服务启用双向 TLS,并且自动维护证书和密钥。入口 Gateway 和入口服务 frontend 在这种场景下的工作机制如下:


  • frontend 服务自身还是 HTTP,不涉及证书密钥的事情;

  • Gateway 作为 frontend 服务的入口代理,对外提供 HTTPS 的访问。外部访问到的是在 Gateway 上发布的 HTTPS 服务,使用 Gateway 上的配置提供服务端证书和密钥;

  • Gateway 作为外部服务访问 frontend 服务的客户端代理,对 frontend 服务发起另一个 HTTPS 请求,使用的是 Citadel 分发和维护的客户端证书和密钥,与 frontend 服务的服务端证书和密钥进行双向 TLS 认证和通信。


注意:入口服务通过 Gateway 发布成 HTTPS,结合 Istio 提供的透明双向 TLS,在入口的 Envoy 上是两套证书密钥,一套是 Gateway 对外发布 HTTPS 服务使用的,另一套是 Istio 提供的网格内双向 TLS 认证,两者没有任何关系。


下面通过如表 3-6 所示的 Gateway 上的服务发布方式比较来理解以上几种场景。



表 3-6 Gateway 上的服务发布方式比较


此外,在 Gateway 上一般都是发布多个服务,如下所示为配置多个 Server 元素:


apiVersion: networking.istio.io/v1alpha3


kind: Gateway


metadata:


name: istio-gateway


namespace: istio-system


spec:


selector:


app: ingress-gateway


servers:


- port:


number: 443


name: https


protocol: HTTPS


hosts:


- weather.com


tls:


mode: MUTUAL


serverCertificate: /etc/istio/gateway-weather-certs/server.pem


privateKey: /etc/istio/gateway-weather-certs/privatekey.pem


caCertificates: /etc/istio/gateway-weather-certs/ca-chain.cert.pem


- port:


number: 80


name: http


protocol: HTTP


hosts:


- weather2.com


2019-12-27 13:493137

评论

发布
暂无评论
发现更多内容

不 Star 不让看?当开源精神被 "绑架" 成一枚小小的 Star — 致 Gitee 开发者

JEECG低代码

​触摸算力未来!全球计算联盟(GCC)主办2025全球计算大会(CGC2025)打造沉浸式展区

科技经济

从0到1搭建出海媒体监测体系

沃观Wovision

出海社交 社交媒体监控 出海舆情 出海媒体监测

专业洗车小程序系统:一站式洗车服务数字化解决方案

微擎应用市场

企业海外营销战略白皮书:从市场选择到规模化增长的完整蓝图

Wolink

海外社媒营销 海外营销推广 达人营销

企业海外营销必须规避的5大陷阱与风险

Wolink

出海企业 海外社媒营销 海外营销推广 海外推广 达人营销

2026海外推广新趋势:TikTok营销、AI创意

Wolink

企业出海 内容营销 海外社媒营销 海外营销推广 达人营销

BOE(京东方)亮相2025世界显示产业创新发展大会 AI赋能显示构建视界新生态

爱极客侠

主流低代码开发平台有哪些:加速数字化转型的核心力量

科技经济

将财务数据转化为强有力的叙述,推动战略决策

智达方通

企业管理 企业战略 全面预算管理

2025 国内数据资产管理平台 TOP10 解析:从合规到价值的进化之路

科技经济

设计师必备:提升CAD审图效率的5个实战技巧​

在路上

cad cad看图 CAD看图王

SD-WAN重塑企业网络架构,推动国际化发展

光联世纪

传图取字小程序:高效 OCR 文字识别工具,轻松实现图片转文字

微擎应用市场

海外营销新规则:TikTok+Instagram海外红人合作避坑指南

Wolink

海外社媒营销 海外营销推广 品牌出海 海外红人营销

【低代码 + AI 编程】GitHub Copilot 各个模型区别,实现高效编程

JEECG低代码

流动的中国结,联结全球路——中国重汽释放全球价值新信号

科技经济

六款远程控制软件排名,哪一款最好用?

科技经济

预算有限?中小品牌如何用微型红人矩阵撬动海外巨大流量

Wolink

跨境电商 出海 出海企业 海外营销推广

快递鸟电子面单打印接口技术对接文档

快递鸟

万源共振启新篇,天翼云发布全球首个运营商级开源数据库OpenTeleDB

科技经济

海外推广本地化实战:如何让你的内容打动欧美和东南亚用户?

Wolink

出海 海外营销推广 品牌出海 达人营销

Docker+花生壳内网穿透部署PhotoPrism教程,免费实现远程访问

科技经济

维语视频微信小程序系统:一站式视频服务解决方案

微擎应用市场

律师事务所专属小程序:一站式法律服务数字化解决方案

微擎应用市场

新麦分销商城小程序系统:一站式分销零售解决方案

微擎应用市场

营销归因分析:如何准确追踪海外多渠道转化路径?

Wolink

跨境电商 出海 品牌宣传 海外营销推广

如何在不可信的云环境中,构建兼具极致性能与卓越安全的大语言模型(LLM)推理服务?

隐语SecretFlow

开源 隐私计算 大模型 机密计算

施工员现场CAD看图指南:6个“救命”功能​一定要学会

在路上

cad CAD看图王

业绩逆转之外,Intel 18A与Panther Lake将成为重塑英特尔营收增长逻辑的关键变量

科技经济

AIGC与智能体工作流公开课:解锁企业「降本增效」的终极密码

测试人

软件测试

Istio Gateway的典型应用--《云原生服务网格Istio》书摘07_安全_华为云原生团队_InfoQ精选文章