2.3.4. 방법 및 도구
근본적으로 애플리케이션 승격은 앞서 언급한 애플리케이션 구성 요소를 한 환경에서 다른 환경으로 이동하는 프로세스입니다. 다음 하위 섹션에서는 애플리케이션 승격 자동화에 대한 총체 솔루션에 대해 논의하기 전에 다양한 구성 요소를 직접 이동하는 데 사용할 수 있는 툴을 간략하게 설명합니다.
빌드 및 배포 프로세스 중 사용할 수 있는 삽입 지점이 많이 있습니다. BuildConfig
및 DeploymentConfig API 오브젝트
내에서 정의됩니다. 이러한 후크를 사용하면 데이터베이스와 같은 배포된 구성 요소 및 OpenShift Container Platform 클러스터 자체와 상호 작용할 수 있는 사용자 정의 스크립트를 호출할 수 있습니다.
따라서 후크를 사용하여 환경 간에 애플리케이션을 효과적으로 이동하는 구성 요소 관리 작업을 수행할 수 있습니다(예: 후크 내에서 이미지 태그 작업을 수행하여). 그러나 다양한 후크 포인트는 애플리케이션 구성 요소를 환경 간에 이동하는 대신 지정된 환경 내에서 애플리케이션의 라이프사이클을 관리하는 데 가장 적합합니다(예: 새 버전의 애플리케이션을 배포할 때 데이터베이스 스키마 마이그레이션을 수행하는 데 사용).
2.3.4.1. API 오브젝트 관리
한 환경에 정의된 리소스는 새 환경으로 가져오기 위해 JSON 또는 YAML 파일 내용으로 내보냅니다. 따라서 API 오브젝트의 표현식은 애플리케이션 파이프라인을 통해 API 오브젝트를 승격하는 작업의 단위 역할을 합니다. oc
CLI는 이 콘텐츠를 내보내고 가져오는 데 사용됩니다.
파일에 저장된 JSON 또는 YAML을 사용하여 OpenShift Container Platform으로 승격 흐름을 승격할 필요는 없지만 SCM 시스템에서 콘텐츠를 저장하고 검색하는 것이 좋습니다. 이를 통해 분기 생성, 다양한 라벨 또는 버전 관련 태그 할당 및 쿼리 등 SCM의 버전 관리 관련 기능을 활용할 수 있습니다.
2.3.4.1.1. API 오브젝트 상태 내보내기
API 오브젝트 사양은 oc get --export
를 사용하여 캡처해야 합니다. 이 작업은 오브젝트 정의(예: 현재 네임스페이스 또는 할당된 IP 주소)에서 환경 특정 데이터를 제거하고 다른 환경에서 다시 생성할 수 있도록 합니다(예: oc get
operations, which output an unfiltered state of the object).
API 오브젝트에서 레이블을 추가, 수정 또는 제거할 수 있는 oc
레이블은 단일 작업에서 Pod 그룹을 선택하고 관리할 수 있으므로 승격된 흐름을 위해 수집된 오브젝트 세트를 구성하는 데 유용할 수 있습니다. 이렇게 하면 올바른 오브젝트 세트를 내보내는 것이 더 쉬워집니다. 레이블은 새 환경에서 오브젝트가 생성될 때 전달되므로 각 환경에서 애플리케이션 구성 요소를 보다 쉽게 관리할 수 있습니다.
API 오브젝트에는 보안을 참조하는 DeploymentConfig
와 같은 참조가 포함되는 경우가 많습니다
. 한 환경에서 다른 환경으로 API 오브젝트를 이동할 때 이러한 참조도 새 환경으로 이동해야 합니다.
마찬가지로 DeploymentConfig
와 같은 API 오브젝트에는 외부 레지스트리를 참조하는 ImageStreams
에 대한 참조가 포함되는 경우가 많습니다. 한 환경에서 다른 환경으로 API 오브젝트를 이동할 때 새 환경에서 해당 참조를 확인할 수 있는지 확인해야 합니다. 즉, 참조를 확인할 수 있어야 하며 ImageStream
은 새 환경에서 액세스 가능한 레지스트리를 참조해야 합니다. 자세한 내용은 Moving Images and Promotion Caveats 를 참조하십시오.
2.3.4.1.2. API 오브젝트 상태 가져오기
2.3.4.1.2.1. 초기 생성
애플리케이션이 새 환경에 처음 도입되는 경우 API 오브젝트의 사양을 나타내는 JSON 또는 YAML을 가져와서 oc create
를 실행하여 적절한 환경에서 생성할 수 있습니다. oc create
를 사용하는 경우 --save-config
옵션을 염두에 두십시오. 주석 목록에 있는 오브젝트의 구성 요소를 저장하면 나중에 oc apply
를 사용하여 오브젝트를 수정할 수 있습니다.
2.3.4.1.2.2. 반복적 수정
다양한 스테이징 환경이 처음 설정된 후 승격 주기가 시작되고 애플리케이션이 스테이지에서 스테이지로 이동하면 애플리케이션 업데이트에 애플리케이션의 일부인 API 오브젝트 수정이 포함될 수 있습니다. 이러한 API 오브젝트의 변경 사항은 OpenShift Container Platform 시스템의 구성을 나타내기 때문에 사용할 수 있습니다. 이러한 변경에 대한 동기 부여는 다음과 같습니다.
- 스테이징 환경 간의 환경 차이점을 설명합니다.
- 애플리케이션에서 지원하는 다양한 시나리오 확인.
API 오브젝트를 다음 단계의 환경으로 이전하는 것은 oc
CLI를 사용하여 수행됩니다. API 오브젝트를 수정하는 다양한 oc
명령 세트가 있지만 이 주제에서는 오브젝트 간 차이를 계산하고 적용하는 oc apply
에 중점을 둡니다.
특히 oc apply
를 기존 오브젝트 정의와 함께 입력으로 파일 또는 stdin을 사용하는 3방향 병합으로 볼 수 있습니다. 이 명령은 3방향 병합을 수행합니다.
- 명령에 대한 입력,
- 오브젝트의 현재 버전 및
- 최근 사용자가 지정한 오브젝트 정의는 현재 오브젝트의 주석으로 저장됩니다.
그런 다음 기존 오브젝트가 결과로 업데이트됩니다.
오브젝트가 소스 및 대상 환경 간에 동일할 것으로 예상되지 않은 경우와 마찬가지로 API 오브젝트의 사용자 정의가 추가로 필요한 경우
와 같은 oc 명령을 사용하여 업스트림 환경에서 최신 오브젝트 정의를 적용한 후 오브젝트를 수정할 수 있습니다.
oc
set
일부 특정 용도는 시나리오 및 예에 인용됩니다.