本繁體中文版使用機器翻譯,譯文僅供參考,若與英文版本牴觸,應以英文版本為準。

利用NetApp Astra Control將保護功能整合至CI/CD管路

總覽

DevOps工作流程最常見的用途之一是持續整合與持續部署(CI/CD)管線、可在開發人員提交新程式碼時、在應用程式上建置、整合及執行自動化測試套件。DevOps工程師與站台可靠性工程師(SRE)通常擁有專為開發新功能、回歸測試、錯誤修復、品質工程及開發流程中其他功能所設計的各種工作流程管道。

隨著團隊提高自動化程度、實際執行中應用程式的變更速度可能會令人感到難以抗拒。因此、有些團隊偏好保護正式作業中的應用程式或服務。除了保護程式碼和容器映像之外、他們也想要保護應用程式狀態、組態資料(例如Kubernetes物件和與應用程式相關的資源)、以及應用程式的持續資料。

在此使用案例中、我們將深入探討一條促銷到正式作業的傳輸途徑、這條途徑會部署新版本的應用程式:先進入接移環境、然後進入正式作業環境。此範例同樣適用於主要公有雲、也適用於內部部署環境。雖然我們展示了某個應用程式版本的部署、但管道也可搭配其他策略使用、例如藍色/綠色或金卡部署。在CI/CD管道中、我們將建立完整的應用程式備份來保護應用程式。對正式作業應用程式及其資料、狀態和組態的應用程式感知備份、對於許多DevOps工作流程而言、都很實用。

採用NetApp Astra使用案例1架構的DevOps

用於驗證此使用案例的應用程式為 "Magento"這是一種電子商務解決方案、具備網路型前端、搜尋與分析功能的Elasticsearch執行個體、以及追蹤所有購物庫存與交易詳細資料的MariaDB資料庫。此容器化應用程式安裝於Red Hat OpenShift叢集。應用程式中的每個Pod都使用持續磁碟區來儲存資料。NetApp Astra Trident會自動建立持續性磁碟區、這是Container Storage Interface相容的Kubernetes儲存協調程式、可在NetApp儲存系統上配置儲存設備。此外、為了利用Astra Control Center的應用程式保護功能、相關應用程式是由Astra Control管理、Astra Control隨後用於觸發應用程式備份、以儲存應用程式狀態及持續磁碟區中的資料。我們使用 "NetApp Astra Control Python SDK" 將觸發應用程式備份的程序自動化、然後將其導入CI/CD傳輸途徑。此管道是使用稱為的熱門CI/CD工具來建立和執行 ["Jenkins"]將建置、保護及部署應用程式的流程自動化。

讓我們來執行先決條件和程序、以便在CI/CD管道中引進保護措施。

使用案例驗證先決條件

下列工具或平台已部署並設定為先決條件:

  1. Red Hat OpenShift Container Platform

  2. NetApp Astra Trident安裝在OpenShift上、ONTAP 並已設定後端至NetApp的整套系統

  3. 預設已設定的儲存設備、指向NetApp ONTAP 的後端

  4. NetApp Astra Control Center安裝在OpenShift叢集上

  5. OpenShift叢集已新增為Astra Control Center的受管理叢集

  6. Jenkins安裝在OpenShift叢集上、並設定了安裝Docker引擎的代理程式節點

安裝應用程式

讓我們先從在接移和正式作業環境中初始安裝應用程式開始著手。就本使用案例而言、此步驟為必要步驟、因此必須手動執行。CI/CD傳輸途徑可用於應用程式新版本的後續建置與部署工作流程。

此使用案例中的正式作業環境稱為「magento prod」命名空間、而對應的接移環境則是在Red Hat OpenShift叢集上設定的命名空間「magento接移」。若要安裝所有應用程式、請完成下列步驟:

  1. 在正式作業環境中使用位元名稱管理圖表來安裝Magento應用程式。我們將rwx PV用於Magento和MariaDB Pod。

    [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
    附註 Magento bitnami船旗圖表需要負載平衡器服務才能公開Magento GUI服務。我們使用 "MetalLB." 以提供內部負載平衡器服務。
  2. 幾分鐘後、請確認所有的Pod和服務都在執行中。

    [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. 對接移環境重複相同的程序。

在Astra Control Center中管理Magento應用程式

  1. 瀏覽至「應用程式」、然後選取「探索到的應用程式」索引標籤。

  2. 在正式作業環境中、按一下Magento應用程式的省略符號(「magent-prod」)、然後按一下「Manage(管理)」。

  3. Magento應用程式現在由Astra Control Center管理。Astra Control支援的所有作業都可在應用程式上執行。也請記下應用程式的版本。

    升級前請檢查Magento版本
  4. 在接移環境(「magento接移」)中重複管理Magento應用程式的步驟。

整合式保護功能的CI/CD傳輸途徑

當我們使用新版本的應用程式時、我們會使用CI/CD管道來建置容器映像、備份暫存和正式作業環境、將新版本的應用程式部署到暫存環境、等待核准升級至正式作業環境、 然後將新版本的應用程式部署到正式作業環境。若要使用CI/CD管道、請完成下列步驟:

  1. 登入Jenkins並建立所需的認證資料:一項用於Magento creds、一項用於MariaDB管理creds、第三項用於MariaDB根creds。

  2. 瀏覽至「管理Jenkins」>「管理認證」、然後按一下適當的網域。

  3. 按一下「Add Credentials(新增認證)」、然後將「種類」設為「使用者名稱」、並將「範圍」設為輸入認證的使用者名稱、密碼和ID、然後按一下「OK(確定)」。

    建立認證資料
  4. 對其他兩個認證重複相同的程序。

  5. 返回儀表板、按一下「New item(新項目)」建立管道、然後按一下「Pipeline(管道)」。

  6. 從Jenkinsfile複製管路 "請按這裡"

  7. 將管線貼到Jenkins Pipeline區段、然後按一下「Save(儲存)」。

  8. 在Jenkins管線的參數中填入相關詳細資料、包括船舵圖表版本、要升級至的Magento應用程式版本、Astra工具組版本、Astra Control Center FQDN、API權杖及其執行個體ID。指定正式作業和暫存環境的Docker登錄、命名空間和Magento IP、並指定所建立認證的認證ID。

    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. 按一下「立即建置」。管道會開始執行、並逐步完成各個步驟。應用程式映像會先建置並上傳至Container登錄。

    管道進度
  10. 應用程式備份是透過Astra Control啟動。

    備份已啟動
  11. 備份階段成功完成後、請從Astra Control Center驗證備份。

    備份成功
  12. 然後將新版本的應用程式部署至接移環境。

    已啟動接移部署
  13. 完成此步驟之後、程式會等待使用者核准正式作業部署。在此階段、假設QA團隊執行一些手動測試並核准正式作業。然後、您可以按一下「核准」、將新版本的應用程式部署到正式作業環境。

    正在等待促銷
  14. 確認正式作業應用程式也已升級至所需的版本。

    Prod應用程式已升級

在CI/CD管道中、我們建立完整的應用程式感知備份、展現保護應用程式的能力。由於整個應用程式都已備份為促銷活動到正式作業的傳輸途徑之一、因此您對於高度自動化的應用程式部署更有信心。此應用程式感知備份包含應用程式的資料、狀態和組態、對於眾多DevOps工作流程而言非常實用。其中一項重要工作流程是在發生無法預期的問題時、將應用程式回復至舊版。

雖然我們透過Jenkins工具展示了CI/CD工作流程、但這項概念可以輕鬆且有效率地推斷到不同的工具和策略。若要查看實際使用案例、請觀看影片 "請按這裡"