testdrivenio / Flask Vue Kubernetes
Programming Languages
Labels
Projects that are alternatives of or similar to Flask Vue Kubernetes
Running Flask on Kubernetes
Want to learn how to build this?
Check out the post.
Want to use this project?
Docker
Build the images and spin up the containers:
$ docker-compose up -d --build
Run the migrations and seed the database:
$ docker-compose exec server python manage.py recreate_db
$ docker-compose exec server python manage.py seed_db
Test it out at:
Kubernetes
Minikube
Install and run Minikube:
- Install a Hypervisor (like VirtualBox or HyperKit) to manage virtual machines
- Install and Set Up kubectl to deploy and manage apps on Kubernetes
- Install Minikube
Start the cluster:
$ minikube start --vm-driver=virtualbox
$ minikube dashboard
Volume
Create the volume:
$ kubectl apply -f ./kubernetes/persistent-volume.yml
Create the volume claim:
$ kubectl apply -f ./kubernetes/persistent-volume-claim.yml
Secrets
Create the secret object:
$ kubectl apply -f ./kubernetes/secret.yml
Postgres
Create deployment:
$ kubectl create -f ./kubernetes/postgres-deployment.yml
Create the service:
$ kubectl create -f ./kubernetes/postgres-service.yml
Create the database:
$ kubectl get pods
$ kubectl exec postgres-<POD_IDENTIFIER> --stdin --tty -- createdb -U postgres books
Flask
Build and push the image to Docker Hub:
$ docker build -t mjhea0/flask-kubernetes ./services/server
$ docker push mjhea0/flask-kubernetes
Make sure to replace
mjhea0
with your Docker Hub namespace in the above commands as well as in kubernetes/flask-deployment.yml
Create the deployment:
$ kubectl create -f ./kubernetes/flask-deployment.yml
Create the service:
$ kubectl create -f ./kubernetes/flask-service.yml
Apply the migrations and seed the database:
$ kubectl get pods
$ kubectl exec flask-<POD_IDENTIFIER> --stdin --tty -- python manage.py recreate_db
$ kubectl exec flask-<POD_IDENTIFIER> --stdin --tty -- python manage.py seed_db
Ingress
Enable and apply:
$ minikube addons enable ingress
$ kubectl apply -f ./kubernetes/minikube-ingress.yml
Add entry to /etc/hosts file:
<MINIKUBE_IP> hello.world
Try it out:
Vue
Build and push the image to Docker Hub:
$ docker build -t mjhea0/vue-kubernetes ./services/client \
-f ./services/client/Dockerfile-minikube
$ docker push mjhea0/vue-kubernetes
Again, replace
mjhea0
with your Docker Hub namespace in the above commands as well as in kubernetes/vue-deployment.yml
Create the deployment:
$ kubectl create -f ./kubernetes/vue-deployment.yml
Create the service:
$ kubectl create -f ./kubernetes/vue-service.yml
Try it out at http://hello.world/.