Amministratori e sviluppatori di Code Stream possono utilizzare il trigger Docker in Code Stream. 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 Code Stream 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 Code Stream.
Tabella 1.
Come utilizzare il trigger Docker
Cosa fare... |
Ulteriori informazioni su questa azione... |
Creare un endpoint del registro Docker. |
Per consentire a Code Stream 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 Code Stream, viene creato anche un webhook corrispondente in Docker Hub. Il webhook Docker in Code Stream 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 Code Stream, 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 Code Stream 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 Code Stream, che attiva la pipeline. Si verificano le seguenti azioni:
- Docker Hub invia una richiesta POST all'URL nel webhook.
- Code Stream esegue il trigger Docker.
- Il trigger Docker avvia la pipeline CD.
- La pipeline CD inserisce l'artefatto nel repository Docker Hub.
- Code Stream 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 Code Stream, 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.
Prerequisiti
- Verificare che nella propria istanza di Code Stream esista una pipeline di consegna continua (CD). Verificare inoltre che includa una o più attività Kubernetes che distribuiscono l'applicazione. Vedere Pianificazione di creazione, integrazione e consegna native del codice in Code Stream.
- Verificare che sia possibile accedere a un cluster Kubernetes esistente in cui la pipeline CD può distribuire l'applicazione per lo sviluppo.
- Verificare di essere un membro di un progetto in Code Stream. In caso contrario, chiedere a un amministratore di Code Stream di essere aggiunti come membri di un progetto. Vedere Come aggiungere un progetto in Code Stream.
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.
- 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.
- Immettere il token dell'API.
Il token dell'API VMware Cloud Services autentica l'utente per le connessioni API esterne con
Code Stream. Per ottenere il token API:
- Fare clic su Genera Token.
- Immettere l'indirizzo e-mail associato al nome utente e alla password, quindi fare clic su Genera.
Il token generato è valido per sei mesi. È anche noto come token di aggiornamento.
- Per mantenere il token come una variabile per un utilizzo futuro, fare clic su Crea variabile, assegnare un nome alla variabile e fare clic su Salva.
- Per mantenere il token come valore di testo per un utilizzo futuro, fare clic su Copia e incollare il token in un file di testo da salvare in locale.
È possibile scegliere di creare una variabile e archiviare il token in un file di testo per un utilizzo futuro.
- Fare clic su Chiudi.
- 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
Code Stream 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
.
Code Stream 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.