Tekton 지속적 통합 파이프라인 설정하기 DevSecOps
이 튜토리얼을 통해 Tekton 지속적 통합(CI) 파이프라인을 설정하고 규정을 준수하는 툴체인을 만들 수 있습니다.
시작하기 전에
-
IBM Cloud® Kubernetes Service 에서 Kubernetes 클러스터를 생성하여 애플리케이션을 배포합니다(*).
-
운영 체제에 IBM Cloud CLI 를 설치하여 IBM Cloud 리소스와 상호 작용합니다.
-
툴체인 비밀 생성 으로 다양한 통합에 액세스하고 보안을 유지하세요.
-
구성 IBM Cloud® Object Storage 파이프라인 운용 증거를 영구적으로 보관하기 위한 규정 준수 증거 보관소로 활용됩니다.
-
해당 통합에 할당된 IBM Cloud® Identity and Access Management(IAM)권한 의 유효성을 확인합니다.
(*) Kubernetes 클러스터: 설정 중에만 필요하며, 툴체인 생성 후 변경할 수 있습니다. 특히 다른 배포 대상(예: CodeEngine )을 사용하는 경우에는 전용 클러스터를 반드시 만들어야 하는 것은 아닙니다. 모든 클러스터에 액세스할 수 있는 IBM Cloud API 키를 입력할 수 있습니다.
CI 파이프라인은 GaraSign 코드 서명 서비스를 사용하여 등록 및 온보딩이 필요한 빌드 아티팩트에 서명합니다. GaraSign 내부 IBM 네트워크를 사용합니다. 이 네트워크에 대한 액세스는 네트워크 액세스 권한이 있는 IBM 공유 작업자 내에서 사용할 수 있습니다. IBM 9.X 내부 네트워크에 액세스할 수 있는 공유 작업자를 사용할 수 있습니다.
- 다음 동영상을 확인하세요:
CI 도구 체인 설정 시작
Continuous Delivery 서비스는 툴체인 설정을 안내하고 논리적인 순서로 프로세스를 생성할 수 있는 템플릿을 제공합니다. 진행 표시기는 구성을 완료하기 위한 단계를 표시합니다. 단계에 따라 CI 툴체인용 템플릿에 액세스합니다.
- IBM Cloud 콘솔에서 메뉴 아이콘
> 플랫폼 자동화 > 툴체인을 클릭합니다.
- 도구 체인 페이지에서 도구 체인 작성을 클릭하십시오.
- ‘인프라스트럭처 애즈 코드(Infrastructure as Code )’를 확인해 보세요.
- CI - 보안 인프라를 코드로 개발하기 - DevSecOps 사례 타일을 클릭합니다.
CI 툴체인 설정 설정
환영 페이지에는 문서 및 관련 자료에 대한 안내와 함께 툴체인의 목적이 요약되어 있습니다.
-
시작을 클릭하십시오.
-
툴체인 내에 동일한 지역 및 리소스 그룹에 대한 툴체인 이름를 IBM Cloud에 입력합니다.
-
드롭다운 목록에서 지역을 선택하세요.
-
드롭다운 목록에서 리소스 그룹을 선택하세요.
-
계속을 클릭합니다.
현재 단계의 구성이 완료되어 유효한 경우에만 다음 단계로 진행할 수 있습니다. 가이드 설치 프로그램에서 언제든지 ‘뒤로’를 클릭하여 이전 단계를 확인할 수 있습니다. 도구 체인 설치 프로그램은 연속적인 단계의 모든 구성 설정을 유지합니다.
일부 단계에는 고급 구성으로 전환 토글 버튼이 포함되어 있습니다. 이 단계들은 기본적으로 최소 구성만 제공합니다. 하지만 보다 세밀한 제어가 필요한 고급 사용자는 ‘고급 구성으로 전환’ 토글을 클릭하여 기본 통합에 대한 옵션을 확인할 수 있습니다.
CI 도구 연동 설정
기본 설정을 검토하고 CI 도구 통합을 설정하는 데 필요한 경우 사용자 정의 구성을 제공하세요. 설정하는 동안 여러 리포지토리를 구성할 수 있습니다. 샘플 리포지토리를 복제하거나 직접 리포지토리를 사용할 수 있지만, 툴체인은 기존 Git Repos and Issue Tracking 리포지토리에만 연결할 수 있도록 지원합니다.
애플리케이션
도구 체인 설정에 대한 기본 정보를 검토하십시오.
- 템플릿에 제공된 기본 구성을 수락할 수 있습니다.
- ‘계속’을 클릭하세요
인벤토리
인벤토리 저장소는 CI 도구 체인에서 빌드한 아티팩트의 세부사항을 기록합니다.
- 템플릿에 제공된 기본 구성을 수락할 수 있습니다.
- 계속을 클릭합니다.
문제
이슈 리포지토리에는 CI 파이프라인이 실행되는 동안 발견된 이슈가 기록됩니다.
- 템플릿에 제공된 기본 구성을 수락할 수 있습니다.
- ‘계속’을 클릭하세요
시크릿
이 툴체인의 여러 도구와 사용자 지정 스크립트에는 권한이 있는 리소스에 액세스하기 위한 비밀 번호가 필요합니다. IBM Cloud API 키는 이러한 시크릿의 예제입니다. 이러한 비밀을 다음과 같은 비밀 관리 도구에 안전하게 보관하세요 IBM Key Protect for IBM Cloud, IBM Cloud® Secrets Manager 또는 HashiCorp Vault. 비밀 관리 도구 는 툴체인에 통합되어 Tekton 파이프라인의 비밀을 쉽게 참조할 수 있습니다.
- 이 튜토리얼에서는 IBM Cloud® Secrets Manager를 비밀 저장소로 사용합니다. 지역, 리소스 그룹, 서비스 이름 필드는 사용 가능한 선택 항목에 따라 자동으로 채워집니다. 드롭다운 표시기를 클릭하면 다른 선택 사항을 볼 수 있습니다.
- Secrets Manager 인스턴스 이름을 입력합니다.
- 드롭다운 목록에서 승인 유형 을 선택하십시오.
- 계속을 클릭합니다.
증거 스토리지
증거 저장소에는 DevSecOps CI 파이프라인에서 생성되는 모든 증거와 아티팩트가 저장됩니다.
- 다음 페이지에서 구성할 수 있는 모든 증거를 IBM Cloud Object Storage 버킷 슬라이더에 저장하려면 IBM Cloud Object Storage 버킷을 토글합니다.
- 기본 설정값을 채택하십시오.
- 계속을 클릭합니다.
Cloud Object Storage 버킷
규정 준수 증거 보관함 역할을 하려면 IBM Cloud Object Storage 인스턴스와 버킷이 있어야 합니다.
- Cloud Object Storage 인스턴스, 버킷 이름 및 Cloud Object Storage 엔드포인트 필드가 자동으로 채워집니다.
- 서비스 ID API 키를 입력합니다.
- 선호: 키 아이콘을 클릭하여 비밀 보관함에서 기존 키를 가져올 수 있습니다.
- 기존 키를 복사하여 붙여넣을 수 있습니다.
- 계속을 클릭합니다.
‘endpoint’ 필드는 선택 사항입니다. 툴체인 설정 중 또는 파이프라인 실행 중에 엔드포인트를 선택하거나 제공하는 것이 좋습니다.
배치
애플리케이션이 배포된 인벤토리 대상 및 Kubernetes 클러스터를 구성합니다:
-
기본 앱 이름은 ‘
hello-compliance-app’입니다. -
IBM Cloud API 키 를 입력하세요. API 키는 여러 작업에서 IBM Cloud CLI 도구와 연동하는 데 사용됩니다.
- 선호: 키 아이콘을 클릭하여 비밀 보관함에서 기존 키를 가져올 수 있습니다.
- 기존 키를 복사하여 붙여넣을 수 있습니다.
- 여기에서 ‘새로 만들기 (+) ’를 클릭하면 새 키를 생성할 수 있습니다.
새로 생성된 API 키는 즉시 비밀 보관소에 저장할 수 있습니다.
-
API 키가 유효하고 충분한 액세스 권한이 있는 경우, Container Registry, Container Registry 네임스페이스, 개발 클러스터 영역, 리소스 그룹, 클러스터 이름, 클러스터 네임스페이스가 자동으로 채워집니다. 사용자 환경에 맞게 이 필드들을 자유롭게 변경할 수 있습니다.
-
계속을 클릭합니다.
아티팩트 서명
아티팩트는 툴체인에 의해 빌드되고 인벤토리에 기록되며 프로덕션에 배포하기 전에 서명을 받아야 합니다. 파이프라인은 아티팩트 서명 기능을 제공하기 위해 기본 도구로 Skopeo를 사용합니다. 기존 GPG 키를 사용하거나 새 GPG 키 쌍을 작성할 수 있습니다.
- GnuPG 개인키를 입력합니다. 또는 NEW 를 클릭하여 새 GPG 키를 만들 수도 있습니다. 자세한 내용은 GPG 키 생성하기 를 참조하세요.
- 계속을 클릭합니다.
DevOps Insights
IBM Cloud DevOps Insights 가 툴체인에 포함되어 있습니다. 모든 배포 및 환경에서 모든 빌드에 대한 파이프라인 테스트 결과를 확인하세요.
- 기본 구성을 수락합니다.
- 계속을 클릭합니다.
선택적 도구
Slack
풀 리퀘스트 또는 CI 파이프라인 이벤트에 대한 알림을 받도록 Slack 를 구성하세요. 툴체인 생성 후 Slack 도구를 추가할 수도 있습니다.
- Slack 웹훅 을 입력하세요. 자세한 내용은 Slack 웹훅 를 참조하세요.
- 메시지를 게시할 슬랙 채널를 입력합니다.
- 슬랙 팀 이름를 입력합니다. 예를 들어, 팀 이름이 URL
https://team.slack.com인 경우, 팀 이름은team입니다. - 자동화된 Slack 알림에 대한 알림을 받을 이벤트를 선택합니다.
- 계속을 클릭합니다.
공통 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 상호작용에 대한 대상 환경을 설정할 수도 있습니다. 이 매개변수는 선택 사항으로, 인벤토리의 대상 환경 대신 사용됩니다.
DevOps Insights
툴체인에 사용할 DevOps Insights 인스턴스를 생성할 수 있습니다. 구성이 필요하지 않은 경우, CI 파이프라인은 도구 체인에 포함된 인사이트 인스턴스를 자동으로 사용합니다.
Delivery Pipeline Private Worker
툴체인에 의해 빌드되고 인벤토리에 기록된 아티팩트는 이미지를 프로덕션에 배포하기 전에 Garantir에서 제공하는 코드 서명 서비스( GaraSign, )를 사용하여 서명해야 합니다. GaraSign 아티팩트 서명을 사용하려면 TaaS 비공개 작업자 및 IBM CISO 서명 인증서가 있어야 합니다.
Delivery Pipeline 비공개 작업자 도구 통합은 배달 파이프라인 워크로드를 독립적으로 실행할 수 있는 하나 이상의 비공개 작업자와 연결합니다.
SonarQube
도구 체인을 위한 정적 코드 분석 도구로 SonarQube를 구성합니다. SonarQube에서는 소스 코드의 전체 상태와 품질의 개요을 제공하고 새 코드에서 발견된 문제를 강조표시합니다. 정적 코드 분석기는 다양한 프로그래밍 언어에서 null 포인터 참조, 논리 오류, 리소스 누수 등 발견하기 어려운 버그를 탐지합니다.
- 기본 구성을 적용합니다.
- 계속을 클릭합니다.
CI 도구 체인 작성
- 요약 페이지에서 작성을 클릭하십시오.
- 툴체인 생성을 기다립니다. 이 작업은 수행하는 데 몇 분 정도 걸립니다.
CI 도구 체인 탐색
이제 화면 캡처에 표시된 것처럼 두 개의 파이프라인으로 CD 툴체인이 만들어졌습니다. ci-pipeline 타일을 클릭하여 프로모션 파이프라인을 열고 실행합니다.
PR-CI 파이프라인 실행
ci-pr pipeline 를 시작하려면 애플리케이션 저장소에서 병합 요청을 생성해야 합니다.
-
CI 툴체인 페이지에서
pr pipeline타일을 클릭합니다. 기본적으로compliance-app-<timestamp>라는 이름으로 생성됩니다. -
마스터 브랜치에서 브랜치를 만듭니다.
-
애플리케이션에서 코드를 업데이트하거나 readme 파일을 추가하고 변경 사항을 저장합니다.
-
병합 요청을 제출하세요.
-
CI 툴체인 페이지에서 pr-pipeline 타일을 클릭하세요. 병합 요청을 생성하여
ci-pr pipeline가 트리거되었는지 확인합니다. -
ci-pr pipeline의 실행이 완료될 때까지 기다리십시오. 애플리케이션 리포지토리에 있는 해당 병합 요청은 PR 파이프라인의 모든 단계가 성공적으로 완료될 때까지Pending상태에 있습니다. -
PR 파이프라인 실행이 성공적으로 완료되면 파이프라인을 클릭하여 완료된 여러 단계를 탐색하고 페이지를 볼 수 있습니다. 병합 요청을 수정하고 다시 제출하려면 3단계부터 7단계까지 단계를 따르세요.
DevSecOps PR 파이프라인 성공
파이프라인의 작업 흐름 간소화
DevSecOps PR 파이프라인 작업 흐름에서 유틸리티 작업은 생략됩니다. 예를 들어, GitHub, 자격 증명 가져오기 등에 대한 상태 확인 업데이트 등이 있습니다. DevSecOps 세계에서 왼쪽으로 이동하는 것은 결함, 보안 취약성 등의 문제를 예방하고 발견하는 방법입니다. 또한 그림과 같이 소프트웨어 제공 프로세스 초기에 규정 준수 검사를 수행합니다.
- 코드/리포지토리에서 실행할 수 있고 빌드가 필요하지 않은 검사. 아티팩트는 가능한 한 빨리 실행하여 규정을 준수하지 않는 코드가 리포지토리의 마스터 브랜치에 병합되는 것을 방지해야 합니다. PR 파이프라인에서 증거는 수집되지 않습니다. 파이프라인의 목표는 규정 준수 확인을 가능한 한 왼쪽으로 이동하는 것입니다.
- 모든 검사는 파이프라인이 실행될 때 수행됩니다. 이전 검사가 실패하더라도 파이프라인은 다음 단계로 진행됩니다. 실행 과정에서 오류가 발생했는지 확인하려면, 파이프라인 평가기가 포함된 파이프라인의 마지막 단계를 확인해야 합니다.
- 긴급 수정 사항을 병합하려는 경우 규정 준수 확인을 우회하려는 경우. 병합 요청에 레이블을 추가하여 수정 사항을 표시합니다. CD 파이프라인을 실행할 때는 동일한 레이블을 지정해야 합니다.
PR 파이프라인 실행
다음 방법 중 하나를 사용하여 CI 파이프라인을 시작할 수 있습니다:
- 자동: PR 파이프라인 성공 후에 PR을 승인하고 마스터 분기에 병합하여 시작합니다.
- 수동으로: CI 파이프라인을 수동으로 실행하려면 배포 파이프라인 카드를 선택한 다음, ‘파이프라인 실행’을 클릭하고 ‘수동 트리거’를 선택합니다.
이 튜토리얼에서는 애플리케이션 저장소의 master 브랜치에 코드 변경 사항을 병합한 후 CI 파이프라인이 실행되었습니다.
- CI 툴체인 페이지에서 ci-pipeline 타일을 클릭합니다.
- 파이프라인 이름에 대해 실행를 클릭합니다. 파이프라인 실행이 실행 중인지 확인합니다. 파이프라인 실행이 완료될 때까지 기다리세요.
- CI 파이프라인 실행이 성공적으로 완료되면 파이프라인을 클릭하여 완료된 단계를 탐색하여 화면 캡처와 같이 페이지를 확인합니다.
CD 파이프라인 실행
이 문서에서는 애플리케이션 저장소의 master 브랜치에 코드 변경 사항을 병합한 후 CI 파이프라인이 실행되었습니다.
- CI 툴체인 페이지에서 ci-pipeline 타일을 클릭합니다.
- 관찰: pipeline-run이 실행 중입니다. pipeline-run이 완료될 때까지 기다리십시오.
CI 파이프라인 실행이 성공적으로 완료되면, 파이프라인 작업을 클릭하여 완료된 단계를 확인할 수 있습니다.
파이프라인의 작업 흐름 간소화
DevSecOps CI 파이프라인 작업 흐름에서 유틸리티 작업은 생략됩니다. 예를 들어, GitHub, 자격 증명 가져오기 등에 대한 상태 확인 업데이트 등이 있습니다. 초록색의 태스크가 증거를 출력하고 있습니다.
CI 파이프라인의 모든 준수성 검사에서 수집된 증거 자료는 툴체인 설정 시 지정된 증거 저장소(evidence-locker)로 전송됩니다. CI의 증거 자료는 raw/ci/<pipeline-run-id>/*.json 에 저장되어 있습니다.
증거가 툴체인 내의 DevOps Insights 인스턴스에 게시됩니다. 도구 체인에서 DevOps Insights 도구 카드를 클릭하여 탐색할 수 있습니다. 품질 대시보드 페이지에서 수집된 증거를 검토할 수 있습니다.
파이프라인 실행에 오류가 있는지 확인하려면, 파이프라인 평가기가 포함된 파이프라인의 마지막 단계를 확인해야 합니다.
실행 중인 애플리케이션 보기
CI 파이프라인이 성공적으로 실행되면, 샘플 애플리케이션이 Kubernetes 클러스터에 배포되며 dev 네임스페이스에서 실행됩니다.
URL 애플리케이션은 CI 파이프라인 실행의 deploy-dev 작업 내 run stage 단계 로그 하단에서 확인할 수 있습니다. URL 를 사용하여 애플리케이션이 실행 중인지 확인하세요.
파이프라인 구성
commit-id 텍스트 속성을 추가하려면 다음과 같이 하세요.
- 특성 추가를 클릭하십시오.
- 텍스트 특성을 선택하십시오.
commit-id 없이 수동으로 파이프라인을 트리거하는 경우, 파이프라인은 앱의 마스터 브랜치에서 최신 커밋 ID를 가져옵니다.
예
트리거 매개변수를 추가하려면 다음과 같이 하세요.
- 파이프라인 실행을 클릭하십시오.
- ‘수동 트리거’를 선택하세요.
- 실행을 클릭하십시오.