python - 如何为作为 Kubernetes 容器运行的 Flask HTTP 服务器实现 HTTPS 支持

标签 python https kubernetes google-cloud-platform google-cloud-pubsub

基于 Python 的 Flask HTTP 服务器作为 Docker 容器在 Google Kubernetes 集群上运行。它作为单个 pod flask-http-deployment 实现,并放置在负载均衡器后面。

HTTP服务器的Python代码非常简单,并且不支持HTTPS协议(protocol)。但其他应用程序需要通过 HTTPS 与该服务器通信。因此需要实现对HTTPS的支持。

根据我读到的内容(如果我错了,请纠正我),可以通过使用 配置 flask-http-deployment 来实现 HTTPS 支持 secret

以下是我遵循的步骤:

  1. 生成了 my-cert.crtmy-key.key 文件:

openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout my-key.key -out my-cert.crt -subj '//CN=mydomain.com'

  • 使用 my-cert.crtmy-key.key 文件,我创建了 Kubernetes secret:
  • kubectl 创建 secret tls my-secret --key=my-key.key --cert=y-cert.crt

    我现在应该如何使用我刚刚创建的 secret 修改 flask-http-deployment yaml 文件?

          apiVersion: extensions/v1beta1
          kind: Deployment
          metadata:
            name: flask-http-deployment
          spec:
            replicas: 5
            minReadySeconds: 10
            strategy:
              type: RollingUpdate
              rollingUpdate:
                maxUnavailable: 1
                maxSurge: 1
            template:
              metadata:
                labels:
                  app: flask-http-app
              spec:
                containers:
                - name: flask-http-container
                  image: gcr.io/my-project-id/flask-http-container
                  ports:
                  - containerPort: 80
                  imagePullPolicy: IfNotPresent
    
    

    这是负载均衡器 yaml,以防需要:

      apiVersion: v1
      kind: Service
      metadata:
        name: flask-http-load-balancer
        labels:
          app: flask-http-app
      spec:
        type: LoadBalancer
        ports:
        - port: 80
          nodePort: 30000
          protocol: TCP
          name: flask 
        selector:
    

    最佳答案

    我不确定这个 secret ,以及你在哪里使用你创建的 secret ,但是支持 https 与传统世界中的相同,在你的应用程序服务前面放置一个 https 终止代理,例如 nginx pod或 nginx 入口 Controller (在其中使用您的 secret )

    或终止外部负载均衡器中的 SSL/TLS。

    关于python - 如何为作为 Kubernetes 容器运行的 Flask HTTP 服务器实现 HTTPS 支持,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56924890/

    相关文章:

    python - 警告 :0 terminating async callback error in cv2

    python - 在 tensorflow 中对两个矩阵进行卷积的最佳方法是什么?

    node.js - ExpressJS 路由 + Websockets - 共享端口

    python - 我需要使用 kubernetes python 客户端获取 Kubernetes 集群中 Pod 的资源使用情况

    bash - 如何遍历kubectl的节点列表,并回显每个节点名称?

    Python win32api.mouse_event 类型错误

    python - scipy.optimize.fsolve 中的输入/输出错误

    ubuntu - 设置 Varnish Apache2 HTTP & HTTPS Ubuntu 16.04

    javascript - 如何使用 Work Light 使用服务器端 javascript 发出 HTTPS 请求?

    kubernetes - Azure (AKS) 中的 kubernetes 集群升级 1.24.9 处于失败状态,pod 面临间歇性 DNS 问题