前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Kubernetes Gateway API v1.1 发布:新的标准特性和实验性增强

Kubernetes Gateway API v1.1 发布:新的标准特性和实验性增强

作者头像
深度学习与Python
发布2024-06-17 14:57:47
590
发布2024-06-17 14:57:47
举报
作者 | Claudio Masolo

译者 | 张卫滨

策划 | Tina

Kubernetes SIG Network发布 了 Gateway API 的 1.1 版本。这次更新将多个关键特性转移到了标准通道(GA),包括对 服务网格 和 GRPCRoute 的支持。此外,还引入了会话持久性和客户端证书验证等新的实验性特性。

v1.1 的发布标志着四个备受期待的特性从实验阶段变成了标准版。这表明对 API 的稳定性有了足够的信心,并且会提供向后兼容性的保证。标准通道(Standard Channel)的特性将会通过向后兼容的功能增强进行演进。

现在,Gateway API 能够支持服务网格,这使得用户能够使用统一的 API 管理 ingress 和网格流量。像 HTTPRoute 这样的路由现在可以通过parentRef来引用服务,从而允许对特定的服务进行精确的流量控制。要了解该特性的更多信息,请查阅 Gateway API 的文档。

使用 HTTPRoute 进行金丝雀部署的可能实现如下所示:

代码语言:javascript
复制
apiVersion: gateway.networking.k8s.io/v1
kind: HTTPRoute
metadata:
  name: color-canary
  namespace: faces
spec:
  parentRefs:
    - name: color
      kind: Service
      group: ""
      port: 80
  rules:
  - backendRefs:
    - name: color
      port: 80
      weight: 50
    - name: color2
      port: 80
      weight: 50

该配置将faces命名空间下的原color Service 和color2 Service 按照 50/50 的规则划分流量。

GRPCRoute 自 v1.1.0 以来一直是标准通道的一部分。对于实验通道的用户,建议等待控制器更新后再升级到标准通道版本。同时,v1.1 中的实验通道版本包含了 v1alpha2 和 v1 API 版本。

HTTPRoute 是一种 Gateway API 类型,用于声明 HTTP 请求的路由行为。每个路由都提供了引用父资源的方法,以便于附加到该路由上。通常,这些父资源可以是网关,但是具体的实现也可以灵活地支持其他类型的父资源。端口字段已经添加到了 ParentReference 中,允许通过声明端口将资源附加到 Gateway 监听器、Service 或其他父资源。它允许同时附加多个监听器。

通过端口将 HTTPRoute 附加到特定 Gateway 监听器的示例代码如下:

代码语言:javascript
复制
apiVersion: gateway.networking.k8s.io/v1beta1
kind: HTTPRoute
metadata:
  name: httproute-example
spec:
  parentRefs:
  - name: acme-lb
    port: 8080

值得注意的是,目标 Gateway 需要允许附加来自路由命名空间的 HTTPRoutes,这样才能附加成功,而且对端口的绑定还允许一次连接到多个监听器。

一致性报告现在包含了mode字段和gatewayAPIChannel(standard 或 experimental)。gatewayAPIVersiongatewayAPIChannel会被自动填充,并且报告的结构化会更好,允许实现包含测试详情和重现步骤。

有个新的特性添加到了实验通道中,它专注于 Gateway。具体来讲,现在可以使用 TLS 中的新frontendValidation字段来为每个 Gateway 监听器配置客户端证书验证。该字段允许配置 CA 证书对客户端证书进行验证。

配置实例如下所示:

代码语言:javascript
复制
apiVersion: gateway.networking.k8s.io/v1
kind: Gateway
metadata:
  name: client-validation-basic
spec:
  gatewayClassName: acme-lb
  listeners:
    name: foo-https
    protocol: HTTPS
    port: 443
    hostname: foo.example.com
  tls:
    certificateRefs:
      kind: Secret
      group: ""
      name: foo-example-com-cert
    frontendValidation:
      caCertificateRefs:
        kind: ConfigMap
        group: ""
        name: foo-example-com-ca-cert

实验通道的另一个新增特性是会话持久性。对于 Service 级别的配置来讲,它是通过一个新的策略(BackendLBPolicy)引入的,对于路由级别的配置,它是作为 HTTPRoute 和 GRPCRoute 中的字段引入的。这些设置包括会话超时、会话名称、会话类型和 cookie 有效期。

基于 cookie 的会话持久化的 BackendLBPolicy 配置示例如下所示:

代码语言:javascript
复制
apiVersion: gateway.networking.k8s.io/v1alpha2
kind: BackendLBPolicy
metadata:
  name: lb-policy
  namespace: foo-ns
spec:
  targetRefs:
  - group: core
    kind: service
    name: foo
  sessionPersistence:
    sessionName: foo-session
    absoluteTimeout: 1h
    idleTimeout: 30m
    type: Cookie
    cookieConfig:
      lifetimeType: Session

为了确保 TLS 术语的一致性,对BackendTLSPolicy进行了一些破坏性的变更,从而产生了新的 API 版本 (v1alpha3)。实现必须通过更新相应的引用和配置来处理这个版本升级。其他值得注意的变更:

  • targetRef变为targetRefs
  • tls变为validation
  • tls.caCertRefs变为validation.caCertificateRefs
  • tls.wellKnownCACerts变为validation.wellKnownCACertificates

与其他 Kubernetes API 不同,要使用最新的 Gateway API,不需要升级到最新的 Kubernetes 版本。只要集群安装在 Kubernetes 1.26 或更高版本上,就可以立即开始使用最新的 Gateway API 了。

原文链接:

https://www.infoq.com/news/2024/05/kubernetes-gateway-api/

声明:本文由 InfoQ 翻译,未经许可禁止转载。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-06-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 InfoQ 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档