基于Python的Flask
HTTP服务器在Google Kubernetes集群上作为Docker
容器运行。它被实现为单个容器flask-http-deployment
,并放置在Load Balancer
后面。
HTTP服务器的Python代码非常简单,不支持HTTPS
协议。但是其他应用程序将需要通过HTTPS与该服务器通信。因此,需要实现对HTTPS
的支持。
根据我的读物(如果我错了,请纠正我),可以通过将HTTPS
配置为flask-http-deployment
来实现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
文件,我创建了Kubernetes secret
: kubectl create secret tls my-secret --key=my-key.key --cert=y-cert.crt
现在如何使用刚刚创建的flask-http-deployment
来修改secret
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
如果需要,这里是Load Balancer 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:
答案 0 :(得分:3)
我不确定这个秘密,您在哪里使用创建的秘密,但是支持https与传统世界一样,请将https终止代理放在您的应用程序服务(例如nginx pod)前面或Nginx入口控制器(在其中使用您的秘密)
或在您的外部负载均衡器中终止SSL / TLS。
答案 1 :(得分:0)
检出nginx入口可让您将SSL证书附加到Pod。