İç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.

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

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