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

如何用kong/ingress Helm Chart部署带数据库的Kong?需哪些配置?

问题:通过kong/ingress Helm Chart部署带数据库的Kong需要哪些配置?

TL;DR

如何通过kong/ingress Helm Chart部署带数据库的Kong(Kong DB-backed)?需要设置哪些配置参数?

详细说明

我想要试用Oauth2插件,根据文档说明,该插件需要数据库支持:

此插件需要数据库才能有效运行,无法在无数据库(DB-less)或混合模式下工作。

查阅Kong Ingress Controller文档的部署部分可知,可通过kong/ingress Helm Chart同时部署无数据库和带数据库的Kong:

Kong推荐使用kong/ingress Helm Chart部署Kong Ingress Controller。该Chart支持无数据库和带数据库两种部署方式。

但我不清楚需要配置哪些参数来部署数据库Pod。

我的尝试

配置文件values.yaml内容如下:

deployment:
  test:
    enabled: false

controller:
  proxy:
    nameOverride: "{{ .Release.Name }}-gateway-proxy"

  enabled: true

  deployment:
    kong:
      enabled: false

  ingressController:
    enabled: true

    gatewayDiscovery:
      enabled: false
      generateAdminApiService: false

  podAnnotations:
    kuma.io/gateway: enabled
    # This port must match your Kong admin API port. 8444 is the default.
    # If you set gateway.admin.tls.containerPort, change these annotations
    # to use that value.
    traffic.kuma.io/exclude-outbound-ports: "8444"
    traffic.sidecar.istio.io/excludeOutboundPorts: "8444"

gateway:
  enabled: true
  deployment:
    kong:
      enabled: true

  admin:
    enabled: true
    type: ClusterIP
    clusterIP: None

  ingressController:
    enabled: false

  env:
    role: traditional
    database: "postgres"

执行部署命令:

helm install kong kong/ingress -n kong --create-namespace --values .\test-standard-values.yaml

等待Pod运行就绪时,查看Pod状态:

$ kubectl get pods -n kong
kong-controller-549fcc4d84-d5l2f     0/1     Running            0             45s
kong-gateway-5fd66b7498-jh4q6        0/1     Init:1/2           0             45s
kong-gateway-init-migrations-259c6   0/1     CrashLoopBackOff   2 (21s ago)   45s

未发现PostgreSQL数据库Pod,且kong-gateway-init Pod持续崩溃重启,日志信息如下:

Error: [PostgreSQL error] failed to retrieve PostgreSQL server_version_num: connection refused

求助

能否提供启用数据库支持所需的values.yaml配置参数示例?或指出我操作中的错误?


解答

你的配置缺少了启用内置PostgreSQL的关键参数,kong/ingress Helm Chart默认不会自动部署数据库,需要显式开启相关配置。以下是修正后的values.yaml核心配置:

# 启用内置PostgreSQL数据库
postgresql:
  enabled: true
  auth:
    database: kong
    username: kong
    password: kongpass # 可自定义密码
    postgresPassword: postgrespass # PostgreSQL超级用户密码

deployment:
  test:
    enabled: false

controller:
  proxy:
    nameOverride: "{{ .Release.Name }}-gateway-proxy"

  enabled: true

  deployment:
    kong:
      enabled: false

  ingressController:
    enabled: true

    gatewayDiscovery:
      enabled: false
      generateAdminApiService: false

  podAnnotations:
    kuma.io/gateway: enabled
    traffic.kuma.io/exclude-outbound-ports: "8444"
    traffic.sidecar.istio.io/excludeOutboundPorts: "8444"

gateway:
  enabled: true
  deployment:
    kong:
      enabled: true

  admin:
    enabled: true
    type: ClusterIP
    clusterIP: None

  ingressController:
    enabled: false

  env:
    role: traditional
    database: "postgres"
    # 自动注入内置PostgreSQL的连接信息,无需手动指定
    # 如果使用外部数据库,需手动设置database_host、database_user等参数

关键修正点:

  1. 添加postgresql.enabled: true:开启Chart内置的PostgreSQL实例部署,这是你之前缺失的核心配置,所以没有出现数据库Pod。
  2. 配置PostgreSQL的认证信息:auth下的参数用于设置Kong使用的数据库、用户名和密码,以及PostgreSQL超级用户密码。
  3. Kong的env.database已设置为postgres,这部分是正确的,开启内置PostgreSQL后,Chart会自动将连接信息注入到Kong的环境变量中,无需手动填写database_host等参数。

部署验证:

重新部署后,你会看到新增的PostgreSQL Pod,初始化迁移Pod也能正常完成:

kubectl get pods -n kong
# 预期输出包含:kong-postgres-xxxx-xxxx(Running状态)

如果需要使用外部PostgreSQL而非内置实例,只需将postgresql.enabled设为false,并在gateway.env中添加以下参数:

gateway:
  env:
    database_host: "your-external-postgres-host"
    database_port: 5432
    database_user: "kong-user"
    database_password: "kong-password"
    database_name: "kong"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 12:47:25