승격 파이프라인 설정: product promotion set
apollo-cli product promotion set은 YAML 파일의 구성으로 제품의 승격 파이프라인을 설정하거나 갱신합니다. 단계별 출발 및 도착 채널, zeroCanary 또는 dynamic 유형, 승격 조건과 임계값을 정의합니다.
실험 단계(Experimental)의 명령으로 V2 experimental commands 활성화가 필요합니다.
apollo-cli product promotion set [product-id] [flags]
적용 범위와 옵션
제품 ID를 위치 인수로 지정하면 그 제품을 대상으로 합니다. --environment를 사용하면 배포 환경의 모든 제품에 일괄 적용합니다.
| 옵션 | 의미 |
|---|---|
-f, --file | YAML 설정 파일 하나 |
-e, --environment | 일괄 대상 제품을 고를 배포 환경 |
--space-id | 대상 공간 ID |
--override | 확인 없이 충돌 덮어쓰기 |
--dry-run | 변경을 적용하지 않고 수행할 작업 확인 |
-h, --help | 명령 도움말 |
단계 설정의 구성 요소
stages에 여러 단계를 정의하며, sourceReleaseChannel과 targetReleaseChannel로 각 단계가 연결할 채널을 지정합니다.
| 구성 요소 | 용도 |
|---|---|
type | zeroCanary 또는 dynamic 선택 |
zeroCanary | 카나리 없이 승격할 단계의 설정 |
soakTimeInMinutes | 분 단위의 안정성 관찰 기간 |
productLabelConditions | 제품 릴리스에 요구할 레이블 조건 |
labelId, possibleLabelValues | 조건의 레이블 ID와 허용 값 목록 |
dynamicConfig | 동적으로 고르는 카나리 대상과 승격 조건 |
entityFilters | 대상으로 삼을 배포 개체 필터 |
필터의 type: environmentLabel | 배포 환경 레이블로 대상 선택 |
promotionConditions | 승격 여부를 판단할 조건 |
조건의 type: minHealthy | 정상 상태의 카나리가 일정 기준을 충족하도록 요구 |
minHealthyThreshold의 percentage | 정상 상태 비율의 임계값 |
구성 시나리오
다음은 가상의 사용자 지정 채널 CANARY, BETA, STABLE을 미리 만든 뒤 구성하는 두 단계의 승격 규칙입니다.
| 단계 | 유형 | 조건 |
|---|---|---|
BETA에서 STABLE로 | zeroCanary | soakTimeInMinutes를 1440으로 지정하고, security.palantir.build/approved 레이블의 possibleLabelValues를 ["true"]로 설정 |
CANARY에서 BETA로 | dynamic | environmentLabel 필터로 env.palantir.build/tier 값이 production인 대상을 고르고, minHealthy 조건에 60분의 관찰 기간과 percentage: 95.0 임계값을 설정 |
첫 단계는 관찰 기간과 제품 승인 레이블을 사용하고, 두 번째 단계는 선택한 개체 중 정상 기준을 충족한 개체의 비율을 사용합니다. 기존 파이프라인에 일부 단계를 병합하려면 별도의 append 명령을 사용합니다.
적용 예시
다음은 준비한 promotion-pipeline.yaml의 변경을 가상의 제품에 미리 확인하는 예시입니다.
./apollo-cli product promotion set com.example:service-a \
--file promotion-pipeline.yaml --dry-run
기본으로 구성한 공간에 적용하거나 실제 공간 ID를 명시할 수 있습니다.
./apollo-cli product promotion set com.example:service-a \
--file promotion-pipeline.yaml
./apollo-cli product promotion set com.example:service-a \
--file promotion-pipeline.yaml --space-id "${APOLLO_SPACE_ID}"
배포 환경의 모든 제품에 적용하려면 다음과 같이 실행합니다.
./apollo-cli product promotion set --environment test-spoke \
--file promotion-pipeline.yaml
확인 없이 덮어쓰려면 --override를 사용합니다.
./apollo-cli product promotion set --environment test-spoke \
--file promotion-pipeline.yaml --override
배포 환경은 대상 제품을 선택하는 기준입니다. 변경은 해당 제품들의 승격 파이프라인에 적용되므로 일괄 적용 범위를 먼저 확인합니다.