Single container Python app in Kubernetes
from flask import Flask, request
app = Flask(__name__)
VERSION = "1.00"
@app.route("/")
def main():
return f'''
VERSION {VERSION}<br>
<form action="/echo" method="GET">
<input name="text">
<input type="submit" value="Echo">
</form>
'''
@app.route("/echo")
def echo():
return "You said: " + request.args.get('text', '')
If we have Python and Flask installed we can run the application locally:
FLASK_APP=echo_get flask run
- We can build a Docker image based on this Dockerfile: (myflask is just an arbitrary name)
FROM python:3.7
RUN pip install flask
ENV FLASK_APP echo_get
WORKDIR /opt
COPY echo_get.py .
CMD ["flask", "run", "--host", "0.0.0.0"]
docker build -t myflask:latest -f Dockerfile_echo_get .
docker build -t myflask:1.00 -f Dockerfile_echo_get .
and then we can run it: (tryflask is just an arbitrary name)
docker run --rm -it -p5000:5000 --name tryflask myflask
Add the docker image to the local Minikube docker registry:
minikube image load myflask:latest
List the images there
minikube image list
apiVersion: v1
kind: Pod
metadata:
name: echo-get
spec:
containers:
- name: echo-get-container
image: myflask
imagePullPolicy: Never
ports:
- protocol: TCP
containerPort: 5000
kubectl apply -f echo_get.yaml