코드형 인프라를 위한 CD 도구 체인 설정
이 튜토리얼은 3부작 튜토리얼 시리즈의 3부로, IBM Cloud® Continuous Delivery 에서 제공하는 서비스 형태의 완전한 참조 구현체를 활용하여 DevSecOps 의 모듈식 애플리케이션( IBM Cloud® ) 모범 사례를 학습합니다. 이 튜토리얼 시리즈의 3부에서는 DevSecOps 에서 보안 및 규정 준수와 관련된 모범 사례를 적용한 지속적 배포(CD)용 툴체인 템플릿을 사용합니다.
시작하기 전에
이 튜토리얼 시리즈의 3부를 시작하기 전에 다음 사전 요구 사항을 완료해야 합니다:
- 1부: 전제 조건 설정을 완료하세요.
- 2부: 코드형 인프라(Terraform)를 위한 CI 도구 체인 설정 완료하기.
- IBM Cloud- 2부 동영상에서 DevSecOps 시작하기 보기를 확인하세요.
CD - ‘ DevSecOps ’ 모범 사례를 적용하여 안전한 앱 배포하기
DevSecOps 의 CD 툴체인에는 지속적 배포를 위한 파이프라인이 단 하나만 포함되어 있습니다. 이는 다음과 같은 우수 사례를 구현합니다.
- 개발자, 승인자, 감사자가 규제 준수라는 관점에서 배치를 추적하는 데 도움이 되는 변경 관리 자동화를 수행합니다.
- CI 파이프라인에서 수집된 증거를 바탕으로 증거 요약서를 생성합니다.
- Git Repos and Issue Tracking 기반의 변경 관리 저장소에 변경 요청을 생성하고, 해당 요청에 배포 증빙 자료를 추가합니다.
- 인벤토리 리포지토리를 사용하여 빌드된 아티팩트를 스테이징 및 프로덕션과 같은 배포 환경으로 배포합니다.
- CR을 확인하고, 모든 검사가 통과되면 자동으로 승인합니다.
- CR이 승인되거나 긴급 상황이 발생하면, 툴체인이 인벤토리에 있는 이미지를 프로덕션 환경에 배포합니다.
CD 도구 체인에 관한 설정 개요 안내
이 튜토리얼에 있는 모든 방법을 통해 설정 경험을 안내합니다. 툴체인 설정 과정을 단계별로 안내받게 되며, 툴체인을 생성하는 데 필요한 권장 구성 옵션이 제시됩니다.
진행 표시기는 구성을 완료하기 위한 단계를 표시합니다. 진행률 표시기를 사용하여 이전 단계로 이동할 수 있습니다. 현재 단계의 구성 옵션이 페이지의 기본 영역에 표시됩니다.
다음 단계로 진행하려면 계속을 클릭하십시오. 현재 단계의 구성이 완료되어 유효한 경우에만 다음 단계로 진행할 수 있습니다. 이전을 클릭하여 이전 단계로 이동할 수 있습니다.
일부 단계에는 고급 구성으로 전환 토글이 포함되어 있습니다. 이 단계들은 기본적으로 필요한 최소 구성만 제시합니다. 그러나 보다 세밀한 제어가 필요한 숙련된 사용자는 ‘고급 구성으로 전환’ 토글을 클릭하여 해당 통합 기능의 모든 옵션을 확인할 수 있습니다.
모든 단계가 성공적으로 완료되면, ‘요약’ 단계에서 ‘생성’을 클릭하여 툴체인을 생성합니다.
안내 형식의 설치 프로그램에서는 항상 이전 단계로 돌아갈 수 있습니다. 도구 체인 설치 프로그램은 연속적인 단계의 모든 구성 설정을 유지합니다.
CD 도구 체인 설정 시작
다음 옵션 중 하나를 사용하여 CD 도구 체인 구성을 시작하십시오.
CD 툴체인 이름 및 지역 설정
도구 체인 설정에 대한 기본 정보를 검토하십시오. 도구 체인의 이름은 IBM Cloud에서 해당 도구 체인을 식별합니다. 도구 체인의 이름이 IBM Cloud의 동일한 지역 및 리소스 그룹에 대해 도구 체인 내에서 고유한지 확인하십시오.
드롭다운에서 연결된 CI 도구체인을 선택하여 이 CD 도구체인의 설정에 도움이 되는 일부 CI 구성을 복사합니다.
경고: 이 작업은 이미 입력한 일부 값을 덮어쓸 수 있습니다.
CD 도구 연동 설정
시작 단계에서 이미 기존 CI 도구 체인에 연결한 경우 해당 도구 체인에서 사용되는 애플리케이션 관련 리포지토리 이름이 미리 채워져 있습니다. 저장소 URL을 검토한 후 다음 단계를 계속하십시오.
애플리케이션 관련 저장소
CD 툴체인을 처음부터 설정하려면, CI 툴체인 생성 시 다음 저장소를 구성한 다음, 여기에서 해당 저장소를 사용하거나 링크를 연결하십시오.
해당 URL 를 확인하려면 CI 파이프라인으로 이동하여 해당 도구 카드를 선택하세요. 도구 카드를 마우스 오른쪽 버튼으로 클릭하고 링크 주소 복사를 선택합니다.
- 인벤토리: 인벤토리 저장소에는 CI 및 CD 파이프라인을 통해 빌드된 아티팩트의 세부 정보가 기록됩니다. 예:
https://<region>.git.cloud.ibm.com/myorg/my-compliance-ci-inventory - 이슈: 이슈 리포지토리에는 CI 파이프라인이 실행되는 동안 발견된 이슈가 기록됩니다. 예를 들어,
https://<region>.git.cloud.ibm.com/myorg/my-compliance-ci-issues입니다. - 증거: 애플리케이션에 속하는 모든 원시 규제 준수 증거가 여기서 수집됩니다. 예를 들어,
https://<region>.git.cloud.ibm.com/myorg/my-compliance-ci-evidence입니다.
현재 툴체인은 IBM 에서 호스팅되는 기존 Git Repos and Issue Tracking 저장소로의 링크만 지원합니다.
인벤토리
저장소 URL: URL. 이는 이전 단계에서 확인한 바와 같이 CI 툴체인에 구성된 인벤토리 저장소입니다.
문제
URL 저장소: URL. 이는 이전 단계에서 확인한 바와 같이 CI 툴체인에 구성된 이슈 저장소입니다.
파이프라인 구성
파이프라인 구성 저장소에는 배치, 테스트 및 기타 사용자 정의 태스크에 필요한 YAML 파일 및 스크립트가 포함되어 있습니다.
이 자습서에서 파이프라인 구성 리포지토리는 코드형 인프라를 위한 DevSecOps CI( IaC )에 정의된 것과 동일합니다. 기존 배포 구성 리포지토리 사용을 선택하고 CI 툴체인의 파이프라인 구성에 사용되는 리포지토리를 선택합니다.
Git 리포지토리에 대한 자세한 내용은 Git Repos and Issue Tracking 구성하기를 참조하세요. 사용자 지정 가능한 스크립트에 대한 자세한 내용은 사용자 지정 스크립트를 참조하세요.
시크릿
이 툴체인의 여러 도구와 사용자 지정 스크립트에는 권한이 있는 리소스에 액세스하기 위한 비밀 번호가 필요합니다. IBM Cloud API 키는 이러한 시크릿의 예제입니다. 이러한 비밀 정보를 IBM 에서 권장하는 비밀 정보 관리 도구(예: IBM Key Protect for IBM Cloud, IBM Cloud® Secrets Manager, 또는 HashiCorp Vault 와 같은 xml-ph-0000@deepl.internal에서 권장하는 시크릿 관리 도구에 안전하게 저장하십시오. 시크릿 관리 도구는 툴체인에 통합되어 Tekton 파이프라인에서 시크릿을 쉽게 참조할 수 있습니다.
이 튜토리얼에서는 IBM Cloud® Secrets Manager 을 비밀 보관소로 사용합니다.
증거 스토리지
증거 보관함에는 파이프라인이 실행하는 모든 작업에 대한 증거가 저장됩니다. 이 증거는 파이프라인이 실행되는 동안 파이프라인에 의해 수집됩니다.
지속적 통합(CI) 도구체인에 대해 구성된 Cloud Object Storage (COS) 버킷을 선택합니다. CI(지속적 통합), Continuous Delivery (CD) 및 CC(지속적 규정 준수) 도구 체인에서 동일한 COS 버킷을 사용해야 합니다.
Cloud Object Storage 버킷을 증거 보관함으로 사용하여 파이프라인 실행 중에 수집한 모든 증거와 아티팩트를 보관하는 것이 가장 좋습니다.
증거 보관에 대한 자세한 내용은 증거를 참조하세요.
증거
URL 저장소: URL. 이는 이전 단계에서 확인한 바와 같이 CI 툴체인에 구성된 증거 보관소 저장소입니다.
클라우드 Object Storage 버킷
이 기능을 사용하려면 Cloud Object Storage 인스턴스와 버킷이 있어야 합니다. 클라우드 Object Storage 버킷을 증거 보관소로 사용하여 클라우드 Object Storage 인스턴스를 생성하려면 클릭하세요. 규정 준수 증거 보관소 역할을 수행할 수 있는 버킷 구성에 대한 자세한 내용은 증거 저장을 위한 Cloud Object Storage 구성을 참조하십시오.
- Cloud Object Storage 인스턴스, 버킷 이름 및 Cloud Object Storage 엔드포인트 필드가 자동으로 채워집니다.
- 서비스 ID API 키를 입력하세요
- 선호: 키 아이콘을 클릭하여 비밀 보관함에서 기존 키를 가져올 수 있습니다.
- 기존 키는 복사하여 붙여넣을 수 있습니다.
'endpoint' 필드는 선택 사항입니다. 툴체인 설정 중 또는 파이프라인 실행 중에 엔드포인트를 선택하거나 제공하세요.
배치 대상
DevSecOps for Terraform 사용 사례의 경우 사용자 지정 배포 옵션을 선택합니다.
사용자 정의 대상
이 옵션을 사용하려면 파이프라인의 배포 스크립트 내에서 사용되는 IBM Cloud API 키가 필요합니다. 제공된 배포 스크립트는 Schematics 을 사용하여 Schematics 작업 공간에 Terraform 구성 아티팩트를 업로드하고 Schematics CLI plan 및 apply 명령을 사용하여 IBM Cloud 에 Terraform 구성을 제공합니다.
IBM Cloud API 키
API 키는 여러 작업에서 IBM Cloud CLI 도구와 상호 작용합니다:
- 선호: 키 아이콘을 클릭하여 비밀 보관함에서 기존 키를 가져옵니다.
- 기존 키를 복사하여 붙여넣으세요.
- 새로 만들기 + 를 클릭하여 키를 만듭니다.
새로 생성된 API 키를 비밀 보관소에 저장합니다.
변경 요청 관리
IBM Cloud호스팅된 Git Repos and Issue Tracking 저장소를 사용하여 변경 요청을 관리하십시오. 자세한 정보는 변경 관리 자동화 를 참조하십시오.
선택적 도구
Slack
PR/CI 파이프라인 이벤트에 대한 알림을 받도록 Slack 도구를 구성하세요:
- Slack Webhook
- 선호: 키 아이콘을 클릭하여 비밀 저장소에서 기존 웹훅을 가져올 수 있습니다.
- 기존 웹훅을 복사하여 붙여넣습니다.
- Slack 채널: 기존 Slack에 메시지를 게시합니다.
- Slack 팀 이름: 팀 URL 에서 slack.com 앞에 나오는 문구입니다. 예를 들어, 팀 URL 의 URL이
https://team.slack.com인 경우, 팀 이름은 team입니다. - 자동화된 Slack 알림: 알림을 받고자 하는 이벤트를 선택하여 사용자 지정하세요.
도구체인을 만든 후 Slack 도구를 추가할 수 있습니다.
툴체인을 생성한 후, CD 파이프라인에서 slack-notifications 환경 속성을 사용하여 알림 전송 여부를 설정하세요(0 = 비활성화, 1 = 활성화)
CD 도구 체인 작성
‘요약’ 페이지에서 ‘생성’을 클릭한 다음, 툴체인이 생성될 때까지 기다리십시오.
파이프라인이 생성된 후 개별 툴체인 연동 설정을 구성하십시오.
CD 도구 체인 탐색
이제 CD 툴체인이 생성되었으므로 cd-파이프라인 카드를 클릭하여 프로모션 파이프라인을 열고 실행합니다.
승격 파이프라인 실행
프로모션 파이프라인을 실행하기 전에 CI 파이프라인 이 성공적으로 실행되었는지 확인하십시오.
승격 파이프라인은 인벤토리 대상 환경 분기(예: 스테이징 또는 프로덕션)를 대상으로 인벤토리 소스 환경(예: 마스터) 분기에서 인벤토리 컨텐츠와 함께 가져오기 요청을 작성합니다.
- CD-파이프라인 대시보드에서 파이프라인 실행을 클릭하고 수동 프로모션 트리거를 선택합니다. '실행'을 클릭하여 파이프라인을 시작하십시오.
- 프로모션 파이프라인 실행이 완료될 때까지 기다렸다가 실행 로그를 확인합니다.
- 프로모션 파이프라인이 성공적으로 완료되면, ‘
promote’ 작업 로그에 인벤토리 저장소의 풀 리퀘스트로 연결되는 링크가 표시됩니다. 풀 리퀘스트 이름은promote <Inventory Source Environment> to <Inventory Target Environment>형식을 따릅니다.
-
로그에 제공된 링크를 통해 브라우저에서 풀 리퀘스트를 열어보세요. 다음 섹션의 세부 사항을 작성해 주십시오:
- 우선순위: (필수) ‘매우 중요’, ‘높음’, ‘보통’, ‘낮음’, ‘계획 중’ 중 하나를 선택하십시오.
- 변경 요청 담당자: (필수) 담당자의 이메일 주소.
- 추가 설명: 애플리케이션의 변경 사항에 대한 설명.
- 목적: 애플리케이션에 적용된 변경 사항의 목적.
- 영향 설명: 애플리케이션 동작 또는 환경에 대한 변경 사항이 미치는 영향.
- 백아웃 계획: 배치 실패가 있는 경우 백아웃하는 단계입니다.
-
풀 리퀘스트 의 입력란을 모두 작성한 후 ‘저장’을 클릭하세요.
-
CI에서 규정 준수 검사에 실패했지만 배포를 계속 진행하려는 경우 PR에
EMERGENCY레이블을 추가하세요 -
Git Repos and Issue Tracking의 가져오기 요청을 병합하십시오.
풀 리퀘스트의 세부 정보는 CD 파이프라인이 실행되는 동안 CD 파이프라인에 의해 ‘변경 요청 관리’ 저장소에 변경 요청을 생성하는 데 사용됩니다.
CD 파이프라인 구성
Terraform 변수
이 튜토리얼에서는 프로덕션 환경에서 생성할 키 보호 인스턴스 이름을 지정합니다.
이렇게 하려면 cd-파이프라인에서 환경 속성을 선택하고 추가를 클릭합니다.
유형 Text Value 및 이름 TF_VAR_key_protect_instance 의 속성을 추가합니다. 프로덕션 환경으로의 전송을 나타내는 의미 있는 값(예: key-protect-production-202210191453)을 설정합니다. 이 환경 속성의 값은 key_protect_instance terraform 구성 변수의
값으로 주입됩니다.
또한 IBM Cloud 공급자 플러그인 구성에 설명된 대로 IBM Cloud 로 인증하는 적절한 ibmcloud_api_key 으로 Terraform용 IBM Cloud 공급자를 구성해야 합니다
유형 Secure Value 및 이름 TF_VAR_ibmcloud_api_key 의 속성을 추가합니다. IBM Cloud 리소스 생성에 사용할 값을 API 키로 설정합니다.
이 튜토리얼에서 사용된 샘플은 KeyProtect 인스턴스를 생성하기 위해 resource_group 를 기대합니다. 기본 resource_group 이름은 Default 입니다. 계정에 적합하지 않은 경우 variables.tf 파일에서 기본 resource_group 변수를 바꾸거나 TF_VAR_resource_group 환경 속성을 적절한 리소스 그룹 이름으로 설정하여 resource_group 변수 값을 지정하세요.
파이프라인 구성 브랜치
파이프라인 구성 저장소의 브랜치는 기본적으로 CD 파이프라인 환경 속성에서 master 으로 정의됩니다. 이 튜토리얼의 브랜치를 main 로 변경합니다.
이렇게 하려면 cd-파이프라인에서 환경 속성을 선택하고 edit 을 클릭하여 값을 다음과 같이 변경합니다 main
CD 파이프라인 실행
다음 방법 중 하나를 사용하여 CD 파이프라인을 시작하십시오
- 권장 사항: CD 파이프라인을 수동으로 실행하십시오.
- 선택 사항: 인벤토리 리포지토리에서 ‘
Merge’ 작업이 수행될 때마다 자동으로. Git Repos and Issue Tracking 트리거는 자동 CD 파이프라인을 실행하도록 설정되어 있지만, 기본적으로 비활성화되어 있습니다.
언제든지 수동으로 CD 파이프라인을 트리거할 수도 있지만, 마지막으로 배포에 성공한 이후 변경 사항이 없는 경우 배포할 항목이 없으므로 CD 파이프라인이 조기에 중단됩니다. force-redeploy 변수 를 추가하고 사용하여 코드를 변경하지 않고
CD를 다시 실행할 수 있습니다.
성공적인 CD 파이프라인 실행은 다음과 같습니다.
CD 파이프라인이 성공적으로 실행되면 리소스 목록에서 KeyProtect 인스턴스 서비스를 찾을 수 있습니다.
