cloud
Ejemplo
gitlab
Conceptos clave
- Plataforma DevOps all-in-one que integra repositorios Git, CI/CD, gestión de issues, seguridad y despliegues.
- Alternativa self-hosted a servicios SaaS, con control total sobre datos y configuración.
- Soporta flujos GitOps, CI/CD declarativo y automatización de infraestructura.
- Componentes principales:
- GitLab Rails App (UI, API, permisos).
- Gitaly (gestión de repositorios Git).
- CI/CD (pipelines, runners).
- Registry (contenedores, paquetes).
- Seguridad (SAST, DAST, Dependency Scanning).
Casos de uso
- Monorepos y multirepos con control de permisos.
- Pipelines CI/CD para backend, frontend y mobile.
- Registro privado de contenedores Docker.
- Gestión de proyectos y planificación (issues, boards, milestones).
- Integración con Kubernetes y despliegues continuos.
Instalación en Docker
- Imagen oficial:
- Documentación:
Requisitos mínimos
- CPU: 2 cores (recomendado 4+).
- RAM: 4 GB mínimo (8 GB recomendado).
- Disco: depende del uso de repositorios y artefactos.
- Docker Engine actualizado.
Estructura de volúmenes
- /etc/gitlab → configuración (
gitlab.rb). - /var/log/gitlab → logs.
- /var/opt/gitlab → datos (repos, uploads, registry).
Configuración básica
- URL externa (
external_url) para acceso web. - Puertos HTTP/HTTPS y SSH.
- SMTP para notificaciones.
- Backups programados y retención.
Ejemplo de despliegue con Docker
docker run
docker run -d \
--name gitlab \
--restart always \
--hostname gitlab.example.com \
-p 80:80 \
-p 443:443 \
-p 22:22 \
-v /srv/gitlab/config:/etc/gitlab \
-v /srv/gitlab/logs:/var/log/gitlab \
-v /srv/gitlab/data:/var/opt/gitlab \
gitlab/gitlab-ee:latest
`
Networking y acceso
- Configurar DNS para
external_url. - Reverse proxy opcional (NGINX, Traefik).
- Certificados TLS con Let’s Encrypt o propios.
- Acceso SSH para Git sobre el puerto configurado.
CI/CD y Runners
- GitLab Runner para ejecutar pipelines.
- Tipos de runners:
- Shell
- Docker
- Kubernetes
- Variables de entorno y secretos protegidos.
- Caché y artefactos para acelerar builds.
Seguridad y buenas prácticas
- Limitar acceso SSH y usar claves.
- Activar 2FA para usuarios.
- Escaneo de dependencias y código.
- Separar entornos (prod, staging).
- Actualizar imágenes y backups frecuentes.
Mantenimiento
- Backups automáticos y pruebas de restauración.
- Monitoreo de recursos (CPU, RAM, disco).
- Limpieza de artefactos antiguos.
- Actualizaciones planificadas de versión.
gitlab — conceptos avanzados y temas complementarios
Arquitectura interna
- Omnibus GitLab como distribución empaquetada:
- Incluye PostgreSQL, Redis, NGINX, Sidekiq y Gitaly.
- Gitaly Cluster:
- Escalado horizontal de repositorios Git.
- Alta disponibilidad para grandes volúmenes de repos.
- Sidekiq:
- Procesamiento asíncrono (pipelines, emails, webhooks).
- Colas críticas vs no críticas.
Alta disponibilidad (HA)
- Separación de servicios:
- Base de datos PostgreSQL externa.
- Redis en modo cluster o sentinel.
- Balanceador de carga (HAProxy / NGINX).
- Escenarios:
- GitLab multi-node.
- GitLab Geo (replicación entre regiones).
GitLab Geo
- Replicación read-only de repositorios y artefactos.
- Uso principal:
- Equipos distribuidos geográficamente.
- Reducción de latencia.
- Recuperación ante desastres (DR).
- Sincronización:
- Repos Git.
- LFS, uploads y artifacts.
Gestión de usuarios y permisos
- Roles:
- Guest, Reporter, Developer, Maintainer, Owner.
- Grupos y subgrupos:
- Herencia de permisos.
- Estructuración organizacional.
- Integración:
- LDAP / Active Directory.
- OAuth (GitHub, Google, etc.).
Gestión de secretos
- CI/CD Variables:
- Variables protegidas y enmascaradas.
- Integración con gestores externos:
- HashiCorp Vault.
- Secrets de Kubernetes.
- Buenas prácticas:
- Nunca versionar secretos.
- Rotación periódica.
GitLab Container Registry
- Registro privado integrado.
- Versionado de imágenes.
- Limpieza automática (retention policies).
- Integración directa con pipelines CI/CD.
GitLab Package Registry
- Soporte para:
- npm
- Maven
- PyPI
- NuGet
- Composer
- Uso como registry interno corporativo.
- Control de versiones y permisos.
Seguridad y cumplimiento (DevSecOps)
- Secure Stage:
- SAST (Static Application Security Testing).
- DAST (Dynamic Application Security Testing).
- Dependency Scanning.
- Container Scanning.
- Compliance:
- Auditoría de eventos.
- Policies de seguridad.
- Approval rules en Merge Requests.
Merge Requests avanzados
- Approval rules:
- Reglas por rama o tipo de cambio.
- Code Owners:
- Revisión obligatoria por responsables.
- Pipelines obligatorios antes de merge.
- Squash, rebase y merge strategies.
GitOps con GitLab
- Infraestructura como código (IaC).
- Integración con:
- Terraform
- Helm
- ArgoCD
- Repos declarativos como fuente de verdad.
- Deployments automáticos desde pipelines.
Observabilidad y monitoreo
- Métricas internas:
- Prometheus integrado.
- Logs centralizados.
- Alertas por rendimiento y errores.
- Monitoreo de pipelines y runners.
Backups y Disaster Recovery
- Backups automáticos:
- Repositorios.
- Base de datos.
- Artefactos y uploads.
- Estrategias:
- Snapshot de volúmenes.
- Backups offsite.
- Pruebas periódicas de restore.
Performance y optimización
- Ajuste de Sidekiq workers.
- Limpieza de artefactos y pipelines antiguos.
- Uso de object storage (S3, GCS, Azure Blob).
- Separación de carga CI/CD.
Integraciones externas
- Webhooks para eventos Git.
- Integración con:
- Slack
- Jira
- Kubernetes clusters
- APIs REST y GraphQL.
Licencias y ediciones
- Community Edition (CE):
- Open Source.
- Enterprise Edition (EE):
- Funcionalidades avanzadas (security, compliance, HA).
- Modelo de licenciamiento por usuarios.
Estrategias de escalado
- Vertical:
- Aumentar recursos del nodo.
- Horizontal:
- Separar servicios.
- Añadir runners.
- Cloud-native:
- GitLab + Kubernetes.
Roadmap y evolución
- Enfoque en:
- DevSecOps unificado.
- Automatización end-to-end.
- Integración profunda con cloud providers.
- Reducción de dependencia de herramientas externas.
gitlab — recursos en la red (2025)
Documentación oficial
- GitLab Docs — Documentación principal y referencia de producto: instalación, CI/CD, administración de instancias Self-Managed, comandos Git, autenticación, runners, seguridad y más.
- Tutoriales guiados en la documentación — Recorridos paso a paso por funcionalidades clave como planificación de trabajo, pipelines, despliegues, seguridad y GitOps.
- Tutoriales (entrada alternativa) — Guías para integraciones y funcionalidades específicas.
Recursos de aprendizaje y formación
- Recursos oficiales de GitLab — Centro de recursos con blogs, demostraciones, casos de uso, eventos, newsletters, prácticas recomendadas y comunidad.
- GitLab University — Cursos y rutas de aprendizaje con certificaciones para dominar GitLab y prácticas DevSecOps.
- LinkedIn Learning — GitLab — Formaciones sobre uso de GitLab, CI/CD y colaboración DevOps (actualizadas a 2025).
Comunidad y participación
- Comunidad GitLab — Foros, Discord, programas de co-creación, eventos y contribución al proyecto.
- GitLab Hackathon — Eventos periódicos para contribuir a código, documentación y diseño.
Integración en plataformas externas
- Azure Static Web Apps + GitLab — Guía oficial para integrar repositorios GitLab con Azure Static Web Apps.
Ayuda y soporte general
- Ayuda de GitLab — Soporte, comunidad (Reddit/Discord/Stack Overflow), contribución y actualizaciones.
- Get Started & Migraciones — Comenzar con GitLab y migrar desde GitHub o Jira.
Noticias y estado de la plataforma
- Rediseño de la documentación (2025) — Actualización visual y mejoras de navegación (modo oscuro, UX).
Recursos comunitarios adicionales (no oficiales)
- Guías de terceros / Homelab
- Debates de comunidad
Enlaces útiles agrupados (obsidian)
- GitLab Docs
- Tutoriales GitLab Docs
- Recursos GitLab
- GitLab University
- Ayuda GitLab
- LinkedIn Learning — GitLab
gitlab — casos de uso y ejemplos de código
- devops
- ci-cd
- docker
- kubernetes
- terraform
CI/CD básico para aplicaciones
- Automatizar build, test y deploy en cada push.
- Uso típico en proyectos backend, frontend y monorepos.
- Beneficios:
- Feedback rápido.
- Menos errores manuales.
- Entornos reproducibles.
Ejemplo .gitlab-ci.yml mínimo
stages:
- build
- test
build_app:
stage: build
script:
- echo "Building app"
- npm install
- npm run build
test_app:
stage: test
script:
- echo "Running tests"
- npm test
`
Despliegue con Docker
- Construcción de imágenes Docker en pipelines.
- Push a GitLab Container Registry.
- Base para flujos GitOps y Kubernetes.
Build y push de imagen Docker
stages:
- docker
docker_build:
image: docker:latest
services:
- docker:dind
stage: docker
variables:
DOCKER_TLS_CERTDIR: ""
script:
- docker login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" $CI_REGISTRY
- docker build -t $CI_REGISTRY_IMAGE:latest .
- docker push $CI_REGISTRY_IMAGE:latest
Despliegue continuo en Kubernetes
- Uso de
kubectldesde GitLab Runner. - Ideal para entornos staging y producción.
- Integración con clusters registrados en GitLab.
Deploy a Kubernetes
deploy_prod:
stage: deploy
image: bitnami/kubectl:latest
script:
- kubectl apply -f k8s/deployment.yaml
environment:
name: production
-url: https://app.example.com
Infraestructura como código (IaC)
- Automatizar provisión de infraestructura.
- Integración nativa con Terraform.
- Control de cambios mediante Merge Requests.
Pipeline con Terraform
stages:
- validate
- apply
terraform_validate:
image: hashicorp/terraform:latest
stage: validate
script:
- terraform init
- terraform validate
terraform_apply:
image: hashicorp/terraform:latest
stage: apply
when: manual
script:
- terraform apply -auto-approve
GitOps
- El repositorio como fuente de verdad.
- Cambios declarativos para infraestructura y aplicaciones.
- Compatible con ArgoCD y Helm.
Ejemplo de repositorio GitOps
repo-gitops/
├── apps/
│ ├── backend/
│ │ └── deployment.yaml
│ └── frontend/
│ └── deployment.yaml
└── infrastructure/
└── namespaces.yaml
Automatización de versiones y releases
- Generación automática de tags y releases.
- Changelog controlado por commits.
- Integración con semantic versioning.
Crear release desde pipeline
release_job:
stage: deploy
image: registry.gitlab.com/gitlab-org/release-cli:latest
script:
- echo "Creating release"
release:
tag_name: v1.0.0
name: "Release v1.0.0"
description: "Primera versión estable"
Seguridad (DevSecOps)
- Escaneo automático de código y dependencias.
- Detección temprana de vulnerabilidades.
- Cumplimiento de políticas de seguridad.
SAST básico
include:
- template: Security/SAST.gitlab-ci.yml
Automatización con Webhooks
- Integrar GitLab con servicios externos.
- Notificaciones y acciones basadas en eventos.
- Uso común con Slack, APIs internas y bots.
Ejemplo de payload procesado
app.post("/gitlab-webhook", (req, res) => {
const event = req.headers["x-gitlab-event"];
console.log("Evento recibido:", event);
res.status(200).send("OK");
});
Gestión de entornos
- Entornos dinámicos por branch.
- Review Apps para validación rápida.
- Eliminación automática tras merge.
Review App
review_app:
stage: deploy
script:
- echo "Deploy review app"
environment:
name: review/$CI_COMMIT_REF_NAME
on_stop: stop_review
stop_review:
stage: deploy
script:
- echo "Stop review app"
when: manual
environment:
name: review/$CI_COMMIT_REF_NAME
action: stop
Casos de uso organizacionales
- Empresas con requisitos self-hosted.
- Equipos que buscan una única herramienta DevOps.
- Organizaciones con políticas estrictas de seguridad y compliance.
- Escenarios de multi-cloud y hybrid cloud.
¿Te gusta este contenido? Suscríbete vía RSS