İçeriğe geç
GitLab

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:

  1. lint (yaml/markdown/dockerfile lint).
  2. build (multi-stage Docker, BuildKit + cache).
  3. test (unit + integration; coverage threshold).
  4. security (SAST + dependency scanning + container scanning + secret detection).
  5. package (image push GitLab Registry + Cosign signing).
  6. deploy (ArgoCD manifest update, otomatik staging + manuel prod approval).
  7. 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 gc cron’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?
Veri ikametgâhı / KVKK / hava-boşluğu (air-gap) ihtiyacı varsa self-hosted (Mono Cloud üzerinde GitLab Omnibus). Ekip 50+ kişi ve manage etmek istemiyorsanız SaaS (gitlab.com) anlamlı. Self-hosted’da disk, postgres ve gitaly storage en kritik kapasiteler.
GitHub'dan göç mümkün mü?
Evet, GitLab Importer doğrudan GitHub repo + issue + PR + comments aktarımı yapar. CI tarafı .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).
Runner sayısı/dağılımı ne olmalı?
Shared runners küçük ekipler için yeterli. Büyük ekiplerde group/project runner’lar + autoscaling (Docker Machine veya Kubernetes executor). Mono önerisi: K8s executor + Karpenter ile spot node’larda CI; build artefact’leri Mono Cloud Garage’a.
Hangi sürüm: CE mi EE mi?
EE Free (lisanssız) bile Premium/Ultimate özellikleri kontrol etmenizi sağlar (kod görünür ama özellik kapalı). Premium: deployment freeze, MR approval rules. Ultimate: SAST/DAST/dependency scanning yerleşik. Mono müşterilerimizin %30’u Ultimate’a geçiyor (security ihtiyacı).

Bir sonraki dönüşümü birlikte planlayalım.

Ekibimiz teknik gereksinimlerinizi anlamak ve hızlıca prototip çıkarmak için hazır.