#devcon openfaas & gitlab ci-cd...> .gitlab-ci.yml définit un ensemble de jobs (commandes)...
TRANSCRIPT
![Page 1: #DevCon OpenFaaS & GitLab CI-CD...> .gitlab-ci.yml définit un ensemble de jobs (commandes) et de contraintes par stages ( {} == pipeline) > Le pipeline est déclenché à chaque](https://reader035.vdocuments.pub/reader035/viewer/2022062602/5ed08d6f879769460e29fd54/html5/thumbnails/1.jpg)
OpenFaaS & GitLab CI-CD Édition 2018
#DevCon
![Page 2: #DevCon OpenFaaS & GitLab CI-CD...> .gitlab-ci.yml définit un ensemble de jobs (commandes) et de contraintes par stages ( {} == pipeline) > Le pipeline est déclenché à chaque](https://reader035.vdocuments.pub/reader035/viewer/2022062602/5ed08d6f879769460e29fd54/html5/thumbnails/2.jpg)
TAM - SA @ GitLab
🐦 @k33g_org 🦊 @k33g | [email protected]
https://gitlab.com/k33g/q/issues
📷 @GDGLyon - 🏨 @ScalaIO_FR - 📝 @BlendWebMix
#devcon2018 @k33g_orgDevCon
![Page 3: #DevCon OpenFaaS & GitLab CI-CD...> .gitlab-ci.yml définit un ensemble de jobs (commandes) et de contraintes par stages ( {} == pipeline) > Le pipeline est déclenché à chaque](https://reader035.vdocuments.pub/reader035/viewer/2022062602/5ed08d6f879769460e29fd54/html5/thumbnails/3.jpg)
�3
FaaS - OpenFaaS
1ère fonction
GitLab Runners - CI-CD
OpenFaaS & GitLab CI
Déploiement / Review App / Multi pipelines
Agenda
#devcon2018 @k33g_orgDevCon
![Page 4: #DevCon OpenFaaS & GitLab CI-CD...> .gitlab-ci.yml définit un ensemble de jobs (commandes) et de contraintes par stages ( {} == pipeline) > Le pipeline est déclenché à chaque](https://reader035.vdocuments.pub/reader035/viewer/2022062602/5ed08d6f879769460e29fd54/html5/thumbnails/4.jpg)
�4
FaaS “ServerLess 🤪”
#devcon2018 @k33g_orgDevCon
![Page 5: #DevCon OpenFaaS & GitLab CI-CD...> .gitlab-ci.yml définit un ensemble de jobs (commandes) et de contraintes par stages ( {} == pipeline) > Le pipeline est déclenché à chaque](https://reader035.vdocuments.pub/reader035/viewer/2022062602/5ed08d6f879769460e29fd54/html5/thumbnails/5.jpg)
�5
Développer (Tester) - Exécuter (Déployer…) - Gérer
les fonctionnalités d’une application
Sans la complexité
de l’infrastructure
FaaS
![Page 6: #DevCon OpenFaaS & GitLab CI-CD...> .gitlab-ci.yml définit un ensemble de jobs (commandes) et de contraintes par stages ( {} == pipeline) > Le pipeline est déclenché à chaque](https://reader035.vdocuments.pub/reader035/viewer/2022062602/5ed08d6f879769460e29fd54/html5/thumbnails/6.jpg)
�6
“Une” architecture FaaS
Function Platform (FaaS)
Container Platform (CaaS)
Infrastructure Platform (IaaS)
![Page 7: #DevCon OpenFaaS & GitLab CI-CD...> .gitlab-ci.yml définit un ensemble de jobs (commandes) et de contraintes par stages ( {} == pipeline) > Le pipeline est déclenché à chaque](https://reader035.vdocuments.pub/reader035/viewer/2022062602/5ed08d6f879769460e29fd54/html5/thumbnails/7.jpg)
�7
OpenFaaS Framework ❤
#devcon2018 @k33g_orgDevCon
![Page 8: #DevCon OpenFaaS & GitLab CI-CD...> .gitlab-ci.yml définit un ensemble de jobs (commandes) et de contraintes par stages ( {} == pipeline) > Le pipeline est déclenché à chaque](https://reader035.vdocuments.pub/reader035/viewer/2022062602/5ed08d6f879769460e29fd54/html5/thumbnails/8.jpg)
1 framework faas on-premises
no vendor lock-in
facile à utiliser
multi langages
une communauté sympathique
�8
OpenFaaS?
https://www.openfaas.com
Alex Ellis @alexellisuk
![Page 9: #DevCon OpenFaaS & GitLab CI-CD...> .gitlab-ci.yml définit un ensemble de jobs (commandes) et de contraintes par stages ( {} == pipeline) > Le pipeline est déclenché à chaque](https://reader035.vdocuments.pub/reader035/viewer/2022062602/5ed08d6f879769460e29fd54/html5/thumbnails/9.jpg)
�9
Une architecture OpenFaaS
Function Platform (FaaS)
Docker Swarm
My Laptop
![Page 10: #DevCon OpenFaaS & GitLab CI-CD...> .gitlab-ci.yml définit un ensemble de jobs (commandes) et de contraintes par stages ( {} == pipeline) > Le pipeline est déclenché à chaque](https://reader035.vdocuments.pub/reader035/viewer/2022062602/5ed08d6f879769460e29fd54/html5/thumbnails/10.jpg)
�10
Une autre architecture OpenFaaS
Function Platform (FaaS)
K8S
Your servers
![Page 11: #DevCon OpenFaaS & GitLab CI-CD...> .gitlab-ci.yml définit un ensemble de jobs (commandes) et de contraintes par stages ( {} == pipeline) > Le pipeline est déclenché à chaque](https://reader035.vdocuments.pub/reader035/viewer/2022062602/5ed08d6f879769460e29fd54/html5/thumbnails/11.jpg)
apt-get install -y docker-ce # Add entries to hosts file: echo "" >> /etc/hosts echo '#{REGISTRY_IP} #{REGISTRY_DOMAIN}' >> /etc/hosts echo "" >> /etc/hosts docker swarm init --advertise-addr #{OPENFAAS_IP} # Add unsecure registry echo "" >> /etc/docker/daemon.json echo '{' >> /etc/docker/daemon.json echo ' "insecure-registries" : ["#{REGISTRY}"]' >> /etc/docker/daemon.json echo '}' >> /etc/docker/daemon.json echo "" >> /etc/docker/daemon.json
service docker restart
git clone https://github.com/openfaas/faas && \ cd faas && \ ./deploy_stack.sh
#devcon2018 @k33g_orgDevCon
Installation d’OpenFaaS (version Docker Swarm)
![Page 12: #DevCon OpenFaaS & GitLab CI-CD...> .gitlab-ci.yml définit un ensemble de jobs (commandes) et de contraintes par stages ( {} == pipeline) > Le pipeline est déclenché à chaque](https://reader035.vdocuments.pub/reader035/viewer/2022062602/5ed08d6f879769460e29fd54/html5/thumbnails/12.jpg)
apt-get install -y docker-ce
curl -sSL https://cli.openfaas.com | sudo -E sh
#devcon2018 @k33g_orgDevCon
Installation de la CLI OpenFaaS
![Page 13: #DevCon OpenFaaS & GitLab CI-CD...> .gitlab-ci.yml définit un ensemble de jobs (commandes) et de contraintes par stages ( {} == pipeline) > Le pipeline est déclenché à chaque](https://reader035.vdocuments.pub/reader035/viewer/2022062602/5ed08d6f879769460e29fd54/html5/thumbnails/13.jpg)
�13
Demo Time - 1st f(x)
#devcon2018 @k33g_orgDevCon
![Page 14: #DevCon OpenFaaS & GitLab CI-CD...> .gitlab-ci.yml définit un ensemble de jobs (commandes) et de contraintes par stages ( {} == pipeline) > Le pipeline est déclenché à chaque](https://reader035.vdocuments.pub/reader035/viewer/2022062602/5ed08d6f879769460e29fd54/html5/thumbnails/14.jpg)
![Page 15: #DevCon OpenFaaS & GitLab CI-CD...> .gitlab-ci.yml définit un ensemble de jobs (commandes) et de contraintes par stages ( {} == pipeline) > Le pipeline est déclenché à chaque](https://reader035.vdocuments.pub/reader035/viewer/2022062602/5ed08d6f879769460e29fd54/html5/thumbnails/15.jpg)
�15
GitLab + GitLab CI Cycle de vie projet
#devcon2018 @k33g_orgDevCon
![Page 16: #DevCon OpenFaaS & GitLab CI-CD...> .gitlab-ci.yml définit un ensemble de jobs (commandes) et de contraintes par stages ( {} == pipeline) > Le pipeline est déclenché à chaque](https://reader035.vdocuments.pub/reader035/viewer/2022062602/5ed08d6f879769460e29fd54/html5/thumbnails/16.jpg)
�16
Plan Create
#devcon2018 @k33g_orgDevCon
![Page 17: #DevCon OpenFaaS & GitLab CI-CD...> .gitlab-ci.yml définit un ensemble de jobs (commandes) et de contraintes par stages ( {} == pipeline) > Le pipeline est déclenché à chaque](https://reader035.vdocuments.pub/reader035/viewer/2022062602/5ed08d6f879769460e29fd54/html5/thumbnails/17.jpg)
�17
Manage Plan Create Verify Package Release Configure Monitor Secure
#devcon2018 @k33g_orgDevCon
😍 😍Continuous Integration Continuous Delivery
Review Apps
![Page 18: #DevCon OpenFaaS & GitLab CI-CD...> .gitlab-ci.yml définit un ensemble de jobs (commandes) et de contraintes par stages ( {} == pipeline) > Le pipeline est déclenché à chaque](https://reader035.vdocuments.pub/reader035/viewer/2022062602/5ed08d6f879769460e29fd54/html5/thumbnails/18.jpg)
Project life cycle
#devcon2018 @k33g_orgDevCon
![Page 19: #DevCon OpenFaaS & GitLab CI-CD...> .gitlab-ci.yml définit un ensemble de jobs (commandes) et de contraintes par stages ( {} == pipeline) > Le pipeline est déclenché à chaque](https://reader035.vdocuments.pub/reader035/viewer/2022062602/5ed08d6f879769460e29fd54/html5/thumbnails/19.jpg)
Feature Flow
#devcon2018 @k33g_orgDevCon
![Page 20: #DevCon OpenFaaS & GitLab CI-CD...> .gitlab-ci.yml définit un ensemble de jobs (commandes) et de contraintes par stages ( {} == pipeline) > Le pipeline est déclenché à chaque](https://reader035.vdocuments.pub/reader035/viewer/2022062602/5ed08d6f879769460e29fd54/html5/thumbnails/20.jpg)
�20
GitLab Runners
✨
#devcon2018 @k33g_orgDevCon
![Page 21: #DevCon OpenFaaS & GitLab CI-CD...> .gitlab-ci.yml définit un ensemble de jobs (commandes) et de contraintes par stages ( {} == pipeline) > Le pipeline est déclenché à chaque](https://reader035.vdocuments.pub/reader035/viewer/2022062602/5ed08d6f879769460e29fd54/html5/thumbnails/21.jpg)
GitLab Server
Runner Server 0..n Runner process Even your Laptop
0..n Runner process
#devcon2018 @k33g_orgDevCon
![Page 22: #DevCon OpenFaaS & GitLab CI-CD...> .gitlab-ci.yml définit un ensemble de jobs (commandes) et de contraintes par stages ( {} == pipeline) > Le pipeline est déclenché à chaque](https://reader035.vdocuments.pub/reader035/viewer/2022062602/5ed08d6f879769460e29fd54/html5/thumbnails/22.jpg)
> Ajouter un fichier .gitlab-ci.yml à la racine du projet
> .gitlab-ci.yml définit un ensemble de jobs (commandes) et
de contraintes par stages ( {} == pipeline)
> Le pipeline est déclenché à chaque commit ou push et
s’exécute dans le runner
> Et .gitlab-ci.yml explique au(x) Runner(s) ce qu’il faut faire
.gitlab-ci.yml
#devcon2018 @k33g_orgDevCon
![Page 23: #DevCon OpenFaaS & GitLab CI-CD...> .gitlab-ci.yml définit un ensemble de jobs (commandes) et de contraintes par stages ( {} == pipeline) > Le pipeline est déclenché à chaque](https://reader035.vdocuments.pub/reader035/viewer/2022062602/5ed08d6f879769460e29fd54/html5/thumbnails/23.jpg)
stages: - ▶play - 🦄tests - 📦generate
-addition: only: - master stage: ▶play tags: - mini-runner script: - npm start add 40 2
✅🆘tests: stage: 🦄tests tags: - mini-runner script: - npm test
#devcon2018 @k33g_orgDevCon
![Page 24: #DevCon OpenFaaS & GitLab CI-CD...> .gitlab-ci.yml définit un ensemble de jobs (commandes) et de contraintes par stages ( {} == pipeline) > Le pipeline est déclenché à chaque](https://reader035.vdocuments.pub/reader035/viewer/2022062602/5ed08d6f879769460e29fd54/html5/thumbnails/24.jpg)
Commit / push / merge
GitLab Server
Runner Server 0..n Runner process
Poll
Read .gitlab-ci.yml
Execute
Test
Build
Deploy
etc…
1
2
3
4
5
#devcon2018 @k33g_orgDevCon
![Page 25: #DevCon OpenFaaS & GitLab CI-CD...> .gitlab-ci.yml définit un ensemble de jobs (commandes) et de contraintes par stages ( {} == pipeline) > Le pipeline est déclenché à chaque](https://reader035.vdocuments.pub/reader035/viewer/2022062602/5ed08d6f879769460e29fd54/html5/thumbnails/25.jpg)
# Install GitLab Runner curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.deb.sh | sudo bash apt-get install -y gitlab-runner
# Add entries to hosts file: echo "" >> /etc/hosts echo '#{GITLAB_IP} #{GITLAB_DOMAIN}' >> /etc/hosts echo "" >> /etc/hosts
# Registering GitLab Runner gitlab-runner register --non-interactive \ --url "http://#{GITLAB_DOMAIN}/" \ --name "shell_runner_tests_nodejs" \ --registration-token #{CI_REGISTRATION_TOKEN} \ --tag-list “#{OPENFAAS_RUNNER_TAG}" \ --executor shell
#devcon2018 @k33g_orgDevCon
Installation d’un Runner
![Page 26: #DevCon OpenFaaS & GitLab CI-CD...> .gitlab-ci.yml définit un ensemble de jobs (commandes) et de contraintes par stages ( {} == pipeline) > Le pipeline est déclenché à chaque](https://reader035.vdocuments.pub/reader035/viewer/2022062602/5ed08d6f879769460e29fd54/html5/thumbnails/26.jpg)
GitLab Server VM
Runner VM 1 shell runner
Runner VM 1 shell runner
+ Docker CLI + OpenFaas CLI
OpenFaaS Server VM Docker Swarm
Docker Registry
https://gitlab.com/tanuki-tools/vagrant-files
#devcon2018 @k33g_orgDevCon
![Page 27: #DevCon OpenFaaS & GitLab CI-CD...> .gitlab-ci.yml définit un ensemble de jobs (commandes) et de contraintes par stages ( {} == pipeline) > Le pipeline est déclenché à chaque](https://reader035.vdocuments.pub/reader035/viewer/2022062602/5ed08d6f879769460e29fd54/html5/thumbnails/27.jpg)
�27
https://www.openfaas.com
Demo(s) Time CI-CD with OpenFaaS
#devcon2018 @k33g_orgDevCon
![Page 28: #DevCon OpenFaaS & GitLab CI-CD...> .gitlab-ci.yml définit un ensemble de jobs (commandes) et de contraintes par stages ( {} == pipeline) > Le pipeline est déclenché à chaque](https://reader035.vdocuments.pub/reader035/viewer/2022062602/5ed08d6f879769460e29fd54/html5/thumbnails/28.jpg)
![Page 29: #DevCon OpenFaaS & GitLab CI-CD...> .gitlab-ci.yml définit un ensemble de jobs (commandes) et de contraintes par stages ( {} == pipeline) > Le pipeline est déclenché à chaque](https://reader035.vdocuments.pub/reader035/viewer/2022062602/5ed08d6f879769460e29fd54/html5/thumbnails/29.jpg)
�29
Merci 😍 & Questions
#devcon2018 @k33g_orgDevCon