2023-10-29 16:51:27 +01:00
2023-10-28 16:40:09 +02:00
2023-10-28 16:40:09 +02:00
maj
2023-10-29 16:51:27 +01:00
2023-10-29 16:42:52 +01:00
2023-10-28 16:40:09 +02:00
maj
2023-10-29 16:51:27 +01:00

Kubernetes exemple avec Minikube

Exemple de déploiement d'une application flask avec postgres en backend et vue.js en front

Pré requis 📎

  • Docker et compose plugin 🐳
  • Virtualbox 💻
  • Minikube (mini K8S)

Installation 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 --nodes 2
minikube dashboard

Déploiement des services 🚀

La dashboard pop dans le navigateur 📊

Volume persistant

  • 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

Les secrets sont encodés sur base 64

echo -n "pleasechangeme" | base64
# output:
cGxlYXNlY2hhbmdlbWU=

echo -n "sample" | base64
# output:
c2FtcGxl

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

  • 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

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) flask.book" | sudo tee -a /etc/hosts

Résultat 🏁

  • L'application est disponible à l'adresse:

:push_pin: http://flask.book/

  • Tester les différents pods du replica set flask:
for ((i=1;i<=10;i++)); do curl http://flask.book/books/ping; done

Commandes

  • Infos:
kubectl get pods
kubectl get deployment
  • Scaler des les services:
kubectl scale deployment flask --replicas=5
kubectl scale deployment vue --replicas=2
  • Pods logs:
kubectl logs <POD_NAME>

Debug 😭

  • En cas de problèmes avec Minikube, reinstaller celui-ci:
minikube stop; minikube delete
rm /usr/local/bin/minikube
rm -rf ~/.minikube
# re-download minikube
minikube start

Cheatsheet 😜

Kubernetes commandes

Todo 📋

  • commandes kubectl utiles + mise à l'échelle
  • changer flask.book
  • 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%