SlideShare una empresa de Scribd logo
1 de 49
Descargar para leer sin conexión
Developing in Python
on Red Hat platforms
Nick Coghlan
Senior Software Engineer
Graham Dumpleton
Developer Advocate for OpenShift
June 28th
2016
Using Python on Red Hat Platforms
● Python for Network Services
● Python for Applications
● Python for System Administration
Current Transitions in the Python Ecosystem
● Migration to Python 3
● Modernizing the Python 2.7 Network Security Stack
● Defaulting to HTTPS Certificate Verification
Python for Network Services
$ oc new-app https://gitlab.com/osevg/python-django-modwsgi.git
--> Found image 772dc19 (4 weeks old) in image stream "python" in project "openshift" under tag "3.4" for "python"
Python 3.4
----------
Platform for building and running Python 3.4 applications
Tags: builder, python, python34, rh-python34
* The source repository appears to match: python
* A source build using source code from https://gitlab.com/osevg/python-django-modwsgi.git will be created
* The resulting image will be pushed to image stream "python-django-modwsgi:latest"
* This image will be deployed in deployment config "python-django-modwsgi"
* Port 8080/tcp will be load balanced by service "python-django-modwsgi"
* Other containers can access this service through the hostname "python-django-modwsgi"
--> Creating resources with label app=python-django-modwsgi ...
imagestream "python-django-modwsgi" created
buildconfig "python-django-modwsgi" created
deploymentconfig "python-django-modwsgi" created
service "python-django-modwsgi" created
--> Success
Build scheduled, use 'oc logs -f bc/python-django-modwsgi' to track its progress.
Run 'oc status' to view your app.
$ oc expose svc/python-django-modwsgi
route "python-django-modwsgi" exposed
Source to Image (S2I)
https://github.com/openshift/source-to-image
$ s2i build https://gitlab.com/osevg/python-django-modwsgi.git centos/python-34-centos7 python-django-modwsgi
I0610 10:02:07.422470 84805 docker.go:352] Image "centos/python-34-centos7:latest" not available locally, pulling ...
I0610 10:02:36.501637 84805 clone.go:32] Downloading "https://gitlab.com/osevg/python-django-modwsgi.git" ...
I0610 10:02:38.831859 84805 install.go:251] Using "assemble" installed from "image:///usr/libexec/s2i/assemble"
I0610 10:02:38.831913 84805 install.go:251] Using "run" installed from "image:///usr/libexec/s2i/run"
I0610 10:02:38.831943 84805 install.go:251] Using "save-artifacts" installed from "image:///usr/libexec/s2i/save-artifacts"
I0610 10:02:38.832495 84805 environment.go:60] Setting 1 environment variables provided by environment file in sources
---> Copying application source ...
---> Installing dependencies ...
...
---> Collecting Django static files ...
I0610 10:03:00.876021 84805 environment.go:60] Setting 1 environment variables provided by environment file in sources
$ docker run --rm -p 8080:8080 python-django-modwsgi
---> Running application from Python script (app.py) ...
[Fri Jun 10 00:07:33.580013 2016] [mpm_event:notice] [pid 1:tid 139758878566464] AH00489: Apache/2.4.6 (CentOS)
mod_wsgi/4.5.2 Python/3.4.2 configured -- resuming normal operations
[Fri Jun 10 00:07:33.580149 2016] [core:notice] [pid 1:tid 139758878566464] AH00094: Command line: 'httpd (mod_wsgi-
express) -f /tmp/mod_wsgi-localhost:8080:1001/httpd.conf -D MOD_WSGI_MULTIPROCESS -D
MOD_WSGI_WITH_PROXY_HEADERS -D MOD_WSGI_MPM_ENABLE_EVENT_MODULE -D
MOD_WSGI_MPM_EXISTS_EVENT_MODULE -D MOD_WSGI_MPM_EXISTS_WORKER_MODULE -D
MOD_WSGI_MPM_EXISTS_PREFORK_MODULE -D FOREGROUND'
Docker Base Images (S2I Enabled)
● RHEL 7
– Python 2.7 → registry.access.redhat.com/rhscl/python-27-rhel7
– Python 3.3 → registry.access.redhat.com/openshift3/python-33-rhel7
– Python 3.4 → registry.access.redhat.com/rhscl/python-34-rhel7
● CentOS 7
– Python 2.7 → docker.io/centos/python-27-centos7
– Python 3.3 → docker.io/openshift/python-33-centos7
– Python 3.4 → docker.io/centos/python-34-centos7
Migrating from OpenShift 2 to 3
● Converting of existing applications.
● Backward compatible S2I builder.
● Guidelines for porting applications.
● Templates to aid in porting applications.
Python for Applications
Why *Not* Containers?
● Containers are the recommended option for network services
● However:
– Container support for rich desktop applications is currently limited
– Container runtime may impose unwanted overhead on dedicated systems
– Containers may give more isolation than is wanted
– Applications may require non-trivial modification to run as a privileged container
● Software Collections aim to offer “minimum viable runtime isolation”
– Add new executable directories to front of PATH
– Add new shared library directories to front of LD_LIBRARY_PATH
Why Software Collections for Python?
● Use newer Python runtimes without impacting system components
● Use a common Python runtime across multiple operating system versions
● Python 3 for Red Hat Enterprise Linux 6 & 7!
Red Hat Software Collections
● Platforms
– Red Hat Enterprise Linux 6 & Red Hat Enterprise Linux 7
– CentOS 6 and 7 (via softwarecollections.org)
– Basis for OpenShift language runtimes
● Available versions (as of RHSCL 2.2)
– Python 2.7.8 (+ selected backports)
– Python 3.5.1 (+ selected backports)
– Python 3.4.2 (+ selected backports)
– Python 3.3.2 (+ selected backports)
Python Virtual Environments
● Software Collections allow multiple runtimes to share a system without conflicting
● Virtual environments allow multiple Python applications to share a runtime
● Low or no runtime overhead: just add/replace directories in Python’s import path
● Cleanly isolate application dependencies from platform components
● Dependencies within the environment managed with pip
● Created via:
– python3 -m venv (Python 3.4+)
– virtualenv (Python 2.7, Python 3.x)
● Not included in the Red Hat Enterprise Linux System Python
Constructing a Layered Application
● Base platform (via system package manager):
– Operating system (e.g. kernel, C runtime)
– Language runtime (from Software Collections)
– Other external dependencies (e.g. OpenSSL)
● Modify shared library loading (via enabled Software Collection)
● Modify Python import configuration (via virtualenv or standard library’s venv)
● Inside the virtual environment:
– Application dependencies (managed via pip)
– Application source code (managed via pip, or direct from source control)
Deploying a Layered Application (1)
● Application RPM with generated artifacts in SRPM:
– Create full installation in representative environment
– Bundle entire virtualenv and other desired components into SRPM
– Also include scripts to appropriately activate SCL and virtual environment
● Some generated files will end up in the SRPM
– Pre-compiled Python files
– Executable wrappers for pip managed Python scripts
Deploying a Layered Application (2)
● Application RPM with source-only SRPM:
– SRPM contains source for application and any application level dependencies
– virtual environment created and configured during RPM build process
● Not yet fully supported in pip
– some pip generated metadata will incorrectly include RPM buildroot paths
– shouldn’t matter for most RPM based deployment use cases
Managing Application Dependencies
● The Python Package Index is not an App Store!
● Designed to minimize barriers to publication:
– No pre-publication review
– Publisher Terms of Service ensure right to redistribute, not to run or modify
– Publishers may delete (but not replace) previously published versions
● Recommendation: use caching proxies and a component review process
– Commercially supported options: JFrog Artifactory, Sonatype Nexus
– Community/self-supported options: devpi, Python plugin for Pulp
– Check licensing, export restrictions, project governance, ...
● Security monitoring & response also becomes a dev team responsibility!
Python for System Administration
Why *Not* Software Collections?
● Containers are the recommended option for network services
● Software Collections are recommended for applications
● However:
– some platform bindings are only installed in the main System Python
– the System Python is available on all systems by default
● Some system administration tasks are best handled with the System Python
System Python
● Red Hat Enterprise Linux 6
– Python 2.6.6 (+ selected backports)
● Red Hat Enterprise Linux 7
– Python 2.7.5 (+ selected backports)
● Fedora 23 and later
– Recent Python 3.x (rebases rather than backports)
– Recent Python 2.7 available as system package, may not have all system bindings
Caveats and Challenges
● Restricted to features of System Python on oldest supported platform
● Community maintained libraries and frameworks often require newer runtimes
● Conflict between supporting:
– Red Hat Enterprise Linux 5 (Python 2.4 lacks Py3 forward compatibility features)
– Fedora 23+ (Python 3.x as System Python)
● May want to consider higher level system abstractions like Ansible
Migration to Python 3
Python 2.7 Support Timeline
● Anticipated community end-of-life for Python 2.7 in January 2020
– https://docs.python.org/devguide/#status-of-python-branches
● Supported in Red Hat Enterprise Linux 7 until June 2024
– https://access.redhat.com/support/policy/updates/errata
● Anticipate community project support for Python 2 declining sharply post-2020
– Already seeing new community projects starting as Python 3 only
Python 3 Migration Techniques
● General “refactoring enablement” techniques:
– automated regression testing frameworks
– static structural analysis tools
● Recommended approach for applications and network services:
– Migrate to the Python 2.7 SCL or OpenShift image (if using the system Python)
– Follow https://docs.python.org/3/howto/pyporting.html
– Migrate to the latest Python 3.x SCL or OpenShift image
● Recommended approach for system administration tools:
– Consider using Fedora 23+ to look for potential pain points
Python 3 Migration Notes
● Common subset of Python 2.6+ and 3.3+ is quite large
● Many deprecated idioms can be updated automatically
● Key data & workload driven pain points
– Explicit bytes/unicode separation
– Removal of implicit cross-type comparisons
● Automated refactoring and compatibility testing tools continue to improve
Modernizing the Python 2.7
Network Security Stack
New Security Features in Python 2.7
● https://docs.python.org/2/whatsnew/2.7.html#pep-466-network-security-enhancements-
for-python-2-7
● Constant-time comparison (hmac.compare_digest())
● Password storage hashing (hashlib.pbkdf2_hmac())
● ssl module rebase on Python 3.4 implementation
– Server Name Indication support
– SSLContext for SSL configuration
– Configuration support for TLS 1.x
– Access to system certificate stores
– ...
Availability in Red Hat Products
● Red Hat Enterprise Linux 7.2
– backported to System Python
● Red Hat Software Collections 2.0+
– default in Python 3.4
● Red Hat Software Collections 2.2+
– backported to Python 2.7
– default in Python 3.5
Third Party Module Compatibility
● ssl module rebase changed several private implementation details
● Some third party libraries had used internal APIs instead of requesting public ones
● Backport offers greater compatibility than upstream rebase
● Testing before upgrading is still recommended
● Report problems through the usual channels
Defaulting to HTTPS
Certificate Verification
What does “HTTPS” Mean?
● Historical Python standard library answer:
– “HTTP connection with SSL/TLS enabled”
– didn’t check certificate validity or remote host identification
● Modern Python standard library answer:
– “What web browsers say it means”
– still a HTTP connection with SSL/TLS enabled
– also checks for certificate validity
– also checks remote host identification against system certificate store
Verifying HTTPS Certificates
● https://docs.python.org/2/whatsnew/2.7.html#pep-476-enabling-certificate-verification-by-
default-for-stdlib-http-clients
● Default behavior of standard library HTTPS clients in:
– Python 2.7.9+
– Python 3.4.3+
– Python 3.5.0+
● Turns a silent security failure into a noisy connection failure
● Potential problems:
– Self-signed internal certificates
– Expired certificates
– Internal CAs not configured on client system
On Red Hat Platforms
● File-based opt-in:
– Config setting in /etc/python/cert-verification.cfg
– Red Hat Enterprise Linux 7.2+ System Python
– Red Hat Software Collections 2.2+ Python 2.7 collection
● Default behavior:
– Red Hat Software Collections Python 3.5 collection
● Details in Knowledge Base
– https://access.redhat.com/articles/2039753
Future Configuration Options
● https://docs.python.org/2/whatsnew/2.7.html#pep-493-https-verification-migration-tools
-for-python-2-7
● Adds new Python 2.7 specific configuration options
– ssl._https_verify_certificates() API
– PYTHONHTTPSVERIFY environment variable
● Can be used to revert Python 2.7.12+ to Python 2.7.8 behavior
● Python 2.7 only, not supported by any version of Python 3
Resources
OpenShift
● OpenShift
– https://www.openshift.com
● OpenShift Online Preview
– https://www.openshift.com/devpreview/register.html
● OpenShift Container Development Kit
– https://developers.redhat.com/products/cdk/overview/
● OpenShift Origin
– https://www.openshift.org
● OpenShift Origin All-In-One VM
– https://www.openshift.org/vm
Python
● Red Hat Software Collections
– http://developers.redhat.com/products/softwarecollections/
– Access: https://access.redhat.com/solutions/472793
● Software Collections Upstream
– https://wiki.centos.org/SpecialInterestGroup/SCLo
– https://www.softwarecollections.org
Related DevNation 2016 Sessions
● OpenShift
– OpenShift Enterprise 3 walk-through with Docker and Kubernetes
● Container Development Kit
– CDK 2.0: Docker, Kubernetes, and OSE on your desk
– Container development for command line developers
● Software Collections
– Software Collections: Easy access to the cutting edge
Developing In Python On Red Hat Platforms (Nick Coghlan & Graham Dumpleton)

Más contenido relacionado

La actualidad más candente

Code review and automated testing for Puppet code
Code review and automated testing for Puppet codeCode review and automated testing for Puppet code
Code review and automated testing for Puppet codewzzrd
 
Spring Boot to Quarkus: A real app migration experience | DevNation Tech Talk
Spring Boot to Quarkus: A real app migration experience | DevNation Tech TalkSpring Boot to Quarkus: A real app migration experience | DevNation Tech Talk
Spring Boot to Quarkus: A real app migration experience | DevNation Tech TalkRed Hat Developers
 
2 Linux Container and Docker
2 Linux Container and Docker2 Linux Container and Docker
2 Linux Container and DockerFabio Fumarola
 
Build a PaaS with OpenShift Origin
Build a PaaS with OpenShift OriginBuild a PaaS with OpenShift Origin
Build a PaaS with OpenShift OriginSteven Pousty
 
The (mutable) config management showdown
The (mutable) config management showdownThe (mutable) config management showdown
The (mutable) config management showdownBob Killen
 
Modern Java Workshop
Modern Java WorkshopModern Java Workshop
Modern Java WorkshopSimon Ritter
 
An introduction to maven gradle and sbt
An introduction to maven gradle and sbtAn introduction to maven gradle and sbt
An introduction to maven gradle and sbtFabio Fumarola
 
Automated Image Builds in OpenShift and Kubernetes
Automated Image Builds in OpenShift and KubernetesAutomated Image Builds in OpenShift and Kubernetes
Automated Image Builds in OpenShift and KubernetesGraham Dumpleton
 
Performance Profiling Tools and Tricks
Performance Profiling Tools and TricksPerformance Profiling Tools and Tricks
Performance Profiling Tools and TricksPhase2
 
Open shift enterprise 3.1 paas on kubernetes
Open shift enterprise 3.1   paas on kubernetesOpen shift enterprise 3.1   paas on kubernetes
Open shift enterprise 3.1 paas on kubernetesSamuel Terburg
 
Bulding a reactive game engine with Spring 5 & Couchbase
Bulding a reactive game engine with Spring 5 & CouchbaseBulding a reactive game engine with Spring 5 & Couchbase
Bulding a reactive game engine with Spring 5 & CouchbaseAlex Derkach
 
Ansible, integration testing, and you.
Ansible, integration testing, and you.Ansible, integration testing, and you.
Ansible, integration testing, and you.Bob Killen
 
Simple tweaks to get the most out of your jvm
Simple tweaks to get the most out of your jvmSimple tweaks to get the most out of your jvm
Simple tweaks to get the most out of your jvmJamie Coleman
 
Openshift: The power of kubernetes for engineers - Riga Dev Days 18
Openshift: The power of kubernetes for engineers - Riga Dev Days 18Openshift: The power of kubernetes for engineers - Riga Dev Days 18
Openshift: The power of kubernetes for engineers - Riga Dev Days 18Jorge Morales
 
AQAvit: Vitality through Testing
AQAvit: Vitality through TestingAQAvit: Vitality through Testing
AQAvit: Vitality through TestingShelley Lambert
 
Docker and Go: why did we decide to write Docker in Go?
Docker and Go: why did we decide to write Docker in Go?Docker and Go: why did we decide to write Docker in Go?
Docker and Go: why did we decide to write Docker in Go?Jérôme Petazzoni
 
Pluggable Infrastructure with CI/CD and Docker
Pluggable Infrastructure with CI/CD and DockerPluggable Infrastructure with CI/CD and Docker
Pluggable Infrastructure with CI/CD and DockerBob Killen
 
OpenDayLight (ODL) Project
OpenDayLight (ODL) ProjectOpenDayLight (ODL) Project
OpenDayLight (ODL) ProjectVahid Sadri
 

La actualidad más candente (20)

Code review and automated testing for Puppet code
Code review and automated testing for Puppet codeCode review and automated testing for Puppet code
Code review and automated testing for Puppet code
 
Spring Boot to Quarkus: A real app migration experience | DevNation Tech Talk
Spring Boot to Quarkus: A real app migration experience | DevNation Tech TalkSpring Boot to Quarkus: A real app migration experience | DevNation Tech Talk
Spring Boot to Quarkus: A real app migration experience | DevNation Tech Talk
 
2 Linux Container and Docker
2 Linux Container and Docker2 Linux Container and Docker
2 Linux Container and Docker
 
Build a PaaS with OpenShift Origin
Build a PaaS with OpenShift OriginBuild a PaaS with OpenShift Origin
Build a PaaS with OpenShift Origin
 
The (mutable) config management showdown
The (mutable) config management showdownThe (mutable) config management showdown
The (mutable) config management showdown
 
Modern Java Workshop
Modern Java WorkshopModern Java Workshop
Modern Java Workshop
 
An introduction to maven gradle and sbt
An introduction to maven gradle and sbtAn introduction to maven gradle and sbt
An introduction to maven gradle and sbt
 
Automated Image Builds in OpenShift and Kubernetes
Automated Image Builds in OpenShift and KubernetesAutomated Image Builds in OpenShift and Kubernetes
Automated Image Builds in OpenShift and Kubernetes
 
3 Git
3 Git3 Git
3 Git
 
Performance Profiling Tools and Tricks
Performance Profiling Tools and TricksPerformance Profiling Tools and Tricks
Performance Profiling Tools and Tricks
 
Open shift enterprise 3.1 paas on kubernetes
Open shift enterprise 3.1   paas on kubernetesOpen shift enterprise 3.1   paas on kubernetes
Open shift enterprise 3.1 paas on kubernetes
 
Atomic CLI scan
Atomic CLI scanAtomic CLI scan
Atomic CLI scan
 
Bulding a reactive game engine with Spring 5 & Couchbase
Bulding a reactive game engine with Spring 5 & CouchbaseBulding a reactive game engine with Spring 5 & Couchbase
Bulding a reactive game engine with Spring 5 & Couchbase
 
Ansible, integration testing, and you.
Ansible, integration testing, and you.Ansible, integration testing, and you.
Ansible, integration testing, and you.
 
Simple tweaks to get the most out of your jvm
Simple tweaks to get the most out of your jvmSimple tweaks to get the most out of your jvm
Simple tweaks to get the most out of your jvm
 
Openshift: The power of kubernetes for engineers - Riga Dev Days 18
Openshift: The power of kubernetes for engineers - Riga Dev Days 18Openshift: The power of kubernetes for engineers - Riga Dev Days 18
Openshift: The power of kubernetes for engineers - Riga Dev Days 18
 
AQAvit: Vitality through Testing
AQAvit: Vitality through TestingAQAvit: Vitality through Testing
AQAvit: Vitality through Testing
 
Docker and Go: why did we decide to write Docker in Go?
Docker and Go: why did we decide to write Docker in Go?Docker and Go: why did we decide to write Docker in Go?
Docker and Go: why did we decide to write Docker in Go?
 
Pluggable Infrastructure with CI/CD and Docker
Pluggable Infrastructure with CI/CD and DockerPluggable Infrastructure with CI/CD and Docker
Pluggable Infrastructure with CI/CD and Docker
 
OpenDayLight (ODL) Project
OpenDayLight (ODL) ProjectOpenDayLight (ODL) Project
OpenDayLight (ODL) Project
 

Destacado

High Performance Data Storage in a Microservices Environment
High Performance Data Storage in a Microservices EnvironmentHigh Performance Data Storage in a Microservices Environment
High Performance Data Storage in a Microservices EnvironmentRed Hat Developers
 
Containers: Under The Hood (Vincent Batts)
Containers: Under The Hood (Vincent Batts)Containers: Under The Hood (Vincent Batts)
Containers: Under The Hood (Vincent Batts)Red Hat Developers
 
MicroServices for Java Developers
MicroServices for Java Developers MicroServices for Java Developers
MicroServices for Java Developers Red Hat Developers
 
Microservices with Docker, Kubernetes, and Jenkins
Microservices with Docker, Kubernetes, and JenkinsMicroservices with Docker, Kubernetes, and Jenkins
Microservices with Docker, Kubernetes, and JenkinsRed Hat Developers
 
Ultimate DevOps: OpenShift Dedicated With CloudBees Jenkins Platform (Andy Pe...
Ultimate DevOps: OpenShift Dedicated With CloudBees Jenkins Platform (Andy Pe...Ultimate DevOps: OpenShift Dedicated With CloudBees Jenkins Platform (Andy Pe...
Ultimate DevOps: OpenShift Dedicated With CloudBees Jenkins Platform (Andy Pe...Red Hat Developers
 
Putting The 'M' In MBaaS—Red Hat Mobile Client Development Platform (Jay Balu...
Putting The 'M' In MBaaS—Red Hat Mobile Client Development Platform (Jay Balu...Putting The 'M' In MBaaS—Red Hat Mobile Client Development Platform (Jay Balu...
Putting The 'M' In MBaaS—Red Hat Mobile Client Development Platform (Jay Balu...Red Hat Developers
 
CDK 2.0: Docker, Kubernetes, And OSE On Your Desk (Langdon White)
CDK 2.0: Docker, Kubernetes, And OSE On Your Desk (Langdon White)CDK 2.0: Docker, Kubernetes, And OSE On Your Desk (Langdon White)
CDK 2.0: Docker, Kubernetes, And OSE On Your Desk (Langdon White)Red Hat Developers
 
Write Powerful Javascript Modules To Make Your Apps DRY (Brian Leathem)
Write Powerful Javascript Modules To Make Your Apps DRY (Brian Leathem)Write Powerful Javascript Modules To Make Your Apps DRY (Brian Leathem)
Write Powerful Javascript Modules To Make Your Apps DRY (Brian Leathem)Red Hat Developers
 
Kubernetes for Java Developers
 Kubernetes for Java Developers Kubernetes for Java Developers
Kubernetes for Java DevelopersRed Hat Developers
 
Agile Is A Four-Letter Word (Jen Krieger)
Agile Is A Four-Letter Word (Jen Krieger)Agile Is A Four-Letter Word (Jen Krieger)
Agile Is A Four-Letter Word (Jen Krieger)Red Hat Developers
 
Developer Meet Designer (Andres Galante & Brian Leathem)
Developer Meet Designer (Andres Galante & Brian Leathem)Developer Meet Designer (Andres Galante & Brian Leathem)
Developer Meet Designer (Andres Galante & Brian Leathem)Red Hat Developers
 
Building Reactive Applications With Node.Js And Red Hat JBoss Data Grid (Gald...
Building Reactive Applications With Node.Js And Red Hat JBoss Data Grid (Gald...Building Reactive Applications With Node.Js And Red Hat JBoss Data Grid (Gald...
Building Reactive Applications With Node.Js And Red Hat JBoss Data Grid (Gald...Red Hat Developers
 
Full Stack Development With Node.Js And NoSQL (Nic Raboy & Arun Gupta)
Full Stack Development With Node.Js And NoSQL (Nic Raboy & Arun Gupta)Full Stack Development With Node.Js And NoSQL (Nic Raboy & Arun Gupta)
Full Stack Development With Node.Js And NoSQL (Nic Raboy & Arun Gupta)Red Hat Developers
 
Boost Development With Java EE7 On EAP7 (Demitris Andreadis)
Boost Development With Java EE7 On EAP7 (Demitris Andreadis)Boost Development With Java EE7 On EAP7 (Demitris Andreadis)
Boost Development With Java EE7 On EAP7 (Demitris Andreadis)Red Hat Developers
 
DevOps Moves To Production (Lori MacVittie)
DevOps Moves To Production (Lori MacVittie)DevOps Moves To Production (Lori MacVittie)
DevOps Moves To Production (Lori MacVittie)Red Hat Developers
 
Reactive Distributed Applications with Vert.x
Reactive Distributed Applications with Vert.xReactive Distributed Applications with Vert.x
Reactive Distributed Applications with Vert.xRed Hat Developers
 
Java and DevOps: Supercharge Your Delivery Pipeline with Containers
Java and DevOps: Supercharge Your Delivery Pipeline with ContainersJava and DevOps: Supercharge Your Delivery Pipeline with Containers
Java and DevOps: Supercharge Your Delivery Pipeline with ContainersRed Hat Developers
 
How To Get The Most Out Of Your Hibernate, JBoss EAP 7 Application (Ståle Ped...
How To Get The Most Out Of Your Hibernate, JBoss EAP 7 Application (Ståle Ped...How To Get The Most Out Of Your Hibernate, JBoss EAP 7 Application (Ståle Ped...
How To Get The Most Out Of Your Hibernate, JBoss EAP 7 Application (Ståle Ped...Red Hat Developers
 
Simplifying and Securing your OpenShift Network with Project Calico
Simplifying and Securing your OpenShift Network with Project CalicoSimplifying and Securing your OpenShift Network with Project Calico
Simplifying and Securing your OpenShift Network with Project CalicoAndrew Randall
 
How OpenShift SDN helps to automate
How OpenShift SDN helps to automateHow OpenShift SDN helps to automate
How OpenShift SDN helps to automateIlkka Tengvall
 

Destacado (20)

High Performance Data Storage in a Microservices Environment
High Performance Data Storage in a Microservices EnvironmentHigh Performance Data Storage in a Microservices Environment
High Performance Data Storage in a Microservices Environment
 
Containers: Under The Hood (Vincent Batts)
Containers: Under The Hood (Vincent Batts)Containers: Under The Hood (Vincent Batts)
Containers: Under The Hood (Vincent Batts)
 
MicroServices for Java Developers
MicroServices for Java Developers MicroServices for Java Developers
MicroServices for Java Developers
 
Microservices with Docker, Kubernetes, and Jenkins
Microservices with Docker, Kubernetes, and JenkinsMicroservices with Docker, Kubernetes, and Jenkins
Microservices with Docker, Kubernetes, and Jenkins
 
Ultimate DevOps: OpenShift Dedicated With CloudBees Jenkins Platform (Andy Pe...
Ultimate DevOps: OpenShift Dedicated With CloudBees Jenkins Platform (Andy Pe...Ultimate DevOps: OpenShift Dedicated With CloudBees Jenkins Platform (Andy Pe...
Ultimate DevOps: OpenShift Dedicated With CloudBees Jenkins Platform (Andy Pe...
 
Putting The 'M' In MBaaS—Red Hat Mobile Client Development Platform (Jay Balu...
Putting The 'M' In MBaaS—Red Hat Mobile Client Development Platform (Jay Balu...Putting The 'M' In MBaaS—Red Hat Mobile Client Development Platform (Jay Balu...
Putting The 'M' In MBaaS—Red Hat Mobile Client Development Platform (Jay Balu...
 
CDK 2.0: Docker, Kubernetes, And OSE On Your Desk (Langdon White)
CDK 2.0: Docker, Kubernetes, And OSE On Your Desk (Langdon White)CDK 2.0: Docker, Kubernetes, And OSE On Your Desk (Langdon White)
CDK 2.0: Docker, Kubernetes, And OSE On Your Desk (Langdon White)
 
Write Powerful Javascript Modules To Make Your Apps DRY (Brian Leathem)
Write Powerful Javascript Modules To Make Your Apps DRY (Brian Leathem)Write Powerful Javascript Modules To Make Your Apps DRY (Brian Leathem)
Write Powerful Javascript Modules To Make Your Apps DRY (Brian Leathem)
 
Kubernetes for Java Developers
 Kubernetes for Java Developers Kubernetes for Java Developers
Kubernetes for Java Developers
 
Agile Is A Four-Letter Word (Jen Krieger)
Agile Is A Four-Letter Word (Jen Krieger)Agile Is A Four-Letter Word (Jen Krieger)
Agile Is A Four-Letter Word (Jen Krieger)
 
Developer Meet Designer (Andres Galante & Brian Leathem)
Developer Meet Designer (Andres Galante & Brian Leathem)Developer Meet Designer (Andres Galante & Brian Leathem)
Developer Meet Designer (Andres Galante & Brian Leathem)
 
Building Reactive Applications With Node.Js And Red Hat JBoss Data Grid (Gald...
Building Reactive Applications With Node.Js And Red Hat JBoss Data Grid (Gald...Building Reactive Applications With Node.Js And Red Hat JBoss Data Grid (Gald...
Building Reactive Applications With Node.Js And Red Hat JBoss Data Grid (Gald...
 
Full Stack Development With Node.Js And NoSQL (Nic Raboy & Arun Gupta)
Full Stack Development With Node.Js And NoSQL (Nic Raboy & Arun Gupta)Full Stack Development With Node.Js And NoSQL (Nic Raboy & Arun Gupta)
Full Stack Development With Node.Js And NoSQL (Nic Raboy & Arun Gupta)
 
Boost Development With Java EE7 On EAP7 (Demitris Andreadis)
Boost Development With Java EE7 On EAP7 (Demitris Andreadis)Boost Development With Java EE7 On EAP7 (Demitris Andreadis)
Boost Development With Java EE7 On EAP7 (Demitris Andreadis)
 
DevOps Moves To Production (Lori MacVittie)
DevOps Moves To Production (Lori MacVittie)DevOps Moves To Production (Lori MacVittie)
DevOps Moves To Production (Lori MacVittie)
 
Reactive Distributed Applications with Vert.x
Reactive Distributed Applications with Vert.xReactive Distributed Applications with Vert.x
Reactive Distributed Applications with Vert.x
 
Java and DevOps: Supercharge Your Delivery Pipeline with Containers
Java and DevOps: Supercharge Your Delivery Pipeline with ContainersJava and DevOps: Supercharge Your Delivery Pipeline with Containers
Java and DevOps: Supercharge Your Delivery Pipeline with Containers
 
How To Get The Most Out Of Your Hibernate, JBoss EAP 7 Application (Ståle Ped...
How To Get The Most Out Of Your Hibernate, JBoss EAP 7 Application (Ståle Ped...How To Get The Most Out Of Your Hibernate, JBoss EAP 7 Application (Ståle Ped...
How To Get The Most Out Of Your Hibernate, JBoss EAP 7 Application (Ståle Ped...
 
Simplifying and Securing your OpenShift Network with Project Calico
Simplifying and Securing your OpenShift Network with Project CalicoSimplifying and Securing your OpenShift Network with Project Calico
Simplifying and Securing your OpenShift Network with Project Calico
 
How OpenShift SDN helps to automate
How OpenShift SDN helps to automateHow OpenShift SDN helps to automate
How OpenShift SDN helps to automate
 

Similar a Developing In Python On Red Hat Platforms (Nick Coghlan & Graham Dumpleton)

Open source Android 10 on Orange Pi: Meth or Reality?
Open source Android 10 on Orange Pi: Meth or Reality?Open source Android 10 on Orange Pi: Meth or Reality?
Open source Android 10 on Orange Pi: Meth or Reality?GlobalLogic Ukraine
 
Software Quality Assurance Tooling - Wintersession 2024
Software Quality Assurance Tooling - Wintersession 2024Software Quality Assurance Tooling - Wintersession 2024
Software Quality Assurance Tooling - Wintersession 2024Henry Schreiner
 
MuleSoft Meetup Roma - Processi di Automazione su CloudHub
MuleSoft Meetup Roma - Processi di Automazione su CloudHubMuleSoft Meetup Roma - Processi di Automazione su CloudHub
MuleSoft Meetup Roma - Processi di Automazione su CloudHubAlfonso Martino
 
Delivering a bleeding edge community-led openstack distribution: RDO
Delivering a bleeding edge community-led openstack distribution: RDO Delivering a bleeding edge community-led openstack distribution: RDO
Delivering a bleeding edge community-led openstack distribution: RDO Chandan Kumar
 
Build and deploy scientific Python Applications
Build and deploy scientific Python Applications  Build and deploy scientific Python Applications
Build and deploy scientific Python Applications Ramakrishna Reddy
 
release_python_day3_slides_201606.pdf
release_python_day3_slides_201606.pdfrelease_python_day3_slides_201606.pdf
release_python_day3_slides_201606.pdfPaul Yang
 
Inria Tech Talk : RIOT, l'OS libre pour vos objets connectés #IoT
Inria Tech Talk : RIOT, l'OS libre pour vos objets connectés #IoTInria Tech Talk : RIOT, l'OS libre pour vos objets connectés #IoT
Inria Tech Talk : RIOT, l'OS libre pour vos objets connectés #IoTStéphanie Roger
 
2009-09-24 Get the Hype on System z Webinar with IBM, Current & Future Linux ...
2009-09-24 Get the Hype on System z Webinar with IBM, Current & Future Linux ...2009-09-24 Get the Hype on System z Webinar with IBM, Current & Future Linux ...
2009-09-24 Get the Hype on System z Webinar with IBM, Current & Future Linux ...Shawn Wells
 
Package a PyApp as a Flatpak Package: An HTTP Server for Example @ PyCon APAC...
Package a PyApp as a Flatpak Package: An HTTP Server for Example @ PyCon APAC...Package a PyApp as a Flatpak Package: An HTTP Server for Example @ PyCon APAC...
Package a PyApp as a Flatpak Package: An HTTP Server for Example @ PyCon APAC...Jian-Hong Pan
 
Open source projects with python
Open source projects with pythonOpen source projects with python
Open source projects with pythonroskakori
 
Red Hat Satellite 6 - Automation with Puppet
Red Hat Satellite 6 - Automation with PuppetRed Hat Satellite 6 - Automation with Puppet
Red Hat Satellite 6 - Automation with PuppetMichael Lessard
 
Creating new Tizen profiles using the Yocto Project
Creating new Tizen profiles  using the Yocto ProjectCreating new Tizen profiles  using the Yocto Project
Creating new Tizen profiles using the Yocto ProjectLeon Anavi
 
Princeton Wintersession: Software Quality Assurance Tooling
Princeton Wintersession: Software Quality Assurance ToolingPrinceton Wintersession: Software Quality Assurance Tooling
Princeton Wintersession: Software Quality Assurance ToolingHenry Schreiner
 
Software Quality Assurance Tooling 2023
Software Quality Assurance Tooling 2023Software Quality Assurance Tooling 2023
Software Quality Assurance Tooling 2023Henry Schreiner
 
Hackaton for health 2015 - Sharing the Code we Make
Hackaton for health 2015 - Sharing the Code we MakeHackaton for health 2015 - Sharing the Code we Make
Hackaton for health 2015 - Sharing the Code we Makeesben1962
 
Introduction to Civil Infrastructure Platform
Introduction to Civil Infrastructure PlatformIntroduction to Civil Infrastructure Platform
Introduction to Civil Infrastructure PlatformSZ Lin
 

Similar a Developing In Python On Red Hat Platforms (Nick Coghlan & Graham Dumpleton) (20)

Open source Android 10 on Orange Pi: Meth or Reality?
Open source Android 10 on Orange Pi: Meth or Reality?Open source Android 10 on Orange Pi: Meth or Reality?
Open source Android 10 on Orange Pi: Meth or Reality?
 
Software Quality Assurance Tooling - Wintersession 2024
Software Quality Assurance Tooling - Wintersession 2024Software Quality Assurance Tooling - Wintersession 2024
Software Quality Assurance Tooling - Wintersession 2024
 
MuleSoft Meetup Roma - Processi di Automazione su CloudHub
MuleSoft Meetup Roma - Processi di Automazione su CloudHubMuleSoft Meetup Roma - Processi di Automazione su CloudHub
MuleSoft Meetup Roma - Processi di Automazione su CloudHub
 
Delivering a bleeding edge community-led openstack distribution: RDO
Delivering a bleeding edge community-led openstack distribution: RDO Delivering a bleeding edge community-led openstack distribution: RDO
Delivering a bleeding edge community-led openstack distribution: RDO
 
Build and deploy scientific Python Applications
Build and deploy scientific Python Applications  Build and deploy scientific Python Applications
Build and deploy scientific Python Applications
 
App container rkt
App container rktApp container rkt
App container rkt
 
release_python_day3_slides_201606.pdf
release_python_day3_slides_201606.pdfrelease_python_day3_slides_201606.pdf
release_python_day3_slides_201606.pdf
 
Inria Tech Talk : RIOT, l'OS libre pour vos objets connectés #IoT
Inria Tech Talk : RIOT, l'OS libre pour vos objets connectés #IoTInria Tech Talk : RIOT, l'OS libre pour vos objets connectés #IoT
Inria Tech Talk : RIOT, l'OS libre pour vos objets connectés #IoT
 
Migrating To GitHub
Migrating To GitHub  Migrating To GitHub
Migrating To GitHub
 
2009-09-24 Get the Hype on System z Webinar with IBM, Current & Future Linux ...
2009-09-24 Get the Hype on System z Webinar with IBM, Current & Future Linux ...2009-09-24 Get the Hype on System z Webinar with IBM, Current & Future Linux ...
2009-09-24 Get the Hype on System z Webinar with IBM, Current & Future Linux ...
 
Package a PyApp as a Flatpak Package: An HTTP Server for Example @ PyCon APAC...
Package a PyApp as a Flatpak Package: An HTTP Server for Example @ PyCon APAC...Package a PyApp as a Flatpak Package: An HTTP Server for Example @ PyCon APAC...
Package a PyApp as a Flatpak Package: An HTTP Server for Example @ PyCon APAC...
 
Open source projects with python
Open source projects with pythonOpen source projects with python
Open source projects with python
 
Heroku pycon
Heroku pyconHeroku pycon
Heroku pycon
 
Red Hat Satellite 6 - Automation with Puppet
Red Hat Satellite 6 - Automation with PuppetRed Hat Satellite 6 - Automation with Puppet
Red Hat Satellite 6 - Automation with Puppet
 
Creating new Tizen profiles using the Yocto Project
Creating new Tizen profiles  using the Yocto ProjectCreating new Tizen profiles  using the Yocto Project
Creating new Tizen profiles using the Yocto Project
 
Princeton Wintersession: Software Quality Assurance Tooling
Princeton Wintersession: Software Quality Assurance ToolingPrinceton Wintersession: Software Quality Assurance Tooling
Princeton Wintersession: Software Quality Assurance Tooling
 
Software Quality Assurance Tooling 2023
Software Quality Assurance Tooling 2023Software Quality Assurance Tooling 2023
Software Quality Assurance Tooling 2023
 
Hackaton for health 2015 - Sharing the Code we Make
Hackaton for health 2015 - Sharing the Code we MakeHackaton for health 2015 - Sharing the Code we Make
Hackaton for health 2015 - Sharing the Code we Make
 
Robot framework
Robot frameworkRobot framework
Robot framework
 
Introduction to Civil Infrastructure Platform
Introduction to Civil Infrastructure PlatformIntroduction to Civil Infrastructure Platform
Introduction to Civil Infrastructure Platform
 

Más de Red Hat Developers

DevNation Tech Talk: Getting GitOps
DevNation Tech Talk: Getting GitOpsDevNation Tech Talk: Getting GitOps
DevNation Tech Talk: Getting GitOpsRed Hat Developers
 
Exploring the power of OpenTelemetry on Kubernetes
Exploring the power of OpenTelemetry on KubernetesExploring the power of OpenTelemetry on Kubernetes
Exploring the power of OpenTelemetry on KubernetesRed Hat Developers
 
GitHub Makeover | DevNation Tech Talk
GitHub Makeover | DevNation Tech TalkGitHub Makeover | DevNation Tech Talk
GitHub Makeover | DevNation Tech TalkRed Hat Developers
 
Quinoa: A modern Quarkus UI with no hassles | DevNation tech Talk
Quinoa: A modern Quarkus UI with no hassles | DevNation tech TalkQuinoa: A modern Quarkus UI with no hassles | DevNation tech Talk
Quinoa: A modern Quarkus UI with no hassles | DevNation tech TalkRed Hat Developers
 
Extra micrometer practices with Quarkus | DevNation Tech Talk
Extra micrometer practices with Quarkus | DevNation Tech TalkExtra micrometer practices with Quarkus | DevNation Tech Talk
Extra micrometer practices with Quarkus | DevNation Tech TalkRed Hat Developers
 
Event-driven autoscaling through KEDA and Knative Integration | DevNation Tec...
Event-driven autoscaling through KEDA and Knative Integration | DevNation Tec...Event-driven autoscaling through KEDA and Knative Integration | DevNation Tec...
Event-driven autoscaling through KEDA and Knative Integration | DevNation Tec...Red Hat Developers
 
Integrating Loom in Quarkus | DevNation Tech Talk
Integrating Loom in Quarkus | DevNation Tech TalkIntegrating Loom in Quarkus | DevNation Tech Talk
Integrating Loom in Quarkus | DevNation Tech TalkRed Hat Developers
 
Quarkus Renarde 🦊♥: an old-school Web framework with today's touch | DevNatio...
Quarkus Renarde 🦊♥: an old-school Web framework with today's touch | DevNatio...Quarkus Renarde 🦊♥: an old-school Web framework with today's touch | DevNatio...
Quarkus Renarde 🦊♥: an old-school Web framework with today's touch | DevNatio...Red Hat Developers
 
Containers without docker | DevNation Tech Talk
Containers without docker | DevNation Tech TalkContainers without docker | DevNation Tech Talk
Containers without docker | DevNation Tech TalkRed Hat Developers
 
Distributed deployment of microservices across multiple OpenShift clusters | ...
Distributed deployment of microservices across multiple OpenShift clusters | ...Distributed deployment of microservices across multiple OpenShift clusters | ...
Distributed deployment of microservices across multiple OpenShift clusters | ...Red Hat Developers
 
DevNation Workshop: Object detection with Red Hat OpenShift Data Science [Mar...
DevNation Workshop: Object detection with Red Hat OpenShift Data Science [Mar...DevNation Workshop: Object detection with Red Hat OpenShift Data Science [Mar...
DevNation Workshop: Object detection with Red Hat OpenShift Data Science [Mar...Red Hat Developers
 
Dear security, compliance, and auditing: We’re sorry. Love, DevOps | DevNatio...
Dear security, compliance, and auditing: We’re sorry. Love, DevOps | DevNatio...Dear security, compliance, and auditing: We’re sorry. Love, DevOps | DevNatio...
Dear security, compliance, and auditing: We’re sorry. Love, DevOps | DevNatio...Red Hat Developers
 
11 CLI tools every developer should know | DevNation Tech Talk
11 CLI tools every developer should know | DevNation Tech Talk11 CLI tools every developer should know | DevNation Tech Talk
11 CLI tools every developer should know | DevNation Tech TalkRed Hat Developers
 
A Microservices approach with Cassandra and Quarkus | DevNation Tech Talk
A Microservices approach with Cassandra and Quarkus | DevNation Tech TalkA Microservices approach with Cassandra and Quarkus | DevNation Tech Talk
A Microservices approach with Cassandra and Quarkus | DevNation Tech TalkRed Hat Developers
 
GitHub Actions and OpenShift: ​​Supercharging your software development loops...
GitHub Actions and OpenShift: ​​Supercharging your software development loops...GitHub Actions and OpenShift: ​​Supercharging your software development loops...
GitHub Actions and OpenShift: ​​Supercharging your software development loops...Red Hat Developers
 
To the moon and beyond with Java 17 APIs! | DevNation Tech Talk
To the moon and beyond with Java 17 APIs! | DevNation Tech TalkTo the moon and beyond with Java 17 APIs! | DevNation Tech Talk
To the moon and beyond with Java 17 APIs! | DevNation Tech TalkRed Hat Developers
 
Profile your Java apps in production on Red Hat OpenShift with Cryostat | Dev...
Profile your Java apps in production on Red Hat OpenShift with Cryostat | Dev...Profile your Java apps in production on Red Hat OpenShift with Cryostat | Dev...
Profile your Java apps in production on Red Hat OpenShift with Cryostat | Dev...Red Hat Developers
 
Kafka at the Edge: an IoT scenario with OpenShift Streams for Apache Kafka | ...
Kafka at the Edge: an IoT scenario with OpenShift Streams for Apache Kafka | ...Kafka at the Edge: an IoT scenario with OpenShift Streams for Apache Kafka | ...
Kafka at the Edge: an IoT scenario with OpenShift Streams for Apache Kafka | ...Red Hat Developers
 
Kubernetes configuration and security policies with KubeLinter | DevNation Te...
Kubernetes configuration and security policies with KubeLinter | DevNation Te...Kubernetes configuration and security policies with KubeLinter | DevNation Te...
Kubernetes configuration and security policies with KubeLinter | DevNation Te...Red Hat Developers
 
Level-up your gaming telemetry using Kafka Streams | DevNation Tech Talk
Level-up your gaming telemetry using Kafka Streams | DevNation Tech TalkLevel-up your gaming telemetry using Kafka Streams | DevNation Tech Talk
Level-up your gaming telemetry using Kafka Streams | DevNation Tech TalkRed Hat Developers
 

Más de Red Hat Developers (20)

DevNation Tech Talk: Getting GitOps
DevNation Tech Talk: Getting GitOpsDevNation Tech Talk: Getting GitOps
DevNation Tech Talk: Getting GitOps
 
Exploring the power of OpenTelemetry on Kubernetes
Exploring the power of OpenTelemetry on KubernetesExploring the power of OpenTelemetry on Kubernetes
Exploring the power of OpenTelemetry on Kubernetes
 
GitHub Makeover | DevNation Tech Talk
GitHub Makeover | DevNation Tech TalkGitHub Makeover | DevNation Tech Talk
GitHub Makeover | DevNation Tech Talk
 
Quinoa: A modern Quarkus UI with no hassles | DevNation tech Talk
Quinoa: A modern Quarkus UI with no hassles | DevNation tech TalkQuinoa: A modern Quarkus UI with no hassles | DevNation tech Talk
Quinoa: A modern Quarkus UI with no hassles | DevNation tech Talk
 
Extra micrometer practices with Quarkus | DevNation Tech Talk
Extra micrometer practices with Quarkus | DevNation Tech TalkExtra micrometer practices with Quarkus | DevNation Tech Talk
Extra micrometer practices with Quarkus | DevNation Tech Talk
 
Event-driven autoscaling through KEDA and Knative Integration | DevNation Tec...
Event-driven autoscaling through KEDA and Knative Integration | DevNation Tec...Event-driven autoscaling through KEDA and Knative Integration | DevNation Tec...
Event-driven autoscaling through KEDA and Knative Integration | DevNation Tec...
 
Integrating Loom in Quarkus | DevNation Tech Talk
Integrating Loom in Quarkus | DevNation Tech TalkIntegrating Loom in Quarkus | DevNation Tech Talk
Integrating Loom in Quarkus | DevNation Tech Talk
 
Quarkus Renarde 🦊♥: an old-school Web framework with today's touch | DevNatio...
Quarkus Renarde 🦊♥: an old-school Web framework with today's touch | DevNatio...Quarkus Renarde 🦊♥: an old-school Web framework with today's touch | DevNatio...
Quarkus Renarde 🦊♥: an old-school Web framework with today's touch | DevNatio...
 
Containers without docker | DevNation Tech Talk
Containers without docker | DevNation Tech TalkContainers without docker | DevNation Tech Talk
Containers without docker | DevNation Tech Talk
 
Distributed deployment of microservices across multiple OpenShift clusters | ...
Distributed deployment of microservices across multiple OpenShift clusters | ...Distributed deployment of microservices across multiple OpenShift clusters | ...
Distributed deployment of microservices across multiple OpenShift clusters | ...
 
DevNation Workshop: Object detection with Red Hat OpenShift Data Science [Mar...
DevNation Workshop: Object detection with Red Hat OpenShift Data Science [Mar...DevNation Workshop: Object detection with Red Hat OpenShift Data Science [Mar...
DevNation Workshop: Object detection with Red Hat OpenShift Data Science [Mar...
 
Dear security, compliance, and auditing: We’re sorry. Love, DevOps | DevNatio...
Dear security, compliance, and auditing: We’re sorry. Love, DevOps | DevNatio...Dear security, compliance, and auditing: We’re sorry. Love, DevOps | DevNatio...
Dear security, compliance, and auditing: We’re sorry. Love, DevOps | DevNatio...
 
11 CLI tools every developer should know | DevNation Tech Talk
11 CLI tools every developer should know | DevNation Tech Talk11 CLI tools every developer should know | DevNation Tech Talk
11 CLI tools every developer should know | DevNation Tech Talk
 
A Microservices approach with Cassandra and Quarkus | DevNation Tech Talk
A Microservices approach with Cassandra and Quarkus | DevNation Tech TalkA Microservices approach with Cassandra and Quarkus | DevNation Tech Talk
A Microservices approach with Cassandra and Quarkus | DevNation Tech Talk
 
GitHub Actions and OpenShift: ​​Supercharging your software development loops...
GitHub Actions and OpenShift: ​​Supercharging your software development loops...GitHub Actions and OpenShift: ​​Supercharging your software development loops...
GitHub Actions and OpenShift: ​​Supercharging your software development loops...
 
To the moon and beyond with Java 17 APIs! | DevNation Tech Talk
To the moon and beyond with Java 17 APIs! | DevNation Tech TalkTo the moon and beyond with Java 17 APIs! | DevNation Tech Talk
To the moon and beyond with Java 17 APIs! | DevNation Tech Talk
 
Profile your Java apps in production on Red Hat OpenShift with Cryostat | Dev...
Profile your Java apps in production on Red Hat OpenShift with Cryostat | Dev...Profile your Java apps in production on Red Hat OpenShift with Cryostat | Dev...
Profile your Java apps in production on Red Hat OpenShift with Cryostat | Dev...
 
Kafka at the Edge: an IoT scenario with OpenShift Streams for Apache Kafka | ...
Kafka at the Edge: an IoT scenario with OpenShift Streams for Apache Kafka | ...Kafka at the Edge: an IoT scenario with OpenShift Streams for Apache Kafka | ...
Kafka at the Edge: an IoT scenario with OpenShift Streams for Apache Kafka | ...
 
Kubernetes configuration and security policies with KubeLinter | DevNation Te...
Kubernetes configuration and security policies with KubeLinter | DevNation Te...Kubernetes configuration and security policies with KubeLinter | DevNation Te...
Kubernetes configuration and security policies with KubeLinter | DevNation Te...
 
Level-up your gaming telemetry using Kafka Streams | DevNation Tech Talk
Level-up your gaming telemetry using Kafka Streams | DevNation Tech TalkLevel-up your gaming telemetry using Kafka Streams | DevNation Tech Talk
Level-up your gaming telemetry using Kafka Streams | DevNation Tech Talk
 

Último

React Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief UtamaReact Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief UtamaHanief Utama
 
Post Quantum Cryptography – The Impact on Identity
Post Quantum Cryptography – The Impact on IdentityPost Quantum Cryptography – The Impact on Identity
Post Quantum Cryptography – The Impact on Identityteam-WIBU
 
Understanding Flamingo - DeepMind's VLM Architecture
Understanding Flamingo - DeepMind's VLM ArchitectureUnderstanding Flamingo - DeepMind's VLM Architecture
Understanding Flamingo - DeepMind's VLM Architecturerahul_net
 
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)jennyeacort
 
UI5ers live - Custom Controls wrapping 3rd-party libs.pptx
UI5ers live - Custom Controls wrapping 3rd-party libs.pptxUI5ers live - Custom Controls wrapping 3rd-party libs.pptx
UI5ers live - Custom Controls wrapping 3rd-party libs.pptxAndreas Kunz
 
A healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdfA healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdfMarharyta Nedzelska
 
Folding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a seriesFolding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a seriesPhilip Schwarz
 
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...Angel Borroy López
 
How to submit a standout Adobe Champion Application
How to submit a standout Adobe Champion ApplicationHow to submit a standout Adobe Champion Application
How to submit a standout Adobe Champion ApplicationBradBedford3
 
Large Language Models for Test Case Evolution and Repair
Large Language Models for Test Case Evolution and RepairLarge Language Models for Test Case Evolution and Repair
Large Language Models for Test Case Evolution and RepairLionel Briand
 
Introduction Computer Science - Software Design.pdf
Introduction Computer Science - Software Design.pdfIntroduction Computer Science - Software Design.pdf
Introduction Computer Science - Software Design.pdfFerryKemperman
 
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...Matt Ray
 
20240415 [Container Plumbing Days] Usernetes Gen2 - Kubernetes in Rootless Do...
20240415 [Container Plumbing Days] Usernetes Gen2 - Kubernetes in Rootless Do...20240415 [Container Plumbing Days] Usernetes Gen2 - Kubernetes in Rootless Do...
20240415 [Container Plumbing Days] Usernetes Gen2 - Kubernetes in Rootless Do...Akihiro Suda
 
Cyber security and its impact on E commerce
Cyber security and its impact on E commerceCyber security and its impact on E commerce
Cyber security and its impact on E commercemanigoyal112
 
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte GermanySuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte GermanyChristoph Pohl
 
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024StefanoLambiase
 
Real-time Tracking and Monitoring with Cargo Cloud Solutions.pptx
Real-time Tracking and Monitoring with Cargo Cloud Solutions.pptxReal-time Tracking and Monitoring with Cargo Cloud Solutions.pptx
Real-time Tracking and Monitoring with Cargo Cloud Solutions.pptxRTS corp
 
Odoo 14 - eLearning Module In Odoo 14 Enterprise
Odoo 14 - eLearning Module In Odoo 14 EnterpriseOdoo 14 - eLearning Module In Odoo 14 Enterprise
Odoo 14 - eLearning Module In Odoo 14 Enterprisepreethippts
 
CRM Contender Series: HubSpot vs. Salesforce
CRM Contender Series: HubSpot vs. SalesforceCRM Contender Series: HubSpot vs. Salesforce
CRM Contender Series: HubSpot vs. SalesforceBrainSell Technologies
 

Último (20)

React Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief UtamaReact Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief Utama
 
Post Quantum Cryptography – The Impact on Identity
Post Quantum Cryptography – The Impact on IdentityPost Quantum Cryptography – The Impact on Identity
Post Quantum Cryptography – The Impact on Identity
 
Understanding Flamingo - DeepMind's VLM Architecture
Understanding Flamingo - DeepMind's VLM ArchitectureUnderstanding Flamingo - DeepMind's VLM Architecture
Understanding Flamingo - DeepMind's VLM Architecture
 
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
 
UI5ers live - Custom Controls wrapping 3rd-party libs.pptx
UI5ers live - Custom Controls wrapping 3rd-party libs.pptxUI5ers live - Custom Controls wrapping 3rd-party libs.pptx
UI5ers live - Custom Controls wrapping 3rd-party libs.pptx
 
A healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdfA healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdf
 
Folding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a seriesFolding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a series
 
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
 
How to submit a standout Adobe Champion Application
How to submit a standout Adobe Champion ApplicationHow to submit a standout Adobe Champion Application
How to submit a standout Adobe Champion Application
 
Large Language Models for Test Case Evolution and Repair
Large Language Models for Test Case Evolution and RepairLarge Language Models for Test Case Evolution and Repair
Large Language Models for Test Case Evolution and Repair
 
Introduction Computer Science - Software Design.pdf
Introduction Computer Science - Software Design.pdfIntroduction Computer Science - Software Design.pdf
Introduction Computer Science - Software Design.pdf
 
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
 
20240415 [Container Plumbing Days] Usernetes Gen2 - Kubernetes in Rootless Do...
20240415 [Container Plumbing Days] Usernetes Gen2 - Kubernetes in Rootless Do...20240415 [Container Plumbing Days] Usernetes Gen2 - Kubernetes in Rootless Do...
20240415 [Container Plumbing Days] Usernetes Gen2 - Kubernetes in Rootless Do...
 
Advantages of Odoo ERP 17 for Your Business
Advantages of Odoo ERP 17 for Your BusinessAdvantages of Odoo ERP 17 for Your Business
Advantages of Odoo ERP 17 for Your Business
 
Cyber security and its impact on E commerce
Cyber security and its impact on E commerceCyber security and its impact on E commerce
Cyber security and its impact on E commerce
 
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte GermanySuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
 
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
 
Real-time Tracking and Monitoring with Cargo Cloud Solutions.pptx
Real-time Tracking and Monitoring with Cargo Cloud Solutions.pptxReal-time Tracking and Monitoring with Cargo Cloud Solutions.pptx
Real-time Tracking and Monitoring with Cargo Cloud Solutions.pptx
 
Odoo 14 - eLearning Module In Odoo 14 Enterprise
Odoo 14 - eLearning Module In Odoo 14 EnterpriseOdoo 14 - eLearning Module In Odoo 14 Enterprise
Odoo 14 - eLearning Module In Odoo 14 Enterprise
 
CRM Contender Series: HubSpot vs. Salesforce
CRM Contender Series: HubSpot vs. SalesforceCRM Contender Series: HubSpot vs. Salesforce
CRM Contender Series: HubSpot vs. Salesforce
 

Developing In Python On Red Hat Platforms (Nick Coghlan & Graham Dumpleton)

  • 1. Developing in Python on Red Hat platforms Nick Coghlan Senior Software Engineer Graham Dumpleton Developer Advocate for OpenShift June 28th 2016
  • 2. Using Python on Red Hat Platforms ● Python for Network Services ● Python for Applications ● Python for System Administration
  • 3. Current Transitions in the Python Ecosystem ● Migration to Python 3 ● Modernizing the Python 2.7 Network Security Stack ● Defaulting to HTTPS Certificate Verification
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12. $ oc new-app https://gitlab.com/osevg/python-django-modwsgi.git --> Found image 772dc19 (4 weeks old) in image stream "python" in project "openshift" under tag "3.4" for "python" Python 3.4 ---------- Platform for building and running Python 3.4 applications Tags: builder, python, python34, rh-python34 * The source repository appears to match: python * A source build using source code from https://gitlab.com/osevg/python-django-modwsgi.git will be created * The resulting image will be pushed to image stream "python-django-modwsgi:latest" * This image will be deployed in deployment config "python-django-modwsgi" * Port 8080/tcp will be load balanced by service "python-django-modwsgi" * Other containers can access this service through the hostname "python-django-modwsgi" --> Creating resources with label app=python-django-modwsgi ... imagestream "python-django-modwsgi" created buildconfig "python-django-modwsgi" created deploymentconfig "python-django-modwsgi" created service "python-django-modwsgi" created --> Success Build scheduled, use 'oc logs -f bc/python-django-modwsgi' to track its progress. Run 'oc status' to view your app. $ oc expose svc/python-django-modwsgi route "python-django-modwsgi" exposed
  • 13. Source to Image (S2I) https://github.com/openshift/source-to-image
  • 14. $ s2i build https://gitlab.com/osevg/python-django-modwsgi.git centos/python-34-centos7 python-django-modwsgi I0610 10:02:07.422470 84805 docker.go:352] Image "centos/python-34-centos7:latest" not available locally, pulling ... I0610 10:02:36.501637 84805 clone.go:32] Downloading "https://gitlab.com/osevg/python-django-modwsgi.git" ... I0610 10:02:38.831859 84805 install.go:251] Using "assemble" installed from "image:///usr/libexec/s2i/assemble" I0610 10:02:38.831913 84805 install.go:251] Using "run" installed from "image:///usr/libexec/s2i/run" I0610 10:02:38.831943 84805 install.go:251] Using "save-artifacts" installed from "image:///usr/libexec/s2i/save-artifacts" I0610 10:02:38.832495 84805 environment.go:60] Setting 1 environment variables provided by environment file in sources ---> Copying application source ... ---> Installing dependencies ... ... ---> Collecting Django static files ... I0610 10:03:00.876021 84805 environment.go:60] Setting 1 environment variables provided by environment file in sources $ docker run --rm -p 8080:8080 python-django-modwsgi ---> Running application from Python script (app.py) ... [Fri Jun 10 00:07:33.580013 2016] [mpm_event:notice] [pid 1:tid 139758878566464] AH00489: Apache/2.4.6 (CentOS) mod_wsgi/4.5.2 Python/3.4.2 configured -- resuming normal operations [Fri Jun 10 00:07:33.580149 2016] [core:notice] [pid 1:tid 139758878566464] AH00094: Command line: 'httpd (mod_wsgi- express) -f /tmp/mod_wsgi-localhost:8080:1001/httpd.conf -D MOD_WSGI_MULTIPROCESS -D MOD_WSGI_WITH_PROXY_HEADERS -D MOD_WSGI_MPM_ENABLE_EVENT_MODULE -D MOD_WSGI_MPM_EXISTS_EVENT_MODULE -D MOD_WSGI_MPM_EXISTS_WORKER_MODULE -D MOD_WSGI_MPM_EXISTS_PREFORK_MODULE -D FOREGROUND'
  • 15. Docker Base Images (S2I Enabled) ● RHEL 7 – Python 2.7 → registry.access.redhat.com/rhscl/python-27-rhel7 – Python 3.3 → registry.access.redhat.com/openshift3/python-33-rhel7 – Python 3.4 → registry.access.redhat.com/rhscl/python-34-rhel7 ● CentOS 7 – Python 2.7 → docker.io/centos/python-27-centos7 – Python 3.3 → docker.io/openshift/python-33-centos7 – Python 3.4 → docker.io/centos/python-34-centos7
  • 16. Migrating from OpenShift 2 to 3 ● Converting of existing applications. ● Backward compatible S2I builder. ● Guidelines for porting applications. ● Templates to aid in porting applications.
  • 17.
  • 19. Why *Not* Containers? ● Containers are the recommended option for network services ● However: – Container support for rich desktop applications is currently limited – Container runtime may impose unwanted overhead on dedicated systems – Containers may give more isolation than is wanted – Applications may require non-trivial modification to run as a privileged container ● Software Collections aim to offer “minimum viable runtime isolation” – Add new executable directories to front of PATH – Add new shared library directories to front of LD_LIBRARY_PATH
  • 20. Why Software Collections for Python? ● Use newer Python runtimes without impacting system components ● Use a common Python runtime across multiple operating system versions ● Python 3 for Red Hat Enterprise Linux 6 & 7!
  • 21. Red Hat Software Collections ● Platforms – Red Hat Enterprise Linux 6 & Red Hat Enterprise Linux 7 – CentOS 6 and 7 (via softwarecollections.org) – Basis for OpenShift language runtimes ● Available versions (as of RHSCL 2.2) – Python 2.7.8 (+ selected backports) – Python 3.5.1 (+ selected backports) – Python 3.4.2 (+ selected backports) – Python 3.3.2 (+ selected backports)
  • 22. Python Virtual Environments ● Software Collections allow multiple runtimes to share a system without conflicting ● Virtual environments allow multiple Python applications to share a runtime ● Low or no runtime overhead: just add/replace directories in Python’s import path ● Cleanly isolate application dependencies from platform components ● Dependencies within the environment managed with pip ● Created via: – python3 -m venv (Python 3.4+) – virtualenv (Python 2.7, Python 3.x) ● Not included in the Red Hat Enterprise Linux System Python
  • 23.
  • 24. Constructing a Layered Application ● Base platform (via system package manager): – Operating system (e.g. kernel, C runtime) – Language runtime (from Software Collections) – Other external dependencies (e.g. OpenSSL) ● Modify shared library loading (via enabled Software Collection) ● Modify Python import configuration (via virtualenv or standard library’s venv) ● Inside the virtual environment: – Application dependencies (managed via pip) – Application source code (managed via pip, or direct from source control)
  • 25. Deploying a Layered Application (1) ● Application RPM with generated artifacts in SRPM: – Create full installation in representative environment – Bundle entire virtualenv and other desired components into SRPM – Also include scripts to appropriately activate SCL and virtual environment ● Some generated files will end up in the SRPM – Pre-compiled Python files – Executable wrappers for pip managed Python scripts
  • 26. Deploying a Layered Application (2) ● Application RPM with source-only SRPM: – SRPM contains source for application and any application level dependencies – virtual environment created and configured during RPM build process ● Not yet fully supported in pip – some pip generated metadata will incorrectly include RPM buildroot paths – shouldn’t matter for most RPM based deployment use cases
  • 27. Managing Application Dependencies ● The Python Package Index is not an App Store! ● Designed to minimize barriers to publication: – No pre-publication review – Publisher Terms of Service ensure right to redistribute, not to run or modify – Publishers may delete (but not replace) previously published versions ● Recommendation: use caching proxies and a component review process – Commercially supported options: JFrog Artifactory, Sonatype Nexus – Community/self-supported options: devpi, Python plugin for Pulp – Check licensing, export restrictions, project governance, ... ● Security monitoring & response also becomes a dev team responsibility!
  • 28. Python for System Administration
  • 29. Why *Not* Software Collections? ● Containers are the recommended option for network services ● Software Collections are recommended for applications ● However: – some platform bindings are only installed in the main System Python – the System Python is available on all systems by default ● Some system administration tasks are best handled with the System Python
  • 30. System Python ● Red Hat Enterprise Linux 6 – Python 2.6.6 (+ selected backports) ● Red Hat Enterprise Linux 7 – Python 2.7.5 (+ selected backports) ● Fedora 23 and later – Recent Python 3.x (rebases rather than backports) – Recent Python 2.7 available as system package, may not have all system bindings
  • 31. Caveats and Challenges ● Restricted to features of System Python on oldest supported platform ● Community maintained libraries and frameworks often require newer runtimes ● Conflict between supporting: – Red Hat Enterprise Linux 5 (Python 2.4 lacks Py3 forward compatibility features) – Fedora 23+ (Python 3.x as System Python) ● May want to consider higher level system abstractions like Ansible
  • 33. Python 2.7 Support Timeline ● Anticipated community end-of-life for Python 2.7 in January 2020 – https://docs.python.org/devguide/#status-of-python-branches ● Supported in Red Hat Enterprise Linux 7 until June 2024 – https://access.redhat.com/support/policy/updates/errata ● Anticipate community project support for Python 2 declining sharply post-2020 – Already seeing new community projects starting as Python 3 only
  • 34. Python 3 Migration Techniques ● General “refactoring enablement” techniques: – automated regression testing frameworks – static structural analysis tools ● Recommended approach for applications and network services: – Migrate to the Python 2.7 SCL or OpenShift image (if using the system Python) – Follow https://docs.python.org/3/howto/pyporting.html – Migrate to the latest Python 3.x SCL or OpenShift image ● Recommended approach for system administration tools: – Consider using Fedora 23+ to look for potential pain points
  • 35. Python 3 Migration Notes ● Common subset of Python 2.6+ and 3.3+ is quite large ● Many deprecated idioms can be updated automatically ● Key data & workload driven pain points – Explicit bytes/unicode separation – Removal of implicit cross-type comparisons ● Automated refactoring and compatibility testing tools continue to improve
  • 36. Modernizing the Python 2.7 Network Security Stack
  • 37. New Security Features in Python 2.7 ● https://docs.python.org/2/whatsnew/2.7.html#pep-466-network-security-enhancements- for-python-2-7 ● Constant-time comparison (hmac.compare_digest()) ● Password storage hashing (hashlib.pbkdf2_hmac()) ● ssl module rebase on Python 3.4 implementation – Server Name Indication support – SSLContext for SSL configuration – Configuration support for TLS 1.x – Access to system certificate stores – ...
  • 38. Availability in Red Hat Products ● Red Hat Enterprise Linux 7.2 – backported to System Python ● Red Hat Software Collections 2.0+ – default in Python 3.4 ● Red Hat Software Collections 2.2+ – backported to Python 2.7 – default in Python 3.5
  • 39. Third Party Module Compatibility ● ssl module rebase changed several private implementation details ● Some third party libraries had used internal APIs instead of requesting public ones ● Backport offers greater compatibility than upstream rebase ● Testing before upgrading is still recommended ● Report problems through the usual channels
  • 41. What does “HTTPS” Mean? ● Historical Python standard library answer: – “HTTP connection with SSL/TLS enabled” – didn’t check certificate validity or remote host identification ● Modern Python standard library answer: – “What web browsers say it means” – still a HTTP connection with SSL/TLS enabled – also checks for certificate validity – also checks remote host identification against system certificate store
  • 42. Verifying HTTPS Certificates ● https://docs.python.org/2/whatsnew/2.7.html#pep-476-enabling-certificate-verification-by- default-for-stdlib-http-clients ● Default behavior of standard library HTTPS clients in: – Python 2.7.9+ – Python 3.4.3+ – Python 3.5.0+ ● Turns a silent security failure into a noisy connection failure ● Potential problems: – Self-signed internal certificates – Expired certificates – Internal CAs not configured on client system
  • 43. On Red Hat Platforms ● File-based opt-in: – Config setting in /etc/python/cert-verification.cfg – Red Hat Enterprise Linux 7.2+ System Python – Red Hat Software Collections 2.2+ Python 2.7 collection ● Default behavior: – Red Hat Software Collections Python 3.5 collection ● Details in Knowledge Base – https://access.redhat.com/articles/2039753
  • 44. Future Configuration Options ● https://docs.python.org/2/whatsnew/2.7.html#pep-493-https-verification-migration-tools -for-python-2-7 ● Adds new Python 2.7 specific configuration options – ssl._https_verify_certificates() API – PYTHONHTTPSVERIFY environment variable ● Can be used to revert Python 2.7.12+ to Python 2.7.8 behavior ● Python 2.7 only, not supported by any version of Python 3
  • 46. OpenShift ● OpenShift – https://www.openshift.com ● OpenShift Online Preview – https://www.openshift.com/devpreview/register.html ● OpenShift Container Development Kit – https://developers.redhat.com/products/cdk/overview/ ● OpenShift Origin – https://www.openshift.org ● OpenShift Origin All-In-One VM – https://www.openshift.org/vm
  • 47. Python ● Red Hat Software Collections – http://developers.redhat.com/products/softwarecollections/ – Access: https://access.redhat.com/solutions/472793 ● Software Collections Upstream – https://wiki.centos.org/SpecialInterestGroup/SCLo – https://www.softwarecollections.org
  • 48. Related DevNation 2016 Sessions ● OpenShift – OpenShift Enterprise 3 walk-through with Docker and Kubernetes ● Container Development Kit – CDK 2.0: Docker, Kubernetes, and OSE on your desk – Container development for command line developers ● Software Collections – Software Collections: Easy access to the cutting edge