将 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"
我已经使用 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"