Está en la página 1de 29

Introducción a los

contenedores
Febrero 2018
En los viejos tiempos…

• Nueva aplicación  nuevo servidor


• IT tenía que adivinar los requisitos de hardware
• Hardware sobredimensionado (= infrautilizado)
La virtualización

• Ejecutar múltiples aplicaciones


Enterprise sobre el mismo hardware
de forma segura y fiable
• Aprovechar mucho mejor el
hardware
La virtualización

• Consumo de CPU, RAM y

• Cada máquina virtual necesita •


ALMACENAMIENTO
Gestión de parches, monitorización
un sistema operativo
completo
• Licenciamiento
• Tardan en arrancar / moverse
Contenedores

• Consumo de CPU, RAM y


ALMACENAMIENTO
• Los contenedores comparten • Gestión de parches, monitorización
el sistema operativo • Licenciamiento
• Muy rápidos para arrancar / moverse
Linux
Los contenedores modernos se desarrollaron…
• A lo largo de mucho tiempo, con precedentes
• System/360, BSD Jails, Solaris Zones, Linux LXC…
• Gracias a las contribuciones de mucha gente y de
muchas empresas (p.e. Google)
• Aprovechando ciertas características técnicas de Linux
• Kernel namespaces
• Control groups
• Union filesystems
• Y gracias a una empresa que lo hizo FÁCIL…
Docker:
Portabilidad
• https://www.docker.com/docker-windows
• https://docs.docker.com/docker-for-mac/
¿Cómo se usan los contenedores?

Depende de a quién se pregunte…

Sys-Admins / Ops Desarrolladores

● Procesos de aplicación aislados ● Paquetes con mi aplicación y sus


ejecutándose sobre un kernel de Linux dependencias
compartido ● Desplegables en segundos, permiten
● Más simples y ligeros que M.V. CI/CD

● Portables entre diferentes entornos ● Permiten la creación y uso compartido


de componentes
Docker: arquitectura
• Arquitectura cliente-servidor
• Imagen: plantilla para crear
contenedores
• Repositorios (registries): dockerHub,
Red Hat…
• Tecnologías disponibles en el kernel de
Linux
• Namespaces: interacciones entre
contenedores
• Control groups: interacciones de
contenedores con el host
• SELinux: accesos entre
contenedores y al host
Elementos principales de Docker

• Imágenes • Espacios de nombres


(namespaces)
• Repositorios (registries) • Grupos de control (cgroups)
• Contenedores • SELinux
Imágenes Docker

• Imagen = capas combinadas • Crear imágenes


• La aplicación ve un único sistema de • Desplegar instancia de contenedor a
ficheros virtual partir de imagen y guardar cambios
• Los cambios se guardan en nuevas en imagen nueva
capas, y se pierden si no se genera • Usar un fichero Dockerfile
una nueva imagen (instrucciones  ficheros en cada
• UnionFS capa)
Kubernetes

• Sobre Docker y los contenedores 


Kubernetes
• ¿qué pasa cuando falla algún
contenedor?  conserva la integridad
del cluster, levanta instancias de
contenedor cuando fallan y orquesta la
comunicación entre contenedores
(servicios)
Kubernetes: arquitectura
• Cluster de Kubernetes: conjunto de servidores que ejecutan
contenedores, dirigidos por servidor principal (master)
• El servidor principal ejecuta comandos (kube-control) para
administrar pods (conjunto de uno o más contenedores que
comparten una dirección IP)
• Controladores de replicación  controlar escalado
• Volúmenes persistentes: conservar datos aunque falte
contenedor. Varios contenedores pueden compartir
almacenamiento persistente (persistent volume claims)
Cambios para
los
desarrolladores
Contenedores

Monolíticas Datacenter En cascada

N-Capas Hospedado Agile

Microservicios Híbrido DevOps


Aplicaciones Infraestructura Procesos
Evolución

• Las distintas tecnologías y modelos de


programación CONVIVEN durante mucho
tiempo
• COBOL, Java monolítico, SQL / NoSQL…
Consecuencias de la nueva arquitectura
• Favorece el diseño usando microservicios
(arquitectura distribuida)
• Muchos contenedores  orquestación
• Kubernetes
• Independiente del lenguaje de
programación
1 contenedor  1 servicio • Importancia de la gestión de APIs
• Despliegue automatizado al modificar el
código fuente
• Git
• Infraestructura gestionada por software 
automatización
• Ansible

https://12factor.net/
DevOps con contenedores sobre nube híbrida

Físico

Virtual

Repositorio CI/CD
desarrollador
origen
Contenedor Nube
Engine
privada

Nube pública
FABRICANTES
Red Hat Openshift

• Docker + Kubernetes en un paquete amigable y


que facilita DevOps
• Consola web: escalar, administrar pods /
contenedores, control de acceso por roles
• Local, nube pública / privada
• Rutas para publicar servicios
Ventajas para Dev y para Ops
Autoservicio Basado en estándares

Multi-lenguaje Escalabilidad

Código abierto
Automatización

Colaboración Producto enterprise

Integración Seguridad
RHEL para ejecutar contenedores

Enterprise Container Host

Container Runtime & Packaging


(Docker)
Atomic Host Red Hat Enterprise Linux
Kubernetes Enterprise

Container Orchestration & Cluster Management


(kubernetes)
Logs &
Cloudforms
Networking Storage Registry Security
Metrics

Infrastructure Automation & Mg


Red Hat
Enterprise Container
Host Storage
Container Runtime & Packaging
(Docker)
Atomic Host Red Hat Enterprise Linux
Almacenamiento nativo para contenedores

● Red Hat Gluster Storage

● Integración nativa con OpenShift Container Platform


APPLICATION APPLICATION APPLICATION
CONTAINER CONTAINER CONTAINER ● Orquestación unificada con Kubernetes para
aplicaciones y almacenamiento
STORAGE STORAGE STORAGE
CONTAINER CONTAINER CONTAINER

● Mayor control y facilidad de uso para desarrolladores

CLUSTER DE ALMAC. DISTRIBUIDO ● Menor coste (TCO)  convergencia


Plataforma Enterprise para contenedores

Self-Service
Service Catalog Source-2-Image
(Language Runtimes, Middleware, Databases)

Build Automation Deployment Automation


Pipelines de
OpenShift Application Lifecycle Management
(CI/CD)
aplicación
Container Orchestration & Cluster Management
Herramientas de
(kubernetes) desarrollo
Logs &
Networking Storage Registry Security
Metrics

Infrastructure Automation & Cockpit

Enterprise Container
Host
Container Runtime & Packaging
(Docker)
Atomic Host Red Hat Enterprise Linux
Soporte para aplicaciones
Business
Integration
Data & Web & tradicionales y microservicios
Automation Storage Mobile

Container Container Container Container

Self-Service
JBOSS EAP
Service Catalog
(Language Runtimes, Middleware, Databases) JBOSS DATA GRID
JBOSS DATA VIRTUALIZATION
Build Automation Deployment Automation
JBOSS AM-Q
OpenShift Application Lifecycle Management
(CI/CD)
JBOSS BRMS
JBOSS BPM
Container Orchestration & Cluster Management JBOSS FUSE
(kubernetes) RED HAT MOBILE
Logs &
Networking Storage Registry
Metrics
Security 3 Scale
Infrastructure Automation & Cockpit

Enterprise Container Host

Container Runtime & Packaging


(Docker)
Atomic Host Red Hat Enterprise Linux
Enlaces
• Docker Hub
• https://hub.docker.com/
• Red Hat – Openshift
• https://learn.openshift.com/
• Ebook : https://www.openshift.com/promotions/ebook.html
• Docker en IBM Cloud
• https://www.ibm.com/cloud-computing/bluemix/es/containers
• Docker en Microsoft Azure
• https://azure.microsoft.com/es-es/services/container-service/
¡GRACIAS!

También podría gustarte