写点什么

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:492982

评论

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

可能是全网第一个MySQL Workbench插件编写技巧

LLLibra146

Python MySQL

如何快速制作精美ppt图表?详细的保姆级教程来了!

职场工具箱

效率工具 职场 PPT 可视化分析 AI生成PPT

一文读懂Pencils Protocol的Auction产品,以及其背后的价值支撑

股市老人

鸿蒙NEXT开发案例:光强仪

zhongcx

《Django 5 By Example》阅读笔记:p54-p75

codists

Python django

全球司库|规划与创新创景:引领业务、高效运营、战略增值

用友智能财务

金融 科技 企业数智化 司库

个推SDK:人民日报、新华社等数十万App的双十一运营神器

新消费日报

革新农业未来!Dimitra生态币价双双腾飞在即

股市老人

vLLM×Milvus:如何高效管理GPU内存,减少大模型幻觉

Zilliz

Milvus LLM vLLM PagedAttention

数据湖系列之四 | 数据湖存储加速方案的发展和对比分析

百度Geek说

百度 数据湖 存储

企业如何落地多因素认证?

芯盾时代

身份认证 身份安全 iam 身份和访问管理

双十一企业协作效率再升级!华为云Flexus版云会议299元_年起

轶天下事

双十一低成本上车!详谈华为云Flexus云会议为我们中小企业带来了什么

轶天下事

双十一轻松实现云上高效沟通!华为云Flexus云会议实测体验领先

轶天下事

为中小企业量身定制的云会议!华为云Flexus版云会议亮相828

轶天下事

哪些技术项目管理工具最适合开发团队?9大推荐

爱吃小舅的鱼

技术项目管理工具

NocoBase 本周更新汇总:提升工作流易用性

NocoBase

开源 低代码 零代码 无代码 版本更新

PHP中哪个框架最适合做API?

科普小能手

php API PHP框架 PHP开发 API 接口

在指标平台市场中,企业的避 “坑” 选择秘籍

Aloudata

大数据 数据分析 指标管理 指标平台 指标开发

极速启动,函数计算弹性降本能力再升级

阿里巴巴云原生

阿里云 云原生 函数计算

一文读懂Pencils Protocol的Auction产品,以及其背后的价值支撑

加密眼界

原生鸿蒙政务行业应用开发模板上线,近200个政务服务应用已上架

最新动态

润开鸿骆敏清:软件定义新“智” 硬件,以开源鸿蒙发行版驱动行业顶层创新

科技热闻

项目变更管理必备技巧:4大实践策略助力成功

爱吃小舅的鱼

项目管理 项目变更 项目变更管理

双十一入手华为云Flexus云会议后,我总结了中小企业无法拒绝的3大优势

轶天下事

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