diff --git a/.gitignore b/.gitignore index 428b3cf..7a2055e 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,2 @@ -minikube-linux-amd64 \ No newline at end of file +minikube-linux-amd64 +docker-compose.yml \ No newline at end of file diff --git a/README.md b/README.md index 39822d4..8fec01b 100644 --- a/README.md +++ b/README.md @@ -2,13 +2,28 @@ Exemple de déploiement d'une application flask avec postgres en backend et vue.js en front -### Pré requis :paperclip: +## Pré requis :paperclip: - Docker et compose plugin :whale: - Virtualbox :computer: - Minikube (mini K8S) -### Installation Minikube :construction: +### Installation Docker et compose + +```bash +wget https://git.legaragenumerique.fr/GARAGENUM/docker/raw/branch/main/docker-install.sh && bash ./docker-install.sh +``` + +##~ Installation de Virtualbox + +```bash +wget -O- -q https://www.virtualbox.org/download/oracle_vbox_2016.asc | sudo gpg --dearmour -o /usr/share/keyrings/oracle_vbox_2016.gpg +echo "deb [arch=amd64 signed-by=/usr/share/keyrings/oracle_vbox_2016.gpg] http://download.virtualbox.org/virtualbox/debian bookworm contrib" | sudo tee /etc/apt/sources.list.d/virtualbox.list +sudo apt update +sudo apt install virtualbox-7.0 +``` + +### Installation Minikube Installer et lancer [Minikube](https://kubernetes.io/docs/setup/minikube/): @@ -24,10 +39,10 @@ minikube start --vm-driver=virtualbox --nodes 2 minikube dashboard ``` -### Déploiement des services :rocket: - > La dashboard pop dans le navigateur :bar_chart: +## Déploiement des services :rocket: + #### Volume persistant - Créer le volume persistant: @@ -44,13 +59,13 @@ kubectl apply -f ./kubernetes/persistent-volume-claim.yml #### Secrets :lock: -- Créer un objet secret: +- Créer un objet secret (database user + password): ```bash kubectl apply -f ./kubernetes/secret.yml ``` -> Les secrets sont encodés sur base 64 +Les secrets sont encodés sur base 64 ```bash echo -n "pleasechangeme" | base64 # output: @@ -106,13 +121,13 @@ kubectl exec $FLASK_POD_NAME --stdin --tty -- python manage.py seed_db #### Vue -Créer le deployement: +- Créer le deployement: ```bash kubectl create -f ./kubernetes/vue-deployment.yml ``` -- - Créer le service: +- Créer le service: ```bash kubectl create -f ./kubernetes/vue-service.yml @@ -133,7 +148,7 @@ kubectl apply -f ./kubernetes/minikube-ingress.yml echo "$(minikube ip) flask.k8s" | sudo tee -a /etc/hosts ``` -### Résultat :checkered_flag: +## Résultat :checkered_flag: - L'application est disponible à l'adresse: @@ -145,7 +160,7 @@ echo "$(minikube ip) flask.k8s" | sudo tee -a /etc/hosts for ((i=1;i<=10;i++)); do curl http://flask.k8s/books/ping; done ``` -### Version semi automatisée (deploy.sh) +## Version semi automatisée (deploy.sh) ```bash ./deploy.sh @@ -181,7 +196,7 @@ kubectl scale deployment vue --replicas=2 kubectl logs ``` -### Debug :sob: +## Debug :sob: - En cas de problèmes avec Minikube, reinstaller celui-ci: @@ -193,11 +208,11 @@ rm -rf ~/.minikube minikube start ``` -### Cheatsheet :stuck_out_tongue_winking_eye: +## Cheatsheet :stuck_out_tongue_winking_eye: [Kubernetes commandes](https://github.com/dennyzhang/cheatsheet-kubernetes-A4) -### Todo :clipboard: +## Todo :clipboard: - [ ] commandes kubectl utiles + mise à l'échelle - [ ] changer flask.book diff --git a/docker-compose.yml b/docker-compose.yml deleted file mode 100644 index e1d78b0..0000000 --- a/docker-compose.yml +++ /dev/null @@ -1,39 +0,0 @@ -version: '3.8' - -services: - - server: - container_name: flask-backend - build: - context: ./services/server - dockerfile: Dockerfile - ports: - - 5001:5000 - environment: - - FLASK_ENV=development - - APP_SETTINGS=project.config.DevelopmentConfig - - POSTGRES_USER=postgres - - POSTGRES_PASSWORD=postgres - depends_on: - - postgres - - postgres: - container_name: postgres - build: - context: ./services/db - dockerfile: Dockerfile - expose: - - 5432 - environment: - - POSTGRES_USER=postgres - - POSTGRES_PASSWORD=postgres - - client: - container_name: vue-front - build: - context: ./services/client - dockerfile: Dockerfile - ports: - - 8080:8080 - depends_on: - - server