Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

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