基于 Python 的 Flask
HTTP 服务器作为 Docker
容器在 Google Kubernetes 集群上运行。它作为单个 pod flask-http-deployment
实现,并放置在负载均衡器
后面。
HTTP服务器的Python代码非常简单,并且不支持HTTPS
协议(protocol)。但其他应用程序需要通过 HTTPS 与该服务器通信。因此需要实现对HTTPS
的支持。
根据我读到的内容(如果我错了,请纠正我),可以通过使用 配置
。flask-http-deployment
来实现 HTTPS
支持 secret
以下是我遵循的步骤:
- 生成了
my-cert.crt
和my-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.crt
和my-key.key
文件,我创建了 Kubernetessecret
:
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/