다음을 사용하여 Tekton 연속 배포 파이프라인을 설정합니다 DevSecOps
이 튜토리얼을 통해 규정 준수 모범 사례를 준수하는 지속적 배포(CD) 파이프라인 및 도구 체인을 설정할 수 있습니다.
시작하기 전에
- Kubernetes 클러스터 를 IBM Cloud® Kubernetes Service에 생성하여 애플리케이션을 배포합니다.
- 다른 통합에 액세스하여 이 통합에 보안을 설정하려면 도구 체인 시크릿을 작성 하십시오.
- 컴플라이언스 지속적 통합(CI)툴체인이 IBM Cloud® DevOps Insights 통합으로 구성되어 있습니다.
- 선택사항입니다. 파이프라인 실행 증거를 저장할 규정 준수 증거 보관함으로 IBM Cloud® Object Storage 를 구성합니다.
- 해당 통합에 할당된 IBM Cloud® Identity and Access Management(IAM)권한 의 유효성을 확인합니다.
- 다음 동영상에서 CD 툴체인 설정 프로세스에 대한 개요를 확인하세요.
CD 도구 체인 설정 시작
Continuous Delivery 서비스는 툴체인 설정을 안내하고 논리적인 순서로 프로세스를 생성할 수 있는 템플릿을 제공합니다. 진행 표시기는 구성을 완료하기 위한 단계를 표시합니다. 단계에 따라 CI 툴체인용 템플릿에 액세스합니다.
- IBM Cloud 콘솔에서 메뉴 아이콘
> 플랫폼 자동화 > 툴체인을 클릭합니다.
- 도구 체인 페이지에서 도구 체인 작성을 클릭하십시오.
- CD-Develop with DevSecOps practices 타일을 클릭합니다.
CI 툴체인 설정 설정
환영 페이지에는 문서 및 관련 자료에 대한 안내와 함께 툴체인의 목적이 요약되어 있습니다.
-
시작을 클릭하십시오.
-
툴체인 내에 동일한 지역 및 리소스 그룹에 대한 툴체인 이름를 IBM Cloud에 입력합니다. 도구 체인의 이름이 IBM Cloud의 동일한 지역 및 리소스 그룹에 대해 도구 체인 내에서 고유한지 확인하십시오.
-
드롭다운 목록에서 지역을 선택합니다.
도구 체인 지역은 클러스터 및 레지스트리 지역과 다를 수 있습니다.
-
드롭다운 목록에서 리소스 그룹을 선택합니다.
-
계속을 클릭합니다.
현재 단계의 구성이 완료되어 유효한 경우에만 다음 단계로 진행할 수 있습니다. 언제든지 뒤로하기를 클릭하여 안내된 설치 관리자에서 이전 단계를 볼 수 있습니다. 도구 체인 설치 프로그램은 연속적인 단계의 모든 구성 설정을 유지합니다.
일부 단계에는 고급 구성으로 전환 토글 버튼이 포함되어 있습니다. 이 단계에서는 기본적으로 최소한의 구성이 제공됩니다. 그러나 보다 세밀한 제어가 필요한 고급 사용자는 고급 구성으로 전환 토글을 클릭하여 기본 통합 옵션을 표시할 수 있습니다.
CD 도구 통합 설정
CD 도구 통합은 CD 도구 체인에서 사용하는 다양한 도구 및 서비스 통합의 설정을 다룹니다. CI 파이프라인 도구 체인 템플릿을 사용하여 CI 프로세스를 설정하는 경우 CI 도구 체인을 참조하여 해당 도구 체인에서 사용되는 리포지토리의 이름을 복사하세요.
애플리케이션 관련 저장소
CI 도구체인을 처음부터 설정하려면 CI 도구체인을 만드는 동안 이러한 리포지토리를 구성하세요.
- 인벤토리
- 배포 정보는 이 리포지토리를 사용하여 추적됩니다. CI 파이프라인이 성공적으로 실행될 때마다 CD 파이프라인은 생성된 CR 번호로 명명된 새 브랜치를 만들고 배포가 완료된 후 마스터에 병합합니다. 예를 들어,
https://<region>.git.cloud.ibm.com/myorg/my-compliance-ci-inventory입니다. - 문제
- 빌드 및 배포 프로세스 중에 발생하는 인시던트에 대한 이슈를 저장합니다. 예를 들어,
https://<region>.git.cloud.ibm.com/myorg/my-compliance-ci-issues입니다. - 증거
- 애플리케이션에 속한 모든 원시 규정 준수 증거를 수집합니다. 예를 들어,
https://<region>.git.cloud.ibm.com/myorg/my-compliance-ci-evidence입니다. - Toolchain
- 파이프라인, 트리거, 리스너 등의 텍톤 파이프라인 정의는 이 리포지토리에 저장됩니다. 예를 들어,
https://<region>.git.cloud.ibm.com/myorg/my-compliance-ci-toolchain입니다.
CI 도구 체인에서 리포지토리 이름을 캡처한 후 Guided Setup 으로 이동하여 CD 도구 체인 생성을 시작합니다. 설정 과정에서 각 저장소에 대해 기존 IBM 호스팅 Git Repos and Issue Tracking 저장소에 대한 액세스 권한( URL )을 제공할 수 있습니다. 현재 툴체인은 Git Repos and Issue Tracking 리포지토리 생성만 지원합니다. 향후 릴리스에서는 GitHub,
GitHub Enterprise (GHE) 및 기타 SCM 제공업체를 통해 리포지토리를 만들 수 있도록 지원할 예정입니다.
인벤토리
인벤토리 저장소는 CI 도구 체인에서 빌드한 아티팩트의 세부사항을 기록합니다. 툴체인의 기본 동작은 기존 인벤토리를 사용하여 툴체인에 대한 기존 인벤토리 저장소를 연결하는 것입니다. 현재 툴체인은 기존 Git Repos and Issue Tracking 리포지토리에만 연결할 수 있습니다. 자세한 내용은 애플리케이션 관련 리포지토리 를 참조하세요.
- 템플릿에 제공된 기본 구성을 수락할 수 있습니다.
- 계속을 클릭합니다.
문제
이슈 리포지토리에는 CI 파이프라인이 실행되는 동안 발견된 이슈가 기록됩니다.
- 템플릿에 제공된 기본 구성을 수락할 수 있습니다.
- 계속을 클릭합니다
파이프라인 구성
파이프라인 구성 리포지토리에는 배포, 테스트 및 기타 사용자 지정 작업에 필요한 YAML 파일과 스크립트가 포함되어 있습니다. Git 리포지토리에 대한 자세한 내용은 Git Repos and Issue Tracking 구성하기 을 참조하세요. 사용자 지정 스크립트에 대한 자세한 내용은 사용자 지정 스크립트 를 참조하세요.
-
소스 공급자 및 새 배포 구성 리포지토리 만들기의 기본 설정을 수락합니다.
이 툴체인은 귀하의 Git 조직에 샘플 hello-compliance-deployment를 복제합니다. Git 저장소에 대한 자세한 내용은 Git Repos and Issue Tracking 구성하기를 참조하십시오. 사용자 지정 스크립트에 대한 자세한 내용은 사용자 지정 스크립트 를 참조하세요.
-
새 리포지토리 이름을 입력합니다.
-
계속을 클릭합니다.
시크릿
이 툴체인의 여러 도구와 사용자 지정 스크립트에는 권한이 있는 리소스에 액세스하기 위한 비밀 번호가 필요합니다. IBM Cloud API 키는 이러한 시크릿의 예제입니다. 이러한 비밀을 다음과 같은 비밀 관리 도구에 안전하게 보관하세요 IBM Key Protect for IBM Cloud, IBM Cloud® Secrets Manager 또는 HashiCorp Vault. 비밀 관리 도구 는 툴체인에 통합되어 Tekton 파이프라인의 비밀을 쉽게 참조할 수 있습니다.
인증 방법을 사용하여 AppRole 인증 방법을 사용하여 비밀 값을 읽을 수 있습니다.
- 이 튜토리얼에서는 IBM Cloud® Secrets Manager를 비밀 저장소로 사용합니다. 지역, 리소스 그룹, 서비스 이름 필드는 사용 가능한 선택 항목에 따라 자동으로 채워집니다. 드롭다운 표시기를 클릭하면 다른 선택 사항을 볼 수 있습니다.
- Secrets Manager 인스턴스 이름을 입력합니다.
- 드롭다운 목록에서 권한 부여 유형을 선택합니다.
- 계속을 클릭합니다.
증거 스토리지
증거 보관함에는 DevSecOps CI 파이프라인에서 생성되는 모든 증거와 아티팩트가 저장됩니다.
- 기존 증거 보관함 저장소 사용를 선택합니다.
- 지속적 통합(CI) 툴체인을 구성할 때 생성된 저장소 URL 를 선택합니다. 증거 보관에 대한 자세한 내용은 증거 를 참조하세요.
- IBM Cloud Object Storage 버킷 슬라이더를 토글하여 모든 증거를 IBM Cloud Object Storage 버킷에 저장할 수 있습니다.
- 계속을 클릭합니다.
Cloud Object Storage 버킷
IBM Cloud Object Storage 인스턴스와 규정 준수 증거 보관소 역할을 할 버킷이 있어야 합니다.
- Cloud Object Storage 인스턴스, 버킷 이름 및 Cloud Object Storage 엔드포인트 필드가 자동으로 채워집니다.
- 서비스 ID API 키를 입력합니다.
- 선호: 키 아이콘을 클릭하여 비밀 보관함에서 기존 키를 가져올 수 있습니다.
- 기존 키를 복사하여 붙여넣을 수 있습니다.
- 계속을 클릭합니다.
엔드포인트 필드는 선택 사항입니다. 툴체인 설정 중 또는 파이프라인 실행 중에 엔드포인트를 선택하거나 제공하는 것이 좋습니다.
배치
애플리케이션이 배포되는 인벤토리 대상 및 Kubernetes 클러스터를 구성합니다:
-
기본 앱 이름은
hello-compliance-app입니다. -
IBM Cloud API 키를 입력합니다. API 키는 여러 작업에서 IBM Cloud CLI 도구와 상호 작용하는 데 사용됩니다.
- 선호: 키 아이콘을 클릭하여 비밀 보관함에서 기존 키를 가져올 수 있습니다.
- 기존 키를 복사하여 붙여넣을 수 있습니다.
- 여기에서 새로 만들기 +를 클릭하여 새 키를 만들 수 있습니다.
새로 생성된 API 키는 즉시 비밀 보관소에 저장할 수 있습니다.
-
API 키가 유효하고 충분한 액세스 권한이 있는 경우, Container Registry, Container Registry 네임스페이스, 개발 클러스터 영역, 리소스 그룹, 클러스터 이름, 클러스터 네임스페이스가 자동으로 채워집니다. 이러한 필드를 구성에 맞게 변경할 수 있습니다.
-
계속을 클릭합니다.
IBM Cloud API 키
API 키는 여러 작업에서 ibmcloud CLI 도구와 상호 작용하는 데 사용됩니다.
- 전제 조건으로 생성된 기존 비밀 공급자 인스턴스에서 기존 API 키를 가져올 수 있습니다(권장)
- 기존 키를 복사하여 붙여넣을 수 있습니다(권장하지 않음)
- 새 키는 새로 만들기 + 를 클릭하여 만들 수 있습니다. 키가 없는 경우
api-key를 생성합니다. 새로 생성된 API 키를 기존 Key Protect 인스턴스에 즉시 저장할 수 있습니다.
API 키 필드가 채워지면 레지스트리 및 클러스터 관련 필드가 자동으로 채워집니다.
인벤토리 대상 및 소스 분기
- 단일 클러스터(푸시 기반 배포) 에 동의하여 가상 서버 인스턴스와 같은 대상에 애플리케이션을 배포하거나 배포 프로세스를 사용자 지정하려면 사용자 지정 옵션을 사용하세요.
- 클러스터 페이지를 보려면 계속를 클릭합니다.
- 여러 작업에서 CLI 도구와 상호 작용하려면 IBM Cloud API 키 필드를 입력합니다. 주 기존 키는 키 아이콘을 클릭하여 비밀 보관함에서 가져올 수 있습니다.
- 클러스터 지역, 리소스 그룹, 클러스터 이름 및 클러스터 네임스페이스 필드에서 대상 클러스터가 생성된 위치를 확인합니다.
- 계속을 클릭합니다.
변경 요청 관리
- 변경 요청을 관리할 IBM Cloud 호스팅된 Git Repos and Issue Tracking 리포지토리를 선택합니다. 자세한 내용은 변경 관리 자동화하기 를 참조하세요.
- 계속을 클릭합니다.
DevOps Insights 툴체인
다른 툴체인의 기존 DevOps Insights 인스턴스를 이 파이프라인에 연결하여 CI 및 CD 툴체인 파이프라인의 모든 빌드, 배포 및 테스트 기록을 같은 위치에 수집할 수 있도록 합니다.
CD 툴체인은 배포 레코드를 기존 DevOps Insights 인스턴스에 게시할 수 있습니다. 이 기능을 사용하려면 DevOps Insights 툴체인 ID 목록에서 기존 DevOps Insights 인스턴스가 포함된 툴체인 ID를 입력합니다.
- DevOps Insights IBM Cloud API 키를 입력합니다를 입력하세요.
- 기본 구성을 수락합니다.
- 지역, 리소스 그룹, DevOps Insights 툴체인 ID, 대상 환경이 생성되는 DevOps Insights 대상 환경 필드에 입력합니다.
- 계속을 클릭합니다.
기존 DevOps Insights 툴체인 링크
DevOps Insights 는 생성된 툴체인에 선택적으로 포함될 수 있으며, 각 규정 준수 확인 증거가 게시된 후에 포함될 수 있습니다. 툴체인은 기존 DevOps Insights 인스턴스를 사용하여 배포 레코드를 인사이트에 게시할 수 있습니다. 통합 ID를 제공하여 다른 툴체인에서 DevOps Insights 통합을 연결할 수 있습니다.
- 현재 툴체인에 동의합니다.
- 계속을 클릭합니다.
도구 체인의 URL에서 도구 체인 ID를 복사할 수 있습니다. 툴체인의 URL 은 다음 패턴을 따릅니다: https://cloud.ibm.com/devops/toolchains/<toolchain-ID-comes-here>?env_id=ibm:yp:us-south. URL 이 https://cloud.ibm.com/devops/toolchains/aaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee?env_id=ibm:yp:us-south 인 경우 툴체인의 ID는: aaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee. URL 전체가 아닌 ID만 포함하십시오.
DevOps Insights 상호작용을 위한 대상 환경을 설정할 수도 있습니다. 이 매개변수는 선택 사항으로, 인벤토리의 대상 환경 대신 사용됩니다.
선택적 도구
Slack
풀 리퀘스트 또는 CI 파이프라인 이벤트에 대한 알림을 받도록 Slack 를 구성하세요. 툴체인 생성 후 Slack 도구를 추가할 수도 있습니다.
- Slack 웹훅을 입력합니다. 자세한 내용은 Slack 웹훅 를 참조하세요.
- 메시지를 게시할 슬랙 채널를 입력합니다.
- 슬랙 팀 이름를 입력합니다. 예를 들어, URL
https://team.slack.com팀이라면 팀 이름은team입니다. - 자동화된 Slack 알림에 대한 알림을 받을 이벤트를 선택합니다.
- 계속을 클릭합니다.
개인용 작업자
배달 파이프라인 개인 작업자 도구 통합은 배달 파이프라인 워크로드를 독립적으로 실행할 수 있는 하나 이상의 개인 작업자와 연결합니다. 자세한 정보는 개인용 작업자 관련 작업을 참조하십시오.
- 배달 파이프라인 비공개 작업자의 이름를 입력합니다.
- 서비스 ID API 키를 입력합니다.
- 선호: 키 아이콘을 클릭하여 비밀 보관함에서 기존 키를 가져올 수 있습니다.
- 기존 키를 복사하여 붙여넣을 수 있습니다.
- 계속을 클릭합니다.
CD 도구 체인 작성
- 요약 페이지에서 작성을 클릭하십시오.
- 툴체인 생성이 완료될 때까지 기다리면 화면 캡처와 같이 요약 페이지가 표시됩니다. 이 작업은 수행하는 데 몇 분 정도 걸립니다.
파이프라인이 작성된 후 개별 도구 체인 통합을 구성할 수 있습니다.
CD 도구 체인 탐색
승격 파이프라인 실행
프로모션 파이프라인을 실행하기 전에 CI 파이프라인이 성공적으로 실행되었는지 확인하세요.
-
cd-pipeline 를 클릭합니다.
-
실행을 클릭하여 수동 프로모션 트리거 파이프라인을 클릭합니다.
-
실행을 클릭하여 파이프라인을 트리거합니다.
-
수동 프로모션 트리거 >
#1promotion-pipelinerun파이프라인을 클릭합니다. 프로모션 파이프라인 실행이 완료될 때까지 기다렸다가 실행 로그를 확인합니다.프로모션 파이프라인은
staging또는production와 같은 인벤토리 대상 환경 브랜치를 대상으로master브랜치와 같은 인벤토리 소스 환경의 인벤토리 콘텐츠로 풀 리퀘스트를 생성합니다. -
프로모션 파이프라인이 성공적으로 완료되면
promote작업 로그에 인벤토리 리포지토리의 풀 리퀘스트에 대한 링크가 제공됩니다. 풀 리퀘스트 이름은promote <inventory source environment> to <inventory target environment>형식입니다(예:promote master to prod) -
로그에 제공된 링크를 통해 브라우저에서 풀 리퀘스트를 엽니다. 다음 섹션에서 세부 정보를 작성하세요:
- 우선순위: (필수)
Critical,High,Moderate,Low또는Planning으로 설정합니다. - 변경 요청 양 수인: (필수) 양수인의
Email-ID. - 추가 설명: 애플리케이션의 변경 사항에 대한 설명입니다.
- 목적/목표: 애플리케이션에 적용된 변경 사항의 목적입니다.
- 영향에 대한 설명: 애플리케이션 동작 또는 환경에 대한 변경의 영향입니다.
- 백아웃 계획: 배포 실패 시 백아웃을 위한 단계입니다.
- 우선순위: (필수)
-
풀 리퀘스트의 필드를 작성하고 저장을 클릭합니다.
-
CI에서 규정 준수 검사에 실패하여 배포 계속 진행 을 원하는 경우 풀 리퀘스트에
EMERGENCY레이블을 추가합니다 -
Git Repos and Issue Tracking에서 풀 리퀘스트를 병합합니다.
풀 리퀘스트의 세부 정보는 변경 요청 리포지토리에서 생성 및 업데이트하기 위해 실행되는 CD 파이프라인 중에 사용됩니다.
CD 파이프라인 실행
프로모션 파이프라인 실행
-
Promotion Pipeline을 실행하기 전에 CI 파이프라인이 성공적으로 실행되었는지 확인하십시오. -
프로모션 파이프라인은 인벤토리 소스 환경에 인벤토리 콘텐츠가 포함된
Pull Request을 생성합니다. 예를 들어 인벤토리 대상 환경 브랜치를 대상으로 하는master브랜치(예:staging또는prod)가 있습니다. PR이 병합된 후에 버릴 수 있는 PR을 위한 중간 분기가 작성됩니다.
프로모션 파이프라인 실행 -
Promotion Pipeline작업이 성공적으로 완료되면promote작업은 앞서 언급한 인벤토리 저장소의Pull Request링크가 제공됩니다. 풀 리퀘스트 이름은 다음 형식입니다:promote <Inventory Source Environment> to <Inventory Target Environment> -
로그에 제공된 링크를 사용하여 브라우저에서
Pull Request을 여십시오. 다음과 같이 섹션을 완료하세요:- 우선순위: (필수) 중요, 높음, 중간, 낮음, 계획 중 하나
- 변경 요청 담당자: (필수) 담당자의 이메일 ID
- 추가 설명: 애플리케이션의 변경사항에 대한 설명
- 목적: 애플리케이션의 변경 목적
- 영향 설명: 애플리케이션 작동 또는 환경 변경의 영향
- 백아웃 계획: 배포가 실패할 경우 백아웃하는 단계
-
Pull Request의 필드를 완성하고 저장하십시오. -
Git Repos and Issue Tracking 에서
Pull Request을 병합합니다.
Pull Request 의 세부 정보는 CD 파이프라인이 CD 파이프라인 실행 중에 변경 요청 관리 리포지토리에 변경 요청을 만드는 데 사용됩니다.
CD 파이프라인 실행
수동 또는 자동 방식으로 CD 파이프라인을 트리거할 수 있습니다. 언제든지 수동으로 CD 파이프라인을 트리거할 수 있지만, 마지막 배포 성공 이후 변경 사항이 없는 경우 배포할 항목이 없으므로 CD 파이프라인이 조기에 중지됩니다. 자동 CD 파이프라인을 트리거하도록 설정된 Git Repos and Issue Tracking 트리거가 있지만 기본적으로 비활성화되어 있으며 첫 번째 promotion.You가 코드 변경 없이
force-redeploy 변수 를 추가 및 사용하여 CD를 다시 실행할 수 있도록 설정할 수 있습니다. DevSecOps CD 파이프라인의 성공적인 화면 캡처를 확인합니다.
언제든지 CD Pipeline을 수동으로 트리거할 수도 있지만, 마지막 배치 성공 이후에 변경사항이 없는 경우 CD Pipeline은 새로운 것을 배치하지 않습니다.
성공적인 CD 파이프라인 실행은 다음과 같습니다.
CD 파이프라인에 있는 태스크의 플로우:
CD 파이프라인이 성공적으로 실행되면 prod 네임스페이스에서 실행 중인 샘플 앱을 찾을 수 있습니다. 앱 URL은 CD 파이프라인 실행의 run stage 단계의 prod deployment 하위 단계에서 찾을 수 있습니다. 이 URL을 사용하여 앱이 실행 중인지 확인하십시오.