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

如何在Amazon EKS(搭配AWS Fargate)部署Kong?求指南与最佳实践

在AWS EKS Fargate上部署Kong的分步指南与最佳实践

一、前置检查

确认以下资源已就绪:

  • 已创建带有Fargate配置文件的EKS集群
  • kubectl已配置为可访问目标集群
  • Helm 3已安装在本地环境

二、在EKS集群中安装Kong

推荐使用Helm进行标准化部署,步骤如下:

  1. 添加Kong官方Helm仓库并更新
    helm repo add kong https://charts.konghq.com
    helm repo update
    
  2. 创建自定义values.yaml文件(核心配置将在后续适配Fargate环节补充)
  3. 安装Kong到专属命名空间
    helm install kong kong/kong --namespace kong --create-namespace -f values.yaml
    

三、适配Fargate环境的核心配置

Fargate存在无hostNetwork支持、临时存储限制、强制资源配额等特性,需调整Kong配置适配:

  1. 禁用Host网络与端口绑定
    在values.yaml中添加:
    proxy:
      hostNetwork: false
      hostPort: null
    
  2. 采用DB-less模式(推荐)
    避免依赖数据库,降低Fargate资源开销与架构复杂度:
    env:
      database: "off"
    
    若需持久化配置,可挂载EFS存储卷(需提前创建EFS存储类):
    proxy:
      persistence:
        enabled: true
        storageClass: "efs-sc"
        accessMode: ReadWriteMany
        size: 10Gi
    
  3. 指定资源请求与限制
    Fargate要求必须设置CPU/内存配额,建议与限制值保持一致:
    proxy:
      resources:
        requests:
          cpu: "1000m"
          memory: "1Gi"
        limits:
          cpu: "2000m"
          memory: "2Gi"
    admin:
      resources:
        requests:
          cpu: "500m"
          memory: "512Mi"
        limits:
          cpu: "1000m"
          memory: "1Gi"
    
  4. 将Ingress Controller改为Deployment
    禁用DaemonSet(Fargate不支持),设置多副本保障可用性:
    ingressController:
      kind: Deployment
      replicaCount: 2
    

四、网络与安全配置

网络配置

  1. 配置NLB作为入口负载均衡器
    需提前在EKS集群中安装AWS Load Balancer Controller,然后在values.yaml中设置:
    proxy:
      service:
        type: LoadBalancer
        annotations:
          service.beta.kubernetes.io/aws-load-balancer-type: "external"
          service.beta.kubernetes.io/aws-load-balancer-nlb-target-type: "ip"
          service.beta.kubernetes.io/aws-load-balancer-scheme: "internet-facing"
    
  2. 确保Kong命名空间纳入Fargate调度
    若现有Fargate配置文件未包含kong命名空间,执行以下命令添加:
    eksctl create fargateprofile --cluster <你的集群名称> --name kong-fargate --namespace kong
    

安全配置

  1. 限制Admin API访问
    将Admin API设为ClusterIP类型,仅允许集群内部访问:
    admin:
      service:
        type: ClusterIP
    
    临时调试可使用kubectl port-forward:
    kubectl port-forward svc/kong-kong-admin -n kong 8001:8001
    
  2. 配置IAM权限
    为Fargate Pod的IAM角色添加必要权限:
    • 若使用EFS:AmazonEFSFullAccess(或更细粒度的权限)
    • 若推送日志到CloudWatch:CloudWatchLogsFullAccess
  3. 启用TLS加密
    使用ACM证书创建K8s Secret后,配置Kong启用TLS:
    proxy:
      tls:
        enabled: true
        secret: "kong-tls-secret"
    
  4. 配置NetworkPolicy
    限制Kong Pod的访问来源,仅允许合法流量:
    apiVersion: networking.k8s.io/v1
    kind: NetworkPolicy
    metadata:
      name: kong-proxy-access
      namespace: kong
    spec:
      podSelector:
        matchLabels:
          app.kubernetes.io/name: kong
          app.kubernetes.io/component: proxy
      ingress:
      - from:
        - ipBlock:
            cidr: <你的微服务CIDR范围>
        ports:
        - protocol: TCP
          port: 8000
        - protocol: TCP
          port: 8443
    

五、最佳实践与性能优化

性能优化

  • 启用水平Pod自动扩缩容(HPA):根据CPU/内存使用率自动调整副本数
    proxy:
      autoscaling:
        enabled: true
        minReplicas: 2
        maxReplicas: 10
        targetCPUUtilizationPercentage: 70
        targetMemoryUtilizationPercentage: 75
    
  • 调整Worker进程数:匹配CPU核心数,例如2核CPU设置worker_processes: "2"
    env:
      worker_processes: "2"
    

架构安全

  • 集成AWS WAF与NLB:过滤SQL注入、XSS等恶意流量
  • 启用Kong限流插件:防止API被滥用
  • 定期更新Kong版本:及时修复安全漏洞

监控与日志

  • 配置日志输出到CloudWatch:通过标准输出/错误流收集日志
    env:
      log_level: "info"
      proxy_access_log: "/dev/stdout"
      proxy_error_log: "/dev/stderr"
    
  • 启用Prometheus插件:收集Kong指标用于监控告警
    plugins:
      enabled:
      - prometheus
    

六、部署验证

  1. 检查Pod状态
    kubectl get pods -n kong
    
    确保所有Pod处于Running状态
  2. 测试Proxy访问
    获取NLB地址并发起请求:
    kubectl get svc kong-kong-proxy -n kong
    curl http://<NLB地址>
    
    应返回Kong默认404页面
  3. 测试Admin API
    通过port-forward访问:
    kubectl port-forward svc/kong-kong-admin -n kong 8001:8001
    curl http://localhost:8001
    
    应返回Kong Admin API的JSON响应

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 08:13:20