前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Kubernetes 1.18: Ingress API优化

Kubernetes 1.18: Ingress API优化

作者头像
zouyee
发布2021-02-01 14:59:52
1K0
发布2021-02-01 14:59:52
举报
文章被收录于专栏:Kubernetes GOKubernetes GO

lu j

Kubernetes中的Ingress API对外提供简单而功能强劲的方法来管理与kubernetes集群内工作负载通信的入网流量。 在Kubernetes 1.18版本中,我们对Ingress API进行了以下3项重大改进:

- 新增pathType字段,可以指定应该匹配哪种Ingress路径

- 新增IngressClass资源,可以指定控制器应如何实现Ingress

- 支持主机名的通配符

路径匹配

新增的pathType字段,可以指定应该匹配哪种Ingress路径。当前支持三种类型:

  • ImplementationSpecific(默认): 使用此路径类型,匹配方式取决于实现IngressClass的控制器
  • 完全匹配: 与URL完全匹配且区分大小写
  • 前缀: 以/分隔的URL路径前缀进行匹配。匹配区分大小写,并且在逐个路径的基础上进行匹配

Ingress配置增强

Ingress资源在设计时秉承简易性设计准则,从而提供了一组简易字段以满足绝大多数应用场景。但随着时间的推移,以及使用场景的拓宽,开始依赖各种的自定义注释来进行进一步的配置。因此新的Ingress资源提供了一种替换注释的方案。

在Ingress规范中添加了一个新的ingressClassName字段,该字段用于决定应用于该Ingress的具体IngressClass。

apiVersion: networking.k8s.io/v1beta1
kind: IngressClass
metadata:
  name: external-lb
spec:
  controller: example.com/ingress-controller
  parameters:
    apiGroup: k8s.example.com/v1alpha
    kind: IngressParameters
    name: external-lb

弃用Ingress注释

在Kubernetes 1.18发布(即添加IngressClass资源)之前,通常会在Ingress上使用kubernetes.io/ingress.class注释来指定某类Ingress。尽管从未正式定义此注释,但Ingress控制器已广泛支持此注释,现在正式弃用该字段。

设置默认的IngressClass

可以在集群中将特定的IngressClass标记为默认值。在IngressClass资源上将注释`ingressclass.kubernetes.io/is-default-class`设置为true,就能够确保为未指定ingressClassName的新Ingress关联此默认IngressClass。

示例

这些新的Ingress功能可实现更多可配置性。下面是一个同时使用pathType,ingressClassName和主机名通配符的Ingress示例:

apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
  name: example-ingress
spec:
  ingressClassName: external-lb
  rules:
  - host: *.example.com
    http:
      paths:
      - path: /example
        pathType: Prefix
        backend:
          serviceName: example-service
          servicePort: 80

Ingress Controller支持

由于这些功能是Kubernetes 1.18中的新增特性,因此每个Ingress控制器都需要一些时间来开发以完成对这些新功能的支持。首选查看Ingress控制器的相关文档,以了解它们何时将支持此新功能。

后续展望

在Kubernetes 1.19版本发布时,Ingress API有望从Beta变为GA。它将继续为用户管理Kubernetes工作负载的入网流量提供一种简单的方法。该API在保持简单和轻巧特性的同时希望为更复杂的用户场景提供更灵活的配置方案。

目前正在开发一套高度可配置的API,这些API在未来将成为Ingress的可选方案。这些API被称为新的“Service APIs”。当然其无意替代任何现有的API,而只是为复杂的用例提供了一种更灵活的配置方案。有关更多信息,请查看GitHub上的Service APIs。

原文链接:https://kubernetes.io/blog/2020/04/02/improvements-to-the-ingress-api-in-kubernetes-1.18/

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

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

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

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

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