a strategy for container lifecycle management

39
A Strategy for Container Lifecycle Management Federico Aguirre, Alfredo Edye, Edgardo Hames September 6, 2017

Upload: edgardo-hames

Post on 22-Jan-2018

173 views

Category:

Technology


1 download

TRANSCRIPT

Page 1: A Strategy for Container Lifecycle Management

A Strategy for Container LifecycleManagement

Federico Aguirre, Alfredo Edye, Edgardo HamesSeptember 6, 2017

Page 2: A Strategy for Container Lifecycle Management

Table of contents

1. Introducción

2. 12-Factor Apps

3. Bootstrap

4. Conclusión

1

Page 3: A Strategy for Container Lifecycle Management

Introducción

Page 4: A Strategy for Container Lifecycle Management

Reseña histórica

1956 • Memoria Virtual, Fritz-Rudolf Güntsch

1959 • Tiempo Compartido, John McCarthy

1964 • Hypervisor (14 VMs concurrentes), IBM

1979 • chroot, Unix

2000 • Virtualización OS, Virtuozzo

2000 • jails, FreeBSD

2004 • zones, Solaris

2008 • namespaces, Linux

2013 • Docker

2

Page 5: A Strategy for Container Lifecycle Management

Virtualización

3

Page 6: A Strategy for Container Lifecycle Management

Arquitectura de Docker

4

Page 7: A Strategy for Container Lifecycle Management

Compose & Swarm

5

Page 8: A Strategy for Container Lifecycle Management

12-Factor Apps

Page 9: A Strategy for Container Lifecycle Management

Presentación

• Uso de formatos declarativos para configuraciones

• Existencia de un contrato claro entre las aplicaciones y el sistemaoperativo para mayor portabilidad

• Simplificación de despliegue en plataformas cloud• Integración continua para mayor agilidad• Escalabilidad sin cambios significativos en la arquitectura,

herramientas y prácticas de desarrollo

6

Page 10: A Strategy for Container Lifecycle Management

Presentación

• Uso de formatos declarativos para configuraciones• Existencia de un contrato claro entre las aplicaciones y el sistema

operativo para mayor portabilidad

• Simplificación de despliegue en plataformas cloud• Integración continua para mayor agilidad• Escalabilidad sin cambios significativos en la arquitectura,

herramientas y prácticas de desarrollo

6

Page 11: A Strategy for Container Lifecycle Management

Presentación

• Uso de formatos declarativos para configuraciones• Existencia de un contrato claro entre las aplicaciones y el sistema

operativo para mayor portabilidad• Simplificación de despliegue en plataformas cloud

• Integración continua para mayor agilidad• Escalabilidad sin cambios significativos en la arquitectura,

herramientas y prácticas de desarrollo

6

Page 12: A Strategy for Container Lifecycle Management

Presentación

• Uso de formatos declarativos para configuraciones• Existencia de un contrato claro entre las aplicaciones y el sistema

operativo para mayor portabilidad• Simplificación de despliegue en plataformas cloud• Integración continua para mayor agilidad

• Escalabilidad sin cambios significativos en la arquitectura,herramientas y prácticas de desarrollo

6

Page 13: A Strategy for Container Lifecycle Management

Presentación

• Uso de formatos declarativos para configuraciones• Existencia de un contrato claro entre las aplicaciones y el sistema

operativo para mayor portabilidad• Simplificación de despliegue en plataformas cloud• Integración continua para mayor agilidad• Escalabilidad sin cambios significativos en la arquitectura,

herramientas y prácticas de desarrollo

6

Page 14: A Strategy for Container Lifecycle Management

Procesos administrativos

El código de administración y despliegue debe

• entregarse junto con el de la aplicación para evitar inconsistencias

• ser autocontenido y no depender de la existencias de herramientas obibliotecas en el sistema

7

Page 15: A Strategy for Container Lifecycle Management

Procesos administrativos

El código de administración y despliegue debe

• entregarse junto con el de la aplicación para evitar inconsistencias• ser autocontenido y no depender de la existencias de herramientas o

bibliotecas en el sistema

7

Page 16: A Strategy for Container Lifecycle Management

Problema

¿Cómo distribuimos los scripts de mantenimiento y sus configuraciones?

8

Page 17: A Strategy for Container Lifecycle Management

Bootstrap

Page 18: A Strategy for Container Lifecycle Management

Bootstrap

Un nuevo contenedor denominado Bootstrap encargado de

• distribución de scripts de mantenimiento y configuraciones

• descarga de imágenes del sistema• gestión del ciclo de vida (inicio, detención, estado, etc)• tareas de mantenimiento (upgrade, downgrade, migración, etc)

9

Page 19: A Strategy for Container Lifecycle Management

Bootstrap

Un nuevo contenedor denominado Bootstrap encargado de

• distribución de scripts de mantenimiento y configuraciones• descarga de imágenes del sistema

• gestión del ciclo de vida (inicio, detención, estado, etc)• tareas de mantenimiento (upgrade, downgrade, migración, etc)

9

Page 20: A Strategy for Container Lifecycle Management

Bootstrap

Un nuevo contenedor denominado Bootstrap encargado de

• distribución de scripts de mantenimiento y configuraciones• descarga de imágenes del sistema• gestión del ciclo de vida (inicio, detención, estado, etc)

• tareas de mantenimiento (upgrade, downgrade, migración, etc)

9

Page 21: A Strategy for Container Lifecycle Management

Bootstrap

Un nuevo contenedor denominado Bootstrap encargado de

• distribución de scripts de mantenimiento y configuraciones• descarga de imágenes del sistema• gestión del ciclo de vida (inicio, detención, estado, etc)• tareas de mantenimiento (upgrade, downgrade, migración, etc)

9

Page 22: A Strategy for Container Lifecycle Management

Uso

Para descargar las imágenes de los servicios

$ docker run --rm bootstrap pull

Para desplegar los contenedores

$ docker run --rm bootstrap up

Para detener los contenedores

$ docker run --rm bootstrap stop

10

Page 23: A Strategy for Container Lifecycle Management

Implementación (script)

#!/bin/bashcommand=$1case "$command" in

"pull")docker -compose pull;;

"up")docker -compose up;;

"stop")# TODO: Pedir al usuario que confirmedocker -compose stop;;

esac

11

Page 24: A Strategy for Container Lifecycle Management

Implementación (Dockerfile)

FROM docker/compose:1.12.0COPY docker -compose.yml /opt/bitlogicCOPY startup.sh /opt/bitlogicRUN chmod 755 /opt/bitlogic/startup.shENTRYPOINT /opt/bitlogic/startup.sh

12

Page 25: A Strategy for Container Lifecycle Management

Ventajas

• Aplica a cualquier tipo de proyecto que use Docker

• Puede usarse con cualquier motor de integración y desplieguecontinuos

• Facilita el despliegue del producto en el entorno de desarrollo• Permite desplegar remotamente usando la API TCP de Docker• Garantiza la compatibilidad con cada versión del producto• Es agnóstico de la plataforma subyacente (Swarm, Kubernetes, etc)

13

Page 26: A Strategy for Container Lifecycle Management

Ventajas

• Aplica a cualquier tipo de proyecto que use Docker• Puede usarse con cualquier motor de integración y despliegue

continuos

• Facilita el despliegue del producto en el entorno de desarrollo• Permite desplegar remotamente usando la API TCP de Docker• Garantiza la compatibilidad con cada versión del producto• Es agnóstico de la plataforma subyacente (Swarm, Kubernetes, etc)

13

Page 27: A Strategy for Container Lifecycle Management

Ventajas

• Aplica a cualquier tipo de proyecto que use Docker• Puede usarse con cualquier motor de integración y despliegue

continuos• Facilita el despliegue del producto en el entorno de desarrollo

• Permite desplegar remotamente usando la API TCP de Docker• Garantiza la compatibilidad con cada versión del producto• Es agnóstico de la plataforma subyacente (Swarm, Kubernetes, etc)

13

Page 28: A Strategy for Container Lifecycle Management

Ventajas

• Aplica a cualquier tipo de proyecto que use Docker• Puede usarse con cualquier motor de integración y despliegue

continuos• Facilita el despliegue del producto en el entorno de desarrollo• Permite desplegar remotamente usando la API TCP de Docker

• Garantiza la compatibilidad con cada versión del producto• Es agnóstico de la plataforma subyacente (Swarm, Kubernetes, etc)

13

Page 29: A Strategy for Container Lifecycle Management

Ventajas

• Aplica a cualquier tipo de proyecto que use Docker• Puede usarse con cualquier motor de integración y despliegue

continuos• Facilita el despliegue del producto en el entorno de desarrollo• Permite desplegar remotamente usando la API TCP de Docker• Garantiza la compatibilidad con cada versión del producto

• Es agnóstico de la plataforma subyacente (Swarm, Kubernetes, etc)

13

Page 30: A Strategy for Container Lifecycle Management

Ventajas

• Aplica a cualquier tipo de proyecto que use Docker• Puede usarse con cualquier motor de integración y despliegue

continuos• Facilita el despliegue del producto en el entorno de desarrollo• Permite desplegar remotamente usando la API TCP de Docker• Garantiza la compatibilidad con cada versión del producto• Es agnóstico de la plataforma subyacente (Swarm, Kubernetes, etc)

13

Page 31: A Strategy for Container Lifecycle Management

Comparación con Puppet, Chef, Salt, Ansible, etc

• Tiene un propósito muy específico

• No requiere agentes adicionales (solo Docker)• Puede ser implementado por el equipo de desarrollo del producto

14

Page 32: A Strategy for Container Lifecycle Management

Comparación con Puppet, Chef, Salt, Ansible, etc

• Tiene un propósito muy específico• No requiere agentes adicionales (solo Docker)

• Puede ser implementado por el equipo de desarrollo del producto

14

Page 33: A Strategy for Container Lifecycle Management

Comparación con Puppet, Chef, Salt, Ansible, etc

• Tiene un propósito muy específico• No requiere agentes adicionales (solo Docker)• Puede ser implementado por el equipo de desarrollo del producto

14

Page 34: A Strategy for Container Lifecycle Management

Conclusión

Page 35: A Strategy for Container Lifecycle Management

Resumen

• Los contenedores permiten consolidar la infraestructura.

• Docker ha bajado la barrera de acceso a contenedores.• Bootstrap resuelve el problema de la distribución de configuraciones.• Bootstrap permite unificar la interfaz de operación.

15

Page 36: A Strategy for Container Lifecycle Management

Resumen

• Los contenedores permiten consolidar la infraestructura.• Docker ha bajado la barrera de acceso a contenedores.

• Bootstrap resuelve el problema de la distribución de configuraciones.• Bootstrap permite unificar la interfaz de operación.

15

Page 37: A Strategy for Container Lifecycle Management

Resumen

• Los contenedores permiten consolidar la infraestructura.• Docker ha bajado la barrera de acceso a contenedores.• Bootstrap resuelve el problema de la distribución de configuraciones.

• Bootstrap permite unificar la interfaz de operación.

15

Page 38: A Strategy for Container Lifecycle Management

Resumen

• Los contenedores permiten consolidar la infraestructura.• Docker ha bajado la barrera de acceso a contenedores.• Bootstrap resuelve el problema de la distribución de configuraciones.• Bootstrap permite unificar la interfaz de operación.

15

Page 39: A Strategy for Container Lifecycle Management

¿Preguntas?

15