如何在 AWS 和 SSL 终止中设置 kubernetes NGINX 入口

How to set up kubernetes NGINX ingress in AWS and SSL termination

我使用 KOPS 在 AWS 中设置了一个 kubernetes 集群;现在我想设置一个 NGINX 入口控制器并使用 AWS 托管证书终止 TLS。我理解的拓扑是 AWS ELB 面向互联网并终止 TLS,转发未加密的入口服务,然后进行调度。

我已经从 https://github.com/kubernetes/ingress/tree/master/examples/aws/nginx

部署了入口控制器

除了我使用 https://github.com/kubernetes/ingress/issues/71 顶部描述的注释来添加证书。

我将路由添加到 Route53 并打开浏览器访问 https 地址,并从 NGINX 收到 400 响应消息 "The plain HTTP request was sent to HTTPS port"

我做错了什么?

这是我的入口资源:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  annotations:
    kubernetes.io/ingress.class: nginx
  name: dispatcher
  namespace: test
spec:
  rules:
  - host: REDACTED
    http:
      paths:
      - backend:
          serviceName: REDACTED
          servicePort: 80
        path: /api/v0

https://github.com/kubernetes/ingress/tree/master/controllers/nginx#https

TL;DR

1) 在您的命名空间

中使用您的 ssl public/private 创建一个秘密

2) 将 tls 块添加到您的入口(引用秘密)

我设法主要使用此处的入口来完成此操作:https://github.com/kubernetes/kops/tree/master/addons/ingress-nginx 除了入口服务,我添加了指向我的证书 ARN 的 service.beta.kubernetes.io/aws-load-balancer-ssl-cert 注释并设置了 targetPort端口到 80