Contour-1.24.0发布

Posted by 梁远鹏 on 2023-02-26 | 阅读 |,阅读约 3 分钟

TOC

前言

我们很高兴推出 Contour 的 v1.24.0 版本,这是我们针对 kubernetes 集群的第7层 HTTP 反向代理.

主要更新

修复了重复 HTTPProxy include condition的处理

重复的 include condition 现在能够被正确识别, httpproxy 被标记状态为 IncludeError 和 reason 为 DuplicateMatchConditons.

以前 HttPProxy 处理器只是逐个元素比较相邻的 include 和 condition,而不是作为一个整体在一起比较.

此外,当识别出重复的 include condition 时,以前的行为是丢弃违规的 HTTPProxy 上所有的路由,包含有效路由.

因此,任何引用的子 HTTPProxy 都会被标记为孤儿,即使它们能够被正确的包含(即使子 HTTPProxy 的配置是没问题的).有了这个更改后,所有有效的 include 和 Route 规则都会在数据面中处理和编程,这和以前的版本有所不同.

如果一个 Include 和列表中位于它前面的 Include 具有完全相同的匹配条件,那么这个 Include 就会被认为是一个副本.

只有被复制的 Include 引用但是没有被其他任何有效 Include 引用的子 HTTPProxy 会被标记为孤儿 HTTPProxy.

添加对空前缀或者前缀路径匹配/的警告

---
apiVersion: projectcontour.io/v1
kind: HTTPProxy
metadata:
  name: example
spec:
  virtualhost:
    fqdn: foo-example.bar.com
  includes:
  - name: example-child1
  - name: example-child2
---
apiVersion: projectcontour.io/v1
kind: HTTPProxy
metadata:
  name: example-child1
spec:
  routes:
    - conditions:
      - prefix: /
      services:
      - name: s1
        port: 80
---
apiVersion: projectcontour.io/v1
kind: HTTPProxy
metadata:
  name: example-child2
spec:
  routes:
  - conditions:
    - prefix: /foo
    services:
    - name: s2
      port: 80

对包含和重复路由检测的更改

目前在 HTTPProxy include 条件树或单独的 HTTPProxy 中是没有检查重复路由条件的.这意味着您可以让 HTTPProxy 的路由列表后面列出的路由覆盖其他路由.

如果您有一个基于 Include 条件和 Route 件生成重复路由的路由效果,也会发生同样的问题.

如果您依赖于这种行为的话,那么在下一个版本中 Contour 将会进行更改.

我们将会提交一份设计文档来解决这个问题,因为这是一个重大的行为更好,并且鼓励社区参与进来. 当前的计划是完全验证重复路由匹配条件,因为它们是从 Include 和 Route 条件中生成出来的. 可能会对 HTTPRoutes 上设置的状态条件进行更改,以改进对这种无效配置的提示.

@sunjayBhatia

Contour 支持 Gateway API v0.6.0

有关于Gateway API具体信息,请查看 Gateway API 的发布说明. 这个版本的API包含了一些与 Contour 用户相关的更改.

ReferenceGrant 资源升级到 v1beta1,ReferencePolicy已经从API中移除. v1alpha2 版本的 GatewayClass、Gateway和HTTPRoute已弃用. 为了保持一致性,各种资源的状态条件发生了重大变化:

  • 已向 Gateway 和 Gateway Listener 添加了 Condition 的支持
  • 就绪条件被移动到扩展一致性,此时 Contour 不处理这个条件
  • Scheduled condition 在 Gateway 中弃用

@sunjayBhatia

移除 shutdown-manager sidecar容器的liveness 探针

@skriss

次要更新

其他更新

文档更新

弃用和移除通知

兼容的 kubernetes 版本

Contour v1.24.0 针对 kubernetes 1.24 到 1.26 进行了测试.

感谢社区

我们非常感谢所有社区的贡献,使 Contour 变得更好!在此版本中,特别感谢以下贡献者:

您是 Contour 用户吗?我们很想知道!

如果您正在使用 Contour,并且希望将您的组织添加到我们的采用者列表中,请访问此页面.如果您希望保持您的组织名称匿名,但仍然向我们反馈您对 Contour 的使用和场景,请在这个 Github issue 中留言.

发布说明地址

https://github.com/projectcontour/contour/releases/tag/v1.24.0

微信公众号

扫描下面的二维码关注我们的微信公众号,第一时间查看最新内容。同时也可以关注我的Github,看看我都在了解什么技术,在页面底部可以找到我的Github。

wechat-qrcode

温馨提示

本文还在持续创作中,如果你对本文主题感兴趣可以加我微信好友进行催更,博客下方可以找到我的微信联系方式 :)