Python 如何为作为Kubernetes容器运行的Flask HTTP服务器实现HTTPS支持
一个基于Python的Python 如何为作为Kubernetes容器运行的Flask HTTP服务器实现HTTPS支持,python,https,kubernetes,google-cloud-platform,google-cloud-pubsub,Python,Https,Kubernetes,Google Cloud Platform,Google Cloud Pubsub,一个基于Python的FlaskHTTP服务器作为Docker容器运行在Google Kubernetes集群上。它被实现为一个单独的podflask http部署,并放置在负载平衡器后面 HTTP服务器的Python代码非常简单,不支持HTTPS协议。但其他应用程序将需要通过HTTPS与此服务器通信。因此需要实现对HTTPS的支持 从我所读到的(如果我错了,请纠正我),HTTPS支持可以通过配置flask http部署和机密来实现 以下是我遵循的步骤: 生成my-cert.crt和my-key
Flask
HTTP服务器作为Docker
容器运行在Google Kubernetes集群上。它被实现为一个单独的podflask http部署
,并放置在负载平衡器
后面
HTTP服务器的Python代码非常简单,不支持HTTPS
协议。但其他应用程序将需要通过HTTPS与此服务器通信。因此需要实现对HTTPS
的支持
从我所读到的(如果我错了,请纠正我),HTTPS
支持可以通过配置flask http部署
和机密来实现
以下是我遵循的步骤:
生成my-cert.crt
和my-key.key
文件:
openssl-req-x509-nodes-days 365-newkey rsa:2048-keyout my-key.key-out my-cert.crt-subc'//CN=mydomain.com'
使用my-cert.crt
和my key.key
文件,我创建了Kubernetessecret
:
kubectl create secret tls my secret--key=my-key.key--cert=y-cert.crt
现在,我应该如何使用我刚刚创建的secret
修改flask http部署
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:
我不确定这个秘密,你在哪里使用你创建的秘密,但支持https与传统世界一样,在你的应用程序服务前面放置一个https终止代理,如nginx pod或nginx ingress controller(在那里使用你的秘密)
或者在外部负载平衡器中终止SSL/TLS。检查nginx入口允许您将SSL证书附加到POD
请澄清如何配置负载平衡器,使其终止SSL/TLS。请参阅有关nginx、nginx入口的文档