Impostazione delle pipeline di integrazione continua di Tekton con DevSecOps

Con questa esercitazione, è possibile impostare la pipeline di integrazione continua (CI) di Tekton e creare la propria toolchain con conformità.

Prima di iniziare

(*) Kubernetes cluster: richiesto solo durante la configurazione - può essere modificato dopo la creazione della Toolchain. Non è obbligatorio creare un cluster dedicato, soprattutto se si utilizza un target di distribuzione diverso (come CodeEngine ). È possibile inserire una chiave API IBM Cloud in grado di accedere a qualsiasi cluster.

La pipeline CI utilizza il servizio di firma del codice GaraSign per firmare gli artefatti di compilazione che richiedono la registrazione e l'on-boarding. GaraSign utilizza la rete interna IBM. L'accesso a questa rete è disponibile per i lavoratori condivisi di IBM che hanno accesso alla rete. IBM è possibile utilizzare lavoratori condivisi con accesso alla rete interna di 9.X.

  • Guardate il seguente video:

Avviare la configurazione della catena di strumenti CI

Il servizio Continuous Delivery fornisce modelli che guidano l'utente attraverso la configurazione della catena di strumenti e creano processi in un ordine logico. Un indicatore di avanzamento mostra le fasi di completamento della configurazione. Seguire i passaggi per accedere al modello della catena di strumenti CI.

  1. Nella console IBM Cloud, fare clic sull'icona Menu Icona Menu > Automazione piattaforma > Toolchains.
  2. Nella pagina "Toolchains", clicca su " Crea toolchain ".
  3. Dai un'occhiata a " Infrastructure as Code ".
  4. Fate clic sulla piastrella CI - Sviluppare un'infrastruttura sicura come codice con le pratiche DevSecOps.

Impostare le impostazioni della catena di strumenti CI

La pagina Benvenuto riassume lo scopo della toolchain e rimanda alla documentazione e ai materiali correlati.

  1. Fai clic su Start.

  2. Inserire un nome della catena di strumenti all'interno della catena di strumenti per la stessa regione e gruppo di risorse nel IBM Cloud.

  3. Seleziona una regione dall'elenco a discesa.

  4. Seleziona un gruppo di risorse dall'elenco a discesa.

  5. Fai clic su Continue.

    Si può passare al passo successivo solo quando la configurazione del passo corrente è completa e valida. È sempre possibile fare clic su Indietro per visualizzare i passaggi precedenti del programma di installazione guidata. Il programma di installazione della catena di strumenti conserva tutte le impostazioni di configurazione dei passaggi successivi.

    Alcuni passaggi includono un pulsante Passa alla configurazione avanzata. Per impostazione predefinita, questi passaggi presentano la configurazione minima. Tuttavia, gli utenti avanzati che necessitano di un controllo a grana più fine possono fare clic sulla levetta Passa alla configurazione avanzata per visualizzare le opzioni dell'integrazione sottostante.

Impostare le integrazioni degli strumenti CI

Esaminare le impostazioni predefinite e fornire le configurazioni definite dall'utente, ove necessario, per impostare l'integrazione dello strumento CI. Configurare più repository durante la configurazione. È possibile clonare i repository di esempio o usarne di propri, ma la toolchain supporta il collegamento solo ai repository esistenti Git Repos and Issue Tracking.

Applicazione

Rivedi le informazioni predefinite per la configurazione della toolchain:

  1. È possibile accettare la configurazione predefinita fornita nel modello.
  2. Fai clic su Continue

Inventario

Il repository dell'inventario registra i dettagli degli artefatti costruiti dalle catene di strumenti CI.

  1. È possibile accettare la configurazione predefinita fornita nel modello.
  2. Fai clic su Continue.

Problemi

Il repository dei problemi registra i problemi trovati durante l'esecuzione della pipeline CI.

  1. È possibile accettare la configurazione predefinita fornita nel modello.
  2. Fai clic su Continue

Segreti

Diversi strumenti di questa catena di strumenti, ed eventualmente gli script personalizzabili, richiedono segreti per accedere a risorse privilegiate. Una chiave API IBM Cloud è un esempio di tale segreto. Conservate questi segreti in modo sicuro in uno strumento di gestione dei segreti, ad esempio IBM Key Protect for IBM Cloud, IBM Cloud® Secrets Manager, o HashiCorp Vault. Il strumento di gestione dei segreti può essere integrato nella toolchain in modo da poter fare facilmente riferimento ai segreti nella pipeline Tekton.

  1. Questa esercitazione utilizza IBM Cloud® Secrets Manager come cassaforte per i segreti. I campi Regione, Gruppo di risorse e Nome del servizio vengono popolati automaticamente in base alle scelte disponibili. Fare clic sugli indicatori a discesa per visualizzare le altre scelte.
  2. Digitate il vostro Secrets Manager nome istanza.
  3. Selezionare il tipo di autorizzazione dall'elenco a discesa.
  4. Fai clic su Continue.

Conservazione delle prove

Il repository delle prove memorizza tutte le prove e gli artefatti generati dalla pipeline CI DevSecOps.

  1. Attivare il cursore del secchio IBM Cloud Object Storage per memorizzare tutte le prove nel secchio IBM Cloud Object Storage che può essere configurato nella pagina successiva.
  2. Accettare le impostazioni predefinite.
  3. Fai clic su Continue.

Bucket di Cloud Object Storage

È necessario disporre dell'istanza IBM Cloud Object Storage e di un bucket che funga da archivio delle prove di conformità.

  1. I campi Istanza Cloud Object Storage, Nome del bucket e Cloud Object Storage endpoint sono popolati automaticamente.
  2. Inserite la vostra chiave API ID servizio.
    • Preferibile: È possibile importare una chiave esistente da un caveau dei segreti facendo clic sull'icona della chiave.
    • È possibile copiare e incollare una chiave esistente.
  3. Fai clic su Continue.

Il campo "Endpoint" è facoltativo. Si raccomanda di selezionare o fornire l'endpoint durante la configurazione della toolchain o durante l'esecuzione della pipeline.

Distribuisci

Configurare la destinazione dell'inventario e il cluster Kubernetes dove viene distribuita l'applicazione:

  1. Il nome predefinito di App è hello-compliance-app.

  2. Digitare la propria IBM Cloud chiave API. La chiave API viene usata per interagire con lo strumento IBM Cloud CLI in diverse attività.

    • Preferibile: È possibile importare una chiave esistente da un caveau dei segreti facendo clic sull'icona della chiave.
    • È possibile copiare e incollare una chiave esistente.
    • Da qui è possibile creare una nuova chiave facendo clic sul pulsante Nuovo +.

    La nuova chiave API generata può essere immediatamente salvata in un archivio dei segreti.

  3. Se la chiave API è valida e ha un accesso sufficiente, il Container Registry, Container Registry namespace, Regione del cluster Dev, Gruppo di risorse, Nome del cluster, Spazio dei nomi del cluster sono popolati automaticamente. È possibile modificare uno qualsiasi di questi campi per adattarlo alla propria configurazione.

  4. Fai clic su Continue.

Firma risorsa utente

Gli artefatti sono costruiti dalla toolchain e registrati nell'inventario e devono essere firmati prima di essere distribuiti in produzione. La pipeline utilizza Skopeo come strumento predefinito per fornire la possibilità di firmare gli artefatti. È possibile utilizzare una chiave GPG esistente o creare una nuova coppia di chiavi GPG.

  1. Immettere la chiave privata GnuPG. In alternativa, è possibile creare una nuova chiave GPG facendo clic su NEW. Per ulteriori informazioni, vedere Generazione di una chiave GPG.
  2. Fai clic su Continue.

DevOps Insights

Il IBM Cloud DevOps Insights è incluso nella toolchain. Visualizzate i risultati dei test della pipeline per ogni build, da ogni distribuzione e ambiente.

  1. Accettare la configurazione predefinita.
  2. Fai clic su Continue.

Strumenti opzionali

Slack

Configurare Slack per ricevere notifiche sulle richieste di pull o sugli eventi della pipeline CI. È possibile aggiungere lo strumento Slack anche dopo la creazione della catena di strumenti.

  1. Inserisci il tuo indirizzo Webhook di Slack. Per ulteriori informazioni, vedere Slack webhook.
  2. Inserire il proprio canale Slack per inviare il messaggio.
  3. Inserire il nome della squadra Slack. Ad esempio, se il tuo team è URL https://team.slack.com, il nome del team è team.
  4. Scegliere gli eventi per i quali si desidera ricevere le notifiche per Notifiche automatiche di Slack.
  5. Fai clic su Continue.

Catena di strumenti comune DevOps Insights

DevOps Insights può essere incluso facoltativamente nella toolchain creata e dopo la pubblicazione di ogni prova di verifica della conformità. La toolchain può usare un'istanza DevOps Insights esistente per pubblicare i record di distribuzione su Insights. È possibile collegare l'integrazione DevOps Insights da un'altra toolchain fornendo l'ID dell'integrazione.

  1. Accettare la catena degli strumenti corrente.
  2. Fai clic su Continue.

È possibile copiare l'ID della catena di strumenti dal sito URL della propria catena di strumenti. URL di una catena di strumenti segue questo schema: https://cloud.ibm.com/devops/toolchains/<toolchain-ID-comes-here>?env_id=ibm:yp:us-south. Se URL è: https://cloud.ibm.com/devops/toolchains/aaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee?env_id=ibm:yp:us-south, l'ID della catena di strumenti è: aaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee. Includere solo l'ID, non l'intero URL.

Si può anche impostare un ambiente di destinazione per le interazioni DevOps Insights. Questo parametro è opzionale e viene usato al posto dell'ambiente di destinazione dall'inventario.

DevOps Insights

È possibile creare un'istanza di DevOps Insights da usare per la catena di strumenti. Se non è richiesta alcuna configurazione, la pipeline CI utilizza automaticamente l'istanza di insight inclusa nella toolchain.

Nodo di lavoro privato di Delivery Pipeline

Gli artefatti creati dalla toolchain e registrati nell'inventario devono essere firmati utilizzando GaraSign,, un servizio di firma del codice fornito da Garantir, prima che le immagini possano essere distribuite in produzione. Per abilitare la firma degli artefatti GaraSign, è necessario disporre di un lavoratore privato TaaS e di un certificato di firma CISO IBM.

L'integrazione dello strumento Delivery Pipeline lavoratore privato si connette con uno o più lavoratori privati che possono eseguire carichi di lavoro della pipeline di consegna in modo isolato.

SonarQube

Configurare SonarQube come strumento di analisi statica del codice per la catena di strumenti. SonarQube fornisce una panoramica dello stato generale e della qualità del codice sorgente ed evidenzia i problemi riscontrati nel nuovo codice. Gli analizzatori di codice statico individuano bug complessi, quali il dereferenziazione di puntatori a null, errori logici e perdite di risorse, in diversi linguaggi di programmazione.

  1. Accetta la configurazione predefinita.
  2. Fai clic su Continue.

Creare la catena di strumenti CI

  1. Nella pagina Riepilogo, fare clic su Crea.
  2. Attendere la creazione della catena di strumenti. Questa operazione può richiedere alcuni minuti.

Esplorare la catena di strumenti CI

Ora che la catena di strumenti CD è stata creata con due pipeline, come mostrato nella cattura dello schermo. Fare clic sul riquadro ci-pipeline per aprire ed eseguire la pipeline di promozione.

caption-side=bottom"
DevSecOps toolchain di integrazione continua DevSecOps toolchain di integrazione continua

Eseguire la pipeline PR-CI

Per avviare il ci-pr pipeline, è necessario creare una richiesta di unione nel repository dell'applicazione.

  1. Nella pagina della catena di strumenti CI, fare clic sul riquadro pr pipeline. Per impostazione predefinita, viene creato con il nome compliance-app-<timestamp>.

  2. Creare un ramo dal ramo master.

  3. Aggiornare il codice dell'applicazione o aggiungere un file readme e salvare le modifiche.

  4. Inviare Richiesta di fusione.

  5. Nella pagina della catena di strumenti CI, fare clic sul riquadro pr-pipeline. Verificare che il ci-pr pipeline sia attivato dalla creazione della richiesta di unione.

  6. Attendere il completamento dell'esecuzione di " ci-pr pipeline ". La richiesta di unione corrispondente, che si trova nel repository dell'applicazione, è nello stato Pending finché tutte le fasi della pipeline PR non si concludono con successo.

  7. Dopo che l'esecuzione della pipeline PR è andata a buon fine, fare clic sulla pipeline per esplorare i numerosi passaggi completati e visualizzare la pagina. Per modificare e inviare nuovamente la richiesta di unione, seguire il passaggio 3 fino al passaggio 7.

    caption-side=bottom"
    DevSecOps PR pipeline di successo DevSecOps PR pipeline di successo

Flusso semplificato delle attività nella pipeline

Nel flusso di attività della pipeline PR DevSecOps, le attività di utilità sono omesse. Ad esempio, l'aggiornamento del controllo di stato su GitHub, il recupero delle credenziali e così via. Nel mondo DevSecOps, lo shift left è una pratica che previene e trova problemi come difetti e vulnerabilità di sicurezza. Shift left esegue anche controlli di conformità nelle prime fasi del processo di consegna del software, come mostrato nella figura.

Compiti PRDevSecOps
Compiti PR di DevSecOps

  • Controlli che possono essere eseguiti sul codice/repository e che non necessitano della compilazione. L'artefatto deve essere eseguito il prima possibile per evitare che il codice non conforme venga unito al ramo master del repository. Le prove non vengono raccolte dalla pipeline delle RP. L'obiettivo del gasdotto è spostare i controlli di conformità il più a sinistra possibile.
  • Tutti i controlli vengono eseguiti durante l'esecuzione di una pipeline. Anche se un controllo precedente fallisce, la pipeline passa a quello successivo. Per valutare se si sono verificati errori nell'esecuzione, è necessario controllare il passo finale della pipeline, che dispone di un valutatore di pipeline.
  • Se si sta cercando di unire una correzione di emergenza e si vuole evitare i controlli di conformità. Aggiungere un'etichetta alla richiesta di unione per indicare la correzione. La stessa etichetta deve essere fornita quando si esegue la pipeline del CD.

Eseguire la pipeline PR

È possibile avviare la pipeline di integrazione continua in uno dei seguenti modi:

  • Automaticamente: Dopo una pipeline PR di successo, approvando e unendo la PR al ramo master.
  • Manualmente: Per attivare manualmente la pipeline CI, selezionare la scheda della pipeline di consegna, fare clic su Esegui pipeline e selezionare Attivazione manuale.

In questa esercitazione, la pipeline CI è stata attivata dopo l'unione delle modifiche al codice nel ramo master del repository dell'applicazione.

  1. Nella pagina Catena degli strumenti IC, fare clic sul riquadro ci-pipeline.
  2. Fare clic su Esegui contro il nome della pipeline. Osservare l'esecuzione di una pipeline. Attendere il completamento dell'esecuzione della pipeline.
  3. Dopo che l'esecuzione della pipeline CI è andata a buon fine, fare clic sulla pipeline per esplorare i passaggi completati e visualizzare la pagina come mostrato nella cattura dello schermo.

Eseguire la pipeline CI

In questo documento, la pipeline CI è stata attivata dopo l'unione delle modifiche al codice nel ramo master del repository dell'applicazione.

  1. Nella pagina della catena di strumenti CI, fare clic sul riquadro ci-pipeline.
  2. Osservare: è in esecuzione una pipeline-run. Attendere il completamento dell'esecuzione della pipeline.

Dopo che l'esecuzione della pipeline CI è andata a buon fine, è possibile fare clic sulle attività della pipeline per esplorare i passaggi completati.

caption-side=bottom"
DevSecOps Pipeline CI di successo DevSecOps Pipeline CI di successo

Flusso semplificato delle attività nella pipeline

Nel flusso di task della pipeline CI DevSecOps, i task di utilità sono omessi. Ad esempio, l'aggiornamento del controllo di stato su GitHub, il recupero delle credenziali e così via. I compiti colorati in verde stanno producendo prove.

DevSecOps Attività CI
5. Figura DevSecOps Attività CI

Le prove vengono raccolte da tutti i controlli di conformità nella pipeline CI, nel repository evidence-locker fornito durante la configurazione della toolchain. Le prove dell'IC sono archiviate sotto raw/ci/<pipeline-run-id>/*.json.

Le prove vengono pubblicate nell'istanza DevOps Insights all'interno della toolchain. Si può navigare facendo clic sulla scheda DevOps Insights nella catena degli strumenti. È possibile esaminare le prove raccolte nella pagina Quality Dashboard.

DevSecOps CI prove
DevSecOps CI prove

Per valutare se si sono verificati errori nell'esecuzione della pipeline, è necessario controllare il passo finale della pipeline, che dispone di un valutatore di pipeline.

Visualizzazione dell'applicazione in esecuzione

Dopo un'esecuzione corretta della pipeline CI, l'applicazione di esempio è distribuita sul cluster Kubernetes ed è in esecuzione nello spazio dei nomi dev.

L'applicazione URL si trova alla fine del registro nella fase run stage di deploy-dev task dell'esecuzione della pipeline CI. Utilizza l' URL a per verificare che l'applicazione sia in esecuzione.

applicazione di esempioDevSecOps CI
applicazione di esempio DevSecOps CI

Configurare la pipeline

Per aggiungere una proprietà di testo commit-id.

  1. Fai clic su Add property.
  2. Seleziona Proprietà testo.

Se si attiva la pipeline manualmente senza commit-id, la pipeline prende l'ultimo ID di commit dal ramo master dell'applicazione.

Esempio

' '
commit-id

Per aggiungere i parametri di attivazione.

  1. Fare clic su Esegui pipeline.
  2. Selezionate Attuatore manuale.
  3. Fai clic su Run.