CKA-2026-Gateway

9、Gateway

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

student@k8s-master1 $ ssh cka000000

Task

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

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

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

最后,删除名为 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

相关推荐
shangjian00714 小时前
K8S学习-基础组件
学习·容器·kubernetes
wzq11_66617 小时前
Kubernetes集群——工作负载
云原生·容器·kubernetes
艾伦_耶格宇2 天前
【kubernetes - 1.28版本】-11 K8S核心组件
java·容器·kubernetes
月落汀兰2 天前
拒绝配置写死镜像!K8s 存储卷与配置管理,PV/PVC、ConfigMap、Secret 实战避坑指南
运维·kubernetes
艾伦_耶格宇2 天前
【kubernetes - 1.28版本】-10 K8S命名空间
云原生·容器·kubernetes
Raas1002 天前
AI网关部署方案?从部署到上线全流程
java·开发语言·人工智能·gateway·ai网关·企业级ai网关·企业级ai产品
螺蛳粉 螺蛳粉3 天前
第 02 篇:镜像分层与 containerd 2.x 实战:SystemdCgroup 与 pause 镜像配置踩坑(底座认知 02)
docker·云原生·容器·kubernetes·etcd·containerd·kube-apiserver
Raas1003 天前
AI网关怎么部署?MAI Gateway部署实操教程
人工智能·开源·gateway·mai gateway·企业级ai产品
小白的码BUG之路3 天前
K8s -- 搭建过程中经常遇到的问题
云原生·容器·kubernetes
螺蛳粉 螺蛳粉3 天前
第 03 篇:为什么 K8s 的最小调度单元是 Pod 而不是容器:pause 容器与边车模式(底座认知 03)
docker·云原生·容器·kubernetes·etcd·运维排障·kube-apiserver