Skip to main content
NetApp Solutions
La versione in lingua italiana fornita proviene da una traduzione automatica. Per eventuali incoerenze, fare riferimento alla versione in lingua inglese.

Integra la protezione nelle pipeline ci/CD con NetApp Astra Control

Collaboratori

Panoramica

Uno degli utilizzi più comuni dei flussi di lavoro DevOps è l'integrazione continua e le pipeline di implementazione continua (ci/CD) che creano, integrano ed eseguono suite di test automatizzate sulle applicazioni man mano che gli sviluppatori commettono nuovo codice. Gli ingegneri DevOps e gli SREs (Site-Reliability Engineer) dispongono di pipeline dedicate ai vari flussi di lavoro per lo sviluppo di nuove funzionalità, il test di regressione, la correzione di bug, la progettazione della qualità e altre funzioni del processo di sviluppo.

Man mano che i team aumentano il loro livello di automazione, il ritmo del cambiamento per le applicazioni in-produzione può sembrare schiacciante. Pertanto, alcuni team preferiscono proteggere le applicazioni o i servizi in-produzione. Oltre a proteggere il codice e le immagini dei container, desiderano proteggere lo stato dell'applicazione, i dati di configurazione (come gli oggetti Kubernetes e le risorse associate all'applicazione) e i dati persistenti di un'applicazione.

In questo caso di utilizzo, analizziamo più da vicino una pipeline di promozione-produzione che implementa una nuova versione di un'applicazione: Prima in un ambiente di staging e poi in un ambiente di produzione. Questo esempio si applica allo stesso modo ai principali cloud pubblici e anche a un ambiente on-premise. Anche se mostriamo l'implementazione di una versione dell'applicazione, la pipeline può essere utilizzata anche con altre strategie, come l'implementazione blu/verde o canary. Come parte della pipeline ci/CD, proteggeremo l'applicazione creando un backup completo dell'applicazione. Un backup applicativo-aware dell'applicazione in-production e dei relativi dati, stato e configurazione può essere utile per numerosi flussi di lavoro DevOps.

Architettura DevOps con NetApp Astra Use Case 1

L'applicazione utilizzata per la convalida di questo caso di utilizzo è stata "Magento", Una soluzione di e-commerce con front-end basato su web; un'istanza di Elasticsearch per le funzionalità di ricerca e analisi; e un database MariaDB che tiene traccia di tutti i dettagli dell'inventario di acquisto e delle transazioni. Questa applicazione containerizzata è stata installata in un cluster Red Hat OpenShift. Ogni pod dell'applicazione utilizzava volumi persistenti per memorizzare i dati. I volumi persistenti sono stati creati automaticamente da NetApp Astra Trident, lo storage orchestrator per Kubernetes conforme a Container Storage Interface, che consente il provisioning dello storage sui sistemi storage NetApp. Inoltre, per utilizzare le funzionalità di protezione delle applicazioni di Astra Control Center, l'applicazione in questione è stata gestita da Astra Control, che è stata utilizzata per attivare i backup delle applicazioni che memorizzavano lo stato dell'applicazione insieme ai dati contenuti nei volumi persistenti. Abbiamo utilizzato "SDK NetApp Astra Control Python" Per automatizzare il processo di attivazione dei backup delle applicazioni, che è stato poi introdotto in una pipeline ci/CD. Questa pipeline è stata creata ed eseguita utilizzando un popolare tool ci/CD chiamato ["Jenkins"] per automatizzare il flusso di creazione, protezione e implementazione dell'applicazione.

Analizziamo i prerequisiti e la procedura per introdurre la protezione in una pipeline ci/CD.

Prerequisiti per la convalida del caso d'utilizzo

I seguenti strumenti o piattaforme sono stati implementati e configurati come prerequisiti:

  1. Red Hat OpenShift Container Platform

  2. NetApp Astra Trident installato su OpenShift con un sistema ONTAP di back-end configurato

  3. Uno storageclass predefinito configurato, che punta a un backend NetApp ONTAP

  4. NetApp Astra Control Center installato su un cluster OpenShift

  5. Cluster OpenShift aggiunto come cluster gestito ad Astra Control Center

  6. Jenkins è stato installato su un cluster OpenShift e configurato con un nodo Agent su cui è installato un motore Docker

Installazione dell'applicazione

Iniziamo con l'installazione iniziale dell'applicazione negli ambienti di staging e produzione. Ai fini di questo caso d'utilizzo, questo passaggio è un prerequisito, quindi viene eseguito manualmente. La pipeline ci/CD viene utilizzata per i flussi di lavoro di creazione e implementazione successivi come risultato delle nuove versioni dell'applicazione.

L'ambiente di produzione in questo caso di utilizzo è uno spazio dei nomi chiamato magento-prod`e il corrispondente ambiente di staging è uno spazio dei nomi chiamato `magento-staging Configurato sul cluster Red Hat OpenShift. Per installare l'applicazione, attenersi alla seguente procedura:

  1. Installare l'applicazione Magento utilizzando bitnami Helm Chart nell'ambiente di produzione. Utilizziamo RWX PVS per i pod Magento e MariaDB.

    [netapp-user@rhel7 na_astra_control_suite]$ helm install --version 14 magento bitnami/magento -n magento-prod --create-namespace --set image.tag=2.4.1-debian-10-r11,magentoHost=10.63.172.243,persistence.magento.accessMode=ReadWriteMany,persistence.apache.accessMode=ReadWriteMany,mariadb.master.persistence.accessModes[0]=ReadWriteMany
    Nota Magento bitnami Helm Chart richiede un servizio LoadBalancer per esporre il servizio Magento GUI. Abbiamo utilizzato "MetalLB" per fornire un servizio di bilanciamento del carico on-premise in questo esempio.
  2. Dopo alcuni minuti, verificare che tutti i pod e i servizi siano in esecuzione.

    [netapp-user@rhel7 na_astra_control_suite]$ oc get pods -n magento-prod
    NAME                                                     READY   STATUS    RESTARTS   AGE
    magento-9d658fd96-qrxmt                                  1/1     Running   0          49m
    magento-elasticsearch-coordinating-only-69869cc5-768rm   1/1     Running   0          49m
    magento-elasticsearch-data-0                             1/1     Running   0          49m
    magento-elasticsearch-master-0                           1/1     Running   0          49m
    magento-mariadb-0                                        1/1     Running   0          49m
  3. Ripetere la stessa procedura per l'ambiente di staging.

Gestire l'applicazione Magento in Astra Control Center

  1. Accedere ad applicazioni e selezionare la scheda applicazioni rilevate.

  2. Fare clic sui puntini di sospensione dell'applicazione Magento nell'ambiente di produzione (magento-prod), quindi fare clic su Manage (Gestisci).

  3. L'applicazione Magento è ora gestita da Astra Control Center. Tutte le operazioni supportate da Astra Control possono essere eseguite sull'applicazione. Prendere nota anche della versione dell'applicazione.

    Verifica della versione di Magento prima dell'aggiornamento
  4. Ripetere i passaggi per la gestione dell'applicazione Magento nell'ambiente di staging (magento-staging).

Pipeline ci/CD con protezione integrata

Quando lavoriamo con le nuove versioni delle applicazioni, utilizziamo una pipeline ci/CD per creare l'immagine container, eseguire backup degli ambienti di staging e produzione, implementare la nuova versione dell'applicazione nell'ambiente di staging, attendere l'approvazione per la promozione in produzione, quindi, implementare la nuova versione dell'applicazione nell'ambiente di produzione. Per utilizzare una pipeline ci/CD, attenersi alla seguente procedura:

  1. Accedi a Jenkins e crea le credenziali richieste: Una per Magento creds, una per MariaDB admin creds e la terza per MariaDB root creds.

  2. Accedere a Manage Jenkins > Manage Credentials (Gestisci Jenkins > Gestisci credenziali) e fare clic sul dominio appropriato.

  3. Fare clic su Add Credentials (Aggiungi credenziali) e impostare il tipo su Username (Nome utente) con password e ambito impostati su Global (Globale). Immettere il nome utente, la password e un ID per le credenziali, quindi fare clic su OK.

    Crea credenziali
  4. Ripetere la stessa procedura per le altre due credenziali.

  5. Tornare alla dashboard, creare una pipeline facendo clic su New Item (nuovo elemento), quindi fare clic su Pipeline (pipeline).

  6. Copiare la pipeline dal file Jenkinsfile "qui".

  7. Incollare la pipeline nella sezione della pipeline Jenkins, quindi fare clic su Save (Salva).

  8. Compilare i parametri della pipeline Jenkins con i relativi dettagli, tra cui la versione del grafico Helm, la versione dell'applicazione Magento a cui si desidera eseguire l'aggiornamento, la versione del toolkit Astra, l'FQDN di Astra Control Center, il token API e il relativo ID istanza. Specificare il registro del docker, lo spazio dei nomi e l'IP Magento degli ambienti di produzione e di staging e specificare anche gli ID delle credenziali create.

    MAGENTO_VERSION = '2.4.1-debian-10-r14'
    CHART_VERSION = '14'
    RELEASE_TYPE = 'MINOR'
    ASTRA_TOOLKIT_VERSION = '2.0.2'
    ASTRA_API_TOKEN = 'xxxxxxxx'
    ASTRA_INSTANCE_ID = 'xxx-xxx-xxx-xxx-xxx'
    ASTRA_FQDN = 'netapp-astra-control-center.org.example.com'
    DOCKER_REGISTRY = 'docker.io/netapp-solutions-cicd'
    PROD_NAMESPACE = 'magento-prod'
    PROD_MAGENTO_IP = 'x.x.x.x'
    STAGING_NAMESPACE = 'magento-staging'
    STAGING_MAGENTO_IP = 'x.x.x.x'
    MAGENTO_CREDS = credentials('magento-cred')
    MAGENTO_MARIADB_CREDS = credentials('magento-mariadb-cred')
    MAGENTO_MARIADB_ROOT_CREDS = credentials('magento-mariadb-root-cred')
  9. Fare clic su Crea ora. La pipeline inizia a essere eseguita e procede attraverso le fasi. L'immagine dell'applicazione viene creata e caricata nel registro del container.

    Avanzamento della pipeline
  10. I backup dell'applicazione vengono avviati tramite Astra Control.

    Backup avviato
  11. Una volta completate le fasi di backup, verificare i backup da Astra Control Center.

    Backup riuscito
  12. La nuova versione dell'applicazione viene quindi distribuita nell'ambiente di staging.

    Implementazione dello staging avviata
  13. Al termine di questa fase, il programma attende che l'utente approvi la distribuzione in produzione. In questa fase, supponiamo che il team di QA esegua alcuni test manuali e approvi la produzione. Fare clic su Approve (approva) per distribuire la nuova versione dell'applicazione nell'ambiente di produzione.

    In attesa di promozione
  14. Verificare che anche l'applicazione di produzione sia aggiornata alla versione desiderata.

    App PROD aggiornata

Come parte della pipeline ci/CD, abbiamo dimostrato la capacità di proteggere l'applicazione creando un backup completo e integrato con l'applicazione. Poiché il backup dell'intera applicazione è stato eseguito nell'ambito della pipeline di promozione-produzione, puoi sentirti più sicuro delle implementazioni altamente automatizzate delle applicazioni. Questo backup integrato con l'applicazione contenente i dati, lo stato e la configurazione dell'applicazione può essere utile per numerosi flussi di lavoro DevOps. Un importante flusso di lavoro potrebbe essere il ripristino della versione precedente dell'applicazione in caso di problemi imprevisti.

Anche se abbiamo dimostrato un workflow ci/CD attraverso lo strumento Jenkins, il concetto può essere estrapolato in modo semplice ed efficiente a diversi strumenti e strategie. Per vedere questo caso d'utilizzo in azione, guarda il video "qui".