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

相关推荐
运维开发故事4 天前
基于 Arthas 的多集群在线诊断系统设计与实现
kubernetes
Patrick_Wilson6 天前
从「改个端口」到 502:Next.js on k8s 的容器端口、Service 映射与 env 覆盖
docker·kubernetes·next.js
探索云原生6 天前
K8s 1.36 这个 GA 特性,把 initContainer 拉模型的 hack 干掉了
ai·云原生·kubernetes
Java之美7 天前
一次k8s升级引发的DevicePlugin注册失败
云原生·kubernetes
java_cj14 天前
深入kube-apiserver认证机制:从Bearer Token到mTLS的完整认证链解析
linux·运维·服务器·云原生·容器·kubernetes
qq_4523962314 天前
第十三篇:《K8s 安全基础:RBAC、ServiceAccount、Pod Security》
java·安全·kubernetes
睡不醒男孩03082314 天前
云原生运维实战:高并发架构下的云原生可观测性、韧性降级与自动化干预体系
数据库·kubernetes·高并发·prometheus·devops·sre·缓存调优
qq_4523962314 天前
第十四篇:《K8s 网络模型与 CNI 插件(Calico、Flannel、Cilium)》
网络·kubernetes·php
Hadoop_Liang14 天前
Kubernetes 应用 HTTPS 安全访问配置实践
https·kubernetes