将 Kong 与 AWS EKS 结合使用

Using Kong with AWS EKS

我已经使用 Helm 在 AWS 上部署了 Kong。需要终止 LoadBalancer 上的 SSL。 HTTP 请求有效。 HTTPS 请求失败,出现“400 错误请求 - 纯 HTTP 请求已发送到 HTTPS 端口”错误。

如何配置 Kong Proxy/LB 才能正常工作?我同意 LB 后面的 HTTP 或 HTTPS 连接。不过,要求在 LB 上终止 SSL。

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

此外,这会创建一个 legacy/classic 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

您可能还想在 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

@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"