|
| 1 | +## ¿Qué es DevOps? |
| 2 | +Si escribes código, eres también responsable que corra en producción. |
| 3 | + |
| 4 | +- Desarrollador: Escribe el código con las reglas de negocio, se encarga de la seguridad dentro del código, empaquetar el código. |
| 5 | +- Operaciones. Configuración de servidores, redes para que el software se ejecute sin problemas. |
| 6 | +- Alguien que practica DevOps, se encarga que el proceso de desarrollo y puesta en producción (operaciones), sea seguro, automatizado y de calidad. |
| 7 | +- Pruebas Automatizadas: Unit Test automatizadas que aseguren la calidad. (Test Drive Developer) |
| 8 | +- Continius Integration (CI): Asegurando que el código que se integre continuamente sea de calidad. |
| 9 | +- Continius Delivery (CD): nos da una estrategia para desplegar las aplicaciones continuamente y entregarlo. |
| 10 | +- Monitoreo y logging: para detectar problemas oportunamente. |
| 11 | +- Microservicios: separar las funcionalidades de las aplicaciones de servicios independientes. |
| 12 | +- Colaboración y comunicación continúa. |
| 13 | + |
| 14 | +## El ciclo de vida de DevOps |
| 15 | + |
| 16 | +Herramientas que se puede utilizar: |
| 17 | + |
| 18 | + |
| 19 | + |
| 20 | + |
| 21 | + |
| 22 | +Ciclo DevOps. Infinity Loop, Mejora Continua. |
| 23 | + |
| 24 | +- Planificación: Definimos los requerimientos, usamos issues, boards. |
| 25 | +- Desarrollo o crear: Escribir código, uso de repositorios. |
| 26 | +- Verificación: Pruebas Automatizadas, definimos las reglas para que el software se de calidad. |
| 27 | +- Empaquetado: Compilación de código para la puesta a producción, usamos contenedores. |
| 28 | +- Despliegue o Release: Nuevas versiones, CD, puesta a producción. |
| 29 | +- Configuración: Realizar los cambios para que la aplicación se ejecute correctamente. |
| 30 | +- Monitoreo: Verificar la performance de la aplicación. |
| 31 | +Mientras desarrollamos debemos de asegurar nuestra aplicación y cuando ya se encuentra en producción debemos defender. |
| 32 | + |
| 33 | +#### Beneficios DevOps |
| 34 | + |
| 35 | +- Velocidad: entregas rápidas, automatización. |
| 36 | +- Rápida distribución: CD, cambios diarios |
| 37 | +- Confiabilidad: Por la automatización de procesos |
| 38 | +- Escala: Podemos escalar nuestra infraestructura |
| 39 | +- Colaboración: mejora de procesos |
| 40 | +- Seguridad: a través de pruebas automatizadas. |
| 41 | + |
| 42 | +## ¿Qué es Gitlab? |
| 43 | + |
| 44 | + |
| 45 | + |
| 46 | +Gitlab no tiene oficinas. Es Open Source. |
| 47 | + |
| 48 | +Es un producto especializado en el ciclo de vida de devops. Nos dá todas las herramientas para asegurar el ciclo de vida devops. |
| 49 | + |
| 50 | +Está compuesto por: |
| 51 | + |
| 52 | +- Manage: opciones de autenticación, autorización, analytics. |
| 53 | + |
| 54 | +- Plan: issues, milestones, opciones de colaboración dentro de GitLab. especializado en el desarrollo agil. |
| 55 | + |
| 56 | +- Create: crear proyectos y grupos, repositorios de grupos, merge requests, integración y automatización. |
| 57 | + |
| 58 | +- Verify: pruebas automatizadas, calidad del codigo, review apps, code coverage. (Todo esto a través de GitLab CI). |
| 59 | + |
| 60 | +- Package: nos permite empaquetar nuestro código. (Container REgistry, paquetes privados - NPM y Maven) |
| 61 | + |
| 62 | +- Distribution (Release): Distribuir el codigo de manera agil. |
| 63 | + |
| 64 | +- Configuración: auto devops, integración con kubernetes, |
| 65 | + |
| 66 | +- Monitoreo: gitlab se apoya de 3 proyectos open source para visualizar performance, salud y tracing de la plataforma junto con sus errores: prometheus, jaeger, sentry |
| 67 | + |
| 68 | +- Secure: cuando desarrollamos código exponemos vulnerabilidades, gitlab no ayuda con los lectores de ataque. |
| 69 | + |
| 70 | +- Defense: No solo aseguramos el código, tambien lo defendemos con gitlab (firewalls). |
| 71 | + |
| 72 | +## Módulo de Administración |
| 73 | + |
| 74 | +### Autenticación |
| 75 | +Existen muchas formas de autenticarse: |
| 76 | +- Username/Password (loginm) |
| 77 | +- 2FA (OTP y FIDO U2F) |
| 78 | +- SSH key (Push Code) |
| 79 | + |
| 80 | +### Grupos |
| 81 | + |
| 82 | +Permiten compartir recursos entre varios miembros del equipo y poder organizar la forma en que trabajamos; permiten: |
| 83 | + |
| 84 | +- Agrupar proyectos |
| 85 | +- Otorgar permisos de acceso |
| 86 | +- Compartir recursos |
| 87 | + |
| 88 | +También se les conoce como subgrupos, permiten modelar la forma en la que nuestra compañia está diseñada (osea sus áreas o equipos), por ejemplo un grupo de devs, administrativos o ejecutivos. El hecho de que creemos grupos es para establecer reglas de seguridad para que otros grupos por ejemplo no visualicen lo que no les pertenece. |
| 89 | + |
| 90 | +Los grupos se utilizan en GitLab a traves de "NAMESPACES", lo que nos dará una url única para usuario, nombre de grupo y/o subgrupos. |
| 91 | + |
| 92 | +Nombres reservados para los grupos, las palabras reservadas son: https://docs.gitlab.com/ee/user/reserved_names.html |
| 93 | + |
| 94 | +Hay palabras reservadas que no pueden tener los grupos, como: commits, create, files, new, wikis, etc. |
| 95 | + |
| 96 | +##### Tipos de visibilidad |
| 97 | + |
| 98 | +- Pública: cualquier usuario puede ver los contenidos de ese grupo |
| 99 | +- Interna: adentro de la instancia de GitLab (usuarios logueados) pueden tener acceso a ese grupo. |
| 100 | +- Privada: Proyectos y grupos sean accesibles a traves de los permisos que se asignan en GitLab. |
| 101 | + |
| 102 | +##### Autorización |
| 103 | +Permisos de Grupo |
| 104 | +- Guest: solo Lectura. |
| 105 | +- Reporter: pueder abrir y comentar issue, no puede añadir código (no puede hacer push). |
| 106 | +- Developer: Subir código, acceso a issue, branches, etc, pero no puedes añadir miembros o configurar el proyecto. |
| 107 | +- Owner / Maintainer: Puede realizar configuraciones del proyecto + Dev. (Owner → creador del proyecto. Maintainer → no creador del proyecto) |
| 108 | + |
| 109 | +##### Auditoria |
| 110 | +Poder tener un rastro de auditoría que podremos usar en caso de que haya algo sucedido mal, y un log se crea por ejemplo, si agregamos un usuario al subgrupo, eliminamos, etc. Te da una información detallada, la fecha y hora, quien lo hizo, etc. Es necesario tener un plan para poder hacer uso de este privilegio. |
| 111 | + |
| 112 | +Gitlab nos permite registrar rastro de auditoria sobre el Grupo, proyecto o instancia (y muchos más) |
| 113 | + |
| 114 | +Existe un rastro de auditoría el cual va evolucionando y nos provee de puntos de datos. |
| 115 | + |
| 116 | +Todos los cambios quedan auditados sin posibilidad de modificarlos. De esta manera se puede determinar la causa del problema. |
| 117 | + |
| 118 | +###### Proyectos |
| 119 | +Los proyectos tienen 3 componentes fundamentales: |
| 120 | +- Issue tracker: es especifico para equipos que desarrollan software y que trabajan de manera agil, por lo tanto encontraremos dentro conceptos de pesos, estimados de tiempos, sprints, etc. |
| 121 | +- Code repository: es el lugar que nos permiten almacenar y compartir el código fuente. |
| 122 | +- Gitlab CI: es la integración continua que aplica el equipo. |
| 123 | + |
0 commit comments