content
"}},Qt={element:"span",mutate:function(e){e.setAttribute("style","display: -webkit-flex; display: -ms-flexbox; display: flex;"),e.innerHTML='hello'}},Yt={element:"form",mutate:function(e){e.setAttribute("tabindex",0),e.setAttribute("disabled","disabled")}},en={element:"a",mutate:function(e){return e.href="#void",e.innerHTML='content
",e.firstElementChild}},xn=function(e){if(!e.ownerSVGElement&&"svg"!==e.nodeName.toLowerCase())return!1;var t=s();e.appendChild(t);var n=t.querySelector("input");return n.focus(),n.disabled=!0,e.removeChild(t),!0},yn={element:"div",mutate:function(e){return e.innerHTML=c('Veröffentlicht am: 15. Oktober 2025
4 Minuten Lesezeit
GitLab Object Storage für maximale Performance und Kosteneffizienz konfigurieren. Consolidated Forms, direkte Downloads und identity-basierte Authentifizierung.
Die Verwaltung von GitLab im Enterprise-Umfeld erfordert eine strategische Konfiguration des Object Storage. Diese Anleitung zeigt, wie Object Storage für maximale Performance, Sicherheit und Zuverlässigkeit über alle GitLab-Komponenten hinweg konfigurieren.
Für deutsche Unternehmen besonders relevant: Diese Konfigurationsoptimierungen reduzieren Infrastructure-Kosten durch geringere Egress-Gebühren und Serverlast. Die systematische Trennung von Komponenten ermöglicht zudem granulare Zugriffskontrolle und vereinfachtes Cost Tracking – beispielsweise für Enterprise-Umgebungen mit Compliance-Anforderungen.
Für Artifacts, LFS, Uploads, Packages und weitere GitLab-Daten eliminiert die Consolidated Form die Credential-Duplizierung:
gitlab_rails['object_store']['enabled'] = true
gitlab_rails['object_store']['connection'] = {
'provider' => 'AWS',
'region' => 'us-east-1',
'use_iam_profile' => true
}
gitlab_rails['object_store']['objects']['artifacts']['bucket'] = 'gitlab-artifacts'
gitlab_rails['object_store']['objects']['lfs']['bucket'] = 'gitlab-lfs'
# ... additional buckets for each object type
Diese Konfiguration reduziert die Komplexität und ermöglicht gleichzeitig verschlüsselte S3-Buckets sowie korrekte Content-MD5-Header.
Die Container Registry benötigt eine eigene Konfiguration, da sie die Consolidated Form nicht unterstützt:
registry['storage'] = {
's3_v2' => { # Den neuen v2-Treiber verwenden
'bucket' => 'gitlab-registry',
'region' => 'us-east-1',
# Access Keys weglassen für IAM-Rolle
}
}
Hinweis: Der s3_v1-Treiber ist deprecated und wird in GitLab 19.0 entfernt. Eine Migration zu s3_v2 verbessert Performance und Zuverlässigkeit.
proxy_download
auf false (Standard) setzen für direkte Downloads:
# Für GitLab-Objekte - global konfigurierbar
gitlab_rails['object_store']['proxy_download'] = false
# Oder granular pro Bucket
gitlab_rails['object_store']['objects']['artifacts']['proxy_download'] = false
gitlab_rails['object_store']['objects']['lfs']['proxy_download'] = false
gitlab_rails['object_store']['objects']['uploads']['proxy_download'] = true # Beispiel: Proxy für Uploads beibehalten
# Container Registry nutzt standardmäßig Redirect Mode (direkte Downloads)
# Nur bei Bedarf deaktivieren:
registry['storage']['redirect']['disable'] = false # Auf false belassen
Wichtig: Die proxy_download
-Option kann global auf Object-Store-Ebene oder individuell pro Bucket konfiguriert werden. Das ermöglicht Optimierung nach spezifischem Use Case – beispielsweise direkte Downloads für große Artifacts und LFS-Files, aber Proxy für kleinere Uploads mit zusätzlichen Security-Kontrollen.
Diese Konfiguration reduziert die Serverlast und Egress-Kosten erheblich, indem Clients direkt vom Object Storage herunterladen.
AWS: IAM-Rollen statt Access Keys verwenden:
# GitLab-Objekte
gitlab_rails['object_store']['connection'] = {
'provider' => 'AWS',
'use_iam_profile' => true
}
# Container Registry
registry['storage'] = {
's3_v2' => {
'bucket' => 'gitlab-registry',
'region' => 'us-east-1'
# Keine Access Keys = IAM-Role-Authentifizierung
}
}
Google Cloud Platform: Application Default Credentials aktivieren:
gitlab_rails['object_store']['connection'] = {
'provider' => 'Google',
'google_application_default' => true
}
Azure: Workload Identities durch Weglassen der Storage Access Keys nutzen.
Server-side Encryption für zusätzliche Sicherheit aktivieren:
# GitLab-Objekte
gitlab_rails['object_store']['storage_options'] = {
'server_side_encryption' => 'AES256'
}
# Container Registry
registry['storage'] = {
's3_v2' => {
'bucket' => 'gitlab-registry',
'encrypt' => true
}
}
Für AWS KMS Encryption den Key-ARN in server_side_encryption_kms_key_id
angeben.
Dedizierte Buckets für jede Komponente erstellen:
gitlab-artifacts - CI/CD Job Artifacts
gitlab-lfs - Git LFS Objects
gitlab-uploads - User Uploads
gitlab-packages - Package Registry
gitlab-registry - Container Images
Diese Isolation verbessert die Sicherheit, ermöglicht granulare Zugriffskontrolle und vereinfacht Cost Tracking.
Komponente | Consolidated Form | Identity Auth | Verschlüsselung | Direkte Downloads |
---|---|---|---|---|
Artifacts, LFS, Packages | ✅ Unterstützt | ✅ use_iam_profile | ✅ storage_options | ✅ proxy_download: false |
Container Registry | ❌ Separate Config | ✅ Access Keys weglassen | ✅ encrypt: true | ✅ Redirect standardmäßig aktiviert |
Mit GitLab-Objekten beginnen: Consolidated Form für sofortige Komplexitätsreduktion nutzen.
Registry separat konfigurieren: s3_v2-Treiber mit IAM-Authentifizierung verwenden.
Verschlüsselung aktivieren: Server-side Encryption für beide Komponenten hinzufügen.
Performance optimieren: Direkte Downloads mit entsprechenden proxy_download
-Einstellungen sicherstellen.
Lifecycle Policies einrichten: S3 Lifecycle Rules für unvollständige Multipart-Uploads konfigurieren.
Ein vollständiges AWS S3 Konfigurationsbeispiel finden Sie in der GitLab-Dokumentation zum AWS S3 Object Storage Setup.
Details zur Konfiguration von proxy_download-Parametern pro Bucket enthält die GitLab Object Storage Configuration Documentation.
Diese Konfigurationen skalieren mit Ihrem Wachstum und wahren gleichzeitig Sicherheit und Performance. Die Trennung zwischen GitLab Object Storage und Container Registry Configuration spiegelt unterschiedliche zugrunde liegende Architekturen wider – beide profitieren jedoch von denselben Optimierungsprinzipien.