当前位置: 首页 > news >正文

Gateway API:Ingress 的下一代替代方案

文章目录

    • 前言
      • 两者之间相比
    • 部署
      • 环境
      • 操作步骤
        • 部署
          • 安装 Gateway API CRD + Envoy Gateway
          • 安装metallb
          • 配 MetalLB 的 IP 池
          • 安装GatewayClass + Gateway
        • 示例
          • 创建httproute
          • 添加dns解析
          • 结果展示

前言

因为ingress在今年3 月就已经停止维护,后面不再发布新版本、修复漏洞或更新安全补丁。所以来写一下k8s官方推荐的ingress的下一代替代方案Gateway api

两者之间相比

对比项IngressGateway API
定位早期入口标准,已停止功能演进官方钦定的下一代标准
路由能力仅 host + path原生支持 header/query 匹配、流量权重、重定向、重写
高级功能依赖厂商 annotation,不可移植标准字段实现,跨实现通用
协议支持仅 HTTP/HTTPSHTTP、gRPC、TCP、TLS 多协议
权限模型单一资源,运维/开发职责混杂GatewayClass / Gateway / HTTPRoute 分层,角色分离,RBAC 更精细
灰度发布需 annotation 或多个 Ingress 拼凑原生支持按权重分流
跨 namespace本身不支持原生支持跨 namespace 路由
生态趋势Ingress NGINX 2026 年 3 月退役官方推荐迁移方向,服务网格也在统一

部署

环境

Ip主机名cpu内存
192.168.10.12master014c6G
192.168.10.13node14c6G
192.168.10.14node24c6G
192.168.10.100nfs2c2g
组件版本
UbuntuUbuntu 26.04 server
containerdv2 2.2.2
Kubernetesv1.36.1
victoria-metrics-k8s-stackv1.146.0

操作步骤

部署
安装 Gateway API CRD + Envoy Gateway
kubectl apply--server-side-f https://github.com/envoyproxy/gateway/releases/download/v1.8.2/install.yaml# 等待几分钟kubectl get crd|grep gateway.networking

安装metallb
kubectl apply-f https://raw.githubusercontent.com/metallb/metallb/v0.16.1/config/manifests/metallb-native.yaml
配 MetalLB 的 IP 池
cat<<EOF|kubectl apply-f-apiVersion: metallb.io/v1beta1 kind: IPAddressPool metadata: name: default-pool namespace: metallb-system spec: addresses:-192.168.10.200-192.168.10.250---apiVersion: metallb.io/v1beta1 kind: L2Advertisement metadata: name: default namespace: metallb-system EOF
安装GatewayClass + Gateway
cat<<EOF|kubectl apply-f-apiVersion: gateway.networking.k8s.io/v1 kind: GatewayClass metadata: name: envoy spec: controllerName: gateway.envoyproxy.io/gatewayclass-controller---apiVersion: gateway.networking.k8s.io/v1 kind: Gateway metadata: name: main-gw namespace: monitoring spec: gatewayClassName: envoy listeners:-name: http protocol: HTTP port: 80 allowedRoutes: namespaces:from: All# 所有命名空间能挂路由EOF kubectl get gateway-n monitoring

PROGRAMMED如果为false是因为pod还没有running

示例

以本地部署的victoria-metrics-k8s-stack举例
链接: victoria-metrics-k8s-stack部署

victoria-metrics-k8s-stack里需要暴露的是 5 个:grafana(看板)、vmselect(vmui 查询)、vmalert(规则状态)、vmalertmanager(告警管理)、vmagent(抓取目标状态)。其他都是纯接口,不用暴露。

创建httproute
cat<<EOF|kubectl apply-f-apiVersion: gateway.networking.k8s.io/v1 kind: HTTPRoute metadata: name: grafana# httproute名称namespace: monitoring# httproute命名空间spec: parentRefs:-name: main-gw# gateway名称hostnames:["grafana.monitoring.sit.internal"]# 域名rules:-backendRefs:-name: vmks-grafana#svc名称port: 80#svc端口---apiVersion: gateway.networking.k8s.io/v1 kind: HTTPRoute metadata: name: vmui namespace: monitoring spec: parentRefs:-name: main-gw hostnames:["vmui.monitoring.sit.internal"]rules:-backendRefs:-name: vmselect-vmks-victoria-metrics-k8s-stack port: 8481---apiVersion: gateway.networking.k8s.io/v1 kind: HTTPRoute metadata: name: vmalert namespace: monitoring spec: parentRefs:-name: main-gw hostnames:["vmalert.monitoring.sit.internal"]rules:-backendRefs:-name: vmalert-vmks-victoria-metrics-k8s-stack port: 8080---apiVersion: gateway.networking.k8s.io/v1 kind: HTTPRoute metadata: name: alertmanager namespace: monitoring spec: parentRefs:-name: main-gw hostnames:["alertmanager.monitoring.sit.internal"]rules:-backendRefs:-name: vmalertmanager-vmks-victoria-metrics-k8s-stack port: 9093---apiVersion: gateway.networking.k8s.io/v1 kind: HTTPRoute metadata: name: vmagent namespace: monitoring spec: parentRefs:-name: main-gw hostnames:["vmagent.monitoring.sit.internal"]rules:-backendRefs:-name: vmagent-vmks-victoria-metrics-k8s-stack port: 8429 EOF

可以通过获取httproute来管理域名

kubectl get httproute-A

添加dns解析

win11 host路径

C:\Windows\System32\drivers\etc\hosts

在最后添加

192.168.10.200 grafana.monitoring.sit.internal vmui.monitoring.sit.internal vmalert.monitoring.sit.internal alertmanager.monitoring.sit.internal vmagent.monitoring.sit.internal

注:通过本地dns解析时需要把代理关闭,不然会访问不到

结果展示

grafana.monitoring.sit.internal

注;vmui有后缀
vmui.monitoring.sit.internal/select/0/vmui/

vmalert.monitoring.sit.internal

alertmanager.monitoring.sit.internal

vmagent.monitoring.sit.internal

http://www.jsqmd.com/news/1125694/

相关文章:

  • UE4 SceneCaptureComponent2D 实战:3步实现UI内3D模型360°预览(附蓝图)
  • 教育学论文降AI工具免费推荐:2026年教育学毕业论文AIGC超标4.8元亲测99.26%知网完整方案
  • CodaYun 一站式浏览器工作台:开发者 设计师专属效率解决方案
  • C++中的String的常用函数用法
  • 【算法从零到千】【32-41】位运算(详细讲解+题目运用)
  • Allegro 生产文件导出:Gerber 274X 与钻孔文件 5 步标准化检查清单
  • 羽球联盟 HarmonyOS NEXT 实战系列 (03/20):四Tab首页容器与资讯首屏搭建
  • Agentic AI:换个角度,从问题拆解到交付验证
  • 史上最简单!sirpdboy固件一键搞定软路由刷机、调试、扩容,彻底告别麻烦!
  • 多模态大模型架构的收敛与分化:从Transformer到模态定制
  • 全局光照/阴影的几个常见问题
  • Linux指令实战学习之内存泄漏
  • 堪萨斯大学新研究:揭示读唇出错原因,有望提升读唇训练与AI转录能力
  • 小模型回到电脑本地,数据安全就自动解决了吗?
  • 1D-CNN 轴承故障诊断实战:CWRU 数据集 6 类识别准确率达 99.2%
  • 小米寥寥几家车企设计汽车顶棚
  • 数智驱动 全域增长:劲捷KINGJOY的跨界突围与全域增长之路
  • 一颗Codec芯片的生存法则:为什么AI语音产品需要TP9311?
  • Agent 需要拦截模型调用?用 Middleware 给它加个“拦截器“!
  • 图像哈希算法(aHash/dHash/pHash)Python实战:3种方法对比与汉明距离阈值调优指南
  • 2026真太阳时八字排盘工具怎么选:看出生地校正、时区口径和隐私边界
  • HLS Downloader:浏览器里直接抓取和下载直播流
  • QT 5升级到 Qt 6 使用 Clazy 检查将 C++ 应用程序移植到 Qt 6
  • 生命涌现的小龙虾技能之【Cat Face Recognition Skill | 猫脸识别技能】简介
  • 每个按键都能单独屏蔽!这款免费小工具,治好了我的误触强迫症
  • 客户拜访录制了需求沟通短视频,2026教你搞定短视频文字提取难题
  • 速卖通商品信息自动翻译实现方案
  • 基于YOLO与边缘计算的垃圾自动分类系统:从数据到部署全流程实践
  • 新人接手老仓库最怕没人带:用 Codex / Claude Code 先画一张代码地图
  • 2026智能门锁避坑白皮书:从“参数内卷”到“6条标准”,不花冤枉钱的选购清单