【问题标题】:How to set up kubernetes NGINX ingress in AWS and SSL termination如何在 AWS 和 SSL 终止中设置 kubernetes NGINX 入口
【发布时间】:2017-11-09 07:42:39
【问题描述】:

我使用 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 响应,其中包含消息“普通 HTTP 请求已发送到 HTTPS 端口”

我做错了什么?

这是我的入口资源:

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

【问题讨论】:

    标签: amazon-web-services ssl nginx kubernetes elastic-load-balancer


    【解决方案1】:

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

    TL;DR

    1) 在命名空间中使用您的 ssl public/private 创建一个秘密

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

    【讨论】:

    • 我希望 ELB 终止 SSL。我正在使用 AWS 托管证书,它们实际上并没有给你证书;您可以使用的服务很少,ELB 就是这样一种服务
    【解决方案2】:

    我主要使用这里的入口来完成这项工作:https://github.com/kubernetes/kops/tree/master/addons/ingress-nginx 除了入口服务我添加了指向我的证书 ARN 的 service.beta.kubernetes.io/aws-load-balancer-ssl-cert 注释并将两个端口的 targetPort 设置为 80

    【讨论】:

    • 这对我有用,但也意味着从 ELB 到应用程序的流量是未加密的。大概您的 ELB 与您的集群位于 VPC 中,因此应该是安全的。
    • 我认为在 ELB 和 AWS 之外的服务之间是不可能的。这是 AWS 中的标准设置,Elastic beantalk 多年来一直以这种方式设置,经过数百万小时的生产负载后,没有人抱怨过这一点
    • 嗨,你用 Helm 做这个吗?您能否在此答案中发布您的脚本?我现在也有同样的问题..
    猜你喜欢
    • 1970-01-01
    • 2020-02-24
    • 2020-08-14
    • 2018-11-15
    • 2021-02-03
    • 2020-09-07
    • 1970-01-01
    • 2017-04-06
    • 1970-01-01
    相关资源
    最近更新 更多