Amministratori e sviluppatori di Automation Pipelines possono utilizzare il trigger Docker nei servizi cloud di Automation Pipelines. Il trigger Docker esegue una pipeline di consegna continua (CD) standalone ogni volta che viene creato o aggiornato un artefatto di creazione. Il trigger Docker esegue la pipeline CD, che inserisce l'artefatto nuovo o aggiornato come immagine del contenitore in un repository Docker Hub. La pipeline CD può essere eseguita nell'ambito delle creazioni automatiche.
Ad esempio, per distribuire in modo continuativo l'immagine del contenitore aggiornata tramite la pipeline CD, utilizzare il trigger Docker. Quando l'immagine del contenitore viene selezionata nel registro Docker, il webhook in Docker Hub segnala a Automation Pipelines che l'immagine è stata modificata. Questa notifica attiva la pipeline della consegna continua da eseguire con l'immagine del contenitore aggiornata e carica l'immagine nel repository di Docker Hub.
Per utilizzare il trigger Docker, è necessario eseguire diversi passaggi in Automation Pipelines.
Tabella 1.
Come utilizzare il trigger Docker
Cosa fare... |
Ulteriori informazioni su questa azione... |
Creare un endpoint del registro Docker. |
Per consentire a Automation Pipelines di attivare la pipeline, è necessario disporre di un endpoint del registro Docker. Se l'endpoint non esiste, è possibile selezionare un'opzione che lo crei quando si aggiunge il webhook per il trigger Docker. L'endpoint del registro Docker include l'URL del repository Docker Hub. |
Aggiungere parametri di input alla pipeline che immettono automaticamente i parametri Docker al momento dell'esecuzione della pipeline. |
È possibile inviare i parametri Docker nella pipeline. I parametri possono includere il nome del proprietario, l'immagine, il nome del repository, lo spazio dei nomi del repository e il tag dell'evento Docker. Nella pipeline CD includere parametri di input che il webhook Docker passa alla pipeline prima che venga attivata. |
Creare un webhook Docker. |
Quando si crea il webhook Docker in Automation Pipelines, viene creato anche un webhook corrispondente in Docker Hub. Il webhook Docker in Automation Pipelines si connette a Docker Hub tramite l'URL che viene incluso nel webhook. I webhook comunicano tra loro e attivano la pipeline quando viene creato o aggiornato un artefatto in Docker Hub. Se si aggiorna o si elimina il webhook Docker in Automation Pipelines, viene aggiornato o eliminato anche il webhook in Docker Hub. |
Aggiungere e configurare un'attività Kubernetes nella pipeline. |
Quando si crea o aggiorna un artefatto nel repository Docker Hub, la pipeline viene attivata. Quindi, distribuisce l'artefatto tramite la pipeline all'host Docker nel cluster Kubernetes. |
Includere una definizione YAML locale nell'attività. |
La definizione YAML applicata all'attività di distribuzione include l'immagine del contenitore Docker. Se è necessario scaricare un'immagine da un repository di proprietà privata, il file YAML deve includere una sezione con il segreto di configurazione di Docker. Vedere la parte CD di Pianificazione di una creazione nativa di integrazione continua e consegna continua in Automation Pipelines prima di utilizzare il modello di pipeline smart |
Quando viene creato o aggiornato un artefatto nel repository Docker Hub, il webhook in Docker Hub invia una notifica al webhook in Automation Pipelines, che attiva la pipeline. Si verificano le seguenti azioni:
- Docker Hub invia una richiesta POST all'URL nel webhook.
- Automation Pipelines esegue il trigger Docker.
- Il trigger Docker avvia la pipeline CD.
- La pipeline CD inserisce l'artefatto nel repository Docker Hub.
- Automation Pipelines attiva il webhook Docker, che esegue una pipeline CD che distribuisce l'artefatto nell'host Docker.
In questo esempio vengono creati un endpoint Docker e un webhook Docker in Automation Pipelines, che distribuisce l'applicazione nel cluster Kubernetes di sviluppo. I passaggi includono il codice di esempio per il payload che Docker invia all'URL nel webhook, il codice API che utilizza e il codice di autenticazione con il token sicuro.
Procedura
- Creare un endpoint del registro Docker.
- Fare clic su Endpoint.
- Fare clic su Nuovo endpoint.
- Iniziare a digitare il nome del progetto esistente.
- Selezionare il tipo come Registro Docker.
- Immettere un nome pertinente.
- Se l'endpoint del registro Docker è in locale, selezionare il proxy cloud. Se l'endpoint è basato su cloud, mantenere l'impostazione Predefinito.
- Selezionare il tipo di server come DockerHub.
- Immettere l'URL del repository Docker Hub.
- Immettere il nome e la password che possono accedere al repository.
- Nella pipeline CD impostare le proprietà di input per l'immissione automatica dei parametri Docker al momento dell'esecuzione della pipeline.
- Creare un webhook Docker.
- Fare clic su .
- Fare clic su Nuovo webhook per Docker.
- Selezionare un progetto.
- Immettere un nome pertinente.
- Selezionare l'endpoint del registro Docker.
Se l'endpoint ancora non esiste, crearlo facendo clic su
Crea endpoint.
- Selezionare la pipeline con i parametri di Docker inviati per il webhook da attivare. Vedere Passaggio 2.
Se la pipeline è stata configurata con parametri di input aggiunti personalizzati, nell'elenco Parametri di input vengono visualizzati i parametri e i valori. È possibile immettere valori per i parametri di input che verranno passati alla pipeline con l'evento trigger. In alternativa, è possibile lasciare vuoti i valori oppure utilizzare i valori predefiniti, se specificati.
Per ulteriori informazioni sui parametri nella scheda di input, vedere Come creare la pipeline CICD e configurare l'area di lavoro.
- Immettere il token dell'API.
Il token dell'API VMware Cloud Services autentica l'utente per le connessioni API esterne con
Automation Pipelines. Per ottenere il token API:
- Accedere a VMware Aria Automation.
- Accedere a
- Fare clic sul menu a discesa in base al proprio nome.
- Fare clic su Il mio account.
- Fare clic su Token API.
- Fare clic su Generare un nuovo token API.
- Assegnare un nome al token.
- In Ruoli organizzazione, fare clic per espandere Tutti i ruoli dell'organizzazione e selezionare Proprietario dell'organizzazione.
- In Ruoli servizio, fare clic per espandere e selezionare Amministratore di Pipelines.
- Fare clic su Genera.
La finestra Token generato mostra un token con il nome specificato e il nome dell'organizzazione.
- Fare clic sull'icona COPIA.
Se si fa clic su COPIA si garantisce l'acquisizione della stringa esatta, ed è più affidabile rispetto all'utilizzo del puntatore per copiare la stringa.
- Immettere l'immagine della build.
- Immettere un tag.
- Fare clic su Salva.
Viene visualizzata la scheda webhook con il webhook Docker abilitato. Se si desidera eseguire un inserimento fittizio nel repository di Docker Hub senza attivare il webhook Docker ed eseguire una pipeline, fare clic su
Disabilita.
- Nella pipeline CD configurare l'attività di distribuzione Kubernetes.
- Nelle proprietà dell'attività Kubernetes selezionare il cluster Kubernetes di sviluppo.
- Selezionare l'azione Crea.
- Selezionare Definizione locale per l'origine payload.
- Selezionare il file YAML locale.
Ad esempio, Docker Hub potrebbe inviare questa definizione YAML locale come payload all'URL nel 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"
}
}
L'API che crea il webhook in Docker Hub utilizza questo modulo:
https://cloud.docker.com/v2/repositories/%3CUSERNAME%3E/%3CREPOSITORY%3E/webhook_pipeline/
Il corpo del codice JSON è simile a:
{
"name": "demo_webhook",
"webhooks": [
{
"name": "demo_webhook",
"hook_url": "http://www.google.com"
}
]
}
Per ricevere gli eventi dal server Docker Hub, lo schema di autenticazione per il webhook Docker creato in
Automation Pipelines utilizza un meccanismo di autenticazione basato su un elenco di elementi consentiti con un token di stringa casuale per il webhook. Filtra gli eventi in base al token sicuro, che è possibile aggiungere a
hook_url
.
Automation Pipelines può verificare qualsiasi richiesta dal server Docker Hub utilizzando il token di sicurezza configurato. Ad esempio:
hook_url = IP:Port/pipelines/api/docker-hub-webhooks?secureToken = ""
- Creare un artefatto Docker nel repository Docker Hub. In alternativa, aggiornare un artefatto esistente.
- Per controllare che il trigger si sia verificato e per vedere l'attività nel webhook Docker, fare clic su .
- Fare clic su Esecuzioni e osservare la pipeline durante l'esecuzione.
- Fare clic sulla fase in esecuzione e visualizzare le attività durante l'esecuzione della pipeline.
risultati
Congratulazioni! È possibile configurare il trigger Docker per eseguire la pipeline di consegna continua in modo continuativo. La pipeline può ora caricare artefatti Docker nuovi e aggiornati nel repository di Docker Hub.
Operazioni successive
Verificare che l'artefatto nuovo o aggiornato venga distribuito nell'host Docker nel cluster Kubernetes di sviluppo.