HTTP-сервер на основе Python Flask
работает в кластере Google Kubernetes как контейнер Docker
.Он реализован в виде единого модуля flask-http-deployment
и расположен за Load Balancer
.
. Код Python HTTP-сервера довольно прост и не поддерживает протокол 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
Как теперь изменить файл yaml flask-http-deployment
с secret
Я только что создал?
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 Load Balancer, на случай, если это необходимо:
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: