一键导入
gateway-api
Kubernetes Gateway API 配置技能。使用此技能來: - 安裝 Envoy Gateway - 配置 Gateway 和 HTTPRoute - 設定 TLS/HTTPS - 配置流量路由、權重分流、Header 匹配 替代已退役的 Ingress-NGINX。
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Kubernetes Gateway API 配置技能。使用此技能來: - 安裝 Envoy Gateway - 配置 Gateway 和 HTTPRoute - 設定 TLS/HTTPS - 配置流量路由、權重分流、Header 匹配 替代已退役的 Ingress-NGINX。
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
Implement WCAG 2.2 compliant interfaces with mobile accessibility, inclusive design patterns, and assistive technology support. Use when auditing accessibility, implementing ARIA patterns, building for screen readers, or ensuring inclusive user experiences.
Master REST and GraphQL API design principles to build intuitive, scalable, and maintainable APIs that delight developers. Use when designing new APIs, reviewing API specifications, or establishing API design standards.
Implement proven backend architecture patterns including Clean Architecture, Hexagonal Architecture, and Domain-Driven Design. Use when architecting complex backend systems or refactoring existing applications for better maintainability.
Optimize cloud costs through resource rightsizing, tagging strategies, reserved instances, and spending analysis. Use when reducing cloud expenses, analyzing infrastructure costs, or implementing cost governance policies.
Build scalable design systems with design tokens, theming infrastructure, and component architecture patterns. Use when creating design tokens, implementing theme switching, building component libraries, or establishing design system foundations.
Design and implement event stores for event-sourced systems. Use when building event sourcing infrastructure, choosing event store technologies, or implementing event persistence patterns.
| name | gateway-api |
| description | Kubernetes Gateway API 配置技能。使用此技能來: - 安裝 Envoy Gateway - 配置 Gateway 和 HTTPRoute - 設定 TLS/HTTPS - 配置流量路由、權重分流、Header 匹配 替代已退役的 Ingress-NGINX。 |
| triggers | ["gateway api","envoy gateway","httproute","ingress 替代","流量路由","tls 配置"] |
Ingress-NGINX 將於 2026 年 3 月進入 kubernetes-retired:
- 不再發布新版本
- 不再修復安全漏洞
- 官方推薦遷移至 Gateway API
Gateway API 優勢:
- Kubernetes 原生標準
- 更強大的路由功能
- 多種實作可選 (Envoy, Istio, Traefik)
# 使用 Helm 安裝
helm install eg oci://docker.io/envoyproxy/gateway-helm \
--version v1.6.3 \
-n envoy-gateway-system \
--create-namespace
# 等待就緒
kubectl wait --timeout=5m -n envoy-gateway-system \
deployment/envoy-gateway --for=condition=Available
# 驗證安裝
kubectl get pods -n envoy-gateway-system
kubectl get gatewayclass
apiVersion: gateway.networking.k8s.io/v1
kind: GatewayClass
metadata:
name: envoy
spec:
controllerName: gateway.envoyproxy.io/gatewayclass-controller
apiVersion: gateway.networking.k8s.io/v1
kind: Gateway
metadata:
name: main-gateway
namespace: default
spec:
gatewayClassName: envoy
listeners:
- name: http
port: 80
protocol: HTTP
allowedRoutes:
namespaces:
from: All
- name: https
port: 443
protocol: HTTPS
tls:
mode: Terminate
certificateRefs:
- name: tls-secret
allowedRoutes:
namespaces:
from: All
apiVersion: gateway.networking.k8s.io/v1
kind: HTTPRoute
metadata:
name: app-route
namespace: default
spec:
parentRefs:
- name: main-gateway
hostnames:
- "app.example.com"
rules:
- matches:
- path:
type: PathPrefix
value: /
backendRefs:
- name: app-service
port: 80
rules:
- matches:
- path:
type: Exact
value: /api/v1/users
- path:
type: PathPrefix
value: /api/v1/
- path:
type: RegularExpression
value: /api/v[0-9]+/.*
rules:
- matches:
- headers:
- name: X-Canary
value: "true"
backendRefs:
- name: canary-service
port: 80
rules:
- matches:
- path:
type: PathPrefix
value: /api
backendRefs:
- name: api-v1
port: 8080
weight: 90
- name: api-v2
port: 8080
weight: 10
rules:
- matches:
- path:
type: PathPrefix
value: /old-api
filters:
- type: URLRewrite
urlRewrite:
path:
type: ReplacePrefixMatch
replacePrefixMatch: /new-api
backendRefs:
- name: api-service
port: 80
# 自簽憑證 (開發用)
openssl req -x509 -nodes -days 365 -newkey rsa:2048 \
-keyout tls.key -out tls.crt \
-subj "/CN=*.example.com"
kubectl create secret tls tls-secret \
--cert=tls.crt --key=tls.key
apiVersion: gateway.networking.k8s.io/v1
kind: Gateway
metadata:
name: https-gateway
spec:
gatewayClassName: envoy
listeners:
- name: https
port: 443
protocol: HTTPS
hostname: "*.example.com"
tls:
mode: Terminate
certificateRefs:
- name: tls-secret
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: my-ingress
spec:
rules:
- host: app.example.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: my-service
port:
number: 80
apiVersion: gateway.networking.k8s.io/v1
kind: HTTPRoute
metadata:
name: my-route
spec:
parentRefs:
- name: main-gateway
hostnames:
- "app.example.com"
rules:
- matches:
- path:
type: PathPrefix
value: /
backendRefs:
- name: my-service
port: 80
# 檢查 Gateway 狀態
kubectl get gateways -A
kubectl describe gateway main-gateway
# 檢查 HTTPRoute 狀態
kubectl get httproutes -A
kubectl describe httproute app-route
# 檢查 Envoy 代理日誌
kubectl logs -n envoy-gateway-system -l gateway.envoyproxy.io/owning-gateway-name=main-gateway
# 取得 Gateway IP
kubectl get gateway main-gateway -o jsonpath='{.status.addresses[0].value}'
需要 LoadBalancer 實作,如 MetalLB:
helm install metallb metallb/metallb -n metallb-system --create-namespace
# 檢查 parentRefs 是否正確
kubectl get httproute -o yaml | grep -A5 parentRefs
# 檢查 Gateway 是否接受此路由
kubectl get gateway -o yaml | grep -A10 allowedRoutes