GitLab; DevSecOps platform vizyonuyla Git versiyon kontrolü, CI/CD, container registry, package registry, issue tracking, security scanning ve daha fazlasını tek bir uygulamada birleştiren sistemdir. 2011’de açık-kaynak olarak başlamış; bugün CE (Community Edition, MIT lisanslı çekirdek) ve EE (Enterprise Edition, ek özellikler) sürümleriyle hem self-hosted hem SaaS olarak sunulmaktadır.
GitLab’ın “tek uygulama” yaklaşımı, GitHub + Jenkins + Artifactory + SonarQube + Snyk gibi ayrı araçların entegrasyon karmaşıklığını azaltır. Karşılığında bazı alanlarda en iyi-of-breed araçlardan bir adım geride olabilir; bu trade-off operasyonel sadelik vs en iyi araç kararıdır.
Mono’nun yaklaşımı
Mono ekibi GitLab’ı hem Mono kendi DevSecOps yığını için hem de müşteri kurumsal kurulumlarında kullanır. Standart kararlarımız:
- Sürüm: GitLab Omnibus self-hosted, en güncel majör.minör.0+1 patch.
- Boyutlandırma: Postgres ayrı VM (HA için Patroni); Gitaly storage NVMe SSD; Redis cache + Sentinel.
- Storage: Repository storage local (gitaly cluster büyük org için); CI artifacts + LFS S3 uyumlu (Garage / AWS).
- Backup: gitlab-backup create + S3 off-site; PITR Postgres replikasyonuyla.
- Auth: SSO zorunlu (Keycloak/SAML); 2FA tüm kullanıcılarda zorunlu.
- CI runner’lar: K8s executor + autoscaling; build cache S3’te paylaşımlı.
- Container Registry: GitLab Registry yerine sevenler Harbor + GitLab paralel kullanır (image scanning + replication için).
Tipik DevSecOps pipeline
Mono’nun standart .gitlab-ci.yml şablonu şu aşamaları içerir:
- lint (yaml/markdown/dockerfile lint).
- build (multi-stage Docker, BuildKit + cache).
- test (unit + integration; coverage threshold).
- security (SAST + dependency scanning + container scanning + secret detection).
- package (image push GitLab Registry + Cosign signing).
- deploy (ArgoCD manifest update, otomatik staging + manuel prod approval).
- notify (Slack channel; PagerDuty kritik failure’da).
Yaygın sorunlar ve çözümler
- Yavaş Gitaly: Disk IOPS’u yetersiz; NVMe + ayrı volume; haftalık
git gccron’u büyük repolar için. - Postgres yüksek CPU: Long-running query (uzun MR diff’i + commit linkler).
pg_stat_statements+ index review. - CI cuyrukta: Runner sayısı yetersiz veya tag uyuşmazlığı; Karpenter spot ile autoscaling.
- Storage patlaması: CI artefact retention politikası; LFS unused file’lar; image registry GC.
- Major upgrade: Mutlaka maintenance penceresinde; versiyon atlanmadan (örn. 16.x → 17.x değil, ara sürümler de).
İlgili hizmetlerimiz
Sıkça sorulan sorular
GitLab self-hosted mi SaaS mi?
GitHub'dan göç mümkün mü?
.github/workflows → .gitlab-ci.yml manuel yeniden yazma gerektirir; benzer ama 1:1 değil. Mono geçişlerinde tipik 4-8 hafta sürer (ekip büyüklüğüne göre).