【发布时间】:2020-10-01 17:07:31
【问题描述】:
我在 AWS EKS 中设置了 gRPC 服务器,并使用 Nginx-Ingress-Controller 执行负载平衡。我尝试通过将 gRPC 服务器入口设置为 like 来终止 NLB 的 TLS
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
annotations:
kubernetes.io/ingress.class: "nginx"
nginx.ingress.kubernetes.io/ssl-redirect: "true"
nginx.ingress.kubernetes.io/backend-protocol: "GRPC"
name: my-grpc
namespace: myspace
spec:
rules:
- host: my.test.com
http:
paths:
- path: /
backend:
serviceName: grpc-server
servicePort: 8080
另外,我使用 Amazon Certificate Manager 来管理 NLB 的 TLS,所以我必须将 Nginx-Ingress-Controller Value.yaml 的 Helm Chart 更改为以下字段
controller:
service:
enabled: true
annotations:
service.beta.kubernetes.io/aws-load-balancer-ssl-cert: arn:aws:acm:xxxxxxxxxxx
service.beta.kubernetes.io/aws-load-balancer-backend-protocol: http
service.beta.kubernetes.io/aws-load-balancer-ssl-ports: "443,8443"
service.beta.kubernetes.io/aws-load-balancer-connection-idle-timeout: "3600"
service.beta.kubernetes.io/aws-load-balancer-type: nlb
service.beta.kubernetes.io/aws-load-balancer-internal: "true"
targetPorts:
http: http
https: http
问题是,我无法通过 443 端口成功调用并让客户端连接到 gRPC 服务器。
问题发生在 NLB 和 Nginx 之间,但原因和原因尚不清楚。任何形式的帮助将不胜感激。
注意: 我知道 ingress-nginx 的示例有 TLS 字段,但是如果我使用 ACM,我应该在这里放什么。
【问题讨论】: