如何将 Istio Service Mesh 从 http 升级到 http2?

2024-03-11

我们使用 Kubernetes 并使用 Istio Service Mesh。目前,网关中存在针对 HTTPS 的 SSL 终止。我在 istio-proxy 日志中看到 HTTP 协议是 HTTP 1.1。

由于 HTTP2 的各种优点,我想将 HTTP 1.1 升级到 HTTP2。客户端应通过 SSL/TLS 调用我们的服务 HTTP2。

我正在用这个blog https://blog-tech.groupeonepoint.com/playing-with-istio-service-mesh-on-kubernetes/有关此主题的内部演示。

这些是瓶颈:

1)我想提出一个引起最少变化的计划。我了解我需要更新网关

apiVersion: networking.istio.io/v1alpha3
kind: Gateway
metadata:
  name: bookinfo-gateway
spec:
  selector:
    istio: ingressgateway # use istio default controller
  servers:
  - port:
      number: 443
      name: https
      protocol: HTTPS
    hosts:
    - "*"
    tls:
      mode: SIMPLE
      serverCertificate: /etc/certs/server.pem
      privateKey: /etc/certs/privatekey.pem

to

apiVersion: networking.istio.io/v1alpha3
kind: Gateway
metadata:
  name: bookinfo-gateway
spec:
  selector:
    istio: ingressgateway # use istio default controller
  servers:
  - port:
      number: 80
      name: http2
      protocol: HTTP2
    hosts:
    - "*"
    tls:
      mode: SIMPLE
      serverCertificate: /etc/certs/server.pem
      privateKey: /etc/certs/privatekey.pem

基于我在中看到的例子Istio 的网关文档 https://istio.io/docs/reference/config/networking/gateway/#Server.

我想知道:这是否允许来自浏览器(仅支持此模式)的 HTTP2 over TLS 连接?我可以像使用 HTTPS 一样提供 HTTP2 的 tls 详细信息吗?

2) 还有哪些其他需要更新的 Istio 配置?

3)此更改是否会破坏当前使用http协议的微服务?我怎样才能减轻这种情况?

4)我正在阅读有关 DestinationRule 的内容并且升级政策 https://istio.io/docs/reference/config/networking/destination-rule/#ConnectionPoolSettings-HTTPSettings-H2UpgradePolicy。这合适吗?


据我所知,Istio 文档 https://istio.io/和伊斯蒂奥特色阶段 https://istio.io/about/feature-stages/(http2处于稳定阶段)

1) 这是否允许来自浏览器的 HTTP2 over TLS 连接(仅支持此模式)?我可以像使用 HTTPS 一样提供 HTTP2 的 tls 详细信息吗?

是的,它应该允许http2。


2) 还有哪些其他需要更新的 Istio 配置?

您可以选择应用 http2 的地方:


  • Gateway https://istio.io/docs/reference/config/networking/gateway/#Server

apiVersion: networking.istio.io/v1alpha3
kind: Gateway
metadata:
  name: my-ingress
spec:
  selector:
    app: my-ingress-gateway
  servers:
  - port:
      number: 80
      name: **http2**
      protocol: **HTTP2**
    hosts:
    - "*"

  • 服务协议选择 https://istio.io/docs/ops/configuration/traffic-management/protocol-selection/

手动协议选择

可以通过命名服务端口名称来手动指定协议:[-]。支持以下协议:

  • grpc
  • grpc
  • web
  • http
  • http2
  • https
  • mongo
  • mysql*
  • redis*
  • tcp
  • tls
  • udp

*默认情况下禁用这些协议,以避免意外启用实验功能。要启用它们,请配置相应的 Pilot 环境变量。


kind: Service
metadata:
  name: myservice
spec:
  ports:
  - number: 80
    name: http2

3)此更改是否会破坏当前使用http协议的微服务?我怎样才能减轻这种情况?

4)我正在阅读有关 DestinationRule 和升级策略的内容。这合适吗?

我认为它应该很合适,你必须升级h2升级政策 https://istio.io/docs/reference/config/networking/destination-rule/#ConnectionPoolSettings-HTTPSettings-H2UpgradePolicy并将服务更改为http2。


我希望它能帮助你。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何将 Istio Service Mesh 从 http 升级到 http2? 的相关文章

  • 多个资源的 REST 接口使用

    我目前正在通过 http 添加 REST API 到在线服务 我遇到了一个非常简单的问题 我找不到令我满意的答案 我主要有 2 个资源 用户 和 报告 正如您所猜测的那样 报告与用户相关联 与一个且仅一个 我的数据库中的外键 不管怎样 我有
  • 使用 RCurl 登录 WordPress

    我想使用 R 的 RCurl 包登录 WordPress 网站 以便安装 WordPress 插件 可能在 WordPress 的某些选项页面上使用 postForm 由于该网站受密码保护 我请求您帮助如何验证我的 R 会话 我发现以下三个
  • Http PUT 请求到 jpeg

    我收到了如下 HTTP PUT PUT photo HTTP 1 1 X Apple AssetKey F92F9B91 954E 4D63 BB9A EEC771ADE6E8 X Apple Transition Dissolve Con
  • 如何使用 Jade 和 Node.js 迭代 JSON 数组

    所以我有这个 JSON 数组apiData被传递到视图作为data Backend router get function req res var data JSON stringify apiData res render gallery
  • IIS 中特定资源的自定义 http 状态代码

    我有一个带有单个 app offline htm 文件的网站 我如何配置 IIS 以使用特定状态代码 例如 209 而不是默认状态代码 200 返回它 使用 ASP Net 的 app offline htm 功能的替代方法是使用IIS U
  • Kubernetes:用 Calico 替代 Flannel

    我是 Kubernetes 新手 我想尝试不同的 CNI 在我当前的集群中 我正在使用 Flannel 现在 我想使用 Calico 但我找不到清理 Flannel 和安装 Calico 的正确指南 您能指出正确的程序吗 Thanks Ca
  • Ruby 中的参数化 get 请求?

    如何创建 HTTPGETRuby 中带参数的请求 这很容易做到 当你POSTing require net http require uri HTTP post form URI parse http www example com sea
  • 是否可以要求您的用户清除您网站的 HTTP 严格传输安全 (HSTS)?

    如果您为具有较长生命周期的网站打开 HSTS 但后来决定将其关闭 例如由于第三方软件的问题 是否可以警告用户清除其 HSTS 缓存 要关闭服务器的 HSTS 请发送以下标头 Strict Transport Security max age
  • HTTP 标头中使用的日期/时间格式

    哪个 RFC 描述了现代 HTTP 标头中用于日期 时间的格式 例如 Last Modified 和 If Modified Since 以及如何根据这种格式在 PHP 中生成日期 时间字符串 一些来源指向 RFC 2822 如DateTi
  • HttpURLConnection (java.net.CookieManager) 和 WebView (android.webkit.CookieManager) 之间的 cookie 双向同步

    不幸的是 Android 有很多 cookie 管理器 饼干为HttpURLConnection由以下人员维护java net CookieManager和饼干WebView由以下人员维护android webkit CookieManag
  • 如何在 suave webpart 中设置 Json 响应

    我从 Suave 和 F 开始 我正在尝试在我的 web 部件中传递一个 json 序列化对象以在我的响应中获取它 在 php 中我有这个 player1Key hdegftzj25 gameKey aegfhzkfszl
  • HTTP 状态 400 验证与验证

    虽然RFC 7231 https www rfc editor org rfc rfc7231目的是为了清晰起见 但它显然给状态代码 400 带来了歧义 请注意这一点所以答案和评论 https stackoverflow com a 329
  • 检测用户是否位于代理后面

    我试图弄清楚如何检测登录我网站的人是否在代理后面 我读到您可以通过可嵌入对象 Flash 和 Java 检测一个人的真实 IP 地址 但是 我实际上无法找到任何示例或来源 我正在使用 PHP 并且我已经阅读了寻找 SERVER HTTP X
  • 有什么方法可以处理 HTTP/2 Goaway 在 HttpClient java 中收到的 IOException 吗?

    我在应用程序中进行 API 调用 在某个时候它会随机抛出java io IOException 149 222 1 1 553232 GOAWAY received 使用Java 11环境 无论如何要解决此异常而不是迁移到 Http 1 1
  • 创建 JSON 对象并将其转换为 Java 中的 String

    我需要通过 http post 发送一个相当长的 JSON 标头 在Python中是这样的 self body header client self client name clientRevision self client versio
  • 将代码/文件直接注入 Google Cloud Engine 上的 Kubernetes 容器中

    如何将代码 文件直接注入 Google Cloud Engine 上的 Kubernetes 容器中 类似于使用 Docker 挂载主机文件 目录的方式 例如 docker run d name nginx p 443 443 v ngin
  • Kubernetes ConfigMap 大小限制

    Though resourceQuotas可能会限制命名空间中的配置映射的数量 是否有任何这样的选项来限制单个配置映射的大小 我不喜欢某些用户开始上传大型文本文件作为配置映射 ConfigMap etcd 支持的最大大小是多少 如果 etc
  • 从头开始使用映像部署无法启动

    我正在使用以下内容构建图像Dockerfile FROM golang 1 19 2 bullseye as builder COPY src src WORKDIR src RUN CGO ENABLED 1 go build race
  • 在 Rest 中使用 POST 进行删除/更新?

    我明白 从接受的答案HTTP 和 REST 有什么区别 https stackoverflow com questions 2190836 what is the difference between http and rest that
  • 将对象数组作为请求中的 url 参数传递

    我需要将一个对象数组 每个对象有 2 个字段 作为 http 请求的 url 中的参数 我该怎么做以及这个链接应该是什么样子 您可以使用您的结构创建一个 xml 即一个对象数组 每个对象都有两个字段 然后将其转换为字符串 如下所示 举个例子

随机推荐

  • 从 CouchDB 解析 JSON 时如何超越“total_rows”

    我使用以下 jQuery 代码从 CouchDB 获取 JSON 文件 Function getURL var api url http 127 0 0 1 5984 couchcontentqueue design DocCollecti
  • 子类化后的委托?

    抱歉 我无法为标题提出一个简短的问题 如果我使用委托协议和属性对一个类进行子类化 我的委托是否仍然需要实现超类的委托协议 或者我是否必须为子类定义一个新的委托协议 就我而言 我细分了UIImagePickerController UIIma
  • Google 语音 API - php 不返回任何内容

    我的代码受到用于语音转文本的全双工谷歌语音 API 的 php 版本的启发 http mikepultz com 2013 07 google speech api full duplex php version http mikepult
  • Swift 中的构建器模式设置方法

    我刚刚从 Android 基础转移到 ios 在 swift 中寻找构建器模式 get 和 set 方法 但找不到类似的东西 仅发现以下内容 var ptype String get return self ptype set ptype
  • Spring WebSocket 使用 SockJS 连接到不同的域

    Spring 中的 WebSockets 是一个相当新的主题 我厌倦了寻找更多内容 我的问题是连接到来自不同域的服务 我正在与 Lineman 一起构建前端 并与 Spring Boot 一起构建后端 我在两个不同的端口上有这些应用程序 8
  • 删除 QGridLayout 中的所有间距

    我正在尝试以编程方式 使用 Qt 4 6 构建一个包含一系列的窗口QPushButton的 全部挤在一起 它应该看起来像这样 我称之为工具箱 工具箱图像http img99 imageshack us img99 9853 examplez
  • WPF 中的报表查看器

    我有一个WPF项目 我需要预览水晶报表 是否有可能做到这一点 我在 WPF 项目中找不到报表查看器控件 thanks 您可以使用CrystalReportViewerWindows 窗体与 Windows 窗体互操作技术的结合 将查看器添加
  • PhpDocs:链接到“@deprecated”标签描述中的另一个方法?

    是否可以链接到另一个方法 类 属性 等 在我的项目内联内 deprecated标签 像这样 Method description deprecated 1 0 Reason for deprecation use link newMetho
  • QXcbIntegration:无法创建平台 OpenGL 上下文,GLX 和 EGL 均未启用

    我有一个用 QT 和 OpenGL 构建的 unix 二进制文件 我试图在 linux 64 上执行它 它是一个简单的可视化程序 显示 2d 和 3d 图形 我已经安装了所有必需的依赖项 例如 QT 和 openGL 库 但是 我在尝试执行
  • Pygame 根据位置重叠精灵(绘制顺序)

    总的来说 我对 Pygame 和 Python 还比较陌生 所以希望这不是太陌生 I m making a top down RPG and I have two Sprite objects with images that look f
  • 为 click.options() 创建包装装饰器

    我正在尝试为点击装饰器创建一个包装装饰器 click options foo required True import click def foo option func orig decorator click option foo re
  • 使用相同Keycloak的2个APP的身份验证(SSO)

    我需要您针对特殊用例的帮助 我在互联网上搜索但没有找到任何适合我的情况的内容 我是 keycloak 的新手 所以这可能很容易做到 但我未能解决它 我有两个具有 Spring Boot 安全性的应用程序 它们连接到同一个 keycloak
  • Photoshop 抠图滤镜是如何实现的?

    Photoshop 有很多很酷的功能艺术滤镜 http alanwho com photoshop photoshop artistic filters 我很想了解底层算法 一种特别有趣的算法是 Cutout 过滤器 上面链接中的编号 2
  • PostgreSQL 子查询使用 like

    假设我有第一张这样的桌子 分支表 name description 123456ABC FOO 553646DEF FO2 第二个表是这样的 余额表 name description ABC oof DEF 2of 我想查询余额表 其中每一
  • Windows Server 2008 的传真服务器替代方案

    为了在内部发送传真 我们一直使用以下 Coldfusion 代码来创建处理传真的对象
  • 查找 google 何时自动完成返回零结果

    我使用谷歌地点自动完成功能来提供地点建议 现在这就是我想要的 当用户输入不在谷歌数据库中的位置时 即谷歌返回零结果时 我需要能够捕获零结果事件 并触发我的客户自动完成功能 当谷歌返回零结果时我如何找到 如果结果为零 autocomplete
  • 构建 Apk 时出错:com.android.build.api.transform.TransformException:生成主 dex 列表时出错

    在项目到两个库模块和一个应用程序模块之后 Android Studio 无法构建 Apk 但是当我将项目构建到真实设备或模拟器中时 它可以完美运行 这是我在 消息 选项卡中遇到的完整堆栈错误 FAILURE Build failed wit
  • 是什么导致 HttpListener HTTP 503 错误?

    因此 我们有一个大型程序 它使用 HttpListener 来实现小型远程管理功能 由于我不明白的原因 有些人遇到了 503 错误的问题 由于我们没有提供错误 因此框架中发生了一些事情 现在 我的问题是 框架内部是什么导致了这个错误 是前缀
  • 创建 .p12 文件

    Using openssl 我创建了一个私钥 如下所示 openssl genrsa out myKey pem 然后 生成csr应CA的要求 我已执行以下操作 openssl req new key myKey pem out cert
  • 如何将 Istio Service Mesh 从 http 升级到 http2?

    我们使用 Kubernetes 并使用 Istio Service Mesh 目前 网关中存在针对 HTTPS 的 SSL 终止 我在 istio proxy 日志中看到 HTTP 协议是 HTTP 1 1 由于 HTTP2 的各种优点 我