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

kubernetes Gateway API-1-部署和基础配置

文章目录

  • 1 部署
  • 2 最简单的 Gateway
  • 3 基于主机名和请求头
  • 4 重定向 Redirects
    • 4.1 HTTP-to-HTTPS 重定向
    • 4.2 路径重定向
      • 4.2.1 ReplaceFullPath 替换完整路径
      • 4.2.2 ReplacePrefixMatch 替换路径前缀
  • 5 重写 Rewrites
    • 5.1 重写 主机名
    • 5.2 重写 路径
      • 5.2.1 重新完整路径
      • 5.2.1 重新部分路径(去除路径前缀)
  • 6 HTTP Header 修饰符
    • 6.1 HTTP Request Header Modifier
    • 6.2 HTTP Response Header Modifier
  • 7 HTTP流量拆分
    • 7.1 指南示例
      • 7.1.1 金丝雀流量发布
      • 7.1.2 蓝绿流量发布
      • 7.1.3 完成发布
  • 8 请求镜像

1 部署

kubectl  apply -f  https://github.com/kubernetes-sigs/gateway-api/releases/download/v1.2.0/standard-install.yaml

2 最简单的 Gateway

最简单的部署是由同一所有者一起部署的网关和路由资源。这代表了用于Ingress的类似模型。在本指南中,部署了一个网关和HTTPRoute,它们匹配所有HTTP流量,并将其定向到一个名为foo-svc的服务。
在这里插入图片描述
图片来自官方文档:https://gateway-api.sigs.k8s.io/guides/simple-gateway/

apiVersion: gateway.networking.k8s.io/v1
kind: Gateway
metadata:name: prod-web
spec:gatewayClassName: examplelisteners:- protocol: HTTPport: 80name: prod-web-gwallowedRoutes:namespaces:from: Same

3 基于主机名和请求头

HTTPRoute资源允许您匹配HTTP流量并将其定向到Kubernetes后端。本指南展示了HTTPRoute如何匹配主机、标头和路径字段上的流量,并将其转发到不同的Kubernetes服务。
下图描述了三种不同服务之间所需的流量:

  • foo.example.com/login 的流量被转发到 foo-svc

  • 请求头中带有 env:canarybar.example.com/* 流量被转发到 bar-svc-canary

  • 请求头部不带 env:canarybar.example.com/* 流量被转发到 bar-svc
    在这里插入图片描述
    图片来源-https://gateway-api.sigs.k8s.io/guides/http-routing/

为了从网关接收流量,必须使用 ParentRefs 配置 HTTPRoute 资源,ParentRefs引用它应该连接到的父网关。以下示例显示了如何配置 GatewayHTTPRoute 的组合来服务HTTP流量:

apiVersion: gateway.networking.k8s.io/v1
kind: Gateway
metadata:name: example-gateway
spec:gatewayClassName: example-gateway-classlisteners:- name: httpprotocol: HTTPport: 80
---
apiVersion: gateway.networking.k8s.io/v1
kind: HTTPRoute
metadata:name: example-route
spec:parentRefs:- name: example-gatewayhostnames:- "example.com"rules:- backendRefs:- name: example-svcport: 80

HTTPRoute可以与一组主机名匹配。在HTTPRoute中进行任何其他匹配之前,先匹配这些主机名。由于 foo.example.combar.example.com 是具有不同路由要求的独立主机,因此每个主机需要分别配置并创建自己的 HTTPRoute: foo-routebar-route

以下 foo-route 将匹配 foo.example.com 的任何流量,并应用其路由规则将流量转发到正确的后端。由于只指定了一个匹配项,因此只会转发foo.example.com/login/* 的流量。不以 /login 开头的任何其他路径的流量都不会与此路由匹配。

apiVersion: gateway.networking.k8s.io/v1
kind: HTTPRoute
metadata:name: foo-route
spec:parentRefs:- name: example-gatewayhostnames:- "foo.example.com"rules:- matches:- path:type: PathPrefixvalue: /loginbackendRefs:- name: foo-svcport: 8080

同样,bar-route HTTPRoute与 bar.example.com 的流量相匹配。此主机名的所有流量都将根据路由规则进行评估。最具体的匹配将优先,这意味着任何带有 env:canary 标头的流量都将被转发到 bar-svc-canary,如果标头丢失或不是 canary,则将被转发给 bar-svc

apiVersion: gateway.networking.k8s.io/v1
kind: HTTPRoute
metadata:name: bar-route
spec:parentRefs:- name: example-gatewayhostnames:- "bar.example.com"rules:- matches:- headers:- type: Exact   # 精确匹配name: envvalue: canarybackendRefs:- name: bar-svc-canaryport: 8080####################################- backendRefs:            # 这个相当于默认的后端服务了- name: bar-svcport: 8080

4 重定向 Redirects

重定向是代理端返回给客户端修改后的,新的请求地址,让客户端用这个新的请求地址重新发送请求给代理端。

重定向向客户端返回HTTP 3XX响应,指示其检索其他资源。RequestRedirect规则筛选器指示网关对与筛选的HTTPRoute规则匹配的请求发出重定向响应。

重定向过滤器可以独立替换各种URL组件。例如,要发出从HTTP到HTTPS的永久重定向(301),请配置
requestRedirect.statusCode=301requestRedirect.schem="HTTPS"

apiVersion
http://www.lryc.cn/news/512651.html

相关文章:

  • likeAdmin架构部署(踩坑后的部署流程
  • 【一款超好用的开源笔记Logseq本地Docker部署与远程使用指南】
  • 浅谈torch.utils.data.TensorDataset和torch.utils.data.DataLoader
  • gesp(C++二级)(16)洛谷:B4037:[GESP202409 二级] 小杨的 N 字矩阵
  • FFmpeg:详细安装教程与环境配置指南
  • 《特征工程:自动化浪潮下的坚守与变革》
  • webrtc 源码阅读 make_ref_counted模板函数用法
  • 【深度学习基础之多尺度特征提取】特征金字塔(Feature Pyramid)是如何在深度学习网络中提取多尺度特征的?附代码
  • 【Docker】离线安装 Docker
  • 三大行业案例:AI大模型+Agent实践全景
  • Dockerfile基础指令
  • 12.30 linux 文件操作,磁盘分区挂载
  • [图形渲染]【Unity Shader】【游戏开发】 Shader数学基础17-法线变换基础与应用
  • YOLOv9-0.1部分代码阅读笔记-train.py
  • 等保测评和密评的相关性和区别
  • 活动预告 |【Part2】 Azure 在线技术公开课:迁移和保护 Windows Server 和 SQL Server 工作负载
  • 大语言模型(LLM)一般训练过程
  • 单片机的基本组成
  • GO性能优化的一些记录:trace工具的使用
  • dede-cms关于shell漏洞
  • NAT 技术如何解决 IP 地址短缺问题?
  • 使用 IDE生成 Java Doc
  • 通过无障碍服务(AccessibilityService)实现Android设备全局水印显示
  • flask后端开发(2):URL与视图
  • 力扣-数据结构-7【算法学习day.78】
  • 【潜意识Java】Java中深入解析抽象类与接口的差异的完整笔记总结【保姆级详细教程】
  • 【Flink运行时架构】系统构架
  • uni-ui样式修改
  • 【linux板卡】lubancat通过vnc远程访问桌面
  • SQLiteDataBase数据库