Gitlab
Gitlab auf Dokku deployen.
- Referenz
- 👉 docs.gitlab.com/install/docker
Admin login
Um das Admin-Passwort zu setzen, kann nach der ersten Installation der folgende Befehl ausgeführt werden:
Gitlab konfigurieren
Gitlab wird über die gitlab.rb-Datei konfiguriert. Weil der Ordner /var/lib/dokku/data/storage//config in den Gitlab-Container gemountet ist, können die Konfigurationen direkt auf dem Host-System vorgenommen werden.
config.rbDie config.rb-Datei wird von Gitlab automatisch beim ersten Start generiert. Dieser Schritt soll also erst nach der erstmaligen Installatione erfolgen.
Danach muss die Konfiguration mit folgendem Befehl neu geladen werden:
Damit Gitlab nicht zu viel Ressourcen verbraucht, können neben den Docker-Ressourcen-Limits auch einige Konfigurationen vorgenommen werden, um den Speicherverbrauch von Gitlab zu reduzieren. Dies ist ist dann wichtig, wenn Gitlab nur für eine Klasse (EF) verwendet wird und die Geschwindigkeit nicht das zentrale Kriterium darstellt.
👉 https://docs.gitlab.com/omnibus/settings/memory_constrained_envs
Mail konfiguration
Um die Mail-Konfiguration vorzunehmen, muss folgender Abschnitt zur gitlab.rb-Datei hinzugefügt werden:
Danach muss die Konfiguration mit folgendem Befehl neu geladen werden:
Überprüfen der Mail-Konfiguration
Migrieren
Um Gitlab zu aktualisieren, muss sorgfältig von einer Version auf die nächste migriert werden.
Der Migrationspfad kann dabei von der 👉 Gitlab-Versionstoolbox abgerufen werden.
Vorbereitung
Die Migration erfolgt auf einer Kopie der aktuellen Gitlab-Instanz (verhindert Datenverlust bei Fehlern).
- Erstelle ein Backup der aktuellen Gitlab-Instanz
- Aktuelle Gitlab-Instanz stoppen
- Daten und Konfiguration in ein neues Verzeichnis kopieren
- Gitlab-Instanz wieder starten
*-migrated-Instanz arbeitenDie folgenden Schritte müssen auf der neuen *-migrated-Instanz durchgeführt werden, damit die alte Instanz als Backup erhalten bleibt.
Migration
Die Migration erfolgt in mehreren Schritten, wobei für jede Gitlab-Version des Migrationpfads folgende drei Schritte durchgeführt werden müssen:
- Docker-Container für die aktuelle Version erzeugen
- mounten der lokalen Ordner
dataundconfig - starten des Containers, was die notwendige Datenbankmigration automatisch durchführt
- Überprüfen, ob die neue Version korrekt läuft
- mounten der lokalen Ordner
- Backup der neuen Instanz erstellen
- Docker-Container wieder stoppen und löschen
Um bspw. von Version 15.10.0 auf 16.3.9 zu migrieren, müssen folgende Schritte durchgeführt werden:
- Dockercontainer erzeugen
- starten
- Überprüfen, ob die neue Version korrekt läuft
docker exec gitlab-migrate-16-3-9 gitlab-ctl status# ausgabe so ähnlich wie:# run: alertmanager: (pid 1403) 513s; run: log: (pid 1068) 560s# run: gitaly: (pid 1332) 522s; run: log: (pid 560) 688s# run: gitlab-exporter: (pid 1375) 515s; run: log: (pid 988) 578s# run: gitlab-kas: (pid 1351) 516s; run: log: (pid 735) 676s# run: gitlab-workhorse: (pid 1363) 516s; run: log: (pid 907) 591s# run: logrotate: (pid 498) 702s; run: log: (pid 510) 699s# run: nginx: (pid 947) 587s; run: log: (pid 970) 584s# run: postgres-exporter: (pid 1416) 512s; run: log: (pid 1096) 554s# run: postgresql: (pid 586) 683s; run: log: (pid 597) 682s# run: prometheus: (pid 1384) 514s; run: log: (pid 1043) 566s# run: puma: (pid 835) 605s; run: log: (pid 846) 602s# run: redis: (pid 515) 695s; run: log: (pid 528) 693s# run: redis-exporter: (pid 1377) 515s; run: log: (pid 1017) 572s# run: sidekiq: (pid 851) 599s; run: log: (pid 860) 598s# run: sshd: (pid 34) 722s; run: log: (pid 33) 722s
- Backup der neuen Instanz erstellen
docker exec gitlab-migrate-16-3-9 gitlab-ctl stop pumadocker exec gitlab-migrate-16-3-9 gitlab-ctl stop sidekiqdocker exec -t gitlab-migrate-16-3-9 gitlab-backup create
- Docker-Container wieder stoppen und löschen
docker stop gitlab-migrate-16-3-9docker rm gitlab-migrate-16-3-9
Um die einzelnen Befehle nicht manuell zu tippen, hier ein Hilfsskript, wobei die Versionen und der App-Name angepasst werden müssen:
Der upgrade-path kann direkt von der 👉 Gitlab-Versionstoolbox kopiert und oben eingefügt werden.
Ist dies alles erledigt, können die Ordner data und config zur neuen Instanz kopiert werden (mit scp -a damit die Berechtigungen erhalten bleiben). Alternativ kann auch das Backup in die neue Instanz kopiert werden und mit gitlab-backup restore BACKUP=<timestamp_and_version_prefix> wiederhergestellt werden.