forked from TrueCloudLab/certificates
Add a gunicorn server with a flask app using mTLS
Fixes smallstep/ca-component#139
This commit is contained in:
parent
fcd1da970f
commit
b140fe63bd
5 changed files with 71 additions and 0 deletions
14
autocert/examples/hello-mtls/py-gunicorn/Dockerfile.server
Normal file
14
autocert/examples/hello-mtls/py-gunicorn/Dockerfile.server
Normal file
|
@ -0,0 +1,14 @@
|
|||
FROM python:alpine
|
||||
|
||||
RUN mkdir /src
|
||||
|
||||
# Gunicorn configuration
|
||||
ADD gunicorn.conf /src
|
||||
|
||||
# Flask app
|
||||
ADD server.py /src
|
||||
ADD requirements.txt /src
|
||||
RUN pip3 install -r /src/requirements.txt
|
||||
|
||||
# app, certificate watcher and envoy
|
||||
CMD ["gunicorn", "--config", "/src/gunicorn.conf", "--pythonpath", "/src", "server:app"]
|
13
autocert/examples/hello-mtls/py-gunicorn/gunicorn.conf
Normal file
13
autocert/examples/hello-mtls/py-gunicorn/gunicorn.conf
Normal file
|
@ -0,0 +1,13 @@
|
|||
bind = '0.0.0.0:443'
|
||||
workers = 2
|
||||
|
||||
# mTLS configuration with TLSv1.2 and requiring and validating client
|
||||
# certificates
|
||||
ssl_version = 5 # ssl.PROTOCOL_TLSv1_2
|
||||
cert_reqs = 2 # ssl.CERT_REQUIRED
|
||||
ciphers = 'ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256'
|
||||
ca_certs = '/var/run/autocert.step.sm/root.crt'
|
||||
certfile = '/var/run/autocert.step.sm/site.crt'
|
||||
keyfile = '/var/run/autocert.step.sm/site.key'
|
||||
|
||||
|
|
@ -0,0 +1,33 @@
|
|||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
labels: {app: hello-mtls}
|
||||
name: hello-mtls
|
||||
spec:
|
||||
type: ClusterIP
|
||||
ports:
|
||||
- port: 443
|
||||
targetPort: 443
|
||||
selector: {app: hello-mtls}
|
||||
|
||||
---
|
||||
|
||||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
metadata:
|
||||
name: hello-mtls
|
||||
labels: {app: hello-mtls}
|
||||
spec:
|
||||
replicas: 1
|
||||
selector: {matchLabels: {app: hello-mtls}}
|
||||
template:
|
||||
metadata:
|
||||
annotations:
|
||||
autocert.step.sm/name: hello-mtls.default.svc.cluster.local
|
||||
labels: {app: hello-mtls}
|
||||
spec:
|
||||
containers:
|
||||
- name: hello-mtls
|
||||
image: hello-mtls-server-py-gunicorn:latest
|
||||
imagePullPolicy: Never
|
||||
resources: {requests: {cpu: 10m, memory: 20Mi}}
|
|
@ -0,0 +1,2 @@
|
|||
Flask
|
||||
gunicorn
|
9
autocert/examples/hello-mtls/py-gunicorn/server.py
Normal file
9
autocert/examples/hello-mtls/py-gunicorn/server.py
Normal file
|
@ -0,0 +1,9 @@
|
|||
from flask import Flask
|
||||
app = Flask(__name__)
|
||||
|
||||
@app.route("/")
|
||||
def hello():
|
||||
return "Hello World!\n"
|
||||
|
||||
if __name__ == "__main__":
|
||||
app.run(host='127.0.0.1', port=8080, debug=False)
|
Loading…
Reference in a new issue