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

news2025/1/4 3:08:45

文章目录

  • 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: example
  listeners:
  - protocol: HTTP
    port: 80
    name: prod-web-gw
    allowedRoutes:
      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-class
  listeners:
  - name: http
    protocol: HTTP
    port: 80
---
apiVersion: gateway.networking.k8s.io/v1
kind: HTTPRoute
metadata:
  name: example-route
spec:
  parentRefs:
  - name: example-gateway
  hostnames:
  - "example.com"
  rules:
  - backendRefs:
    - name: example-svc
      port: 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-gateway
  hostnames:
  - "foo.example.com"
  rules:
  - matches:
    - path:
        type: PathPrefix
        value: /login
    backendRefs:
    - name: foo-svc
      port: 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-gateway
  hostnames:
  - "bar.example.com"
  rules:
  - matches:
    - headers:
      - type: Exact   # 精确匹配
        name: env
        value: canary
    backendRefs:
    - name: bar-svc-canary
      port: 8080
 ####################################
  - backendRefs:            # 这个相当于默认的后端服务了
    - name: bar-svc
      port: 8080

4 重定向 Redirects

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

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

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

apiVersion

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2268884.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

VUE echarts 教程二 折线堆叠图

VUE echarts 教程一 折线图 import * as echarts from echarts;var chartDom document.getElementById(main); var myChart echarts.init(chartDom); var option {title: {text: Stacked Line},tooltip: {trigger: axis},legend: {data: [Email, Union Ads, Video Ads, Dir…

linux安装nginxs报错:openssl not found

系统: linux 版本:centOS7 nginx版本:nginx-1.20.2 linux安装nginx时 执行下面命令时报错: ./configure --with-http_stub_status_module --with-http_ssl_module --prefix/usr/local/nginxchecking for OpenSSL library ... not …

项目基本配置

总说 本节主要记录修改配置文件、连接mysql数据库、git连接 一、配置文件的修改 1.1 配置pom.xml 由于我们要连接mysql数据库,需要在pom.xml中添加相关依赖 这里给出一个网站,可以找到各种依赖Maven Repository: Search/Browse/Explore 添加一个my…

一个最简单的ios程序(object_c)的编写

前言 如何在苹果系统MacOS创建一个简单的ios(iphone)程序,貌似非常的简单。但是,作为习惯了Windows开发的程序员来说,有时候还觉得有点麻烦,至少开始有点很不习惯。 本博文试着把这个过程展现一下&#xff…

Learning Multi-Scale Photo Exposure Correction

Abstract 用错误的曝光捕捉照片仍然是相机成像的主要错误来源。曝光问题可分为以下两类:(i)曝光过度,即相机曝光时间过长,导致图像区域明亮和褪色;(ii)曝光不足,即曝光时间过短,导致图像区域变暗。曝光不足和曝光过度都会大大降低…

宝塔-firefox(Docker应用)-构建自己的Web浏览器

安装基础软件 宝塔中安装firefox(Docker应用) 。宝塔中需要先安装docker及docker-composefirefox配置安装 点击firefox应用,选择【安装配置】点击右边绿色按钮,进行安装,这一步等待docker-compose根据你的配置初始化docker应用 等待安装 …

【深度学习】时间序列表示方法

自然界除了2D的图片数据之外,还有语音、文字,这些数据都有时间的先后顺序的。对于2D的图像的数据,可以用RGB值来表示像素的色彩度。语音可以用信号幅度值来表示,而Pytorch没有自带String支持,在表示文字之前需要进行Em…

使用 Navicat 官方免费版来实现从 DAT 文件填充 MySQL 8 表

在异构存储库之间迁移数据(即源数据库和目标数据库来自不同供应商的不同数据库管理系统)会遇到一些挑战。在某些情况下,可以同时连接两个数据库。但有时根本无法实现。面对这样的困境,数据库从业者别无选择,只能从转储…

【CSS in Depth 2 精译_093】16.2:CSS 变换在动效中的应用(上)—— 图标的放大和过渡效果的设置

当前内容所在位置(可进入专栏查看其他译好的章节内容) 第五部分 添加动效 ✔️【第 16 章 变换】 ✔️ 16.1 旋转、平移、缩放与倾斜 16.1.1 变换原点的更改16.1.2 多重变换的设置16.1.3 单个变换属性的设置 16.2 变换在动效中的应用 ✔️ 16.2.1 放大图…

Linux 信号集与信号掩码

目录 一、引言 二、信号集是什么 三、信号集关键函数 1.信号集的创建与初始化 2.信号的添加与删除 3.信号集的阻塞与解除阻塞 四、信号集实际应用场景 五、信号掩码的作用 六、信号掩码相关函数 1.sigprocmask 函数 2.sigemptyset 和 sigfillset 函数 七、信号掩码注…

CPT203 Software Engineering 软件工程 Pt.5 软件测试(中英双语)

文章目录 8. 软件测试8.1 Testing(测试)8.1.1 A note of testing under the V & A framework8.1.2 The Basics8.1.3 The Goals8.1.4 The Stages 8.2 Developing testing(开发测试)8.2.1 Unit testing(单元测试&…

微信小程序中遇到过的问题

记录微信小程序中遇到的问题(持续更新ing) 问题描述:1. WXML中无法直接调用JavaScript方法。2. css中无法直接引用背景图片。3. 关于右上角胶囊按钮。4. 数据绑定问题。5. 事件处理问题。6. 关于movable-view组件的问题7. 关于设置宽度后设置…

【C++】B2084 质因数分解

博客主页: [小ᶻ☡꙳ᵃⁱᵍᶜ꙳] 本文专栏: C 文章目录 💯前言💯 题目描述:质因数分解输入格式输出格式输入输出样例: 💯 问题解析1. 质数的定义2. 题目特点3. 约束范围4. 问题分解 💯 解题…

Unity中列表List使用出类似字典Dictionary的感觉

首先为什么会有这个标题? 因为字典很好用,只需要键就能拿到值,这种感觉是真的爽,新手最喜欢用了,遇事不决就字典,但是也有不好的地方,字典的内存开销比列表List要大,遍历也是List占…

分布式项目___某污水处理项目

一.分布式项目___污水处理项目 项目地址:https://gitee.com/yanyigege/collaborative-water-springboot.git ​ 1.项目背景 总公司在全国各地有处理污水的项目部,各项目部处理自己的污水,总部需要监控各地分项目部每天处理污水的原料用量,掌握各分部的污水处理情况 ​ 2.功…

WebRTC:实现浏览器与移动应用的实时通信

1.技术简介 (Web Real-Time)是一种开放式实时通信技术,旨在使浏览器和移动应用程序通过简单的API即可实现实时音频、视频和数据传输,而无需安装插件或额外软件。它支持网络应用中的点对点通信,例如视频聊天、语音通话…

小程序基础 —— 07 创建小程序项目

创建小程序项目 打开微信开发者工具,左侧选择小程序,点击 号即可新建项目: 在弹出的新页面,填写项目信息(后端服务选择不使用云服务,开发模式为小程序,模板选择为不使用模板)&…

数据结构之线性表之链表(附加一个考研题)

链表的定义 链表的结构: 单链表-初始化 代码实现: 单链表-头插法 代码实现: 这里我给大家分析一下 我们每创建一个新的节点都要插在头节点的后面,我们一定要注意顺序 一定要先让新节点指向头节点指向的下一个节点,…

RocketMQ(二)RocketMQ实战

文章目录 一、RocketMQ实战1.1 批量消息发送1.2 消息发送队列自选择1.3 事务消息1.4 SpringCloud集成RocketMQ 二、最佳实践2.1 生产者2.1.1 发送消息注意事项2.1.2 消息发送失败处理方式 2.2 消费者2.2.1 消费过程幂等2.2.2 消费打印日志 2.3 Broker 三、相关问题3.1 为什么要…

Vue router router-link router-view keep-alive

Vue router router-link router-view keep-alive keep-alive 1. /:id 2 ?id