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

相关推荐
安易算力6 小时前
PUE优化工程实践:从1.5到1.2的制冷架构与气流组织改造路径
网络·python·容器·架构·kubernetes
毅炼13 小时前
不写多语言 SDK,怎么让 Python、Go、Node 服务接入注册中心?
java·后端·系统架构·gateway
kuroomi1 天前
Ingress-Nginx与kubernetes 网络
linux·运维·网络·kubernetes
程序猿阿越1 天前
containerd如何创建Pod
后端·kubernetes·源码阅读
安易算力1 天前
昇腾生态开发深度实践:CANN算子库架构解析与MindSpore模型优化
网络·容器·架构·kubernetes·vllm
九皇叔叔2 天前
Kubernetes 核心概念:集群架构、核心组件与资源对象
docker·容器·kubernetes·k8s
weixin_420284142 天前
Kubernetes 开发自定义CRD资源
云原生·kubernetes·kubelet
极小狐2 天前
CI 算力饥渴症:Runner 弹性伸缩的架构权衡与落地
ci/cd·kubernetes·devops·弹性伸缩
Thneonl3 天前
SLO 燃烧率公式漏了个 1-,告警要全停才触发
安全·kubernetes
羑悻的小杀马特3 天前
从写 YAML 到集群自愈:KES-Operator 把 KES 集群接进 Kubernetes 原生体系
运维·数据库·容器·kubernetes