【问题标题】:Using Kong with AWS EKS将 Kong 与 AWS EKS 结合使用
【发布时间】:2020-10-23 07:19:17
【问题描述】:

我已经使用 Helm 在 AWS 上部署了 Kong。需要终止 LoadBalancer 上的 SSL。 HTTP 请求有效。 HTTPS 请求失败并出现“400 Bad Request - The plain HTTP request was sent to HTTPS port”错误。

如何配置 Kong Proxy/LB 以使其正常工作?我可以接受 LB 后面的 HTTP 或 HTTPS 连接。但是,需要在 LB 上终止 SSL。

另一个问题是这会创建一个带有随机 DNS 名称的 LB。尝试设置service.beta.kubernetes.io/aws-load-balancer-eip-allocations,但它也不起作用。将域名或 IP 地址“固定”到 LB 的最佳方式是什么?

此外,这会创建一个传统/经典 LB。无法让 k8s 服务创建 AWS ALB。

Helm Chart 覆盖:

proxy:
  enabled: true
  http:
    enabled: true
  tls:
    enabled: true
  annotations:
    service.beta.kubernetes.io/aws-load-balancer-ssl-cert: <my-cert-name>
    service.beta.kubernetes.io/aws-load-balancer-backend-protocol: http
    service.beta.kubernetes.io/aws-load-balancer-ssl-ports: "443"

安装使用:

$ helm repo add kong https://charts.konghq.com
$ helm repo update
$ helm install kong kong/kong \
  --atomic \
  -n kong \
  -f overrides.yaml

【问题讨论】:

    标签: amazon-web-services load-balancing kong


    【解决方案1】:

    您可能还想在 YAML 中进行设置:

    proxy:
      enabled: true
      http:
        enabled: true
        servicePort: 80
        containerPort: 8000
      tls:
        enabled: true
        overrideServiceTargetPort: 8000  # <===
      annotations:
        service.beta.kubernetes.io/aws-load-balancer-ssl-cert: <my-cert-name>
        service.beta.kubernetes.io/aws-load-balancer-backend-protocol: http
        service.beta.kubernetes.io/aws-load-balancer-ssl-ports: "443"
    
    

    查看此link 以供参考。

    如果这导致请求重定向循环,请继续将此 ENV 变量添加到 Kong 的配置中:

        - name: KONG_TRUSTED_IPS
          value: 0.0.0.0/0,::/0
    

    【讨论】:

      【解决方案2】:

      @bitsapien 回答了这个问题,但为了完整起见,将包括我使用的配置(包括trusted_ips env 变量)

      proxy:
        enabled: true
        http:
          enabled: true
          servicePort: 80
          containerPort: 8000
        tls:
          enabled: true
          overrideServiceTargetPort: 8000
        annotations:
          service.beta.kubernetes.io/aws-load-balancer-ssl-cert: <the-cert-arn>
          service.beta.kubernetes.io/aws-load-balancer-backend-protocol: http
          service.beta.kubernetes.io/aws-load-balancer-ssl-ports: "443"
      env:
        trusted_ips: "0.0.0.0/0,::/0"
      

      【讨论】:

        猜你喜欢
        • 2020-07-30
        • 1970-01-01
        • 2016-11-05
        • 2016-07-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-04-19
        相关资源
        最近更新 更多