kgateway

kgateway 云原生网关

补充说明

kgateway 是 CNCF 沙箱项目,基于 Envoy 和 Gateway API 提供 Kubernetes 入口网关、流量管理和策略扩展。它支持 HTTP/HTTPS、gRPC、TCP、TLS、重写、超时、重试、限流和 Wasm 插件。

核心资源:GatewayClass、Gateway、HTTPRoute、GRPCRoute、Backend、HTTPListenerPolicy 和 TrafficPolicy。

语法

安装:

helm install kgateway oci://cr.kgateway.dev/kgateway-dev/charts/kgateway \
  --version v2.4.3 \
  --namespace kgateway-system --create-namespace
kubectl get gatewayclass

创建 Gateway:

kubectl apply -f - <<'EOF'
apiVersion: gateway.networking.k8s.io/v1
kind: Gateway
metadata:
  name: public
  namespace: demo
spec:
  gatewayClassName: kgateway
  listeners:
  - name: http
    protocol: HTTP
    port: 80
  - name: https
    protocol: HTTPS
    port: 443
    tls:
      mode: Terminate
      certificateRefs:
      - name: demo-tls
EOF

创建 HTTPRoute:

kubectl apply -f - <<'EOF'
apiVersion: gateway.networking.k8s.io/v1
kind: HTTPRoute
metadata:
  name: demo
  namespace: demo
spec:
  parentRefs:
  - name: public
  hostnames:
  - demo.example.com
  rules:
  - matches:
    - path: {type: PathPrefix, value: /}
    backendRefs:
    - name: web
      port: 80
EOF

配置超时和重试:

kubectl apply -f - <<'EOF'
apiVersion: gateway.kgateway.dev/v1alpha1
kind: TrafficPolicy
metadata:
  name: demo-policy
  namespace: demo
spec:
  targetRefs:
  - group: gateway.networking.k8s.io
    kind: HTTPRoute
    name: demo
  timeouts:
    request: 10s
  retry:
    attempts: 3
    perTryTimeout: 2s
EOF

查看状态:

kubectl get gateway,httproute -n demo
kubectl get trafficpolicy -n demo
kubectl -n kgateway-system logs deploy/kgateway -f

注意

相关命令

参考链接