Introducci贸n

1

Lo que aprender谩s sobre DevOps con GitLab

2

驴Qu茅 es Devops?

3

El ciclo de vida del Devops

4

Introducci贸n a Gitlab

5

Gitlab vs Github

Administraci贸n

6

Autenticaci贸n

7

Grupos

8

Autorizaci贸n

9

Auditor铆a

10

Proyectos

Planificaci贸n

11

Tipos de desarrollo

12

Planificaci贸n en Gitlab-Issues

13

Planificaci贸n en Gitlab-Etiquetas

14

Planificaci贸n en Gitlab-Pesos

15

Planificaci贸n en Gitlab-Milestones

16

Planificaci贸n en Gitlab-Boards

17

Planificaci贸n en Gitlab-Service Desk

18

Planificaci贸n en Gitlab-Quick actions

Verificaci贸n

19

Inicializaci贸n del repositorio

20

Merge requests

21

Profundizando en Merge requests

22

Continuous Integration-CI

23

Gitlab CI

24

Automatizacion con GitLab Cl

25

Validacion de la configuracion con GitLab Cl

26

gitlab-ci.yml

27

Gitlab pages

28

Implementando Gitlab pages

29

驴Qu茅 es el Desarrollo 脕gil?

30

Gitlab autodevops

31

Implementando GitLab autodevops

32

Habilitando autodevops

Empaquetaci贸n

33

Gitlab container registry

34

Introducci贸n a contenedores

Seguridad

35

Introducci贸n a DevSecOps

36

Firmas de seguridad

37

Pruebas est谩ticas de seguridad

38

Escaneo de contenedores

39

Escaneo de dependencias

40

Pruebas din谩micas de seguridad

41

Gitlab security dashboard

Distribuci贸n

42

Continuous Delivery (CD)

43

Ambientes

44

Review apps

45

Estrategias de Distribuci贸n

46

Feature Flags

47

Rollback

Monitoreo

48

驴Por qu茅 monitorear?

49

M茅tricas de desempe帽o (performance metrics)

50

M茅tricas de salud (health metrics)

51

Metricas de equipo

52

Rastreo de errores

Conclusiones

53

驴Por qu茅 desarrollar con Gitlab?

Introducci贸n a contenedores

34/53

Lectura

Uno de los conceptos que han modificado de manera radical la forma en que desarrollamos software son los contenedores. Estoy seguro que si te mueves en el mundo de la tecnolog铆a has escuchado de Docker y Kubernetes. En esta clase vamos a investigar un poco m谩s qu茅 son los contenedores, c贸mo se comparan con otras tecnolog铆as (como las m谩quinas virtuales) y cu谩les son algunas de las opciones que tenemos para comenzar a utilizarlos.

Tanto los contenedores como las m谩quinas virtuales tienen un objetivo com煤n: aislar a la aplicaci贸n y sus dependencias en una unidad que pueda ejecutarse en cualquier lugar. M谩s a煤n, tanto los contenedores como las m谩quinas virtuales eliminan la necesidad de proveer a nuestros servicios con hardware f铆sico. Esto significa que se pueden utilizar de manera m谩s eficiente los recursos computacionales que tenemos a nuestra disposici贸n. La gran diferencia entre ambos es el enfoque arquitect贸nico que toman.

Una m谩quina virtual es esencialmente una emulaci贸n de una computadora con la capacidad de ejecutar procesos y programas. Las m谩quinas virtuales requieren de un hypervisor para poderse ejecutar sobre una host machine o directamente sobre 鈥渆l metal鈥.

El hypervisor es un componente de software o hardware que permite a la host machine compartir recursos (RAM y procesadores) entre varias m谩quinas virtuales. Esto es importante, porque si el sistema est谩 corriendo una aplicaci贸n de c贸mputo intensivo, se le pueden asignar m谩s recursos que otras aplicaciones corriendo en el mismo sistema.

En este sentido, la m谩quina virtual que corre sobre un hypervisor se le conoce como la guest machine (m谩quina invitada). Esta guest machine contiene todo lo necesario para correr la aplicaci贸n (por ejemplo, binarios y librer铆as de sistema). Tambi茅n contiene toda una pila de hardware virtualizado (adaptadores de redes, almacenamiento, CPU, etc.). Desde el interior, la guest machine se comporta exactamente como una unidad de c贸mputo. Desde afuera, sabemos que est谩 utilizando recursos compartidos que le otorga la host machine.
Captura de Pantalla 2019-04-05 a la(s) 16.55.07.png
A diferencia de las m谩quinas virtuales 鈥搎ue proveen virtualizaci贸n de hardware鈥, los contenedores proveen virtualizaci贸n al nivel del sistema operativo (al abstraer el user space).

A primera vista, los contenedores se parecen mucho a las m谩quinas virtuales. Por ejemplo, tienen un espacio dedicado al procesamiento, pueden ejecutar comandos como root, tienen interfaces de red privadas y direcciones IP, permiten configurar reglas de ruteo y iptables, tienen la posibilidad de montar file systems, etc.

La gran diferencia es que los contenedores comparten el kernel de la host machine con otros contenedores.
Captura de Pantalla 2019-04-05 a la(s) 16.55.17.png

El diagrama anterior muestra que los contenedores s贸lo empaquetan el user space, y no el kernel o hardware virtual como lo hace una m谩quina virtual. Podemos ver que toda la arquitectura del sistema operativo se comparte entre todos los contenedores. Lo 煤nico que se crea cada vez son la aplicaci贸n y las librer铆as y binarios. Esto es lo que hace a los contenedores tan ligeros.
Existen muchas tecnolog铆as para crear contenedores, pero la m谩s importante hoy en d铆a es Docker. Docker es un proyecto open source que utiliza tecnolog铆as de Linux para crear la abstracci贸n de un contenedor. Sin embargo, esta no es la 煤nica tecnolog铆a en el mercado. Empresas como Google, llevan m谩s de una d茅cada utilizando contenedores. Otros contendientes son: Solaris Zones, BSD jails, LXC, etc. Entonces, 驴qu茅 fue lo que hizo que Docker tomara tanta relevancia?

Lo primero, es la facilidad de uso. Docker permite que cualquier usuario (desarrolladores, sysadmins, etc.), pueda empaquetar su aplicaci贸n r谩pidamente en su computadora personal y la misma aplicaci贸n puede correr ahora en cualquier nube p煤blica, datacenter privado o directamente en hardware.

Una segunda ventaja es su velocidad. Los contenedores son bastante ligeros (comparados con las m谩quinas virtuales), pues son simplemente ambientes contenidos corriendo en el kernel. Las im谩genes de Docker se crean en segundos, mientras que las m谩quinas virtuales toman m谩s tiempo pues necesitan inicializar un sistema operativo completo cada vez.

Por 煤ltimo, Docker cuenta con el Docker Hub lo que permite compartir im谩genes con mucha facilidad. Docker Hub tiene miles de im谩genes p煤blicas que han sido creadas por la comunidad para satisfacer casi cualquier necesidad. Puedes escoger entre decenas de sistemas operativos, lenguajes de programaci贸n y librer铆as para utilizar como base en tu aplicaci贸n.

Los contenedores son importantes en el mundo de Gitlab pues nos permiten aprovechar integraciones con clusters de Kubernetes y Gitlab Container Registry, y utilizar AutoDevOps para crear flujos inmediatos de DevOps que podr铆an tomarnos semanas si hici茅ramos una integraci贸n ad hoc. Estas herramientas asumen que utilizas Docker y contenedores para empaquetar tu aplicaci贸n.

Si quieres aprender esta tecnolog铆a a profundidad, te recomiendo que tomes el curso de Fundamentos de Docker aqu铆 mismo en Platzi: https://platzi.com/clases/fundamentos-docker/

Aportes 5

Preguntas 0

Ordenar por:

驴Quieres ver m谩s aportes, preguntas y respuestas de la comunidad? Crea una cuenta o inicia sesi贸n.

Buena introducci贸n.

Parece que el curso https://platzi.com/clases/fundamentos-docker/ ya no existe.

Aprender Docker es un 鈥渕ust鈥 hoy en d铆a

Excelente introducci贸n sobre los contenedores y las diferencias con las VM.

Muy buena la explicaci贸n, ahora me queda m谩s clara la diferencia entre las VM y los containers

El curso de docker ahora esta disponible en este link https://platzi.com/clases/docker/