首页 > 系统相关 >关于 NGINX Kubernetes Gateway,你需要知道的 5 件事

关于 NGINX Kubernetes Gateway,你需要知道的 5 件事

时间:2022-11-02 11:33:58浏览次数:75  
标签:Ingress Kubernetes NGINX Controller API Gateway

原文作者:Ilya Krutov of F5
原文链接:​​​关于 NGINX Kubernetes Gateway,你需要知道的 5 件事​

转载来源:NGINX 官方网站


在过去的几年里,F5 NGINX 帮助您成功走完了 Kubernetes 之旅,而今 F5 NGINX 又创造了新的里程碑 —— 我们发布了 NGINX 家族最新成员的内测版:F5 NGINX Kubernetes Gateway!

NGINX Kubernetes Gateway 是一个按照​​ “Kubernetes Gateway API 规范”​​来执行的控制器,该规范是从 ​​“Kubernetes Ingress API 规范”​​演变而来的。Gateway API 是由 Kubernetes ​​网络特别兴趣小组​​ (SIG‑NETWORK) 管理的开源项目,旨在改善 Kubernetes 的服务网络并实现其标准化。NGINX 是该项目的积极贡献者。

如果您目前正积极使用 Kubernetes,那么 ​​Ingress API 对象​​和许多可用的 Ingress 实施对您来说一定不陌生。Gateway API 是暴露 Kubernetes 应用和 API 的最新方法。如欲了解有关当前其他可用选项的更多信息,请参阅​​《Kubernetes 网络入门》​​。​

关于 NGINX Kubernetes Gateway,你需要知道的 5 件事_NGINX Ingress Contro

​近几年来,随着越来越多的企业跨各种混合云和多云环境在生产级 Kubernetes 集群中部署 Ingress controller,他们逐渐认识了使用 Gateway API 来解决各项挑战的必要性:

  • 其中一个挑战是,最初的 Ingress 资源在设计时只考虑了一个用户角色,即监督整个配置的 Kubernetes 运维人员或管理员。这种模型在许多拥有多个团队的企业中都不适用,包括应用开发人员、平台运维人员、安全管理员等,他们在协作开发和交付应用的过程中需要控制 Ingress 配置的不同方面。Gateway API用了新的模式,并使其能够轻松地委托多个角色对网络配置进行控制。
  • 另一个挑战是许多 Ingress 实施中的注释和自定义资源类型 (CRD) 激增,它们解锁了不同数据平面的功能,并实现了 Ingress 资源中没有内置的功能,例如基于标头的匹配、流量加权和多协议支持。Gateway API 可将此类功能作为核心 API 标准的一部分来进行提供。

NGINX Kubernetes Gateway 是什么?

NGINX Kubernetes Gateway 由 Ingress controller 发展而来,它解决了现代客户环境中多个团队管理 Kubernetes 基础架构的难题。此外,它还提供了许多无需实施 CRD 就可以实现的功能,简化了部署和管理流程。NGINX Kubernetes Gateway 利用经过验证的 NGINX 技术作为其数据平面,能够提供一流的性能、可视性和安全性。

NGINX Kubernetes Gateway 通过将基于角色的访问控制 (RBAC) 映射到相关角色(基础架构提供商、集群操作员和应用开发人员),对三个主要的 Gateway API 资源(GatewayClass、Gateway 和 Route)进行了标准化。​

关于 NGINX Kubernetes Gateway,你需要知道的 5 件事_nginx_02

​明确定义并划分不同角色的职责范围有助于简化管理。具体来说,基础架构提供商负责为 Kubernetes 集群定义 GatewayClasses,集群运维人员则负责在集群中部署和配置 Gateway(包括策略),而应用开发人员可以自由地将 Route 附加到 Gateway,以对外暴露应用。

此外,NGINX Kubernetes Gateway 通过对大多数用例的内置核心功能进行标准化处理,简化了 Kubernetes 环境中服务网络的部署和管理,从而减少了对 CRD 的需求。NGINX Kubernetes Gateway 内测版实施主要通过七层(HTTP 和 HTTPS)路由交付 Ingress controller 功能。未来的功能发展将受社区反馈和用例的驱动,包括四层路由功能。根据 Gateway API 和 NGINX Kubernetes Gateway 的长期路线图,它们最终将交付由 Ingress controller 提供的功能超集。

NGINX Kubernetes Gateway 与 NGINX Ingress Controller 有何不同?

​F5 NGINX Ingress Controller​​ 通过实施 Ingress API 规范来提供核心功能,并且使用自定义注释、CRD 和 ​​NGINX Ingress 资源​​提供扩展功能。NGINX Kubernetes Gateway 遵守 Gateway API 规范,能够在简化实施的同时,更好地与处理服务网络配置的组织角色对齐。

下表比较了标准 Ingress API、带 CRD 的 NGINX Ingress Controller 和 Gateway API 的关键高级特性,描述了它们各自的功能。

特性

标准 Ingress API

带 CRD 的 NGINX Ingress Controller

Gateway API

API 规范

Ingress API

Ingress API + CRD

Gateway API

多用户管理




七层协议(HTTP/HTTPS、gRPC)




七层负载均衡



自定义策略

请求路由




请求操作

有限



响应操作

有限



四层协议(TLS、TCP、UDP)




四层负载均衡



自定义策略

放行/阻断列表



自定义策略

证书验证



自定义策略

身份验证 (OIDC)



自定义策略

速率限制



自定义策略

NGINX Kubernetes Gateway 是否会取代 NGINX Ingress Controller?

NGINX Kubernetes Gateway 不会取代 NGINX Ingress Controller。更确切地说,它是一种基于 Gateway API 规范内测版的新兴技术,仅用于进行评估, 并不适用于生产环境。NGINX Ingress Controller 则是一种成熟、稳定、适用于生产环境并广为客户所用的技术。它可以通过自定义注释和 CRD 针对特定用例量身定制。举例来说,NGINX Ingress Controller 需要使用 NGINX Ingress 资源(包括 VirtualServer、VirtualServerRoute、TransportServer 和 Policy )来实施基于角色的方法。

我们认为,NGINX Kubernetes Gateway 短期内不会取代 NGINX Ingress Controller —— 如果真要取代也是几年之后的事情了。NGINX Ingress Controller 将继续为各种环境和用例中的南北向网络流量管理发挥着重要作用,包括负载均衡、流量限制、流量分割和安全防护。

NGINX Kubernetes Gateway 是一种 API 网关吗?

从名称上看,“Gateway API(网关 API)”听起来像是“API 网关”,但事实并非如此。正如我们在​​《API 网关 vs. Ingress Controller vs. Service Mesh该怎么选?》​​中讨论的那样,“API 网关”描述了一组可以通过不同类型的代理(ADC 或负载均衡器和反向代理最为常见,Ingress Controller 和 Service Mesh 日渐兴起)实现的用例。也就是说,就像 NGINX Ingress Controller 一样,NGINX Kubernetes Gateway 可用于 API 网关用例,包括将请求路由到特定的微服务、实施流量策略及支持灰度和蓝绿部署。其内测版主要用于处理 HTTP/HTTPS 流量,未来计划还将支持更多协议和用例。

立即开始使用

准备好评估这项令人兴奋的新技术了吗?​​获取 NGINX Kubernetes Gateway 的内测版​​。

有关部署说明,请参阅 ​​README​​ 文件。

有关 Gateway API 规范的详细信息,请参阅 ​​Kubernetes Gateway API 文档​​。

欢迎您积极提交反馈、功能请求、用例及任何其他建议,以便我们帮助您化解挑战并取得成功。请在我们的 ​​GitHub 仓库​​中分享您的反馈。


更多资源

想要更及时全面地获取 NGINX 相关的技术干货、互动问答、系列课程、活动资源?

请前往 NGINX 开源社区:

标签:Ingress,Kubernetes,NGINX,Controller,API,Gateway
From: https://blog.51cto.com/u_15363550/5816114

相关文章

  • nginx的域名重写和转发案例
    对url进行重写location=/tongyong_OTA_1.0.3.bin{rewrite^(.*)$http://36.133.87.223/lecode-server/lecode-dap-server/api/open/server/ota/ton......
  • nginx常用指令
    1.启动cdusr/local/nginx/sbin./nginx2.检查配置文件是否正确nginx-t-c/usr/local/nginx/conf/nginx.conf或者cd/usr/local/nginx/sbin./nginx-t3.......
  • Kubernetes_Deployment全解析(无状态的Pod)
    前言一、创建Deployment1.1创建DeploymentapiVersion:apps/v1kind:Deploymentmetadata:name:nginx-deploymentlabels:app:nginxspec:repl......
  • Linux自动安装Nginx
    Nginx(发音同“engineX”)是异步框架的网页服务器,也可以用作反向代理、负载平衡器和HTTP缓存。该软件由俄罗斯程序员伊戈尔·赛索耶夫(ИгорьСысоев)开发并于......
  • ingress-nginx 配置例子
    文档说明:只记录关键地方;试验环境:linuxdebian11目标:自建K8S对外提供httphttps服务生成TLSkubectlcreate-ndefaultsecrettlscom-xiaoshuogeng-tls-cert-s......
  • 深入剖析 Kubernetes-4 容器持久化存储
    1PV&PVC&StorageClass1.1概念PV描述的是持久化存储数据卷。PVC描述的是Pod所希望使用的持久化存储的属性。StorageClass其实就是创建PV的模板。用户创建的P......
  • Centos离线安装JDK+Tomcat+MySQL8.0+Nginx
    一、安装JDK注:以下命令环境在Xshell中进行。1、查询出系统自带的OpenJDK及版本rpm-qa|grepjdk2、如果显示已安装openjdk则对其进行卸载。#卸载rpm-e--nodeps......
  • Kubernetes Deployment 实操整理
    Deployment用于部署无状态的服务。一般不直接管理Pod或者ReplicaSet。创建DeploymentDeployment文件apiVersion:apps/v1kind:Deploymentmetadata:name:nginx......
  • 系统架构与设计(5)- Kubernetes(K8s)
    Kubernetes,也被称为K8s或Kube,是谷歌推出的业界最受欢迎的容器管理/运维工具(容器编排器)。它是一套自动化容器管理/运维的开源平台,包括部署、调度和节点集群的扩展等。使......
  • Docker如何与外界互通(chrono《kubernetes入门实战课》笔记整理)
    Docker与外界互通的三种方式1、拷贝文件dockercp命令,可以直接在主机和容器之间互相拷贝(容器间不可以),格式和cp是一样的,就是注意要标明容器ID,例如:docker cp a.txt 062:......