Wenn Slave Jenkins mit in Container ausgeführt wird , was sind Alternativen oder „sicher“ (in Bezug auf Sicherheit) Implementierungen für Docker in Docker .
Architekturbeispiel:
- Jenkins Master läuft als Docker-Container
- Jenkins Sklave läuft als Docker Container
- Testaufgabe im Docker-Container ausgeführt
Einige bekannte Alternativen:
- DOOD (Docker-Outside-Of-Docker)
- Jenkins Plugin mit Docker API
Klärung der Einschränkungen: Die Idee ist, Jenkins als Orchestrator und Docker für eine saubere Umgebung zu verwenden. Der Rest der Architektur kann sich ändern.
jenkins
docker
docker-in-docker
Rombob
quelle
quelle
Docker-in-docker
- für alle anderen, die neu im Thema sind, lohnt es sich, Jérôme Petazzonis Beschreibung der Vor- und Nachteile von zu lesen .Antworten:
Um zu vermeiden,
dind
dass ich mich darauf verlasse ( keine neuen Bilder aus einer Docker-Datei zu erstellen, was in Ordnung sein sollte), würde ich mich in Jenkins Kubernetes- Plugin umsehen .Es muss offensichtlich einen Kubernetes-Cluster zum Leben erwecken, aber einen einmaligen Jenkins-Agenten zulassen, um den Test in einer sauberen, isolierten Umgebung auszuführen und ihn dann abzureißen. Die Wartungskosten des Kubernetes-Clusters sollten nicht höher sein als die Wartung Ihrer Jenkins-Slaves.
Der Bonuspunkt ist, dass Sie Ihre Slaves mit einer bestimmten Umgebung versionieren können und nicht für eine Mehrfachversion von Ruby / Java / Python optimieren müssen. Lassen Sie die Aufgabe die richtige "Umgebung" auswählen, indem Sie das zu verwendende Agenten-Image angeben und ein haben Bereit zum Testen der Umgebung ohne Vorab-Test.
Ich würde mich als Container-Scheduler an kurbenetes wenden, da die Konfiguration und Wartung relativ einfach ist.
quelle