Déployer des applicationsDéployer des applications
Python dans un clusterPython dans un cluster
OpenShiftOpenShift
PyConFR 2018PyConFR 2018
Arthur Lutz (Logilab)Arthur Lutz (Logilab)
1
Introduction /meIntroduction /me
Arthur Lutz
@arthurlutz
@arthur@social.logilab.org
Logilab
Python Nantes
2
AvertissementAvertissement
Ne brûlez pas les étapes
docker
docker-compose
coreos/rancher/docker swarm
openshift
kubernetes ?
3
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
OpenShift - fonctionnalitésOpenShift - fonctionnalités
5
minishiftminishift
Un “cluster” openshift, d’un noeud dans une
machine virtuelle !
https://github.com/MiniShift/minishift
6
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
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
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
s2image - Djangos2image - Django
Quelques options spécifiques aux particularités
de Django
DISABLE_COLLECTSTATIC
DISABLE_MIGRATE
10
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
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
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
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
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
16
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
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
Inconvénients OpenShiftInconvénients OpenShift
OpenShift difficile à installer et à administrer
Fortement orienté RedHat / CentOS
Documentation éparpillée et sur plusieurs
versions
Ecosystème payant d’images RedHat (eg.
)
Potentiellement des gros template en yaml
postgis
19
Logilab recrute !Logilab recrute !
20
FinFin
Merci de votre attention
Des questions ? Des compléments ?
21

Pyconfr2018 deploy des application python dans un cluster open shift

  • 1.
    Déployer des applicationsDéployerdes applications Python dans un clusterPython dans un cluster OpenShiftOpenShift PyConFR 2018PyConFR 2018 Arthur Lutz (Logilab)Arthur Lutz (Logilab) 1
  • 2.
    Introduction /meIntroduction /me ArthurLutz @arthurlutz @arthur@social.logilab.org Logilab Python Nantes 2
  • 3.
    AvertissementAvertissement Ne brûlez pasles étapes docker docker-compose coreos/rancher/docker swarm openshift kubernetes ? 3
  • 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
  • 5.
  • 6.
    minishiftminishift Un “cluster” openshift,d’un noeud dans une machine virtuelle ! https://github.com/MiniShift/minishift 6
  • 7.
    Nice to haveNiceto 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 unrequirements.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 openshiftDjangoon 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 OpenShiftCubicWebsur 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 - endehors 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 URLSSelfService 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 avecjupyterjupyter inspirés des approches PAAS type Heroku “Turn git repositories into Jupyter enabled Docker Images” voir repo2docker binder 15
  • 16.
  • 17.
    Avantages OpenShiftAvantages OpenShift Livraisoncontinue 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 Pythonfirst-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 OpenShiftdifficile à installer et à administrer Fortement orienté RedHat / CentOS Documentation éparpillée et sur plusieurs versions Ecosystème payant d’images RedHat (eg. ) Potentiellement des gros template en yaml postgis 19
  • 20.
  • 21.
    FinFin Merci de votreattention Des questions ? Des compléments ? 21