Als Automation Pipelines-Administrator oder Entwickler können Sie den Docker-Auslöser in den Automation Pipelines-Cloud-Diensten verwenden. Der Docker-Auslöser führt eine eigenständige Pipeline für die kontinuierliche Bereitstellung (Continuous Delivery, CD) aus, wenn ein Build-Artefakt erstellt oder aktualisiert wird. Der Docker-Auslöser führt die CD-Pipeline aus, die das neue oder aktualisierte Artefakt als Container-Image an das Docker-Hub-Repository überträgt. Die CD-Pipeline kann als Teil Ihrer automatisierten Builds ausgeführt werden.
Verwenden Sie den Docker-Auslöser beispielsweise zur kontinuierlichen Bereitstellung des aktualisierten Container-Images über die CD-Pipeline. Wenn Ihr Container-Image in die Docker-Registrierung eingecheckt wird, benachrichtigt der Webhook im Docker-Hub Automation Pipelines darüber, dass das Image geändert wurde. Diese Benachrichtigung löst aus, dass die CD-Pipeline mit dem aktualisierten Container-Image ausgeführt und das Image in das Docker-Hub-Repository hochgeladen wird.
Zur Verwendung des Docker-Images führen Sie mehrere Schritte in Automation Pipelines aus.
Tabelle 1.
Verwenden des Docker-Triggers
Vorgehensweise... |
Weitere Informationen zu dieser Aktion... |
Erstellen eines Docker-Registrierungs-Endpoints. |
Damit Automation Pipelines Ihre Pipeline auslöst, müssen Sie über einen Docker-Registrierungs-Endpoint verfügen. Wenn der Endpoint nicht vorhanden ist, können Sie beim Hinzufügen des Webhooks zum Docker-Auslöser eine Option zur Erstellung des Endpoints auswählen. Der Docker-Registrierungs-Endpoint enthält die URL für das Docker-Hub-Repository. |
Hinzufügen von Eingabeparametern zur Pipeline, die bei Ausführung der Pipeline automatisch Docker-Parameter einfügen. |
Sie können Docker-Parameter in die Pipeline einfügen. Parameter können den Namen, das Image, den Repository-Namen, den Repository-Namespace und das Tag des Docker-Ereignis-Besitzers enthalten. Sie können Eingabeparameter in Ihre CD-Pipeline einfügen, die vor dem Auslösen der Pipeline vom Docker-Webhook an die Pipeline übergeben werden. |
Erstellen eines Docker-Webhooks. |
Wenn Sie den Docker-Webhook in Automation Pipelines erstellen, wird im Docker-Hub ebenfalls ein entsprechender Webhook angelegt. Der Docker-Webhook in Automation Pipelines stellt über die im Webhook enthaltene URL eine Verbindung zum Docker-Hub her. Die Webhooks kommunizieren miteinander und lösen die Pipeline aus, wenn ein Artefakt im Docker-Hub erstellt oder aktualisiert wird. Wenn Sie den Docker-Webhook in Automation Pipelines aktualisieren oder löschen, wird der Webhook im Docker-Hub ebenfalls aktualisiert oder gelöscht. |
Konfigurieren und Hinzufügen einer Kubernetes-Aufgabe zur Pipeline. |
Wenn ein Artefakt im Docker-Hub-Repository erstellt oder aktualisiert wird, wird die Pipeline ausgelöst. Anschließend wird das Artefakt über die Pipeline dem Docker-Host in Ihrem Kubernetes-Cluster bereitgestellt. |
Einschließen einer lokalen YAML-Definition in die Aufgabe. |
Die auf die YAML-Definition angewendete Bereitstellungsaufgabe enthält das Docker-Container-Image. Wenn Sie ein Image aus einem privaten Repository herunterladen müssen, muss die YAML-Datei einen Abschnitt mit dem geheimen Docker-Konfigurationsschlüssel enthalten. Weitere Informationen finden Sie im CD-Abschnitt von Planen eines nativen CICD-Builds in Automation Pipelines vor der Verwendung der intelligenten Pipeline-Vorlage |
Wenn ein Artefakt im Docker-Hub-Repository erstellt oder aktualisiert wird, benachrichtigt der Webhook im Docker-Hub den Webhook in Automation Pipelines, wodurch die Pipeline ausgelöst wird. Die folgenden Aktionen werden durchgeführt:
- Der Docker-Hub sendet eine POST-Anfrage an die URL im Webhook.
- Automation Pipelines führt den Docker-Auslöser aus.
- Der Docker-Auslöser startet die CD-Pipeline.
- Die CD-Pipeline überträgt das Artefakt an das Docker-Hub-Repository.
- Automation Pipelines löst den zugehörigen Docker-Webhook aus, der eine CD-Pipeline ausführt, die das Artefakt auf Ihrem Docker-Host bereitstellt.
In diesem Beispiel erstellen Sie einen Docker-Endpoint und einen Docker-Webhook in Automation Pipelines, der Ihre Anwendung auf dem Kubernetes-Entwicklungscluster bereitstellt. Die Schritte enthalten den Beispielcode für die Nutzlast, die von Docker an die URL im Webhook gesendet wird, den verwendeten API-Code sowie den Authentifizierungscode mit dem sicheren Token.
Voraussetzungen
- Stellen Sie sicher, dass eine Pipeline für die kontinuierliche Bereitstellung (Continuous Delivery, CD) in Ihrer Automation Pipelines-Instanz vorhanden ist. Stellen Sie außerdem sicher, dass sie eine oder mehrere Kubernetes-Aufgaben enthält, die Ihre Anwendung bereitstellen. Weitere Informationen hierzu finden Sie unter Planen eines nativen Builds, der Integration und Bereitstellung von Code in Automation Pipelines.
- Stellen Sie sicher, dass Sie auf einen vorhandenen Kubernetes-Cluster zugreifen können, auf dem die CD-Pipeline Ihre Anwendung für die Entwicklung bereitstellen kann.
- Vergewissern Sie sich, dass Sie Mitglied eines Projekts in Automation Pipelines sind. Falls nicht, bitten Sie einen Automation Pipelines-Administrator, Sie als Mitglied eines Projekts hinzuzufügen. Weitere Informationen hierzu finden Sie unter Vorgehensweise zum Hinzufügen eines Projekts in Automation Pipelines.
- Handelt es sich bei dem Docker-Hub-Repository um einen lokalen Endpoint, erstellen Sie einen Cloud-Proxy für die Kommunikation mit Automation Pipelines. Ein Beispiel finden Sie unter Einrichten von Automation Pipelines zum Modellieren des Freigabeprozesses.
Prozedur
- Erstellen eines Docker-Registrierungs-Endpoints.
- Klicken Sie auf Endpoints.
- Klicken Sie auf Neuer Endpoint.
- Beginnen Sie mit der Eingabe des Namens des vorhandenen Projekts.
- Wählen Sie Docker-Registrierung als Typ aus.
- Geben Sie einen relevanten Namen ein.
- Handelt es sich um einen lokalen Docker-Registrierungs-Endpoint, wählen Sie den Cloud-Proxy aus. Behalten Sie bei einem Cloud-basierten Endpoint die Einstellung unter Standard bei.
- Wählen Sie Docker-Hub als Servertyp aus.
- Geben Sie die URL für das Docker-Hub-Repository ein.
- Geben Sie den Namen und das Kennwort für den Zugriff auf das Repository ein.
- Richten Sie die Eingabeeigenschaften in Ihrer CD-Pipeline so ein, dass Docker-Parameter bei Ausführung der Pipeline automatisch eingefügt werden.
- Erstellen eines Docker-Webhooks.
- Klicken Sie auf .
- Klicken Sie auf Neuer Webhook für Docker.
- Wählen Sie ein Projekt aus.
- Geben Sie einen relevanten Namen ein.
- Wählen Sie den Docker-Registrierungs-Endpoint aus.
Wenn der Endpoint noch nicht vorhanden ist, klicken Sie auf
Endpoint erstellen und erstellen Sie den Endpoint.
- Wählen Sie die Pipeline mit eingefügten Docker-Parametern aus, damit der Webhook ausgelöst wird. Weitere Informationen hierzu finden Sie unter Schritt 2.
Wenn die Pipeline mit benutzerdefinierten hinzugefügten Eingabeparametern konfiguriert wurde, werden in der Liste der Eingabeparameter Parameter und Werte angezeigt. Sie können Werte für Eingabeparameter eingeben, die mit dem Auslöserereignis an die Pipeline übergeben werden. Alternativ können Sie auf die Eingabe von Werten verzichten oder die Standardwerte verwenden, sofern welche definiert sind.
Weitere Informationen zu Parametern auf der Registerkarte „Eingabe“ finden Sie unter Vorgehensweise zum Erstellen der CICD-Pipeline und Konfigurieren des Arbeitsbereichs.
- Geben Sie das API-Token ein.
Das VMware Cloud Services-API-Token authentifiziert Sie für externe API-Verbindungen mit
Automation Pipelines. So rufen Sie das API-Token ab:
- Melden Sie sich bei VMware Aria Automation an.
- Anmelden bei
- Klicken Sie auf den Dropdown-Pfeil neben Ihrem Namen.
- Klicken Sie auf Mein Konto.
- Klicken Sie auf API-Token.
- Klicken Sie auf Neues API-Token generieren.
- Geben Sie einen Namen für das Token ein.
- Klicken Sie unter „Organisationsrollen“ auf den Menüpunkt Alle Organisationsrollen, um ihn zu erweitern, und wählen Sie Organisationsbesitzer aus.
- Klicken Sie unter „Dienstrollen“ auf den Menüpunkt , um ihn zu erweitern, und wählen Sie Pipelines-Administrator aus.
- Klicken Sie auf Generieren.
Im Fenster Generiertes Token wird ein Token mit dem von Ihnen angegebenen Namen und dem Namen Ihrer Organisation angezeigt.
- Klicken Sie auf das Symbol KOPIEREN.
Durch Klicken auf KOPIEREN wird sichergestellt, dass die exakte Zeichenfolge erfasst wird. Dies ist zuverlässiger als die Verwendung des Mauszeigers zum Kopieren der Zeichenfolge.
- Geben Sie das Build-Image ein.
- Geben Sie ein Tag ein.
- Klicken Sie auf Speichern.
Die Webhook-Karte wird mit aktiviertem Docker-Webhook angezeigt. Wenn Sie einen Pseudo-Push zum Docker-Hub-Repository durchführen möchten, ohne den Docker-Webhook auszulösen und eine Pipeline auszuführen, klicken Sie auf
Deaktivieren.
- Konfigurieren Sie in der CD-Pipeline die Kubernetes-Bereitstellungsaufgabe.
- Wählen Sie in den Kubernetes-Aufgabeneigenschaften den Kubernetes-Entwicklungscluster aus.
- Wählen Sie die Aktion Erstellen aus.
- Wählen Sie die Lokale Definition für die Nutzlastquelle aus.
- Wählen Sie dann Ihre lokale YAML-Datei aus.
Beispiel: Der Docker-Hub sendet diese lokale YAML-Definition unter Umständen als Nutzlast an die URL im Webhook.
{
"callback_url": "https://registry.hub.docker.com/u/svendowideit/testhook/hook/2141b5bi5i5b02bec211i4eeih0242eg11000a/",
"push_data": {
"images": [
"27d47432a69bca5f2700e4dff7de0388ed65f9d3fb1ec645e2bc24c223dc1cc3",
"51a9c7c1f8bb2fa19bcd09789a34e63f35abb80044bc10196e304f6634cc582c",
"..."
],
"pushed_at": 1.417566161e+09,
"pusher": "trustedbuilder",
"tag": "latest"
},
"repository": {
"comment_count": 0,
"date_created": 1.417494799e+09,
"description": "",
"dockerfile": "#\n# BUILD\u0009\u0009docker build -t svendowideit/apt-cacher .\n# RUN\u0009\u0009docker run -d -p 3142:3142 -name apt-cacher-run apt-cacher\n#\n# and then you can run containers with:\n# \u0009\u0009docker run -t -i -rm -e http_proxy http://192.168.1.2:3142/ debian bash\n#\nFROM\u0009\u0009ubuntu\n\n\nVOLUME\u0009\u0009[\/var/cache/apt-cacher-ng\]\nRUN\u0009\u0009apt-get update ; apt-get install -yq apt-cacher-ng\n\nEXPOSE \u0009\u00093142\nCMD\u0009\u0009chmod 777 /var/cache/apt-cacher-ng ; /etc/init.d/apt-cacher-ng start ; tail -f /var/log/apt-cacher-ng/*\n",
"full_description": "Docker Hub based automated build from a GitHub repo",
"is_official": false,
"is_private": true,
"is_trusted": true,
"name": "testhook",
"namespace": "svendowideit",
"owner": "svendowideit",
"repo_name": "svendowideit/testhook",
"repo_url": "https://registry.hub.docker.com/u/svendowideit/testhook/",
"star_count": 0,
"status": "Active"
}
}
Die API, die den Webhook im Docker-Hub erstellt, sieht folgendermaßen aus:
https://cloud.docker.com/v2/repositories/%3CUSERNAME%3E/%3CREPOSITORY%3E/webhook_pipeline/
Der Text des JSON-Codes ähnelt Folgendem:
{
"name": "demo_webhook",
"webhooks": [
{
"name": "demo_webhook",
"hook_url": "http://www.google.com"
}
]
}
Für den Empfang von Ereignissen vom Docker-Hub-Server verwendet das Authentifizierungsschema für den in
Automation Pipelines erstellten Docker-Webhook einen Authentifizierungsmechanismus mittels einer Zulassungsliste mit einem zufälligen Zeichenfolgen-Token für den Webhook. Ereignisse werden auf Basis des sicheren Tokens gefiltert, den Sie an
hook_url
anhängen können.
Automation Pipelines kann jede Anfrage vom Docker-Hub-Server mithilfe des konfigurierten sicheren Tokens überprüfen. Beispiel:
hook_url = IP:Port/pipelines/api/docker-hub-webhooks?secureToken = ""
- Erstellen Sie ein Docker-Artefakt in Ihrem Docker-Hub-Repository. Oder aktualisieren Sie ein vorhandenes Artefakt.
- Um zu bestätigen, dass der Auslöser eingetreten ist, und die Aktivität auf dem Docker-Webhook anzuzeigen, klicken Sie auf .
- Klicken Sie auf Ausführungen und beobachten Sie Ihre Pipeline während der Ausführung.
- Klicken Sie auf die laufende Phase und zeigen Sie die Aufgaben an, während die Pipeline ausgeführt wird.
Ergebnisse
Herzlichen Glückwunsch! Sie richten den Docker-Auslöser so ein, dass die CD-Pipeline kontinuierlich ausgeführt wird. Ihre Pipeline kann jetzt neue und aktualisierte Docker-Artefakte in das Docker-Hub-Repository hochladen.
Nächste Maßnahme
Stellen Sie sicher, dass das neue oder aktualisierte Artefakt auf dem Docker-Host im Kubernetes-Entwicklungscluster bereitgestellt wird.