Amministratori e sviluppatori di vRealize Automation Code Stream possono utilizzare il trigger Docker in vRealize Automation 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 vRealize Automation 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 vRealize Automation 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 vRealize Automation 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 vRealize Automation Code Stream, viene creato anche un webhook corrispondente in Docker Hub. Il webhook Docker in vRealize Automation 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 vRealize Automation 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 e tutte le chiavi segrete necessarie per estrarre l'immagine dal repository per la distribuzione.

Quando viene creato o aggiornato un artefatto nel repository Docker Hub, il webhook in Docker Hub invia una notifica al webhook in vRealize Automation Code Stream, che attiva la pipeline. Si verificano le seguenti azioni:

  1. Docker Hub invia una richiesta POST all'URL nel webhook.
  2. vRealize Automation Code Stream esegue il trigger Docker.
  3. Il trigger Docker avvia la pipeline CD.
  4. La pipeline CD inserisce l'artefatto nel repository Docker Hub.
  5. vRealize Automation 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 vRealize Automation 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

Procedura

  1. Creare un endpoint del registro Docker.
    1. Fare clic su Endpoint.
    2. Fare clic su Nuovo endpoint.
    3. Iniziare a digitare il nome del progetto esistente.
    4. Selezionare il tipo come Registro Docker.
    5. Immettere un nome pertinente.
    6. Selezionare il tipo di server come DockerHub.
    7. Immettere l'URL del repository Docker Hub.
    8. Immettere il nome e la password che possono accedere al repository.
    Quando si aggiunge un endpoint del registro Docker, è importante accettare il certificato perché può essere richiesto dall'endpoint.
  2. Nella pipeline CD impostare le proprietà di input per l'immissione automatica dei parametri Docker al momento dell'esecuzione della pipeline.
    Quando si aggiungono parametri di input a una pipeline, fare clic sulla scheda Input e selezionare il tipo di parametri, ad esempio Gerrit, Git o Docker.
  3. Creare un webhook Docker.
    1. Fare clic su Trigger > Docker.
    2. Fare clic su Nuovo webhook per Docker.
    3. Selezionare un progetto.
    4. Immettere un nome pertinente.
    5. Selezionare l'endpoint del registro Docker.
      Se l'endpoint ancora non esiste, crearlo facendo clic su Crea endpoint.
    6. 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.

    7. Immettere il token dell'API.
      Il token dell'API CSP autentica l'utente per le connessioni API esterne con vRealize Automation Code Stream. Per ottenere il token API:
      1. Fare clic su Genera Token.
      2. 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.
      3. Fare clic su Chiudi.
    8. Immettere l'immagine della build.
    9. Immettere un tag.
      Quando si crea un webhook per il trigger Docker, è necessario fornire un token API che autentichi l'utente per le connessioni dell'API esterne con vRealize Automation Code Stream.
    10. 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.
  4. Nella pipeline CD configurare l'attività di distribuzione Kubernetes.
    1. Nelle proprietà dell'attività Kubernetes selezionare il cluster Kubernetes di sviluppo.
    2. Selezionare l'azione Crea.
    3. Selezionare Definizione locale per l'origine payload.
    4. 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 vRealize Automation 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.
      vRealize Automation 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 = ""
  5. Creare un artefatto Docker nel repository Docker Hub. In alternativa, aggiornare un artefatto esistente.
  6. Per controllare che il trigger si sia verificato e per vedere l'attività nel webhook Docker, fare clic su Trigger > Docker > Attività.
    È possibile osservare i tempi di commit del webhook Docker, immagini, tag e molto altro nella scheda Attività di Docker.
  7. Fare clic su Esecuzioni e osservare la pipeline durante l'esecuzione.
    Durante l'esecuzione della pipeline, viene visualizzato lo stato IN ESECUZIONE e le icone della fase mostrano l'avanzamento.
  8. Fare clic sulla fase in esecuzione e visualizzare le attività durante l'esecuzione della pipeline.
    Quando si fa clic su una delle icone della fase, è possibile osservare lo stato di ogni attività nella fase 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.