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

kubernetes Gateway API-部署和基础配置

文章目录

  • 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.kler.cn/a/453444.html

相关文章:

  • WebRTC服务质量(11)- Pacer机制(03) IntervalBudget
  • Windows下C++使用SQLite
  • EdgeX Core Service 核心服务之 Core Command 命令
  • 在 CentOS 8 系统上安装 Jenkins 的全过程
  • linux中 mysql备份
  • C语言结构体位定义(位段)的实际作用深入分析
  • 【gulp】gulp 的基本使用
  • 从数据仓库到数据中台再到数据飞轮:电信行业的数据技术进化史
  • 质数生成函数、质数判断备份
  • <论文>语言模型可以进行无监督的多任务学习?
  • 从源码到应用:在线问诊系统与医疗陪诊APP的开发全过程详解
  • 12.26 学习卷积神经网路(CNN)
  • npm淘宝镜像
  • Dilateformer实战:使用Dilateformer实现图像分类任务(二)
  • BLE core 内容整理解释
  • FFMPEG结构体分析
  • Linux高并发服务器开发 第六天(rwx 对于目录和文件的区别 gcc编译器 动态库静态库)
  • yolov4算法及其改进
  • C#异步1
  • 蚂蚁集团 CTO 线大规模调整、多个 AI 业务部门被合并
  • 工业大数据分析算法实战-day16
  • 天池工业蒸汽量预测教程
  • FTT变换Matlab代码解释及应用场景
  • go window安装protoc protoc生成protobuf文件
  • vue关闭eslint校验及开启debugger
  • 【jenkins插件】