Configurare una catena di strumenti CD per Infrastructure as Code

Questo tutorial è la terza parte di una serie di tre tutorial in cui imparerai le migliori pratiche di IBM Cloud® DevSecOps utilizzando un'implementazione di riferimento completa disponibile come servizio e basata su IBM Cloud® Continuous Delivery. Nella parte 3 di questa serie di tutorial, utilizzerai il modello di toolchain per la distribuzione continua (CD) con le best practice relative alla sicurezza e alla conformità in DevSecOps.

Prima di iniziare

Prima di iniziare la parte 3 di questa serie di esercitazioni, assicuratevi di aver completato i seguenti prerequisiti:

  1. Completare la Parte 1: impostare i prerequisiti.
  2. Completare la Parte 2: impostare una toolchain CI per Infrastructure as Code(Terraform).
  3. Guardate il video " Come iniziare con DevSecOps in IBM Cloud- Parte 2".

CD - Distribuzione di un'applicazione sicura con le pratiche di DevSecOps

La toolchain CD di DevSecOps contiene solo una pipeline per la distribuzione continua. Implementa le seguenti best practice:

  • Automazione della gestione delle modifiche per aiutare gli sviluppatori, gli approvatori e i revisori a monitorare le implementazioni dal punto di vista della conformità.
  • Crea un riepilogo delle evidenze raccolte nella pipeline CI.
  • Crea una richiesta di modifica nel repository di gestione delle modifiche basato su Git Repos and Issue Tracking e vi aggiunge prove di distribuzione.
  • Utilizza il repository dell'inventario per promuovere gli artefatti costruiti negli ambienti di distribuzione, come staging e prod.
  • Controlla il CR e lo approva automaticamente se tutti i controlli sono superati.
  • Se il CR è approvato, o in caso di emergenza, la toolchain distribuisce l'immagine dall'inventario alla produzione.

Panoramica guidata della configurazione della catena di strumenti CD

Uno qualsiasi dei metodi di questa esercitazione porta all'esperienza di configurazione guidata. Il processo di impostazione della catena di strumenti viene guidato e vengono presentate le opzioni di configurazione consigliate per la creazione della catena di strumenti.

Un indicatore di avanzamento mostra le fasi di completamento della configurazione. È possibile utilizzare l'indicatore di avanzamento per passare a una fase precedente. Le opzioni di configurazione per il passo corrente sono visualizzate nell'area principale della pagina.

DevSecOps Pagina di benvenuto della toolchain di Continuous Deployment Figura 1.
DevSecOps Pagina di benvenuto della catena di strumenti per la distribuzione continua

Per passare alla fase successiva, fare clic su Continua. È possibile passare al passo successivo solo quando la configurazione per il passo corrente è completa e valida. È possibile tornare al passo precedente facendo clic su Indietro.

Alcuni passaggi includono una levetta per passare alla configurazione avanzata. Questi passaggi presentano di default la configurazione minima necessaria. Tuttavia, gli utenti avanzati che necessitano di un controllo a grana più fine possono fare clic sulla levetta Passa alla configurazione avanzata per visualizzare tutte le opzioni dell'integrazione sottostante.

DevSecOps Configurazione avanzata Figura 2.
DevSecOps Toggle di configurazione avanzata

Quando tutti i passaggi sono stati completati con successo, si crea la catena di strumenti facendo clic su Crea nel passaggio Riepilogo.

È sempre possibile tornare ai passaggi precedenti nel programma di installazione guidata. Il programma di installazione della toolchain conserva tutte le impostazioni di configurazione dai passaggi successivi.

Avvia la configurazione della toolchain CD

Avviare la configurazione della catena di strumenti CD utilizzando una delle seguenti opzioni:

  • Fare clic su Crea catena di strumenti.

    Creare la catena di strumenti

  • Dalla console IBM Cloud, fai clic sull'icona Menu e seleziona DevOps. Nella pagina Catene di strumenti, fare clic su Crea catena di strumenti. Nella pagina Crea una catena di strumenti, fare clic su CD-Sviluppo con le pratiche DevSecOps.

Impostare il nome e la regione della catena di strumenti CD

Rivedi le informazioni predefinite per la configurazione della toolchain. Il nome della toolchain la identifica in IBM Cloud. Assicuratevi che il nome della catena di strumenti sia unico all'interno delle vostre catene di strumenti per la stessa regione e lo stesso gruppo di risorse in IBM Cloud.

Scegliere la catena di strumenti CI associata nel menu a tendina per copiare alcune delle configurazioni CI per facilitare l'impostazione di questa catena di strumenti CD.

DevSecOps associato alla catena di strumenti CI Figura 3.
DevSecOps catena di strumenti CI associata

Attenzione: Questa azione potrebbe sovrascrivere alcuni dei valori già inseriti.

Impostazione di integrazioni di strumenti CD

Se ci si è già collegati a una catena di strumenti CI esistente nel passo di benvenuto, i nomi dei repository relativi all'applicazione utilizzati in quella catena di strumenti sono precompilati. Esaminare gli URL del repository e continuare con i passi successivi.

Repository relativi alle applicazioni

Se si vuole configurare la propria catena di strumenti CD da zero, configurare questi repository durante la creazione della catena di strumenti CI e poi usarli o collegarsi ad essi qui.

Per recuperare il rispettivo URL, accedere alla CI Pipeline, selezionare la rispettiva scheda strumento. Fare clic con il pulsante destro del mouse sulla scheda dello strumento e selezionare Copia indirizzo link.

  • Inventario: Il repository dell'inventario registra i dettagli degli artefatti costruiti dalle pipeline CI e CD. Ad esempio, https://<region>.git.cloud.ibm.com/myorg/my-compliance-ci-inventory
  • Problemi: Il repository dei problemi registra i problemi trovati durante l'esecuzione della pipeline CI. Ad esempio, https://<region>.git.cloud.ibm.com/myorg/my-compliance-ci-issues.
  • Prove: Qui vengono raccolte tutte le prove di conformità grezze che appartengono all'applicazione. Ad esempio, https://<region>.git.cloud.ibm.com/myorg/my-compliance-ci-evidence.

La toolchain attualmente supporta solo il collegamento a repository Git Repos and Issue Tracking ospitati su IBM.

Inventario

Repository URL: URL del repository dell'inventario configurato nella propria toolchain CI, come acquisito nel passo precedente.

Problemi

Repository URL: URL del repository dei problemi configurato nella propria toolchain CI, come acquisito nel passo precedente.

Configurazione pipeline

Il repository di configurazione della pipeline contiene file e script YAML necessari per la distribuzione, il test e altre attività personalizzate.

Per questa esercitazione, il repository di configurazione della pipeline è lo stesso definito per DevSecOps CI per Infrastructure as Code ( IaC ). Selezionare Use existing deployment configuration repository e selezionare il repository utilizzato per la configurazione della pipeline della CI Toolchain.

Per maggiori informazioni sui repository Git, consulta Configurazione di Git Repos and Issue Tracking. Per ulteriori informazioni sugli script personalizzabili, vedere Script personalizzati.

Segreti

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

Questa esercitazione utilizza IBM Cloud® Secrets Manager come cassaforte per i segreti.

Conservazione delle prove

L'armadietto delle prove memorizza le prove di tutti i compiti eseguiti dalla pipeline. Queste prove vengono raccolte dalla pipeline durante la sua esecuzione.

Selezionare il bucket Cloud Object Storage (COS) configurato per la propria toolchain di Continuous Integration (CI). Assicuratevi che lo stesso bucket COS sia utilizzato nelle toolchain di Continuous Integration (CI), Continuous Delivery (CD) e Continuous Compliance (CC).

È una best practice utilizzare un bucket Cloud Object Storage come archivio delle prove per memorizzare tutte le prove e gli artefatti raccolti durante l'esecuzione della pipeline.

Per ulteriori informazioni sulla conservazione delle prove, vedere Prove.

Prova

Repository URL: URL del repository dell'armadietto delle prove configurato nella CI Toolchain, come acquisito nel passo precedente.

Bucket Object Storage cloud

Per utilizzare questa funzione, è necessario disporre di un'istanza Cloud Object Storage e di un bucket. Fare clic su Utilizzo dei bucket Cloud Object Storage come archivio prove per creare un'istanza Cloud Object Storage. Per ulteriori informazioni sulla configurazione di un bucket che può fungere da archivio delle prove di conformità, vedere Configurazione di Cloud Object Storage per l'archiviazione delle prove.

  • I campi istanza di Cloud Object Storage, nome del bucket e endpoint di Cloud Object Storage sono popolati automaticamente.
  • Inserire la chiave API del Service ID
    • Preferibile: È possibile importare una chiave esistente da un caveau dei segreti facendo clic sull'icona della chiave.
    • È possibile copiare e incollare una chiave esistente.

Il campo endpoint è facoltativo. Selezionare o fornire l'endpoint durante la configurazione della toolchain o durante l'esecuzione della pipeline.

Destinazione della distribuzione

Per il caso d'uso DevSecOps for Terraform, scegliere l'opzione di distribuzione personalizzata.

Obiettivo personalizzato

Questa opzione richiede la chiave API IBM Cloud, utilizzata negli script di distribuzione della pipeline. Gli script di distribuzione forniti utilizzano Schematics per caricare l'artefatto di configurazione di Terraform nello spazio di lavoro Schematics e utilizzano i comandi Schematics CLI plan e apply per distribuire la configurazione di Terraform su IBM Cloud.

Chiave API IBM Cloud

La chiave API interagisce con lo strumento IBM Cloud CLI in diverse operazioni:

  • Preferibile: Importare una chiave esistente da un caveau dei segreti facendo clic sull'icona della chiave.
  • Copiare e incollare una chiave esistente.
  • Creare una chiave facendo clic sul pulsante Nuovo +.

Salvare la nuova chiave API generata in un archivio di segreti.

Gestione richiesta di modifica

Utilizza un repository IBM Cloudospitato Git Repos and Issue Tracking per gestire le richieste di modifica. Per ulteriori informazioni, vedi Automazione della gestione delle modifiche.

DevOps catena di strumenti di approfondimento

Collegare un'istanza esistente di DevOps insights da un'altra catena di strumenti a questa pipeline, in modo che tutti i record di compilazione, distribuzione e test dalle pipeline della catena di strumenti CI e CD siano raccolti nello stesso posto.

La toolchain CD può pubblicare i record di distribuzione su un'istanza esistente di DevOps insights. Per abilitare questa funzione, fornire l'ID della catena di strumenti che contiene l'istanza esistente di DevOps Insights selezionandola nel menu a discesa DevOps insights toolchain ID.

Strumenti facoltativi

Slack

Configurare lo strumento Slack per ricevere notifiche sugli eventi della pipeline PR/CI:

  • Webhook Slack
  • Preferibile: È possibile importare un webhook esistente da un vault dei segreti facendo clic sull'icona della chiave.
  • Copiare e incollare un webhook esistente.
  • Canale Slack: inviare un messaggio a uno Slack esistente.
  • Nome del team Slack: la frase prima di . slack.com nel nostro team URL. Ad esempio, se la squadra URL è https://team.slack.com, il nome della squadra è squadra.
  • Notifiche automatiche su Slack: Personalizzate la selezione scegliendo gli eventi per i quali desiderate ricevere le notifiche.

È possibile aggiungere lo strumento Slack dopo la creazione della catena di strumenti.

Dopo aver creato la propria catena di strumenti, è possibile attivare l'invio di notifiche con la proprietà dell'ambiente slack-notifications nella pipeline CD (0 = off, 1 = on)

Crea la toolchain CD

Nella pagina di riepilogo, fare clic su Crea e attendere la creazione della catena di strumenti.

Configurare le singole integrazioni della catena di strumenti dopo la creazione della pipeline.

DevSecOps Catena degli strumenti CD creata Figura 4.
DevSecOps Creazione della catena di strumenti CD

Esplora la toolchain CD

Ora che la CD Toolchain è stata creata, fate clic sulla scheda cd-pipeline per aprire ed eseguire la Promotion Pipeline.

Eseguire la pipeline di promozione

Assicurarsi che la pipeline CI sia stata eseguita correttamente prima di eseguire la pipeline di promozione.

La pipeline di promozione crea una richiesta di pull con il contenuto dell'inventario sul ramo dell'ambiente di origine dell'inventario (per esempio: master) che punta al ramo dell'ambiente di destinazione dell'inventario (per esempio: staging o prod).

  • Nel cruscotto di cd-pipeline, fare clic su Esegui pipeline e selezionare l'innesco di promozione manuale. Fare clic su Esegui per attivare la pipeline.
  • Attendere il completamento dell'esecuzione della pipeline di promozione e controllare il registro di esecuzione.
  • Dopo che la pipeline di promozione è stata completata con successo, il registro delle attività di promote fornisce un link alla richiesta di pull nel repository dell'inventario. Il nome della richiesta di pull ha il formato promote <Inventory Source Environment> to <Inventory Target Environment>.
  1. Apri la richiesta di pull nel tuo browser con il link fornito nel log. Completare i dettagli nelle seguenti sezioni:

    • Priorità: (obbligatoria) Una tra Critico, Alto, Moderato, Basso, Pianificazione.
    • Assegnatario della richiesta di modifica: (obbligatorio) ID e-mail dell'assegnatario.
    • Descrizione aggiuntiva: Descrizione delle modifiche apportate alla domanda.
    • Scopo: scopo delle modifiche apportate all'applicazione.
    • Spiegazione dell'impatto: impatto della modifica al comportamento o all'ambiente dell'applicazione.
    • Piano di backout: passi per il backout se si verifica un errore di distribuzione.
  2. Completare i campi della richiesta e fare clic su Salva.

  3. Aggiungere l'etichetta EMERGENCY alla PR se i controlli di conformità in CI non sono andati a buon fine e si vuole continuare con la distribuzione

  4. Unisci la richiesta di pull da Git Repos and Issue Tracking.

I dettagli della richiesta di pull vengono utilizzati dalla pipeline CD per creare una richiesta di modifica nel repository Change Request Management durante l'esecuzione della pipeline CD.

Configurare la pipeline CD

Variabili di Terraform

Per questa esercitazione, specificare il nome dell'istanza di protezione della chiave da creare nell'ambiente di produzione.

A tale scopo, selezionare Environment Properties nella cd-pipeline e fare clic su Add.

Configurazione della pipeline CD
Figura 5. Configurazione della pipeline CD

Aggiungere una proprietà di tipo Text Value e nome TF_VAR_key_protect_instance. Impostare un valore significativo che indichi la consegna all'ambiente di produzione, ad esempio key-protect-production-202210191453. Il valore di questa proprietà dell'ambiente viene iniettato come valore della variabile di configurazione key_protect_instance terraform.

È inoltre necessario configurare il provider IBM Cloud per Terraform con l'appropriato ibmcloud_api_key che si autentica con il IBM Cloud come descritto in Configurazione del plugin IBM Cloud Provider

Aggiungere una proprietà di tipo Secure Value e nome TF_VAR_ibmcloud_api_key. Impostare il valore della chiave api da usare per la creazione delle risorse di IBM Cloud.

Il campione utilizzato in questo tutorial prevede un resource_group per creare l'istanza KeyProtect. Il nome predefinito di resource_group è Default. Se questo non è appropriato per il vostro account, sostituite la variabile predefinita resource_group nel file variables.tf o specificate il valore della variabile resource_group da usare impostando la proprietà d'ambiente TF_VAR_resource_group sul nome del gruppo di risorse appropriato.

Ramo di configurazione della pipeline

Il ramo del repository di configurazione della pipeline è definito come master nelle proprietà dell'ambiente CD Pipeline. Cambiare il ramo in main per questa esercitazione.

Per farlo, selezionare Environment Properties nella cd-pipeline e fare clic su edit per modificare il valore in main

Ramo di configurazione della conduttura CD
Figura 6. Ramo di configurazione della pipeline CD

Esegui la pipeline CD

Avviare una pipeline di CD in uno dei seguenti modi:

  • Preferibile: attivare la pipeline CD manualmente.
  • Opzionale: automaticamente dopo ogni azione di Merge nel Repository Inventory. Un trigger Git Repos and Issue Tracking è impostato per attivare il CD Pipeline automatico, ma è disattivato per impostazione predefinita.

È anche possibile attivare la pipeline CD manualmente in qualsiasi momento, ma se non ci sono modifiche dall'ultima distribuzione riuscita, la pipeline CD si interrompe prima perché non c'è nulla da distribuire. È possibile aggiungere e utilizzare force-redeploy variabile per rieseguire il CD senza alcuna modifica di codice.

Un'esecuzione corretta della pipeline CD si presenta come segue:

DevSecOps Pipeline CD di successo Figura 7.
DevSecOps Pipeline di CD di successo

Dopo un'esecuzione corretta della pipeline CD, è possibile trovare il servizio di istanza KeyProtect nell'elenco delle risorse.

KeyProtect istanza di servizio creata Figura 8.
KeyProtect istanza di servizio creata