2023-10-29 14:10:08 +01:00
2023-10-28 16:40:09 +02:00
2023-10-28 16:40:09 +02:00
2023-10-29 14:10:08 +01:00
2023-10-28 16:40:09 +02:00
2023-10-29 10:54:35 +01:00

Kubernetes exemple avec Flask / Postgres et Vue

Docker 🐳

Construire les images et démarrer les services:

docker-compose up -d --build
  1. http://localhost:8080/
  2. http://localhost:5001/books/ping
  3. http://localhost:5001/books

Kubernetes

Minikube

Installer et lancer Minikube:

curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
sudo install minikube-linux-amd64 /usr/local/bin/minikube

Démarrer le cluster:

minikube start --vm-driver=virtualbox
minikube dashboard

Volume

Créer le volume persistant:

kubectl apply -f ./kubernetes/persistent-volume.yml

Créer le volume claim:

kubectl apply -f ./kubernetes/persistent-volume-claim.yml

Secrets

Créer un objet secret:

kubectl apply -f ./kubernetes/secret.yml

Postgres

Créer le deployement:

kubectl create -f ./kubernetes/postgres-deployment.yml

Créer le service:

kubectl create -f ./kubernetes/postgres-service.yml

Créer la database:

kubectl get pods
kubectl exec postgres-<POD_IDENTIFIER> --stdin --tty -- createdb -U postgres books

Flask

onstruire l'image et la pousser sur le Docker Hub:

docker build -t <DOCKER_HUB_USERNAME>/flask-kubernetes ./services/server
docker push <DOCKER_HUB_USERNAME>/flask-kubernetes

Make sure to replace <DOCKER_HUB_USERNAME> with your Docker Hub namespace in the above commands as well as in kubernetes/flask-deployment.yml

Créer le deployement:

kubectl create -f ./kubernetes/flask-deployment.yml

Créer le service:

kubectl create -f ./kubernetes/flask-service.yml

Appliquer la migration et la source de la 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

Vue

Construire l'image et la pousser sur le Docker Hub:

docker build -t <DOCKER_HUB_USERNAME>/vue-kubernetes ./services/client \
    -f ./services/client/Dockerfile-minikube

docker push <DOCKER_HUB_USERNAME>/vue-kubernetes

Again, replace <DOCKER_HUB_USERNAME> with your Docker Hub namespace in the above commands as well as in kubernetes/vue-deployment.yml

Créer le deployement:

kubectl create -f ./kubernetes/vue-deployment.yml

Créer le service:

kubectl create -f ./kubernetes/vue-service.yml

Ingress

Installer et démarrer l'ingress:

minikube addons enable ingress
kubectl apply -f ./kubernetes/minikube-ingress.yml

Ajouter une entrée au fichier /etc/hosts:

echo "$(minikube ip) hello.world" | sudo tee -a /etc/hosts

Try it out:

  1. http://hello.world/books/ping
  2. http://hello.world/books

http://hello.world/.

Todo

  • commandes kubectl utiles + mise à l'échelle
  • changer hello.world
  • transposer ver K8S multinode
  • traduire vue.js templates

Source

source testdriven.io.

Description
Kubernetes déploiement via Minikube, Kind et Vagrant
Readme 211 KiB
Languages
JavaScript 44.7%
Vue 24.3%
Shell 16.8%
Python 11.8%
Dockerfile 1.8%
Other 0.6%