In deinem Projekt ist Git LFS serverseitig bereits aktiv. Das Problem ist in deinem Setup nicht LFS an sich, sondern die TLS-Vertrauenskette für den HTTPS-LFS-Endpunkt.
global:
minio:
enabled: true
ingress:
configureCertmanager: false
class: "nginx"
tls:
external: true lfs:
enabled: true
proxy_download: true
bucket: git-lfs
connection: {}shared-secrets:
enabled: true
rbac:
create: true
selfsign:
image:
repository: registry.gitlab.com/gitlab-org/build/cng/cfssl-self-sign
keyAlgorithm: "rsa"
keySize: "4096"
expiry: "3650d"
caSubject: "GitLab Helm Chart"
env: productionDer String GitLab Helm Chart aus dem Chart passt exakt zu deinem Fehler mit unknown authority. Das heißt: Dein GitLab liefert aktuell ein vom Chart selbst signiertes Zertifikat aus, und dein lokaler Git-/Git-LFS-Client vertraut dieser CA nicht.
Zusätzlich ist im Repo schon sichtbar, dass der Runner dafür eigens eine Zertifikatskette bekommt, dein Host-System aber nicht:
gitlab-runner:
install: true
certsSecretName: gitlab-dev-wildcard-tls-chainDie empfohlene Lösung für dein Projekt ist:
Nicht bei den automatisch erzeugten Helm-Self-Signed-Zertifikaten für externe Clients bleiben, sondern für gitlab.local.com ein lokal vertrauenswürdiges Zertifikat verwenden, idealerweise mit mkcert, und dieses als festes Ingress-TLS-Secret in GitLab einzuhängen.
Warum das die beste Lösung ist:
- Git bleibt weiter per SSH erreichbar, das musst du nicht umbauen.
- Git LFS nutzt trotzdem HTTPS und braucht dort eine gültige Vertrauenskette.
- Du löst damit nicht nur LFS, sondern auch Browser, API-Clients und andere lokale Tools sauber.
- Du musst nicht auf jedem neuen Client die zufällig erzeugte Helm-CA manuell nachpflegen.
Empfohlen mit mkcert:
mkcert -install
mkcert gitlab.local.comDadurch hast du:
- ein Zertifikat für
gitlab.local.com - eine lokale CA, der dein Host bereits vertraut
Beispiel:
kubectl create secret tls gitlab-local-tls \
--namespace dev \
--cert=./gitlab.local.com.pem \
--key=./gitlab.local.com-key.pemWeil dein Projekt bereits gitlab-runner.certsSecretName nutzt, solltest du das beibehalten, aber auf deine CA umstellen.
Beispiel:
kubectl create secret generic gitlab-local-ca \
--namespace dev \
--from-file=gitlab.local.com.crt="$(mkcert -CAROOT)/rootCA.pem"So sollte die Zielkonfiguration aussehen:
global:
ingress:
configureCertmanager: false
class: "nginx"
tls:
external: true
secretName: gitlab-local-tls
gitlab-runner:
install: true
certsSecretName: gitlab-local-caWichtig:
secretNameist das Ingress-ZertifikatcertsSecretNameist die CA-Kette, der der Runner vertrauen soll
Danach muss die Release-Konfiguration per Helm übernommen werden.
Typisch in deinem Projekt wäre das anschließend ein helm upgrade gegen ./gitlab/Chart mit ./gitlab/custom-values.yaml.
Mit mkcert ist das oft nicht nötig, aber falls Git/LFS weiter meckert, dann lokal oder global:
git config --global http."https://gitlab.local.com".sslCAInfo "$(mkcert -CAROOT)/rootCA.pem"Das ist nicht der eigentliche TLS-Fehler, aber sinnvoll für Ruhe im Setup:
git config --local lfs.https://gitlab.local.com/root/prompts-cheat-sheet.git/info/lfs.locksverify falseNicht empfehlenswert ist:
git config --global http."https://gitlab.local.com".sslVerify falseoder
GIT_SSL_NO_VERIFY=1Das wäre nur ein unsauberer Bypass und nicht die richtige Lösung.
Für dein aktuelles Projekt gilt:
- Git LFS ist schon aktiviert
- der Blocker ist die nicht vertrauenswürdige Helm-Self-Signed-CA
- die beste Lösung ist ein eigenes, lokal vertrauenswürdiges TLS-Zertifikat für
gitlab.local.com - dieses Zertifikat muss als Ingress-Secret in GitLab rein
- die zugehörige CA muss an den Runner und bei Bedarf an Git/Git LFS auf dem Host
- die Locking-API-Warnung kannst du zusätzlich clientseitig deaktivieren
Wenn du willst, kann ich dir als Nächstes ein konkretes Umsetzungs-Runbook nur für dein Projekt schreiben, mit den exakten Befehlen in der richtigen Reihenfolge für mkcert, kubectl create secret, die YAML-Anpassung und das anschließende helm upgrade.