CKA-2026-Gateway

9、Gateway

您必须连接到正确的主机。不这样做可能导致零分。

student@k8s-master1 $ ssh cka000000

Task

将现有 Web 应用程序从 Ingress 迁移到 Gateway API 。您必须维护 HTTPS 访问权限。注意:集群中安装了一个名为 nginxGatewayClass

首先,创建一个名为 web-gatewayGateway ,主机名为 gateway.web.k8s.local ,并保持现有名为 webIngress 资源的现有 TLS 和侦听器配置。

接下来,创建一个名为 web-routeHTTPRoute ,主机名为 gateway.web.k8s.local ,并保持现有名为webIngress 资源的现有路由规则。

最后,删除名为 web 的现有 Ingress 资源。

参考链接

https://kubernetes.io/docs/concepts/services-networking/gateway/

复制代码
步骤1
kubectl get ingress web -o yaml > web-ingress.yaml

步骤2

创建 Gateway

vim gateway.yaml

bash 复制代码
apiVersion: gateway.networking.k8s.io/v1  # 使用的 Gateway API 版本(v1 稳定版)
kind: Gateway                              # 资源类型:网关入口
metadata:
  name: web-gateway                        # Gateway 资源名称
spec:
  gatewayClassName: nginx                  # 指定使用的 Gateway 实现类(这里用 nginx 网关控制器)
  listeners:                               # 监听器列表,定义网关如何接收流量
    - name: https                          # 监听器名称(必须唯一)
      hostname: gateway.web.k8s.local      # 该监听器匹配的域名(严格匹配)
      port: 443                            # 监听的端口号
      protocol: HTTPS                      # 协议类型(HTTPS,需配置 TLS)
      tls:                                 # TLS 配置段
        mode: Terminate                    # TLS 模式:在网关侧终止 HTTPS 连接
        certificateRefs:                   # 证书引用列表
          - name: web-cert                 # 证书对应的 Secret 名称
            kind: Secret                   # 引用的资源类型(固定为 Secret)
            group: ""                      # API 组(空字符串表示核心 API 组)

步骤3创建

kubectl apply -f gateway.yaml

提示 created,表示创建成功

步骤4.创建 HTTPRoute

vim httproute.yaml

bash 复制代码
apiVersion: gateway.networking.k8s.io/v1  # Gateway API 版本(v1 稳定版)
kind: HTTPRoute                           # 资源类型:HTTP 路由规则
metadata:
  name: web-route                         # 路由规则名称
spec:
  parentRefs:                             # 父资源引用,指定该路由附加到哪个 Gateway
    - name: web-gateway                   # 引用的 Gateway 名称(与上面创建的 Gateway 对应)
  hostnames:                              # 该路由匹配的域名列表
    - "gateway.web.k8s.local"             # 完全匹配此主机名(需与 Gateway listener 的 hostname 一致)
  rules:                                  # 路由规则列表
    - matches:                            # 匹配条件(可多个)
        - path:                           # 路径匹配规则
            type: PathPrefix              # 匹配类型:前缀匹配(PathPrefix)
            value: /                      # 匹配的路径值(根路径 "/")
      backendRefs:                        # 后端服务引用列表
        - name: web                       # 后端 Service 名称(与 Ingress 中的 service name 对应)
          port: 80                        # 后端 Service 端口号(与 Ingress 中的 service port 对应)

步骤5创建

kubectl apply -f httproute.yaml

提示 created,表示创建成功

检查

kubectl get httproute

步骤6删除 web ingress

kubectl delete ingress web

相关推荐
鹤落晴春17 小时前
【K8s】Pod调度、configMaps
云原生·容器·kubernetes
张忠琳18 小时前
【runc 1.4.2】(Part 2)runc 1.4.2 超深度分析 — CLI层:main.go、命令文件、runner、信号处理、TTY
云原生·kubernetes·runc
Plastic garden1 天前
K8s知识(3) Pod亲和性,调度
云原生·容器·kubernetes
张忠琳1 天前
【client-go v0.36.1】(store Part 1)Store 超深度分析 — 模块定位、接口层次、类结构、KeyFunc体系、构造初始化
云原生·kubernetes·informer·store·client-go
JJJennie7771 天前
从苹果 2026 落地场景,看系统级 Agent 时代的隐私边界与 MAI Gateway 的企业Token治理
人工智能·gateway·apple
开发者联盟league1 天前
使用jenkins pipeline将项目打包运行在k8s上报错kubectl: Permission denied
java·kubernetes·jenkins
成为你的宁宁1 天前
【Prometheus Operator 监控 K8S集群的Calico 与 Ingress-Nginx 组件】
kubernetes·prometheus
kakawzw1 天前
微服务组件源码6——Spring Gateway
spring·gateway
sbjdhjd1 天前
04 (下) | K8S微服务实战:从 Service 到金丝雀发布
运维·微服务·云原生·kubernetes·开源·云计算·excel