kong/gateway-operatorKong Gateway Operator 是一个 Kubernetes Operator,用于在 Kubernetes 集群中自动化部署、配置、管理和监控 Kong Gateway 实例的生命周期。本 Docker 镜像是该 Operator 的容器化分发形式,旨在简化 Kong Gateway 在 Kubernetes 环境中的运维流程,降低手动操作成本,提升部署一致性和可靠性。
KongGateway、KongPlugin、KongIngress 等)定义期望状态,Operator 自动协调实际状态。cert-manager(用于自动生成 Operator 所需的 TLS 证书,版本 ≥ 1.3.0)。Kong 官方提供 Helm Chart 简化部署流程:
bash# 添加 Kong Helm 仓库 helm repo add kong [***] helm repo update # 安装 Kong Gateway Operator(指定命名空间,如 kong-system) helm install kong-gateway-operator kong/gateway-operator \ --namespace kong-system \ --create-namespace \ --version 0.14.0 # 替换为最新版本
直接应用官方发布的 YAML 清单:
bash# 部署 CRD kubectl apply -f [***] kubectl apply -f [***] # ... 其他 CRD(完整列表见官方文档) # 部署 Operator kubectl apply -f [***]
Operator 通过以下 CRD 管理 Kong Gateway 配置:
| CRD 名称 | 用途 | 示例配置 |
|---|---|---|
KongGateway | 定义 Kong Gateway 实例的部署规格 | 指定副本数、镜像版本、资源限制、服务类型(ClusterIP/NodePort/Load***)等。 |
KongPlugin | 定义 Kong 插件配置(如限流、认证等) | 指定插件类型(如 rate-limiting)、配置参数(如 minute: 60)、作用范围(全局/路由/服务)。 |
KongIngress | 扩展 Kubernetes Ingress 资源 | 补充路由规则、负载均衡策略、健康检查配置等。 |
KongGateway 配置示例yamlapiVersion: gateway-operator.konghq.com/v1beta1 kind: KongGateway metadata: name: kong-gateway namespace: kong spec: replicas: 3 # 3 副本确保高可用 image: kong/kong-gateway:3.5 # 指定 Kong Gateway 镜像版本 resources: requests: cpu: 100m memory: 256Mi limits: cpu: 1000m memory: 1Gi service: type: Load*** # 暴露为 Load*** 服务 env: - name: KONG_LOG_LEVEL value: "info" # 日志级别 - name: KONG_PROXY_ACCESS_LOG value: "/dev/stdout" # 访问日志输出到标准输出
Operator 自身支持通过环境变量调整行为,常见配置如下:
| 环境变量名 | 描述 | 默认值 |
|---|---|---|
WATCH_NAMESPACE | 限制 Operator 监控的命名空间(逗号分隔) | 空(监控所有命名空间) |
LOG_LEVEL | 日志级别(debug/info/warn/error) | info |
KUBERNETES_SERVICE_HOST | Kubernetes API Server 地址 | 自动从集群环境变量获取 |
KUBERNETES_SERVICE_PORT | Kubernetes API Server 端口 | 443 |
bash# 1. 安装 cert-manager(Operator 依赖) kubectl apply -f [***] # 2. 等待 cert-manager 就绪 kubectl wait --for=condition=Available deployment --all -n cert-manager --timeout=300s # 3. 添加 Kong Helm 仓库并更新 helm repo add kong [***] helm repo update # 4. 安装 Kong Gateway Operator helm install kong-gateway-operator kong/gateway-operator \ --namespace kong-system \ --create-namespace \ --set watchNamespace=kong # 仅监控 kong 命名空间 # 5. 部署 KongGateway 实例 kubectl apply -f - <<EOF apiVersion: gateway-operator.konghq.com/v1beta1 kind: KongGateway metadata: name: kong-gateway namespace: kong spec: replicas: 2 image: kong/kong-gateway:3.5 service: type: NodePort EOF # 6. 验证部署 kubectl get pods -n kong # 查看 Kong Gateway 实例 pod kubectl get svc -n kong # 查看 Gateway 服务地址
部署完成后,可通过创建 KongPlugin 验证配置是否自动生效:
yaml# 创建一个限流插件 apiVersion: gateway-operator.konghq.com/v1beta1 kind: KongPlugin metadata: name: rate-limit-plugin namespace: kong spec: pluginName: rate-limiting config: minute: 10 # 每分钟允许 10 次请求 policy: local
将插件关联到 Ingress 路由:
yamlapiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: demo-ingress namespace: kong annotations: konghq.com/plugins: rate-limit-plugin # 关联上述限流插件 spec: ingressClassName: kong # 使用 Kong Ingress Class rules: - http: paths: - path: /demo pathType: Prefix backend: service: name: demo-service port: number: 80
KongGateway 的资源限制(CPU/内存),避免性能瓶颈。
manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务