You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

同一Kubernetes集群部署两个独立KongHQ实例的解决方案咨询

多独立Kong实例部署调整方案

核心问题原因

官方提供的默认部署清单包含集群作用域资源,这类资源不归属任何Namespace,仅修改部署时的Namespace参数不会影响这类资源的创建逻辑,重复部署时会出现同名资源冲突,导致部署失败。涉及的集群级资源通常包括:

  • CustomResourceDefinition(CRD)
  • ClusterRole、ClusterRoleBinding
  • ValidatingWebhookConfiguration、MutatingWebhookConfiguration

具体调整步骤

1. 提前部署共享集群级资源

如果所有Kong实例版本一致,集群级资源可全局共享,无需重复部署:

  • 下载你使用的官方部署清单到本地,命名为kong-bundle.yaml
  • 拆分资源:将清单中所有集群作用域的资源单独提取为kong-cluster-resources.yaml,剩余命名空间级资源(Deployment、Service、ServiceAccount、Role、RoleBinding、ConfigMap、Secret等)保存为kong-namespaced-resources.yaml
  • 一次性部署共享集群资源:
kubectl apply -f kong-cluster-resources.yaml

若不同实例需要独立的Webhook配置,需修改对应Webhook资源的名称,添加实例唯一标识前缀/后缀,同时修改Webhook配置中关联的Service信息,指向对应实例专属Namespace内的Kong Admin Service。

2. 适配命名空间级资源配置

每个独立Kong实例需单独配置命名空间级资源,避免互相干扰:

  • 为每个实例创建专属Namespace,例如实例1用kong-inst1,实例2用kong-inst2:
kubectl create namespace kong-inst1
kubectl create namespace kong-inst2
  • 针对每个实例修改kong-namespaced-resources.yaml配置:
    • 所有资源的metadata.namespace统一修改为对应实例的专属Namespace
    • 为每个实例的ClusterRoleBinding设置唯一名称,在subjects部分指定对应Namespace下的ServiceAccount
    • 修改Kong Ingress Controller启动参数,添加--ingress-class参数,每个实例配置唯一的IngressClass值,确保实例仅处理对应类别的Ingress资源
    • 若使用带数据库的部署模式,每个实例配置独立的数据库凭证及库名;无DB模式则使用独立的配置ConfigMap

3. 分实例部署

调整完成后分别部署每个实例即可:

# 部署实例1
kubectl apply -f kong-namespaced-resources.yaml -n kong-inst1
# 调整完实例2配置后,部署实例2
kubectl apply -f kong-namespaced-resources.yaml -n kong-inst2

额外注意事项

  • 若使用LoadBalancer类型暴露Kong代理服务,可配置不同的LoadBalancer IP避免端口冲突;若使用NodePort类型则需为每个实例分配不同的节点端口
  • 若需要通过Kong Admin API管理不同实例,注意区分不同Namespace下的Admin Service访问地址

内容的提问来源于stack exchange,提问作者Billy Billy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 16:27:01