NetApp Astra Control을 통해 CI/CD 파이프라인에 보호 기능을 통합합니다
개요
DevOps 워크플로우의 가장 일반적인 용도 중 하나는 지속적인 통합 및 CI/CD(Continuous Deployment) 파이프라인으로서, 개발자가 새로운 코드를 커밋할 때 애플리케이션에서 자동화된 테스트 제품군을 구축, 통합 및 실행합니다. DevOps 엔지니어 및 SRE(Site-Reliability Engineer)에는 일반적으로 개발 프로세스에서 새로운 기능 개발, 회귀 테스트, 버그 수정, 품질 엔지니어링 및 기타 기능을 위해 다양한 워크플로우 전용 파이프라인이 있습니다.
팀의 자동화 수준이 높아짐에 따라 운영 중인 애플리케이션의 변화 속도가 압도적으로 느껴질 수 있습니다. 따라서 일부 팀은 운영 중인 애플리케이션 또는 서비스를 보호하고자 합니다. 코드 및 컨테이너 이미지를 보호할 뿐 아니라 애플리케이션 상태, 구성 데이터(예: Kubernetes 객체 및 애플리케이션과 관련된 리소스), 애플리케이션의 영구 데이터도 보호하려고 합니다.
이 사용 사례에서는 새로운 버전의 애플리케이션을 배포하는 프로모션-운영 파이프라인을 먼저 스테이징 환경에 구축한 다음 운영 환경에 구축하는 방법을 자세히 살펴보겠습니다. 이 예는 주요 퍼블릭 클라우드 및 온프레미스 환경에도 동일하게 적용됩니다. 앱 버전 중 하나의 배포를 보여주지만 파란색/녹색 또는 카나리아 배포와 같은 다른 전략에서도 파이프라인을 사용할 수 있습니다. CI/CD 파이프라인의 일부로 전체 애플리케이션 백업을 생성하여 애플리케이션을 보호합니다. 운영 중인 애플리케이션과 데이터, 상태, 구성을 애플리케이션 인식형 백업으로 여러 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 파이프라인에 보호를 도입하기 위한 사전 요구 사항과 절차를 살펴보겠습니다.
사용 사례 검증을 위한 사전 요구사항
다음 도구 또는 플랫폼이 전제 조건으로 구축 및 구성되었습니다.
-
Red Hat OpenShift Container Platform
-
NetApp ONTAP 시스템에 백엔드가 구성된 OpenShift에 설치된 NetApp Astra Trident
-
NetApp ONTAP 백엔드를 가리키는 기본 스토리지 클래스 구성
-
OpenShift 클러스터에 설치된 NetApp Astra Control Center
-
OpenShift 클러스터가 Astra Control Center에 관리 클러스터로 추가되었습니다
-
Jenkins는 OpenShift 클러스터에 설치되며 Docker 엔진이 설치된 에이전트 노드로 구성됩니다
응용 프로그램을 설치하는 중입니다
스테이징 및 운영 환경에 애플리케이션을 처음 설치하는 것부터 시작하겠습니다. 이 활용 사례의 경우 이 단계가 선행 조건이므로 수동으로 수행됩니다. CI/CD 파이프라인은 이후 애플리케이션의 새 버전 릴리스에 따라 워크플로우를 구축하고 배포하는 데 사용됩니다.
이 활용 사례의 생산 환경은 '마젠토-프로드'라는 네임스페이스이며, 해당 스테이징 환경은 Red Hat OpenShift 클러스터에 구성된 '마젠토-스테이징'이라는 네임스페이스입니다. 응용 프로그램을 설치하려면 다음 단계를 수행하십시오.
-
프로덕션 환경에 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 서비스를 제공하기 위해 로드 밸런서 서비스가 필요합니다. 우리는 중고 "메탈리스" 이 예에서는 온프레미스 로드 밸런서 서비스를 제공합니다. -
몇 분 후 모든 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
-
스테이징 환경에 대해서도 동일한 절차를 반복합니다.
Astra Control Center에서 Magento 응용 프로그램을 관리합니다
-
응용 프로그램 으로 이동하고 검색된 응용 프로그램 탭을 선택합니다.
-
제작 환경('magento-prod')에서 Magento 응용 프로그램에 대한 줄임표를 클릭하고 관리를 클릭합니다.
-
이제 Magento 응용 프로그램은 Astra Control Center에서 관리합니다. Astra Control에서 지원하는 모든 작업은 애플리케이션에서 수행할 수 있습니다. 응용 프로그램 버전도 확인합니다.
-
스테이징 환경에서 Magento 응용 프로그램을 관리하는 단계를 반복합니다('magento-staging').
통합 보호를 갖춘 CI/CD 파이프라인
새로운 버전의 애플리케이션을 사용할 때는 CI/CD 파이프라인을 사용하여 컨테이너 이미지를 구축하고, 스테이징 및 운영 환경의 백업을 수행하고, 새로운 버전의 애플리케이션을 스테이징 환경에 구축하고, 프로덕션으로 승격할 승인을 기다립니다. 그런 다음 운영 환경에 새 버전의 애플리케이션을 배포합니다. CI/CD 파이프라인을 사용하려면 다음 단계를 완료하십시오.
-
Jenkins에 로그인하여 필요한 자격 증명을 생성합니다. 하나는 Magento 크레드이고, 하나는 MariaDB 관리자 크레드이고, 다른 하나는 MariaDB 루트 크레드입니다.
-
Manage Jenkins > Manage Credentials로 이동한 후 해당 도메인을 클릭합니다.
-
자격 증명 추가 를 클릭하고 종류를 암호 및 범위가 전역으로 설정된 사용자 이름으로 설정합니다. 자격 증명의 사용자 이름, 암호 및 ID를 입력하고 확인 을 클릭합니다.
-
다른 두 자격 증명에도 같은 절차를 반복합니다.
-
대시보드로 돌아가서 새 항목을 클릭하여 파이프라인을 생성한 다음 파이프라인을 클릭합니다.
-
Jenkinsfile에서 파이프라인을 복사합니다 "여기".
-
Jenkins 파이프라인 섹션에 파이프라인을 붙여넣은 다음 저장을 클릭합니다.
-
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')
-
지금 구축을 클릭합니다. 파이프라인은 실행을 시작하고 단계를 진행합니다. 응용 프로그램 이미지는 먼저 빌드되어 컨테이너 레지스트리에 업로드됩니다.
-
애플리케이션 백업은 Astra Control을 통해 시작됩니다.
-
백업 단계가 성공적으로 완료된 후 Astra Control Center에서 백업을 확인합니다.
-
그런 다음 새 버전의 응용 프로그램이 스테이징 환경에 배포됩니다.
-
이 단계가 완료된 후 프로그램은 사용자가 프로덕션에 대한 배포를 승인하기를 기다립니다. 이 단계에서는 QA 팀이 일부 수동 테스트를 수행하고 생산을 승인한다고 가정합니다. 그런 다음 Approve(승인) 를 클릭하여 새 버전의 애플리케이션을 프로덕션 환경에 배포할 수 있습니다.
-
운영 애플리케이션도 원하는 버전으로 업그레이드되었는지 확인합니다.
CI/CD 파이프라인의 일부로, 전체 애플리케이션 인식 백업을 생성하여 애플리케이션을 보호하는 기능을 입증했습니다. 전체 애플리케이션이 프로모션-운영 파이프라인의 일부로 백업되었으므로 고도로 자동화된 애플리케이션 구축에 대해 더욱 확신을 가질 수 있습니다. 애플리케이션의 데이터, 상태 및 구성을 포함하는 이 애플리케이션 인식 백업은 여러 DevOps 워크플로우에 유용할 수 있습니다. 중요한 워크플로 중 하나는 예상치 못한 문제가 발생할 경우 이전 버전의 응용 프로그램으로 롤백하는 것입니다.
Jenkins 툴을 사용하여 CI/CD 워크플로우를 시연했지만, 이 개념은 여러 도구와 전략에 대해 쉽고 효율적으로 추론할 수 있습니다. 이 사용 사례를 실제 작동 중인 경우 비디오를 시청하십시오 "여기".