Quelles sont les particularités et les avantages pour pouvoir livrer des application web python dans un cluster OpenShift (qui a du Kubernetes en dessous). Nous verrons le mécanismes suivants : * s2image (source to image) dans openshift : comment construire l'application simplement avec un requirements.txt et du WSGI standard * Comment livrer du django avec Postgresql * Comment livrer une application CubicWeb * Les mécanismes de sécurité associés * Les URL automatiques pour tester des contributions ou des branches nommées * Parallèles avec repo2docker https://github.com/jupyter/repo2docker Nous exposerons aussi les avantages et inconvénients de déployer des applications web python sur un cluster type openshift ou kubernetes. https://www.openshift.org/ https://kubernetes.io/ https://github.com/openshift/source-to-image
Capitole du Libre 2018 - Déployer des applications python dans un cluster OpenShift
1. Déployer des applicationsDéployer des applications
Python dans un clusterPython dans un cluster
OpenShiftOpenShift
Capitole du Libre 2018Capitole du Libre 2018
Arthur Lutz (Logilab)Arthur Lutz (Logilab)
1
4. OpenShift Origin / OKDOpenShift Origin / OKD
https://www.openshift.org/
https://www.okd.io/
OKD is a distribution of Kubernetes optimized for continuous
application development and multi-tenant deployment. OKD adds
developer and operations-centric tools on top of Kubernetes
to enable rapid application development, easy deployment
and scaling, and long-term lifecycle maintenance for small
and large teams.
4
7. Nice to haveNice to have
Souvent possible aussi en docker/kubernetes mais
facilité dans openshift
Terminal dans le navigateur
Console de debug quand un conteneur ne
démarre pas
Logs des builds partageables par URL
7
8. s2images2image
repose sur un requirements.txt
repose sur une configuration wsgi (par défaut
gunicorn)
configurable au build et au run (ENV)
,
Python 3.5, 3.4, 3.3, et 2.7
Documentation pour Python source
8
9. Django on openshiftDjango on openshift
Comment livrer du django avec Postgresql
https://github.com/sclorg/django-ex
https://blog.openshift.com/migrating-django-
applications-openshift-3/
9
10. s2image - Djangos2image - Django
Quelques options spécifiques aux particularités
de Django
DISABLE_COLLECTSTATIC
DISABLE_MIGRATE
10
11. CubicWeb sur OpenShiftCubicWeb sur OpenShift
Comment livrer une application CubicWeb
.s2i/environment
APP_MODULE=cubicweb.pyramid:wsgi_application
.s2i/bin/run
script bash avec `cubicweb-ctl create` et `cubicweb-ctl db-
(backporté depuis nos déploiements cubicweb dans docker)
11
12. REX - en dehors desREX - en dehors des
demos/POCdemos/POC
Optimisations des build (eg. numpy)
ajout de devpi local, utilisation des wheel
Rollback if fails - OK pour logiciel, que faire pour
les données ?
Courbe d’apprentissage docker / conteneurs
12
13. Sécurité & OpenShiftSécurité & OpenShift
metadonnées ajoutées aux images docker
user inexistant dans le conteneur (attention à
getpass.getuser())
possibilité de désactiver (mais pas forcément
trivial)
13
14. Self Service URLSSelf Service URLS
Les URL automatiques pour tester des
contributions
S’inspirer de workflow type ou
( et )
netifly funkwhale
merge request site
14
15. Parallèles avecParallèles avec jupyterjupyter
inspirés des approches PAAS type Heroku
“Turn git repositories into Jupyter enabled
Docker Images”
voir
repo2docker
binder
15
17. Avantages OpenShiftAvantages OpenShift
Livraison continue
UI / UX pour appréhender des concepts
nouveaux
Ecosystème d’exemples de deploiement dont on
peut s’inspirer (comme coté kubernetes)helm
17
18. Avantages OpenShiftAvantages OpenShift
Python first-class citizen
Healthchecks & maintien du service (SRE)
Couplage automatique avec prometheus,
istio, grafana
Commencer avec l’interface web, continuer avec
les outils en ligne de commande
18
19. Inconvénients OpenShiftInconvénients OpenShift
OpenShift difficile à installer et à administrer
Fortement orienté RedHat / CentOS / IBM
Documentation éparpillée et sur plusieurs
versions
Ecosystème payant d’images RedHat (eg.
)
Potentiellement des gros template en yaml
postgis
19