【问题标题】:How to configure a Flask ws in Kubernetes with SSL?如何使用 SSL 在 Kubernetes 中配置 Flask ws?
【发布时间】:2019-06-27 16:35:48
【问题描述】:

我有一个容器化的 Flash 应用程序(一个暴露在互联网上的简单 Web 服务),通过 gunicorn 通过以下方式启用 SSL:

CMD ["gunicorn", "--certfile", "/var/tmp/fullchain.pem", "--keyfile", "/var/tmp/key.pem", "__init__:create_app()", "-b", ":8080"]

我有一个机器人每 3 个月在此路径中更新 Let's Encrypt 证书。

现在我正在创建一个 Kubernetes 集群,以便将此应用程序编排为副本。

在相关的question 中,我看到一些入口控制器提供了此证书创建/更新功能,因此我不再需要映射到 .pem 文件。还有 cert-manager 可以做到这一点。

现在我不知道我是否需要 gunicorn 或者配置它以运行应用程序的最简单和推荐的方法是什么。我也在为我的集群选择一个入口控制器。

【问题讨论】:

    标签: ssl flask kubernetes gunicorn


    【解决方案1】:

    现在我不知道我是否需要 gunicorn。

    Gunicorn 就像 java Tomcat 一样,它也可以提高 python web 服务器的性能,所以使用 Gunicorn 也推荐不使用 SSL。

    如果您在同一个集群中有其他服务想要与您的 Flask 服务器通信,并且想要保护该连接,您应该使用 SSL 配置 Gunicorn。如果没有,我认为使用带有证书管理器的入口控制器很方便。

    我也在为我的集群选择一个入口控制器。

    好吧,我认为 cert-manager offical doc 可以帮助你,它使用 Nginx 入口控制器部署 cert-manager。

    【讨论】:

      【解决方案2】:

      理论上,您不需要退出当前设置:Flask 应用程序在 HTTPS 上公开。
      例如,NGINX 入口控制器可以使用(在您的情况下为 Gunicorn)将 TLS 数据包直接传递(加密)到上游服务器SSL Passthrough 功能。

      但绝对最好以推荐的 Kubernetes 方式进行,为 Ingress 启用 TLS(其中 cert-manager 插件可以帮助您从 Let's Encrypt 等来源获取证书)

      【讨论】:

        猜你喜欢
        • 2019-11-02
        • 2014-05-06
        • 1970-01-01
        • 2011-04-09
        • 2022-07-08
        • 2019-07-27
        • 2016-03-17
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多