Zum Hauptinhalt springen
  1. Beiträge/
  2. Kleines Homelab/
  3. k3s-prod: Kubernetes Cluster Konfiguration und Anwendungsbereitstellung/

Forgejo Runner

Inhaltsverzeichnis

Forgejo Runner
#

Ein Forgejo Runner ist ein Daemon, der mit einer Forgejo-Instanz zusammenarbeitet, um CI/CD (Continuous Integration/Continuous Delivery)-Jobs auszuführen. Er ruft Workflows von der Forgejo-Instanz ab, führt sie in einer isolierten Umgebung aus und sendet dann Protokolle und den endgültigen Status zurück.

Deployment
#

Argo Deployment
Argo Deployment

Quelle
#

Die Bereitstellung verwendet ein benutzerdefiniertes Helm-Chart aus einem privaten Repository.

Dokumentation
#

Die Dokumentation für den Runner ist Teil der Forgejo-Dokumentation.

Funktion
#

Dieser Dienst stellt Runner für die Ausführung von CI/CD-Pipelines bereit. Es sind zwei Instanzen konfiguriert: eine für die lokale Forgejo-Instanz und eine weitere für Codeberg.

Lokale Anpassungen
#

  • Die values.yaml-Datei enthält die Konfiguration für die Haupt-Runner-Instanz, einschließlich der Verbindung zur Forgejo-Instanz und der Runner-Labels.
  • Die values-codeberg.yaml-Datei enthält die Konfiguration für die Codeberg-Runner-Instanz.
  • Beide Instanzen verwenden Docker-in-Docker (DinD) für die Ausführung von Jobs.

Wichtige Einstellungen
#

  • Instanzen: Es werden zwei Runner-Deployments erstellt:
    1. forgejo-runner: Verbindet sich mit der lokalen Instanz.
    2. forgejo-runner-codeberg: Verbindet sich mit der öffentlichen Instanz https://codeberg.org.
  • Replikas: Für die lokale Instanz werden 3 Runner-Replikate betrieben, um parallele Job-Ausführung zu ermöglichen.
  • Node Selector: Die Runner werden auf Nodes mit dem Label performance: high ausgeführt, um eine schnelle Job-Ausführung zu gewährleisten.
  • Labels: Die Runner sind mit einer Vielzahl von Labels konfiguriert, die auf verschiedene Docker-Images von catthehacker/ubuntu verweisen. Diese Images sind speziell für die Verwendung mit Gitea/Forgejo Actions vorbereitet.
  • Docker-in-Docker: Die Runner laufen im privileged-Modus und mit host-Netzwerk, um Docker-Befehle innerhalb der CI-Jobs ausführen zu können (Docker-in-Docker).

Installation
#

Der Dienst wird als Helm-Chart aus einem privaten Repository bereitgestellt. Die Bereitstellung wird durch die kustomization.yaml-Datei verwaltet.

1kubectl kustomize --enable-helm apps/forgejo-runner | kubectl apply -n forgejo-runner -f -

Abhängigkeiten
#

  • Forgejo: Eine laufende Forgejo-Instanz, bei der sich die Runner registrieren können.
  • Docker: Auf den Kubernetes-Worker-Nodes, auf denen die Runner laufen, muss eine Docker-Engine verfügbar sein, damit die Runner Docker-Container für die Jobs starten können.
Per E-Mail antworten
Fabrice Kirchner
Autor
Fabrice Kirchner
stolzer Vater, Nerd, Admin