2.3.5.2. 반복 가능한 프로모션 프로세스
파이프라인에 대한 다른 스테이징 환경의 초기 설정 후 승격 파이프라인을 통해 각 애플리케이션 반복을 확인하는 반복 가능한 단계 세트가 시작될 수 있습니다. 이러한 기본 단계는 소스 환경의 이미지 또는 API 오브젝트가 변경될 때마다 수행됩니다.
업데이트된 이미지 이동
일반적으로 첫 번째 단계는 애플리케이션과 관련된 모든 업데이트를 파이프라인의 다음 단계로 승격하는 것입니다. 위에서 언급했듯이 이미지 승격의 주요 차이점은 OpenShift Container Platform 레지스트리가 스테이징 환경 간에 공유되는지 여부입니다.
레지스트리가 공유되는 경우
oc tag
를 사용하기만 하면 됩니다.$ oc tag <project_for_stage_N>/<imagestream_name_for_stage_N>:<tag_for_stage_N> <project_for_stage_N+1>/<imagestream_name_for_stage_N+1>:<tag_for_stage_N+1>
레지스트리가 공유되지 않은 경우 소스 및 대상 레지스트리 모두에 로그인하여 애플리케이션 이미지를 적절하게 가져오고 태그 지정, 푸시할 때 각 승격 파이프라인 레지스트리에 대한 액세스 토큰을 활용할 수 있습니다.
소스 환경 레지스트리에 로그인합니다.
$ docker login -u <username> -e <any_email_address> -p <token_value> <src_env_registry_ip>:<port>
애플리케이션 이미지를 가져옵니다.
$ docker pull <src_env_registry_ip>:<port>/<namespace>/<image name>:<tag>
대상 스테이징 환경을 준수하기 위해 필요에 따라 애플리케이션 이미지를 대상 레지스트리의 위치에 태그하고, 네임스페이스, 이름 및 태그를 업데이트합니다.
$ docker tag <src_env_registry_ip>:<port>/<namespace>/<image name>:<tag> <dest_env_registry_ip>:<port>/<namespace>/<image name>:<tag>
대상 스테이징 환경 레지스트리에 로그인합니다.
$ docker login -u <username> -e <any_email_address> -p <token_value> <dest_env_registry_ip>:<port>
이미지를 대상으로 푸시합니다.
$ docker push <dest_env_registry_ip>:<port>/<namespace>/<image name>:<tag>
작은 정보외부 레지스트리에서 이미지의 새 버전을 자동으로 가져오기 위해
oc tag
명령에는--scheduled
옵션이 있습니다. 사용하는 경우ImageStreamTag
참조는 이미지를 호스팅하는 레지스트리에서 주기적으로 가져옵니다.
다음으로 애플리케이션의 진화는 API 오브젝트에 대한 근본적인 변경이나 애플리케이션을 구성하는 API 오브젝트 집합에서 추가 및 삭제되는 경우가 있습니다. 애플리케이션의 API 오브젝트에서 이러한 진화가 발생하면 OpenShift Container Platform CLI에서는 하나의 스테이징 환경에서 다음 단계로 변경 사항을 전송할 수 있는 다양한 옵션을 제공합니다.
승격 파이프라인을 처음 설정할 때 했던 것과 동일한 방식으로 시작하십시오.
$ oc login <source_environment> $ oc project <source_project> $ oc get -o yaml --export dc,is,svc,route,secret,sa -l promotion-group=<application_name> > export.yaml $ oc login <target_environment> $ oc <target_project>
새 환경에서 단순히 리소스를 생성하는 대신 해당 리소스를 업데이트합니다. 이 작업을 몇 가지 방법으로 수행할 수 있습니다.
보다 보수적인 접근 방식은
oc apply
를 활용하고 대상 환경의 각 API 오브젝트에 새 변경 사항을 병합하는 것입니다. 이렇게 하면--dry-run=true
옵션을 사용하여 실제로 오브젝트를 변경하기 전에 결과 오브젝트를 검사할 수 있습니다.$ oc apply -f export.yaml --dry-run=true
충족되면 실제로
apply
명령을 실행합니다.$ oc apply -f export.yaml
apply
명령은 더 복잡한 시나리오에 도움이 되는 추가 인수를 사용합니다. 자세한 내용은oc apply --help
를 참조하십시오.또는 더 간단하면서도 공격적인 접근 방식은
oc replace
를 활용하는 것입니다. 이 업데이트 및 교체 관련 예행은 없습니다. 가장 기본적인 방법에서는 다음을 실행합니다.$ oc replace -f export.yaml
apply
와 마찬가지로,replace
는 보다 정교한 동작에 대한 추가 인수를 사용합니다. 자세한 내용은oc replace --help
를 참조하십시오.
-
이전 단계에서는 도입된 새 API 오브젝트를 자동으로 처리하지만 소스 환경에서 API 오브젝트가 삭제된 경우
oc delete
를 사용하여 대상 환경에서 수동으로 삭제해야 합니다. API 오브젝트에 포함된 환경 변수 튜닝은 스테이징 환경마다 원하는 값이 다를 수 있으므로 필요할 수 있습니다. 이를 위해
oc set env
를 사용하십시오.$ oc set env <api_object_type>/<api_object_ID> <env_var_name>=<env_var_value>
-
마지막으로
oc rollout
명령을 사용하거나 위의 Deployments 섹션에서 설명하는 다른 메커니즘 중 하나를 사용하여 업데이트된 애플리케이션의 새 배포를 트리거합니다.