OpenShift - Visión General
Jhon Inga
Middleware Solutions Architect
jhon@[Link]
Openshift se instala en cualquier infraestructura
OPENSHIFT
Sea ambiente virtual...
Homologado para:
OPENSHIFT
Nube privada...
Homologado para:
OPENSHIFT
O nube pública
Homologado para:
OPENSHIFT
Los nodos son instancias de RHEL donde su aplicación se
ejecutará
OPENSHIFT
Las aplicaciones se ejecutan en varios
nodos
OPENSHIFT
Master orquesta las aplicaciones en
nodos
OPENSHIFT
Toda comunicación es segura en el Openshift
OPENSHIFT
Máster proporciona una API para usuarios y
clientes
OPENSHIFT
Máster utiliza una base de datos (clave-valor)
llamado etcd
OPENSHIFT
Master proporciona un "programador" de
aplicaciones
OPENSHIFT
La programación de las aplicaciones se basa en
políticas
OPENSHIFT
En el momento de la creación de la aplicación, se eligen los mejores
nodos
OPENSHIFT
Puede separar aplicaciones en entornos
DEV
QA
OPENSHIFT
Servicio permite que la aplicación se comunique
internamente
App puede comunicarse:
● postgresql:5432
● <service>.<pod_namespace>.svc.
[Link]:<port>
● variables internas
OPENSHIFT
Replication Controller gestiona el ciclo de vida de la
aplicación
OPENSHIFT
Registry es donde se almacena las imágenes de la
aplicación
OPENSHIFT
Openshift administra el balanceo automáticamente
Balancer
OPENSHIFT
Y si la aplicación falla?
Balancer
OPENSHIFT
Openshift la recupera y crea una nueva automáticamente
Balancer
OPENSHIFT
¿Y la sesión de los usuarios?
Balancer
OPENSHIFT
La sesión se puede replicar
Balancer
JDG
JDG JDG JDG
JDG
OPENSHIFT
O externalizar
Balancer
JDG
JDG JDG JDG
JDG
OPENSHIFT
¿Y si la aplicación no está lista para ser usada?
Balancer
OPENSHIFT
Openshift agrega la aplicación al balanceo cuando está lista
Balancer
OPENSHIFT
¿Y si quiero separar el tráfico en balanceadores diferentes?
Balancer
DEV
QA
OPENSHIFT
Openshift permite un enfoque multitenant
Balancer
DEV
Balancer
QA
OPENSHIFT
Openshift bloquea la comunicación entre entornos de
aplicación
DEV
QA
OPENSHIFT
Y si la aplicación intenta consumir todo los recursos
del nodo?
OPENSHIFT
Y si la aplicación intenta consumir todo los recursos
del nodo?
OPENSHIFT
Y si la aplicación intenta consumir todo los recursos
del nodo?
OPENSHIFT
Openshift la impedirá por medio de las cuotas y
límites
OPENSHIFT
Y si un nodo falla o necesita mantenimiento?
OPENSHIFT
Openshift migrará las aplicaciones a otros nodos
OPENSHIFT
Y si las instancias de mi aplicación no son suficientes?
OPENSHIFT
Openshift realizará un auto-scaling (scale-out)
OPENSHIFT
Y también el scale será en automático
OPENSHIFT
¿Y si necesito ahorrar más recursos?
OPENSHIFT
Openshift pondrá la app en idle
OPENSHIFT
Cuando se tiene acceso a OpenShift se iniciará una app
nuevamente
Cliente
OPENSHIFT
Y cómo agrego mi app en Openshift?
OPENSHIFT
Openshift construye apps usando Source-to-Image (sti/s2i)
OPENSHIFT
Sólo tienes que identificar al repositorio del
Git Repo
código fuente
OPENSHIFT
Y una plantilla o entorno del lenguaje
Git Repo
(opcional)
OPENSHIFT
Openshift crea la imagen y la guarda en el
Git Repo
Registro
OPENSHIFT
Y ejecuta la imagen de la aplicación recién
Git Repo
creada
OPENSHIFT
Además de la fuente, también es posible usar el binario de la
aplicación
JAR/WAR/EAR
OPENSHIFT
STI también se aplica para otros templates como Httpd
Git Repo
OPENSHIFT
Y si quiero ejecutar el proceso batch?
OPENSHIFT
Openshift ejecutará cron jobs
Cron:
*/1 * * * *
OPENSHIFT
Y si hay un error de seguridad en mi aplicación?
OPENSHIFT
Openshift actualizará la aplicación de manera automática
OPENSHIFT
Y si quiero supervisar los recursos de la aplicación?
OPENSHIFT
Openshift permite monitorear:
● CPU
● Memoria
● Red
OPENSHIFT
Por medio de Hawkular, Heapster y Cassandra
NODE
RED HAT
POD POD
CONTAINER METRICS CLOUDFORMS
NODE
FLUENTD
POD POD
API OPENSHIFT WEB
HEAPSTER HAWKULAR
POD POD CONSOLE
NODE USER
RHEL
FLUENTD CUSTOM
POD POD DASHBOARDS
POD POD ELASTI
CADVISOR
ELASTI
C
CCASSANDRA
RHEL
POD POD
RHEL
OPENSHIFT
Y si deseo supervisar los logs de mi aplicación de manera
centralizada?
OPENSHIFT
Openshift ya viene con el stack EFK
● ElasticSearch
● Fluentd
● Kibana
OPENSHIFT
Openshift ya viene con el stack EFK
NODE
POD POD
OPERATION LOGS
NODE
ELASTI ELASTI
FLUENTD ELASTI ELASTI
POD POD C C
ELASTICSEARCH
C C KIBANA
POD POD
ADMIN
NODE
RHEL APPLICATION LOGS
FLUENTD
POD POD
POD POD
FLUENTD
ELASTI ELASTI
ELASTI ELASTI
C C
RHEL ELASTICSEARCH
C C KIBANA
POD POD
USER
RHEL
OPENSHIFT
Y si un nodo se satura de instancias de mi aplicación?
OPENSHIFT
Openshift creará nuevas aplicaciones usando QoS
● Guaranteed
● Burstable
● BestEffort
OPENSHIFT
Y si todos los nodos se saturan?
OPENSHIFT
CloudForms agrega más nodos
OPENSHIFT
Las aplicaciones pueden utilizar un storage para servicios
stateful
OPENSHIFT
Compatible con las principales tecnologías
del mercado
Homologado para:
OpenStack
NFS Azure Disk AWS EBS
Cinder
GlusterFS iSCSI Azure File FlexVolume
GCE Persistent VMWare
Ceph RBD Fiber Channel
Disk vSphere VMDK
OPENSHIFT
Y puede utilizar persistencia con contenedores
MASTER
NODE NODE NODE NODE
RHGS RHGS POD POD RHGS POD POD POD POD POD
POD POD POD
POD POD POD
OPENSHIFT
La capa de enrutamiento permite el acceso externo a la
aplicación
OPENSHIFT
Y si quiero probar nuevas versiones de mi aplicación?
OPENSHIFT
Openshift ejecuta un rolling update como canary deploy
vv21 v1.0 v1.0
..00
vv21 v2.0 v2.0
..00
OPENSHIFT
Y también hace rollback manual o automático
vv21 v1.0 v1.0
..00
vv21 v1.0 v1.0
..00
OPENSHIFT
Openshift realiza el A/B Testing
90% v1.0 | 10% v2.0
v1.0 v1.0 v2.0
v1.0
OPENSHIFT
Y el Blue Green Deployment
Balancer
v2.0 v2.0 v2.0 v1.0
v2.0 v1.0 v1.0
OPENSHIFT
Y si quiero implementar implementar CI/CD?
OPENSHIFT
Openshift ya viene integrado con Jenkins y sus slaves
S S S
OPENSHIFT
Los slaves se quitan después de su ejecución
S S S
OPENSHIFT
Openshift también se comunica con servicios externos
External Database
OPENSHIFT
Desarrollador accede a Openshift por la web, CLI o IDE
OPENSHIFT
CONTAINERS EN PRODUCCIÓN USANDO EL
RED HAT OPENSHIFT
Otros Clientes que usan Openshift
79 OpenShift
Demo
time!
DEMO OPENSHIFT CI/CD
Sonar Nexus
Qube Reposit.
Jenkins:
Coverage Static
Analysis
Jenkins: Jenkins: Jenkins: Jenkins: Jenkins:
Git Build Package Archive Artifacts Trigger Image Build Integration Promote Image
in Nexus Deploy to DEV Test Deploy to STAGE
Jenkins:
Unit Tests OpenShift: OpenShift:
Build Docker Image Promote Image
Deploy to DEV Deploy to STAGE
81 OpenShift
Muchas gracias
[Link]/+RedHat [Link]/redhatinc
[Link]/company/red-hat [Link]/RedHatNews
[Link]/user/RedHatVideos
CAMBIOS FUNDAMENTALES
Monolith Datacenter Waterfall
N-Tier Hosted Agile
Microservices Hybrid DevOps
Aplicaciones Infraestrutura Procesos
¿Qué son los Contenedores?
Depende quién pregunte
Sys-Admins / Ops Developers
● Procesos de aplicación aislados en un ● Sirve para empaquetar mi aplicación y
kernel de sistema operativo Linux todas sus dependencias
compartido
● Implementar en cualquier entorno en
● Más simple, más ligero y más denso que segundos y habilitar CI / CD
las máquinas virtuales
● Accede y comparta componentes en
● Portátil en diferentes entornos contenedores
VIRTUAL MACHINES AND CONTAINERS
VIRTUAL MACHINES CONTAINERS
VM Container Container Container Container
App OS App OS App OS
App App App App
App
deps deps deps
OS Dependencies OS deps
Kernel Container Host (Kernel)
Hypervisor
Hardware
Hardware
virtual machines are isolated containers are isolated
apps are not so are the apps
APPLICATION PORTABILITY WITH CONTAINERS
Containers + Container Host = Guaranteed Portability
Across Any Infrastructure
Container Container Container Container Container
Application OS Application OS Application OS Application OS Application OS
dependencies dependencies dependencies dependencies dependencies
Container Host Container Host Container Host Container Host
Container Host
Guest VM Virtual Machine Virtual Machine Virtual Machine
LAPTOP BARE METAL VIRTUALIZATION PRIVATE CLOUD PUBLIC CLOUD
DevOps con Containers a través de Cloud Híbrida:
Físico
Virtual
Source CI/CD
Dev Container Nube Privada
Repository Engine
Nube Pública
DEMO OPENSHIFT CI/CD
88 OpenShift