Continuous Delivery 리소스를 다른 리전으로 마이그레이션

Continuous Delivery 리소스(툴체인, 툴 통합, Tekton Delivery Pipeline, Git Repos and Issue Tracking 프로젝트 및 그룹 포함)를 @ibm-cloud/cd-tools 도구를 사용하여 복사함으로써 다른 리전으로 마이그레이션할 수 있습니다.

지원되는 리소스

다른 지역으로의 마이그레이션을 위해 지원되는 리소스는 다음과 같습니다:

지원되는 리소스
리소스 마이그레이션 지원 여부
툴체인 1
Git Repos and Issue Tracking 2
Delivery Pipeline(텍톤) 3
Delivery Pipeline(클래식) 아니오
DevOps Insights 아니오
기타 도구 통합

개요

Continuous Delivery 리소스를 한 리전에서 다른 리전으로 마이그레이션하는 권장 방법은 본 마이그레이션 가이드에 설명된 마이그레이션 도구를 사용하여 리소스를 새 리전으로 복사하는 것입니다. 기존 리소스는 원래 지역에서 계속 사용할 수 있으며, 새 지역에서 리소스를 검증하고 전환 준비가 완료될 때까지 기존 리소스를 계속 활용할 수 있습니다.

이 가이드에 설명된 Continuous Delivery 리소스를 다른 리전으로 마이그레이션하는 데 권장되는 단계는 다음과 같습니다:

  1. 해당되는 경우 Git Repos and Issue Tracking 프로젝트를 새 리전으로 복사하십시오
  2. 툴체인 또는 Tekton 파이프라인에 저장된 비밀을 Secrets Manager 로 내보내기(해당되는 경우)
  3. 새 리전으로 툴체인(Tekton 파이프라인 포함) 복사
  4. 새 지역의 리소스를 검증하십시오
  5. 원본 리소스 비활성화

프로젝트를 Git Repos and Issue Tracking 마이그레이션하는 경우, 새 리전으로 프로젝트를 복사한 후 원본 프로젝트에 대한 변경 사항은 복사본에 반영되지 않습니다. 따라서 마이그레이션이 진행 중임을 팀원들에게 알리셔야 합니다. 그래야 마이그레이션 중에 이루어진 변경 사항이 손실되지 않습니다.

마이그레이션 도구는 npx 명령어 형태의 명령줄 도구로 제공됩니다. npx ( Node Package Execute)는 모듈과 그 Node.js 종속성을 자동으로 다운로드하여 사용자의 머신에서 실행하는 유틸리티입니다.

@ibm-cloud/cd-tools npx 유틸리티는 다음 명령어를 제공합니다:

  • copy-project-group: 한 리전의 Git Repos and Issue Tracking 프로젝트 그룹을 다른 리전으로 복사합니다
  • copy-toolchain: 도구 통합 및 Tekton 파이프라인을 포함한 툴체인을 다른 리전 또는 리소스 그룹으로 복사합니다
  • export-secrets: 도구 체인이나 파이프라인에 직접 저장된 시크릿을 Secrets Manager 로 내보냅니다

다음 섹션에서는 마이그레이션의 각 단계를 보다 자세히 설명합니다.

제한사항

툴체인 및 Delivery Pipeline 의 제한 사항

한 지역에서 다른 지역으로의 자원 이동은 다음과 같은 제한 사항이 적용됩니다.

  1. 클래식 파이프라인은 지원되지 않습니다.
  2. DevOps Insights 지원되지 않습니다.
  3. 툴체인 또는 Delivery Pipeline (환경 속성 또는 트리거 속성)에 직접 저장된 비밀은 복사되지 않습니다. export-secrets 명령은 시크릿을 인스턴스로 내보내는 데 사용됩니다 Secrets Manager 인스턴스로 내보내 저장된 비밀을 비밀 참조로 바꿉니다. 비밀 참조가 지원됩니다.
  4. Tekton 파이프라인 웹훅 트리거 시크릿은 복사되지 않습니다. 웹훅 트리거 시크릿에 대한 참조가 지원되지 않기 때문입니다. 툴체인을 복사한 후 시크릿을 추가해야 합니다.
  5. Tekton 파이프라인 실행 기록, 로그 및 자산은 복사되지 않습니다. 일정 기간 동안 원본 파이프라인을 유지하여 기록을 보존할 수 있습니다.
  6. GitHub 및 OAuth 유형 인증으로 구성된 Git Repos and Issue Tracking 도구 통합은 원래 사용자가 아닌 복사를 수행하는 사용자(API 키 소유자)의 OAuth ID를 사용하도록 자동으로 변환됩니다. 이는 복사 작업을 단순화하기 위함입니다. 다른 사용자를 사용하도록 도구를 복사한 후 통합 설정을 재구성할 수 있습니다.
  7. Git Repos and Issue Tracking 인증에 개인 액세스 토큰(PAT)을 사용하는 도구 통합은 OAuth 을 사용하도록 자동으로 변환됩니다. 도구 통합을 복사한 후 다시 구성하여 PAT를 다시 사용할 수 있습니다.

Git Repos and Issue Tracking 의 제한 사항

다음 제한 사항은 프로젝트를 Git Repos and Issue Tracking 마이그레이션하는 경우에만 적용됩니다.

  1. 개인 프로젝트는 지원되지 않습니다. 개인 네임스페이스에서 프로젝트를 만든 경우 개인 프로젝트를 그룹으로 이동하거나 개인 네임스페이스를 그룹으로 변환한 다음 새로운 URL 으로 도구 체인의 참조를 업데이트할 수 있습니다. 프로젝트를 그룹으로 저장하는 것이 권장됩니다. 이는 여러 관리자를 허용하고 시간이 지남에 따라 프로젝트의 연속성을 더 잘 유지할 수 있기 때문입니다.
  2. 프로젝트는 GitLab 직접 전송 기능을 사용하여 복사되며, 이 기능에는 특정 제한 사항이 적용됩니다.
  3. 대규모 프로젝트나 대용량 파일 또는 많은 리소스를 포함하는 프로젝트를 복사하는 데 시간이 걸릴 수 있습니다.
  4. Git Repos and Issue Tracking 의 각 리전은 독립적이므로, 대상 리전에 프로젝트 사용자가 아직 존재하지 않을 수 있습니다. 해당 copy-project-group 명령어는 사용자가 새 리전에 존재하도록 보장하지만, 대상 리전의 다른 사용자와 사용자 이름 충돌이 발생할 수 있습니다. 사용자 이름 충돌이 발생할 경우, 대상 지역의 사용자 이름은 접미사를 추가하여 약간 변경될 수 있습니다.

전제조건

마이그레이션을 수행하려면 다음이 필요합니다:

  • IBM Cloud API 키 와 아래에 나열된 IAM 액세스 권한. API 키는 사용자 API 키여야 합니다. 서비스 ID API 키는 지원되지 않습니다.
  • 복사 중인 소스 툴체인에 대한 뷰어 접근 권한
  • 대상 지역에서 새 툴체인 생성 권한을 가진 편집자
  • IAM 서비스 간 권한 부여(예: Secrets Manager, Event Notifications, 등)를 통해 도구 통합을 수행하는 다른 IBM Cloud 서비스 인스턴스에 대한 관리자 액세스 권한
  • 도구 체인 내 도구 통합에서 참조하는 모든 GitHub 또는 Git Repos and Issue Tracking 저장소에 대한 접근 권한을 부여하며, 해당 저장소를 읽고 웹훅을 생성할 수 있는 권한을 포함합니다. 파이프라인 Git 유형 트리거를 생성하기 위해서는 이 작업이 필요합니다. 해당 트리거는 파이프라인을 트리거하기 위해 저장소에 웹훅이 추가되어야 하며, 파이프라인이 실행 중에 저장소를 복제할 수 있어야 합니다. 서비스 ID API 키는 사용자를 대신하여 권한을 부여할 수 없다는 점에 유의하세요.
  • 대상 리전 및 리소스 그룹에 서비스 Continuous Delivery 인스턴스가 있어야 툴체인 복사본을 올바르게 생성할 수 있습니다. Continuous Delivery 의 기능( Delivery Pipeline, Git Repos and Issue Tracking 등)은 해당 툴체인과 동일한 리전 및 리소스 그룹에 위치한 Continuous Delivery 인스턴스의 플랜에 따라 제공됩니다. 자세히 알아보기
  • 소스대상 리전에서 Git Repos and Issue Tracking 서비스에 대한 개인 액세스 토큰(PAT)을 api 다음과 같은 범위로 생성합니다. Git Repos and Issue Tracking 프로젝트를 마이그레이션하는 경우에만 필요합니다.

중요한 참고사항

마이그레이션을 시작하기 전에 다음의 중요한 사항을 반드시 검토해야 합니다.

청구 고려사항
마이그레이션하는 동안 대상 리전 및 리소스 그룹에 새 인스턴스를 만들어야 합니다 Continuous Delivery 인스턴스를 새로 만들어 대상 리전 및 리소스 그룹에서 툴체인, 파이프라인 및 프로젝트를 사용하도록 설정해야 합니다. 새로운 리전으로 전환할 때까지 원본 리전의 기존 리소스를 계속 사용할 수 있도록 유지하는 것도 고려해 볼 수 있습니다. Continuous Delivery 서비스를 프로페셔널 요금제와 함께 사용하는 경우, 각 인스턴스에 구성된 인증된 사용자 수에 따라 두 지역에 대한 요금이 부과된다는 점에 유의하세요. 비용이 걱정되는 경우 새 리전으로 전환한 후 원본 리전의 Continuous Delivery 인스턴스에서 요금제를 Lite로 변경할 수 있습니다. Lite 요금제 한도를 초과한 경우 리소스는 읽기 전용으로 제공됩니다. 그러나 원하시면 언제든지 다시 프로페셔널 플랜으로 변경하실 수 있습니다. Continuous Delivery 청구 및 요금제에 대해 자세히 알아보세요.
중복 파이프라인 실행
마이그레이션 중에 대상 리전에서 새 파이프라인을 생성할 수 있습니다. 이러한 파이프라인에 일정에 따라 자동으로 실행되도록 설정된 시간 제한 트리거가 있거나 PR 또는 커밋과 같은 Git 이벤트에서 자동으로 실행되도록 구성된 Git 트리거가 있는 경우 이러한 이벤트는 중복된 파이프라인 실행(원래 파이프라인에서 하나, 새 파이프라인에서 하나)을 트리거할 수 있습니다. 잠재적 중단을 방지하기 위해 복사된 파이프라인에서는 이러한 유형의 트리거가 기본적으로 비활성화됩니다. 이러한 트리거는 한 번에 하나의 세트만 활성화되도록 관리하는 것이 좋습니다. 새로운 파이프라인으로의 전환에 익숙해지면, 해당 파이프라인의 트리거를 활성화하고 기존 파이프라인의 트리거를 비활성화할 수 있습니다.
하드코딩된 가정
마이그레이션 후 Git Repos and Issue Tracking 리포지토리(해당하는 경우)는 다른 URL 을 갖게 되며, 툴체인과 파이프라인은 다른 ID와 URL을 갖게 됩니다. Tekton 정의, 스크립트, 환경 속성 또는 기타 자동화에서 URL /ID 또는 리소스 위치에 대한 몇 가지 가정이 있을 수 있습니다. 마이그레이션 후 이를 업데이트하는 것은 회원님의 책임입니다.

종속 항목 설치

로컬 컴퓨터에서 실행되는 @ibm-cloud/cd-tools 유틸리티는 다음 종속성을 설치해야 합니다.

macOS

다음 명령을 실행하여 macOS 에 종속성을 설치합니다.

brew install node
brew tap hashicorp/tap
brew install hashicorp/tap/terraform

기타 플랫폼

대상 리전에서 Continuous Delivery 인스턴스를 생성합니다

새 리전이나 리소스 그룹에서 툴체인을 성공적으로 복사하려면 해당 리전이나 리소스 그룹에 서비스 인스턴스가 있는지 확인해야 합니다 Continuous Delivery 서비스 인스턴스가 해당 리전 및 대상 리소스 그룹에 있는지 확인해야 합니다.

서비스 Continuous Delivery 인스턴스를 보려면 리소스 목록 페이지를 열고 페이지 상단의 계정을 선택하세요. 서비스 인스턴스는 개발자 도구 섹션에 표시됩니다.

아직 Continuous Delivery 인스턴스가 없다면, Continuous Delivery 서비스 인스턴스 생성을 참조하십시오.

Git Repos and Issue Tracking 프로젝트 복사

이 단계는 IBM Cloud 에서 프로젝트를 Git Repos and Issue Tracking 사용하는 경우에만 적용됩니다. 이것들을 사용하지 않는다면 이 단계를 건너뛸 수 있습니다.

프로젝트를 사용하는 경우 Git Repos and Issue Tracking 프로젝트를 사용하는 경우, 툴체인과 파이프라인 전에 새 리전으로 복사해야 합니다. 프로젝트 복사는 그룹 수준에서 이루어지므로 전체 그룹이 복사됩니다. 그룹은 관련 프로젝트의 모음입니다. 그룹 이름은 프로젝트의 URL 경로의 일부입니다. 예를 들어 프로젝트 URL https://us-south.git.cloud.ibm.com/my-group/my-project 의 경우 그룹은 my-group 입니다. 다음 단계를 따라 프로젝트와 그룹을 복사하세요.

  1. 복사할 그룹 목록을 결정하십시오.

    개인 네임스페이스에서 프로젝트를 복사하는 것은 지원되지 않습니다. 개인 네임스페이스에서 프로젝트를 만든 경우 개인 프로젝트를 그룹으로 이동하거나 개인 네임스페이스를 그룹으로 변환한 다음 새로운 URL 으로 도구 체인의 참조를 업데이트할 수 있습니다. 프로젝트를 그룹으로 저장하는 것이 권장됩니다. 이는 여러 관리자를 허용하고 시간이 지남에 따라 프로젝트의 연속성을 더 잘 유지할 수 있기 때문입니다.

    프로젝트를 개인 네임스페이스에서 그룹으로 옮기려면 다음과 같이 하세요:

    1. GitLab 설명서의 단계에 따라 새 그룹을 만들고 프로젝트를 이 그룹으로 이전하세요.
    2. 프로젝트의 리포지토리 URL을 참조하는 도구 체인의 각 도구 통합에 대해 도구 통합 메뉴에서 구성을 선택하여 도구 통합을 업데이트하고 리포지토리 URL 필드를 새 그룹 이름으로 새 URL 으로 업데이트합니다. 통합을 저장합니다.
    3. Tekton 파이프라인이 이러한 리포지토리의 파이프라인 정의를 참조하는 경우, 새 리포지토리 URL을 사용하도록 정의를 업데이트하세요.
    4. 이러한 리포지토리에 대한 파이프라인에 Git 리포지토리에 대한 파이프라인에 트리거를 입력한 경우, 트리거를 업데이트하고 다시 저장하여 파이프라인을 트리거하는 웹훅을 다시 만듭니다.
    5. 마찬가지로 배포 스크립트, 구성, 파이프라인 환경 속성 등에서 리포지토리 URL에 대한 다른 참조를 업데이트하세요.
  2. 각 그룹에 대해 @ibm-cloud/cd-tools 의 명령어를 copy-project-group 실행하여 해당 그룹을 새 리전으로 복사하십시오.

    예를 들어, 다음 명령은 제공된 PAT(개인 액세스 토큰)를 사용하여 my-group 그룹과 모든 프로젝트를 워싱턴 DC(미국 동부) 리전에서 댈러스(미국 남부) 리전으로 복사합니다.

    npx @ibm-cloud/cd-tools copy-project-group -g my-group -s us-east -d us-south --st ${PAT_US_EAST} --dt ${PAT_US_SOUTH}
    

    대규모 그룹이나 프로젝트의 경우 이 단계에 시간이 소요될 수 있음을 유의하십시오. copy-project-group 명령의 전체 옵션 집합을 보려면 실행하세요:

    npx @ibm-cloud/cd-tools copy-project-group -h
    
  3. 그룹 내 프로젝트가 성공적으로 복사되었는지 확인하십시오.

    계속하기 전에 데이터가 누락되지 않았는지 확인하는 것이 중요합니다. 프로젝트에 올바른 사용자가 멤버로 포함되었는지 확인하고, 프로젝트 내 데이터(리포지토리, 이슈 등)를 표본 조사하여 데이터가 손상되지 않았는지 확인하십시오. 개인 액세스 토큰은 복사본에 포함되지 않음을 유의하십시오. 복사 명령을 다시 실행해야 하는 경우 먼저 복사한 그룹을 삭제하거나 이름을 바꾸거나 다시 복사할 때 다른 이름을 선택해야 합니다.

툴체인 및 Tekton 파이프라인 복사

다음으로, 도구 체인을 새 리전으로 복사하십시오. 도구 통합(Tekton 파이프라인 포함)은 도구 체인의 복사본에 포함되며, 상기 '제한 사항' 섹션에 명시된 제한 사항이 적용됩니다. 리소스 목록 페이지 또는 플랫폼 자동화 아래의 툴체인 페이지에서 툴체인을 확인할 수 있습니다.

CRN

IBM Cloud 리소스는 클라우드 리소스 이름(CRN) 을 통해 고유하게 식별됩니다. 복사하려는 툴체인의 CRN이 필요합니다. 도구 모음의 CRN은 다음과 같은 방법으로 확인할 수 있습니다:

  1. 플랫폼 자동화 > 툴체인 페이지에서 툴체인을 찾아 열고, 세부 정보를 클릭하여 툴체인 세부 정보를 확인하십시오. 여기에서 CRN을 확인할 수 있습니다.
  2. 리소스 목록 페이지에서 툴체인을 찾아 해당 툴체인 행을 클릭하면 세부 정보 패널이 확장되며, 여기에 CRN이 표시됩니다.
  3. ibmcloud CLI 를 사용하면 다음 명령을 통해 툴체인 및 해당 CRN을 나열할 수 있습니다
    ibmcloud resource service-instances --service-name toolchain --long
    
  4. 툴체인 API 사용.

저장된 툴체인/파이프라인 비밀 확인

툴체인과 Tekton 파이프라인은 API 키나 비밀번호와 같은 민감한 값인 시크릿을 다음 위치에 포함할 수 있습니다:

  • 도구 통합 속성(예: Delivery Pipeline 개인 작업자 도구 통합의 서비스 ID API 키 속성)
  • Tekton 파이프라인 환경 속성
  • 텍톤 파이프라인 트리거 속성

비밀번호를 구성하는 방법에는 두 가지가 있습니다:

  1. 도구 체인 또는 파이프라인에 직접 저장
  2. 다음과 같은 비밀 저장소 서비스에 저장된 비밀을 참조하는 경우 IBM Cloud Secrets Manager 또는 IBM Cloud Key Protect.

툴체인을 복사하면 자동으로 비밀 참조가 포함되며 새 툴체인에도 해당 참조가 그대로 유지됩니다. 그러나 민감한 데이터 유출 위험을 최소화하기 위해 도구 체인이나 파이프라인에 직접 저장된 비밀은 도구 체인 사본에 포함되지 않습니다. 다음 섹션에 설명된 export-secrets 명령을 사용하거나 복사한 후 복사한 툴체인 또는 파이프라인에 비밀 번호를 다시 수동으로 입력할 수 있습니다. 그러나 비밀번호를 내보내지 않으면 일부 도구 통합에 필요한 비밀번호 값이 누락된 경우 도구 체인을 복사할 때 프로비저닝이 성공적으로 이루어지지 않을 수 있으며, 명령을 실행한 후 수동으로 다시 만들어야 할 수도 있다는 점에 유의하세요.

먼저, 툴체인 또는 해당 Tekton 파이프라인을 실행하여 참조가 아닌 저장된 비밀이 포함되어 있는지 확인하세요:

npx @ibm-cloud/cd-tools export-secrets -c ${CRN} --check

저장된 툴체인/파이프라인 비밀을 다음 주소로 내보내기 Secrets Manager

도구 체인 또는 파이프라인에 저장된 비밀이 없는 경우 이 단계를 건너뛰고 도구 체인 복사를 계속할 수 있습니다. Secrets Manager 으로 시크릿을 내보내면 Secrets Manager 인스턴스에 시크릿이 생성되고 기존 툴체인을 수정하여 Secrets Manager 에서 새로 생성된 시크릿을 참조하도록 기존 시크릿을 변환할 수 있습니다. 이렇게 하면 비밀 참조를 그대로 유지한 채로 툴체인을 복사할 수 있으며, 보안을 강화하기 위해 권장되는 방법입니다.

실수로 비밀이 노출되는 것을 방지하려면 인스턴스의 IAM 권한을 검토하여 Secrets Manager 인스턴스의 IAM 권한을 검토하여 비밀을 읽기 위한 의도된 액세스만 허용되도록 해야 합니다.

툴체인 또는 파이프라인에 저장된 시크릿을 Secrets Manager 으로 내보내려면 다음 단계를 따르세요:

  1. 아직 인스턴스가 없는 경우 Secrets Manager 인스턴스가 없는 경우 생성하세요. 인스턴스는 사용하려는 API 키와 연결된 계정에서 생성해야 합니다.
  2. 사용하려는 API 키의 소유자에게 Secrets Manager 인스턴스에서 비밀 번호를 만들 수 있는 IAM 권한이 있는지 확인하세요.
  3. 툴체인 및 Secrets Manager 도구 통합을 열고 메시지가 표시되면 정책을 만들고 승인한 다음 도구 통합을 만듭니다.
  4. export-secrets 명령어를 실행하여 시크릿을 내보내세요:
    npx @ibm-cloud/cd-tools export-secrets -c ${CRN}
    
  5. 메시지가 표시되면 툴체인에서 Secrets Manager 인스턴스를 선택하여 비밀을 저장합니다. 인스턴스가 목록에 표시되지 않으면 다른 계정에 있는 것일 수 있습니다. 인스턴스와 동일한 계정에 있는 API 키를 사용해야 합니다.
  6. 메시지가 표시되면 발견된 각 비밀에 대해 비밀을 복사할지 여부와 비밀을 저장할 이름 및 그룹을 지정하거나 Enter 키를 눌러 기본값을 수락합니다.

필요한 만큼 명령을 실행하여 모든 비밀을 내보낼 수 있습니다.

도구 체인 복사

툴체인을 복사하려면 @ibm-cloud/cd-toolscopy-toolchain 명령어를 실행하십시오. 사용 가능한 옵션을 확인하려면 실행하세요:

npx @ibm-cloud/cd-tools copy-toolchain -h
Usage: @ibm-cloud/cd-tools copy-toolchain [options]

Copies a toolchain, including tool integrations and Tekton pipelines, to another region or resource group.

Examples:
  export IBMCLOUD_API_KEY='...'
  npx @ibm-cloud/cd-tools copy-toolchain -c ${TOOLCHAIN_CRN} -r us-south
      Copy a toolchain to the Dallas region with the same name, in the same resource group.
  npx @ibm-cloud/cd-tools copy-toolchain -c ${TOOLCHAIN_CRN} -r eu-de -n new-toolchain-name -g new-resource-group --apikey ${APIKEY}
      Copy a toolchain to the Frankfurt region with the specified name and target resource group, using the given API key

Environment Variables:
  IBMCLOUD_API_KEY                       API key used to authenticate. Must be a user API key, with IAM permission to read and create toolchains and service-to-service authorizations in source and target
region / resource group

Basic options:
  -c, --toolchain-crn <crn>              The CRN of the source toolchain to copy
  -r, --region <region>                  The destination region of the copied toolchain (choices: "br-sao", "eu-de", "eu-gb", "jp-tok", "us-south")
  -a, --apikey <api_key>                 API key used to authenticate. Must be a user API key, with IAM permission to read and create toolchains and service-to-service authorizations in source and target
                                         region / resource group
  -n, --name <name>                      (Optional) The name of the copied toolchain (default: same name as original)
  -g, --resource-group <resource_group>  (Optional) The name or ID of destination resource group of the copied toolchain (default: same resource group as original)
  -t, --tag <tag>                        (Optional) The tag to add to the copied toolchain
  -h, --help                             Display help for command

Advanced options:
  -d, --terraform-dir <path>             (Optional) The target local directory to store the generated Terraform (.tf) files
  -D, --dry-run                          (Optional) Skip running terraform apply; only generate the Terraform (.tf) files
  -f, --force                            (Optional) Force the copy toolchain command to run without user confirmation
  -S, --skip-s2s                         (Optional) Skip creating toolchain-generated service-to-service authorizations
  -T, --skip-disable-triggers            (Optional) Skip disabling Tekton pipeline Git or timed triggers. Note: This may result in duplicate pipeline runs
  -C, --compact                          (Optional) Generate all resources in a single resources.tf file
  -v, --verbose                          (Optional) Increase log output
  -q, --quiet                            (Optional) Suppress non-essential output, only errors and critical warnings are displayed

copy-toolchain 은 먼저 툴체인을 테라폼 (.tf) 파일로 변환한 다음 테라폼을 적용하여 대상 지역에 새로운 툴체인을 생성하는 방식으로 작동합니다. 이 명령은 툴체인을 생성하기 전에 테라폼 출력을 표시하고 확인 메시지를 표시합니다. 새 툴체인 사본을 만들기 전에 Terraform 출력을 검토할 수 있습니다.

예제

동일한 리소스 그룹에서 동일한 툴체인 이름으로 CRN crn:v1:bluemix:public:toolchain:au-syd:a/9d5d528aa786af01ce99593a827a05f0:69e8d78b-0d1a-49ed-9a46-3b4c1bb4f24a:: 을 사용하여 시드니(au-syd) 리전에서 도쿄(jp-tok) 리전으로 툴체인을 복사합니다:

export IBMCLOUD_API_KEY='<your_api_key>'
npx @ibm-cloud/cd-tools copy-toolchain -c 'crn:v1:bluemix:public:toolchain:au-syd:a/9d5d528aa786af01ce99593a827a05f0:69e8d78b-0d1a-49ed-9a46-3b4c1bb4f24a::' -r jp-tok

툴체인을 프랑크푸르트(eu-de) 리전으로 복사하되 환경 속성 대신 매개변수를 통해 API 키를 제공합니다:

npx @ibm-cloud/cd-tools copy-toolchain -c "${CRN}" -r eu-de --apikey '<your_api_key>'

도구 체인을 댈러스(미국 남부) 리전으로 복사하여 toolchain-dallas 로 이름을 바꿉니다:

export IBMCLOUD_API_KEY='<your_api_key>'
npx @ibm-cloud/cd-tools copy-toolchain -c "${CRN}" -r us-south -n 'toolchain-dallas'

대량 복사 툴체인

각 툴체인을 개별적으로 복사하지 않고 한 번에 여러 툴체인을 복사하려면, Bash 또는 유사한 스크립트를 사용하여 ibmcloud cli를 사용하여 툴체인을 쿼리하고 jq 같은 유틸리티를 사용하여 JSON 출력을 파싱한 다음 copy-toolchain 명령을 여러 번 호출할 수 있습니다. 다음은 몇 가지 예제입니다.

현재 계정에 있는 모든 툴체인의 드라이런 복사본을 토론토(ca-tor) 지역에 있는 댈러스(us-south) 지역으로 수행합니다. 이렇게 하면 툴체인이 생성되지는 않지만, 툴체인을 검사하고 copy-toolchain 명령이 툴체인 복사에 실패할 수 있는 문제가 감지되면 알려줍니다.

for i in $(ibmcloud resource service-instances --service-name toolchain --location ca-tor --all-resource-groups -o json | jq -r '.[].crn'); do
    npx @ibm-cloud/cd-tools copy-toolchain -c ${i} -r us-south --dry-run -f
done

my-resource-group 리소스 그룹의 모든 툴체인을 최소한의 출력으로 프랑크푸르트(eu-de) 리전으로 복사합니다(-q, --quiet).

for i in $(ibmcloud resource service-instances --service-name toolchain -g my-resource-group -o json | jq -r '.[].crn'); do
    npx @ibm-cloud/cd-tools copy-toolchain -c ${i} -r eu-de -q
done

이름이 'test-'로 시작하는 모든 툴체인을 도쿄(jp-tok) 리전으로 복사합니다.

for i in $(ibmcloud resource service-instances --service-name toolchain --all-resource-groups -o json | jq -r '.[] | select(.name | startswith("test-")) | .crn'); do
    npx @ibm-cloud/cd-tools copy-toolchain -c ${i} -r jp-tok
done

오류 발생 후 재시도

툴체인 복사 중 오류가 발생하면 복사된 툴체인이 불완전할 수 있습니다. 명령을 다시 시도해야 할 수 있습니다. 다시 시도하려면 다음 중 하나를 선택할 수 있습니다:

  • 부분적으로 생성된 툴체인을 삭제하고 copy-toolchain 명령을 다시 실행하거나
  • 명령을 terraform apply 다시 실행하십시오.

    copy-toolchain 번째는 소스 툴체인을 Terraform(.tf) 파일로 시리얼화합니다. 지정하지 않으면 -d, --terraform-dir <path>, Terraform 파일들은 현재 작업 디렉토리 내 의 이름의 폴더에 저장됩니다 output-{id}. 예를 들어 output-1764100766410. 가장 최근의 출력 폴더를 찾아 다시 실행할 수 있습니다 terraform apply. 이것은 이전 명령이 중단된 지점에서 계속됩니다. API 키를 입력하라는 메시지가 표시되면, 명령어를 copy-toolchain 실행할 때 사용한 것과 동일한 API 키를 지정하십시오.
$ cd output-1764102115772
$ terraform apply
var.ibmcloud_api_key
  Enter a value: {api_key}
...

마이그레이션 완료

리소스 확인

툴체인, Tekton 파이프라인, Git Repos and Issue Tracking 프로젝트(해당하는 경우)를 새 리전으로 복사한 후에는 원본 리소스를 비활성화하거나 삭제하기 전에 올바르게 복사되었는지, 제대로 작동하는지 확인해야 합니다. 다음을 참고하십시오.

  • 새 파이프라인과 원래 파이프라인 간에 중복된 파이프라인 실행을 방지하기 위해 복사된 파이프라인에서는 기본적으로 Tekton 파이프라인 시간 및 Git 트리거가 활성화되지 않았습니다. 익숙해지면 새 파이프라인에서 트리거를 활성화하고 원래 파이프라인에서 트리거를 비활성화할 수 있습니다.
  • 웹훅 유형의 텍톤 파이프라인 트리거가 있는 경우 트리거를 재구성하고 시크릿을 다시 입력해야 합니다. 이 시크릿은 시크릿 참조를 지원하지 않으며 파이프라인과 함께 복사되지 않습니다.
  • 복사된 Git Repos and Issue Tracking 프로젝트에 개인 액세스 토큰이 있는 사용자는 토큰이 복사되지 않았으므로 새 토큰을 다시 만들어야 합니다.
  • Git Repos and Issue Tracking 리포지토리에 대한 도구 통합은 복사를 수행한 사용자의 OAuth ID를 사용하도록 변환되었습니다. 다른 ID를 사용하려면 해당 사용자로 로그인하여 도구 통합을 다시 저장하거나 개인용 액세스 토큰을 사용하도록 전환하세요.
  • Tekton 정의, 스크립트, 환경 속성 또는 기타 자동화에는 ID, URL, 또는 리소스 위치에 대한 가정이 있을 수 있습니다. 이를 검토하여 새 ID, URL 및 위치가 사용되는지 확인하는 것이 좋습니다.

원본 리소스 비활성화

복사한 리소스가 올바르게 작동하는지 확인한 후에는 충돌이나 혼란을 피하기 위해 원본 리소스를 비활성화할 수 있습니다.

  • Tekton 파이프라인의 경우 트리거를 비활성화하여 원치 않는 파이프라인 실행을 방지하고 다른 사용자에게 이러한 트리거가 더 이상 사용되지 않아야 한다는 신호를 보낼 수 있습니다.
  • 서비스 인스턴스의 경우 Continuous Delivery 서비스 인스턴스의 경우 프로페셔널 요금제를 사용 중이었다면 라이트 요금제로 전환하여 원래 리소스에 대한 추가 요금이 부과되지 않도록 할 수 있습니다. Lite 요금제의 한도를 초과한 경우 리소스가 읽기 전용으로 전환될 수 있지만, 다시 사용해야 하는 경우 언제든지 Professional로 다시 전환할 수 있습니다.
  • Git 리포지토리 및 이슈 추적 프로젝트 (해당하는 경우)의 경우 원본 프로젝트를 보관하여 읽기 전용으로 만들어 사용자가 더 이상 변경하지 못하도록 하고, 선택적으로 프로젝트 설명 또는 readme를 업데이트하여 새 프로젝트의 위치를 표시할 수 있습니다.

원본 리소스를 보관할 계획이 없더라도 나중에 문제가 발생할 경우를 대비하여 백업용으로 일정 기간 동안 원본 리소스를 보관할 수 있습니다. 익숙해지면 원본 리소스를 삭제할 수 있습니다.