코드형 인프라를 위한 CD 도구 체인 설정

이 튜토리얼은 3부작 튜토리얼 시리즈의 3부로, IBM Cloud® Continuous Delivery 에서 제공하는 서비스 형태의 완전한 참조 구현체를 활용하여 DevSecOps 의 모듈식 애플리케이션( IBM Cloud® ) 모범 사례를 학습합니다. 이 튜토리얼 시리즈의 3부에서는 DevSecOps 에서 보안 및 규정 준수와 관련된 모범 사례를 적용한 지속적 배포(CD)용 툴체인 템플릿을 사용합니다.

시작하기 전에

이 튜토리얼 시리즈의 3부를 시작하기 전에 다음 사전 요구 사항을 완료해야 합니다:

  1. 1부: 전제 조건 설정을 완료하세요.
  2. 2부: 코드형 인프라(Terraform)를 위한 CI 도구 체인 설정 완료하기.
  3. IBM Cloud- 2부 동영상에서 DevSecOps 시작하기 보기를 확인하세요.

CD - DevSecOps 사례로 보안 앱 배포하기

DevSecOps CD 툴체인에는 연속 배포를 위한 파이프라인이 하나만 포함되어 있습니다. 이는 다음과 같은 우수 사례를 구현합니다.

  • 개발자, 승인자, 감사자가 규제 준수라는 관점에서 배치를 추적하는 데 도움이 되는 변경 관리 자동화를 수행합니다.
  • CI 파이프라인에서 수집된 증거로부터 증거 요약을 생성합니다.
  • Git Repos and Issue Tracking 기반 변경 관리 리포지토리에 변경 요청을 만들고 배포 증거를 추가합니다.
  • 인벤토리 저장소를 사용하여 빌드된 아티팩트를 스테이징 및 프로덕션과 같은 배포 환경으로 홍보합니다.
  • CR을 확인하고 모든 검사가 통과되면 자동으로 승인합니다.
  • CR이 승인되거나 긴급한 경우, 툴체인은 이미지를 인벤토리에서 프로덕션으로 배포합니다.

CD 도구 체인에 관한 설정 개요 안내

이 튜토리얼에 있는 모든 방법을 통해 설정 경험을 안내합니다. 도구 체인 설정 프로세스를 안내하고 도구 체인을 만드는 데 필요한 권장 구성 옵션이 표시됩니다.

진행 표시기는 구성을 완료하기 위한 단계를 표시합니다. 진행률 표시기를 사용하여 이전 단계로 이동할 수 있습니다. 현재 단계의 구성 옵션이 페이지의 기본 영역에 표시됩니다.

DevSecOps 지속적 배포 툴체인 시작 페이지 그림 1.
DevSecOps 지속적 배포 툴체인 시작 페이지

다음 단계로 진행하려면 계속을 클릭하십시오. 현재 단계의 구성이 완료되어 유효한 경우에만 다음 단계로 진행할 수 있습니다. 이전을 클릭하여 이전 단계로 이동할 수 있습니다.

일부 단계에는 고급 구성으로 전환 토글이 포함되어 있습니다. 이 단계에서는 기본적으로 필요한 최소한의 구성이 제공됩니다. 그러나 보다 세밀한 제어가 필요한 고급 사용자는 고급 구성으로 전환 토글을 클릭하여 기본 통합에 대한 모든 옵션을 표시할 수 있습니다.

DevSecOps 고급 구성 토글 그림 2.
DevSecOps 고급 구성 토글

모든 단계가 성공적으로 완료되면 요약 단계에서 만들기를 클릭하여 툴체인을 생성합니다.

안내 형식의 설치 프로그램에서는 항상 이전 단계로 돌아갈 수 있습니다. 도구 체인 설치 프로그램은 연속적인 단계의 모든 구성 설정을 유지합니다.

CD 도구 체인 설정 시작

다음 옵션 중 하나를 사용하여 CD 도구 체인 구성을 시작하십시오.

  • 툴체인 만들기를 클릭합니다.

    툴체인 만들기

  • IBM Cloud 콘솔에서 메뉴 아이콘을 클릭하고 DevOps. 도구 체인 페이지에서 도구 체인 만들기를 클릭합니다. 툴체인 만들기 페이지에서 DevSecOps 사례로 CD-개발을 클릭합니다.

CD 도구 체인 이름 및 지역 설정

도구 체인 설정에 대한 기본 정보를 검토하십시오. 도구 체인의 이름은 IBM Cloud에서 해당 도구 체인을 식별합니다. 도구 체인의 이름이 IBM Cloud의 동일한 지역 및 리소스 그룹에 대해 도구 체인 내에서 고유한지 확인하십시오.

드롭다운에서 연결된 CI 도구체인을 선택하여 이 CD 도구체인의 설정에 도움이 되는 일부 CI 구성을 복사합니다.

DevSecOps 관련 CI 툴체인 그림 3.
DevSecOps 관련 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: 이전 단계에서 캡처한 대로 CI 툴체인에 구성된 인벤토리 리포지토리의 URL.

문제

리포지토리 URL: 이전 단계에서 캡처한 대로 CI 도구 체인에 구성된 이슈 리포지토리의 URL.

파이프라인 구성

파이프라인 구성 저장소에는 배치, 테스트 및 기타 사용자 정의 태스크에 필요한 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. 시크릿 관리 도구는 툴체인에 통합되어 Tekton 파이프라인에서 시크릿을 쉽게 참조할 수 있습니다.

이 튜토리얼에서는 IBM Cloud® Secrets Manager 을 비밀 보관소로 사용합니다.

증거 스토리지

증거 보관함에는 파이프라인이 실행하는 모든 작업에 대한 증거가 저장됩니다. 이 증거는 파이프라인이 실행되는 동안 파이프라인에 의해 수집됩니다.

지속적 통합(CI) 도구체인에 대해 구성된 Cloud Object Storage (COS) 버킷을 선택합니다. CI(지속적 통합), Continuous Delivery (CD) 및 CC(지속적 규정 준수) 도구 체인에서 동일한 COS 버킷을 사용해야 합니다.

Cloud Object Storage 버킷을 증거 보관함으로 사용하여 파이프라인 실행 중에 수집한 모든 증거와 아티팩트를 보관하는 것이 가장 좋습니다.

증거 보관에 대한 자세한 내용은 증거를 참조하세요.

증거

리포지토리 URL: 이전 단계에서 캡처한 대로 CI 도구 체인에 구성된 증거 보관함 리포지토리의 URL.

클라우드 Object Storage 버킷

이 기능을 사용하려면 Cloud Object Storage 인스턴스와 버킷이 있어야 합니다. 클라우드 Object Storage 버킷을 증거 보관소로 사용하여 클라우드 Object Storage 인스턴스를 생성하려면 클릭하세요. 규정 준수 증거 보관소 역할을 수행할 수 있는 버킷 구성에 대한 자세한 내용은 증거 저장을 위한 Cloud Object Storage 구성을 참조하십시오.

  • Cloud Object Storage 인스턴스, 버킷 이름 및 Cloud Object Storage 엔드포인트 필드가 자동으로 채워집니다.
  • 서비스 ID API 키를 입력합니다
    • 선호: 키 아이콘을 클릭하여 비밀 보관함에서 기존 키를 가져올 수 있습니다.
    • 기존 키를 복사하여 붙여넣을 수 있습니다.

엔드포인트 필드는 선택 사항입니다. 툴체인 설정 중 또는 파이프라인 실행 중에 엔드포인트를 선택하거나 제공하세요.

배치 대상

DevSecOps for Terraform 사용 사례의 경우 사용자 지정 배포 옵션을 선택합니다.

사용자 지정 대상

이 옵션을 사용하려면 파이프라인의 배포 스크립트 내에서 사용되는 IBM Cloud API 키가 필요합니다. 제공된 배포 스크립트는 Schematics 을 사용하여 Schematics 작업 공간에 Terraform 구성 아티팩트를 업로드하고 Schematics CLI planapply 명령을 사용하여 IBM Cloud 에 Terraform 구성을 제공합니다.

IBM Cloud API 키

API 키는 여러 작업에서 IBM Cloud CLI 도구와 상호 작용합니다:

  • 선호: 아이콘을 클릭하여 비밀 보관함에서 기존 키를 가져옵니다.
  • 기존 키를 복사하여 붙여넣습니다.
  • 새로 만들기 + 를 클릭하여 키를 만듭니다.

새로 생성된 API 키를 비밀 보관소에 저장합니다.

변경 요청 관리

IBM Cloud호스팅된 Git Repos and Issue Tracking 저장소를 사용하여 변경 요청을 관리하십시오. 자세한 정보는 변경 관리 자동화 를 참조하십시오.

DevOps 인사이트 툴체인

다른 도구 체인의 기존 DevOps 인사이트 인스턴스를 이 파이프라인에 연결하여 CI 및 CD 도구 체인 파이프라인의 모든 빌드, 배포 및 테스트 레코드가 같은 위치에 수집되도록 합니다.

CD 도구 체인은 배포 레코드를 기존 DevOps 인사이트 인스턴스에 게시할 수 있습니다. 이 기능을 사용하려면 DevOps 인사이트 도구체인 ID 드롭다운에서 기존 DevOps Insights 인스턴스가 포함된 도구체인의 ID를 선택하여 입력합니다.

선택적 도구

Slack

PR/CI 파이프라인 이벤트에 대한 알림을 받도록 Slack 도구를 구성하세요:

  • Slack 웹훅
  • 선호: 아이콘을 클릭하여 비밀 저장소에서 기존 웹훅을 가져올 수 있습니다.
  • 기존 웹훅을 복사하여 붙여넣습니다.
  • Slack 채널: 기존 Slack에 메시지를 게시합니다.
  • Slack 팀 이름: 팀 URL 에서 slack.com 앞에 나오는 문구입니다. 예를 들어 팀 URL 이 https://team.slack.com 인 경우 팀 이름은 팀입니다.
  • 자동화된 Slack 알림: 알림을 받고자 하는 이벤트를 선택하여 사용자 지정하세요.

도구체인을 만든 후 Slack 도구를 추가할 수 있습니다.

툴체인을 만든 후 CD 파이프라인에서 slack-notifications 환경 속성을 사용하여 알림 전송을 토글합니다(0 = 끄기, 1 = 켜기)

CD 도구 체인 작성

요약 페이지에서 만들기를 클릭하고 툴체인이 생성될 때까지 기다립니다.

파이프라인이 생성된 후 개별 툴체인 통합을 구성합니다.

DevSecOps CD 툴체인 생성됨 그림 4.
DevSecOps CD 툴체인 생성

CD 도구 체인 탐색

이제 CD 툴체인이 생성되었으므로 cd-파이프라인 카드를 클릭하여 프로모션 파이프라인을 열고 실행합니다.

승격 파이프라인 실행

프로모션 파이프라인을 실행하기 전에 CI 파이프라인이 성공적으로 실행되었는지 확인하세요.

승격 파이프라인은 인벤토리 대상 환경 분기(예: 스테이징 또는 프로덕션)를 대상으로 인벤토리 소스 환경(예: 마스터) 분기에서 인벤토리 컨텐츠와 함께 가져오기 요청을 작성합니다.

  • CD-파이프라인 대시보드에서 파이프라인 실행을 클릭하고 수동 프로모션 트리거를 선택합니다. 실행을 클릭하여 파이프라인을 트리거합니다.
  • 프로모션 파이프라인 실행이 완료될 때까지 기다렸다가 실행 로그를 확인합니다.
  • 프로모션 파이프라인이 성공적으로 완료되면 promote 작업 로그에 인벤토리 리포지토리에 있는 풀 리퀘스트에 대한 링크가 제공됩니다. 풀 리퀘스트 이름은 promote <Inventory Source Environment> to <Inventory Target Environment> 형식입니다.
  1. 로그에 제공된 링크를 통해 브라우저에서 풀 리퀘스트를 엽니다. 다음 섹션에서 세부 정보를 작성하세요:

    • 우선순위: (필수) 중요, 높음, 보통, 낮음, 계획 중 하나입니다.
    • 변경 요청 양 수인: (필수) 양수인의 이메일 ID입니다.
    • 추가 설명: 애플리케이션의 변경 사항에 대한 설명입니다.
    • 목적: 애플리케이션에 적용된 변경 사항의 목적입니다.
    • 영향에 대한 설명: 애플리케이션 동작 또는 환경에 대한 변경의 영향입니다.
    • 백아웃 계획: 배치 실패가 있는 경우 백아웃하는 단계입니다.
  2. 풀 리퀘스트의 필드를 작성하고 저장을 클릭합니다.

  3. CI에서 규정 준수 검사에 실패했지만 배포를 계속 진행하려는 경우 PR에 EMERGENCY 레이블을 추가하세요

  4. Git Repos and Issue Tracking의 가져오기 요청을 병합하십시오.

풀 리퀘스트의 세부 정보는 CD 파이프라인이 실행되는 동안 변경 요청 관리 리포지토리에서 변경 요청을 만드는 데 사용됩니다.

CD 파이프라인 구성

Terraform 변수

이 튜토리얼에서는 프로덕션 환경에서 생성할 키 보호 인스턴스 이름을 지정합니다.

이렇게 하려면 cd-파이프라인에서 환경 속성을 선택하고 추가를 클릭합니다.

CD 파이프라인 구성
그림 5. 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 파이프라인 구성 지점
그림 6. CD 파이프라인 구성 브랜치

CD 파이프라인 실행

다음 방법 중 하나로 CD 파이프라인을 시작하세요:

  • 기본 설정: CD 파이프라인을 수동으로 트리거합니다.
  • 선택 사항: 인벤토리 저장소에서 Merge 작업을 수행할 때마다 자동으로 수행됩니다. 자동 CD 파이프라인을 트리거하도록 Git Repos and Issue Tracking 트리거가 설정되어 있지만 기본적으로 비활성화되어 있습니다.

언제든지 수동으로 CD 파이프라인을 트리거할 수도 있지만, 마지막으로 배포에 성공한 이후 변경 사항이 없는 경우 배포할 항목이 없으므로 CD 파이프라인이 조기에 중단됩니다. force-redeploy 변수 를 추가하고 사용하여 코드를 변경하지 않고 CD를 다시 실행할 수 있습니다.

성공적인 CD 파이프라인 실행은 다음과 같습니다.

DevSecOps CD 파이프라인 성공 그림 7.
DevSecOps 성공적인 CD 파이프라인

CD 파이프라인이 성공적으로 실행되면 리소스 목록에서 KeyProtect 인스턴스 서비스를 찾을 수 있습니다.

KeyProtect 서비스 인스턴스 생성됨 그림 8.
KeyProtect 서비스 인스턴스 생성