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

AWS EKS中用Terraform+Helm部署Kong遇CORS错误求助

解决Kong Admin API的CORS问题

问题根源

你当前的CORS插件配置存在两个核心问题:

  1. ConfigMap格式错误:插件配置的键名使用了_config,Kong无法正确识别为CORS插件的配置内容。
  2. 插件作用范围未覆盖Admin API:Kong默认不会将全局插件应用到Admin API路由,而你的请求是直接访问Admin API域名,需要确保插件作用于Admin API的流量。

修复步骤

1. 修正CORS插件的ConfigMap配置

将kubernetes_config_map中的_config键名改为cors,让Kong能正确加载插件配置:

resource "kubernetes_config_map" "kong_cors_plugin" {
  metadata {
    name      = "kong-cors-plugin"
    namespace = "kong"
  }

  data = {
    "cors" = <<-EOT
    { 
      "origins": ["https://devapi.example.com"],
      "methods": ["GET", "POST", "PUT", "PATCH", "DELETE", "OPTIONS"],
      "headers": ["Accept", "Authorization", "Content-Type"],
      "exposed_headers": ["X-Custom-Header"],
      "credentials": true,
      "max_age": 3600
    }
    EOT
  }
}

注意:将origins从*改为具体的前端域名https://devapi.example.com,更符合生产环境安全规范,也能避免带凭证请求的CORS问题。

2. 确保CORS插件作用于Admin API

修改Helm Chart的values配置,通过admin.plugins直接为Admin API启用CORS插件:

admin:
  enabled: true
  type: NodePort
  http:
    enabled: true
  tls:
    enabled: false
  ingress:
    enabled: true
    tls: true
    hostname: adminapi.example.com
    path: /
    pathType: ImplementationSpecific
    annotations:
      "kubernetes.io/ingress.class": "alb"
      "alb.ingress.kubernetes.io/scheme": "internal"
      "alb.ingress.kubernetes.io/group.name": "kong-alb-internal"
      "alb.ingress.kubernetes.io/group.order": "502"
      "alb.ingress.kubernetes.io/listen-ports": "[{\"HTTPS\":443}, {\"HTTP\":80}]"
      "alb.ingress.kubernetes.io/ssl-redirect": "443"
      "alb.ingress.kubernetes.io/certificate-arn": "arn:*********"
  # 添加以下配置,为Admin API绑定CORS插件
  plugins:
    configMaps:
    - pluginName: "cors"
      name: "kong-cors-plugin"

3. 重新部署配置

执行Terraform命令更新部署:

terraform init
terraform plan
terraform apply

4. 验证修复

访问https://devapi.example.com/services,检查网络请求的响应头是否包含Access-Control-Allow-Origin: https://devapi.example.com,确认CORS错误消失。

额外检查点

  • 确认ALB的SSL重定向配置正确,避免HTTP请求干扰CORS头的传递
  • 检查Kong Pod的日志,确认插件已成功加载(无配置错误日志)
  • 验证Admin API的Ingress规则正确匹配所有请求路径

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 03:34:53