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
targetRefs 指向错误资源,策略不生效。kubectl get gatewayclass — 查看网关类kubectl get gateway,httproute -A — 查看网关和路由kubectl get trafficpolicy -A — 查看策略kubectl logs -n kgateway-system deploy/kgateway — 控制面日志curl --resolve — 验证路由