Skip to main content
NetApp Solutions
본 한국어 번역은 사용자 편의를 위해 제공되는 기계 번역입니다. 영어 버전과 한국어 버전이 서로 어긋나는 경우에는 언제나 영어 버전이 우선합니다.

NetApp Astra Control을 통해 CI/CD 파이프라인에 보호 기능을 통합합니다

기여자

개요

DevOps 워크플로우의 가장 일반적인 용도 중 하나는 지속적인 통합 및 CI/CD(Continuous Deployment) 파이프라인으로서, 개발자가 새로운 코드를 커밋할 때 애플리케이션에서 자동화된 테스트 제품군을 구축, 통합 및 실행합니다. DevOps 엔지니어 및 SRE(Site-Reliability Engineer)에는 일반적으로 개발 프로세스에서 새로운 기능 개발, 회귀 테스트, 버그 수정, 품질 엔지니어링 및 기타 기능을 위해 다양한 워크플로우 전용 파이프라인이 있습니다.

팀의 자동화 수준이 높아짐에 따라 운영 중인 애플리케이션의 변화 속도가 압도적으로 느껴질 수 있습니다. 따라서 일부 팀은 운영 중인 애플리케이션 또는 서비스를 보호하고자 합니다. 코드 및 컨테이너 이미지를 보호할 뿐 아니라 애플리케이션 상태, 구성 데이터(예: Kubernetes 객체 및 애플리케이션과 관련된 리소스), 애플리케이션의 영구 데이터도 보호하려고 합니다.

이 사용 사례에서는 새로운 버전의 애플리케이션을 배포하는 프로모션-운영 파이프라인을 먼저 스테이징 환경에 구축한 다음 운영 환경에 구축하는 방법을 자세히 살펴보겠습니다. 이 예는 주요 퍼블릭 클라우드 및 온프레미스 환경에도 동일하게 적용됩니다. 앱 버전 중 하나의 배포를 보여주지만 파란색/녹색 또는 카나리아 배포와 같은 다른 전략에서도 파이프라인을 사용할 수 있습니다. CI/CD 파이프라인의 일부로 전체 애플리케이션 백업을 생성하여 애플리케이션을 보호합니다. 운영 중인 애플리케이션과 데이터, 상태, 구성을 애플리케이션 인식형 백업으로 여러 DevOps 워크플로우에 유용하게 사용할 수 있습니다.

NetApp Astra 활용 사례 1 아키텍처를 사용한 DevOps

이 사용 사례를 검증하는 데 사용된 애플리케이션은 입니다 "마멘토"웹 기반 프런트 엔드를 사용하는 전자 상거래 솔루션, 검색 및 분석 기능을 위한 Elasticsearch 인스턴스, 모든 쇼핑 인벤토리 및 트랜잭션 세부 정보를 추적하는 MariaDB 데이터베이스 이 컨테이너형 애플리케이션은 Red Hat OpenShift 클러스터에 설치되었습니다. 애플리케이션의 모든 Pod에서 영구 볼륨을 사용하여 데이터를 저장했습니다. 영구 볼륨은 NetApp 스토리지 시스템에서 스토리지를 프로비저닝할 수 있는 Kubernetes용 컨테이너 스토리지 인터페이스 호환 스토리지 오케스트레이터인 NetApp Astra Trident에 의해 자동으로 생성되었습니다. 또한 Astra Control Center의 애플리케이션 보호 기능을 활용하기 위해 해당 애플리케이션을 Astra Control에서 관리했으며, 이 애플리케이션을 사용하여 애플리케이션의 상태를 영구 볼륨에 저장된 데이터와 함께 저장하는 애플리케이션 백업을 트리거했습니다. 을 사용했습니다 "NetApp Astra Control Python SDK" 애플리케이션 백업을 트리거하는 프로세스를 자동화하기 위해 CI/CD 파이프라인에 도입되었습니다. 이 파이프라인은 이라는 인기 있는 CI/CD 툴을 사용하여 생성 및 실행되었습니다 ["젠킨스"] 응용 프로그램을 빌드, 보호 및 배포하기 위한 흐름을 자동화합니다.

CI/CD 파이프라인에 보호를 도입하기 위한 사전 요구 사항과 절차를 살펴보겠습니다.

사용 사례 검증을 위한 사전 요구사항

다음 도구 또는 플랫폼이 전제 조건으로 구축 및 구성되었습니다.

  1. Red Hat OpenShift Container Platform

  2. NetApp ONTAP 시스템에 백엔드가 구성된 OpenShift에 설치된 NetApp Astra Trident

  3. NetApp ONTAP 백엔드를 가리키는 기본 스토리지 클래스 구성

  4. OpenShift 클러스터에 설치된 NetApp Astra Control Center

  5. OpenShift 클러스터가 Astra Control Center에 관리 클러스터로 추가되었습니다

  6. Jenkins는 OpenShift 클러스터에 설치되며 Docker 엔진이 설치된 에이전트 노드로 구성됩니다

응용 프로그램을 설치하는 중입니다

스테이징 및 운영 환경에 애플리케이션을 처음 설치하는 것부터 시작하겠습니다. 이 활용 사례의 경우 이 단계가 선행 조건이므로 수동으로 수행됩니다. CI/CD 파이프라인은 이후 애플리케이션의 새 버전 릴리스에 따라 워크플로우를 구축하고 배포하는 데 사용됩니다.

이 활용 사례의 생산 환경은 '마젠토-프로드'라는 네임스페이스이며, 해당 스테이징 환경은 Red Hat OpenShift 클러스터에 구성된 '마젠토-스테이징'이라는 네임스페이스입니다. 응용 프로그램을 설치하려면 다음 단계를 수행하십시오.

  1. 프로덕션 환경에 bitnami Helm 차트를 사용하여 Magento 응용 프로그램을 설치합니다. Magento 및 MariaDB Pod용 rwx PVS를 사용합니다.

    [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 Helm 차트에는 Magento GUI 서비스를 제공하기 위해 로드 밸런서 서비스가 필요합니다. 우리는 중고 "메탈리스" 이 예에서는 온프레미스 로드 밸런서 서비스를 제공합니다.
  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-prod')에서 Magento 응용 프로그램에 대한 줄임표를 클릭하고 관리를 클릭합니다.

  3. 이제 Magento 응용 프로그램은 Astra Control Center에서 관리합니다. Astra Control에서 지원하는 모든 작업은 애플리케이션에서 수행할 수 있습니다. 응용 프로그램 버전도 확인합니다.

    업그레이드 전에 Magento 버전 확인
  4. 스테이징 환경에서 Magento 응용 프로그램을 관리하는 단계를 반복합니다('magento-staging').

통합 보호를 갖춘 CI/CD 파이프라인

새로운 버전의 애플리케이션을 사용할 때는 CI/CD 파이프라인을 사용하여 컨테이너 이미지를 구축하고, 스테이징 및 운영 환경의 백업을 수행하고, 새로운 버전의 애플리케이션을 스테이징 환경에 구축하고, 프로덕션으로 승격할 승인을 기다립니다. 그런 다음 운영 환경에 새 버전의 애플리케이션을 배포합니다. CI/CD 파이프라인을 사용하려면 다음 단계를 완료하십시오.

  1. Jenkins에 로그인하여 필요한 자격 증명을 생성합니다. 하나는 Magento 크레드이고, 하나는 MariaDB 관리자 크레드이고, 다른 하나는 MariaDB 루트 크레드입니다.

  2. Manage Jenkins > Manage Credentials로 이동한 후 해당 도메인을 클릭합니다.

  3. 자격 증명 추가 를 클릭하고 종류를 암호 및 범위가 전역으로 설정된 사용자 이름으로 설정합니다. 자격 증명의 사용자 이름, 암호 및 ID를 입력하고 확인 을 클릭합니다.

    자격 증명을 생성합니다
  4. 다른 두 자격 증명에도 같은 절차를 반복합니다.

  5. 대시보드로 돌아가서 새 항목을 클릭하여 파이프라인을 생성한 다음 파이프라인을 클릭합니다.

  6. Jenkinsfile에서 파이프라인을 복사합니다 "여기".

  7. Jenkins 파이프라인 섹션에 파이프라인을 붙여넣은 다음 저장을 클릭합니다.

  8. Helm 차트 버전, 업그레이드할 Magento 응용 프로그램 버전, Astra 도구 키트 버전, Astra Control Center FQDN, API 토큰 및 인스턴스 ID를 포함한 각 세부 정보로 Jenkins 파이프라인의 매개 변수를 채웁니다. 운영 및 스테이징 환경 모두의 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. 지금 구축을 클릭합니다. 파이프라인은 실행을 시작하고 단계를 진행합니다. 응용 프로그램 이미지는 먼저 빌드되어 컨테이너 레지스트리에 업로드됩니다.

    파이프라인 진행 상황
  10. 애플리케이션 백업은 Astra Control을 통해 시작됩니다.

    백업이 시작되었습니다
  11. 백업 단계가 성공적으로 완료된 후 Astra Control Center에서 백업을 확인합니다.

    백업이 완료되었습니다
  12. 그런 다음 새 버전의 응용 프로그램이 스테이징 환경에 배포됩니다.

    스테이징 배포가 시작되었습니다
  13. 이 단계가 완료된 후 프로그램은 사용자가 프로덕션에 대한 배포를 승인하기를 기다립니다. 이 단계에서는 QA 팀이 일부 수동 테스트를 수행하고 생산을 승인한다고 가정합니다. 그런 다음 Approve(승인) 를 클릭하여 새 버전의 애플리케이션을 프로덕션 환경에 배포할 수 있습니다.

    프로모션을 기다리는 중입니다
  14. 운영 애플리케이션도 원하는 버전으로 업그레이드되었는지 확인합니다.

    프로덕션 앱이 업그레이드되었습니다

CI/CD 파이프라인의 일부로, 전체 애플리케이션 인식 백업을 생성하여 애플리케이션을 보호하는 기능을 입증했습니다. 전체 애플리케이션이 프로모션-운영 파이프라인의 일부로 백업되었으므로 고도로 자동화된 애플리케이션 구축에 대해 더욱 확신을 가질 수 있습니다. 애플리케이션의 데이터, 상태 및 구성을 포함하는 이 애플리케이션 인식 백업은 여러 DevOps 워크플로우에 유용할 수 있습니다. 중요한 워크플로 중 하나는 예상치 못한 문제가 발생할 경우 이전 버전의 응용 프로그램으로 롤백하는 것입니다.

Jenkins 툴을 사용하여 CI/CD 워크플로우를 시연했지만, 이 개념은 여러 도구와 전략에 대해 쉽고 효율적으로 추론할 수 있습니다. 이 사용 사례를 실제 작동 중인 경우 비디오를 시청하십시오 "여기".