Oracle Cloud Infrastructure DevOps를 사용하여 지속적인 배포 파이프라인 구축
클라우드에서 애플리케이션을 효율적으로 실행하기 위해서는 소프트웨어를 신속하게 제공해야 합니다. Oracle Cloud Infrastructure(OCI) DevOps는 개발자에게 완벽한 지속적 배포 환경을 제공합니다. OCI DevOps에는 지속적인 소프트웨어 배포 프로세스(CD)를 OCI 플랫폼으로 자동화하는 파이프라인 배포가 포함됩니다(OKE(Container Engine for Kubernetes), 함수 및 컴퓨트 인스턴스).
파이프라인 배포를 통해 소프트웨어 릴리스를 자동화하면 개발자 생산성이 향상되고 더 자주 그리고 더 적은 오류로 기능을 릴리스할 수 있습니다. 이는 배포 중 다운타임을 방지하고 애플리케이션 업데이트로 인한 복잡성을 자동화하는 데 도움이 됩니다. OCI DevOps는 온-프레미스 또는 기타 클라우드에서 OCI로 워크로드를 마이그레이션하고 OCI에서 새로운 애플리케이션을 개발하는 고객 모두가 사용할 수 있습니다.
구조
이 참조 아키텍처에서 샘플 Hello World 애플리케이션은 OCI DevOps을 사용하여 배치됩니다. Hello World 애플리케이션은 이미 빌드되어 배포할 준비가 되었습니다. 이 애플리케이션은 OKE, Compute 인스턴스 및 Functions의 세 가지 다른 대상 환경에 배치됩니다. 프로세스를 간소화하기 위해 Terraform은 인프라 자동화에 사용됩니다.
다음 다이어그램은 이 참조 아키텍처를 보여줍니다.
dev-ops-deployment-pipeline.png 그림에 대한 설명
deployment-pipeline-devops-arch-oracle.zip
- 영역
OCI 지역은 가용성 도메인이라는 하나 이상의 데이터 센터를 포함하는 현지화된 지리적 영역입니다. 지역은 다른 지역에 독립적이며, 거리가 먼 나라 전체나 대륙을 구분할 수 있습니다.
아키텍처는 단일 영역을 사용합니다.
- DevOps project
DevOps 프로젝트는 CI/CD(지속적 통합 및 배포) 워크로드를 구현하는 데 필요한 리소스의 논리적 그룹입니다. DevOps 리소스는 아티팩트, 배포 파이프라인, 환경일 수 있습니다. DevOps 프로젝트를 사용하면 모든 DevOps 리소스에 대해 로깅, 모니터링 및 알림을 쉽게 활성화할 수 있습니다.
- 배치 파이프라인
배치 파이프라인은 환경에 아티팩트 집합을 전달하기 위해 충족해야 하는 요구사항을 보유합니다. 파이프라인에는 파이프라인의 구성 요소인 단계가 포함됩니다. 파이프라인에는 직렬 또는 병렬로 실행되는 단계가 있을 수 있으므로 소프트웨어 릴리스의 흐름과 논리를 제어할 수 있습니다.
- 배치 단계단계는 파이프라인 실행 중에 발생하는 개별 작업입니다. DevOps 배치 파이프라인에는 릴리스 프로세스에 사용할 다음과 같은 미리 정의된 단계 유형이 포함되어 있습니다.
- 롤링 배치: OKE, 함수 또는 인스턴스 그룹에 대한 증분 릴리스입니다.
- Wait: Wait N seconds
- 수동 승인: 승인이 제공된 경우 진행합니다. 승인이 거부되면 중지합니다.
- 함수 호출: 함수를 호출하여 사용자 정의 작업 및 통합을 수행하고 요청 매개변수의 아티팩트를 전달합니다.
- DevOps 아티팩트
DevOps 아티팩트는 애플리케이션을 구성하는 파일, 바이너리, 패키지, 매니페스트 또는 이미지에 대한 참조 또는 포인터입니다. 아티팩트를 생성할 때 실제 아티팩트의 소스 위치를 Oracle DevOps에 알려야 합니다. DevOps는 OCI 컨테이너 이미지 레지스트리 및 OCI 아티팩트 레지스트리 저장소를 지원합니다.
- 아티팩트 저장소
아티팩트 저장소는 유사한 아티팩트를 그룹화하기 위한 저장소를 생성하는 데 사용됩니다. 저장소가 생성되면 아티팩트를 업로드할 수 있습니다. 이러한 아티팩트는 대상 배치 환경으로 전달될 텍스트 파일, 바이너리 및 배치 매니페스트 모음입니다. 각 아티팩트에는 해당 경로로 구성된 이름이 있습니다. 버전. 경로는 아티팩트를 구성하는 문자열입니다.
- OCI 로깅 및 통지 서비스
OCI 로깅 서비스는 배치와 관련된 로그를 저장합니다. 배포 런타임 출력 및 배포의 최종 결과는 로그 항목으로 표시됩니다. OCI Notifications 서비스는 배포 프로젝트의 최신 상태를 확인하고 필요한 작업을 수행합니다. 예를 들어, 배치 파이프라인의 단계와 같은 중요한 이벤트가 승인 대기 중일 때 통지를 받습니다. 통지 메시지를 받으면 DevOps 배포 파이프라인으로 이동하여 단계를 승인할 수 있습니다.
- 배치 환경
환경은 아티팩트가 배치된 고객의 컴퓨팅 리소스 모음입니다. 환경은 기능, VM(컴퓨트 가상 머신) 또는 베어메탈 인스턴스 또는 OKE 클러스터일 수 있습니다.
- Oracle Kubernetes 클러스터(OKE): Oracle Container Engine for Kubernetes는 확장성이 뛰어난 완전 관리형 서비스로, 컨테이너화된 애플리케이션을 클라우드에 배포하는 데 사용할 수 있습니다.
- 컴퓨트 인스턴스: OCI 컴퓨트 서비스를 사용하면 클라우드에서 컴퓨트 호스트를 프로비전하고 관리할 수 있습니다. CPU, 메모리, 네트워크 대역폭, 스토리지에 대한 리소스 요구사항을 충족하는 구성으로 컴퓨트 인스턴스를 시작할 수 있습니다.
- 함수: Oracle Functions는 전담 관리되며 멀티테넌트이며, 확장성이 뛰어난 온디맨드 FaaS(Functions-as-a-Service) 플랫폼입니다. 이 솔루션은 엔터프라이즈급 OCI를 기반으로 하며 Fn Project 오픈 소스 엔진을 기반으로 합니다.
권장 사항
- 컴퓨트 구성
이 아키텍처는 OKE 클러스터 노드에서 컴퓨트 호스트를 호스트하기 위해 최소 리소스와 함께 E3 또는 E4 가변 구성의 Oracle Linux OS 이미지를 사용합니다. 응용 프로그램에 더 많은 메모리 또는 코어가 필요한 경우 다른 구성을 선택할 수 있습니다.
- VCN
VCN을 생성할 때 VCN의 서브넷에 연결하려는 리소스 수를 기반으로 필요한 CIDR 블록 수 및 각 블록의 크기를 확인하십시오. 표준 전용 IP 주소 공간 내에 있는 CIDR 블록을 사용합니다.
VCN을 생성한 후에는 해당 CIDR 블록을 변경, 추가 및 제거할 수 있습니다.
이 아키텍처는 공용 VCN을 사용하여 Oracle Container Engine for Kubernetes를 호스팅합니다. 전용 VCN을 사용할 수도 있습니다. 이 경우 NAT 게이트웨이를 사용하여 공용 인터넷을 통해 클러스터 액세스 권한을 부여합니다.
- OKE
이 구조는 OKE 클러스터에 대상 환경 중 하나로 배치합니다. 작업자 노드는 E3 또는 E4 Oracle Linux OS에 배치됩니다. 이 아키텍처는 클러스터에서 세 개의 작업자 노드를 사용하지만 각 클러스터에서 최대 1,000개의 노드를 생성할 수 있습니다.
- 함수
OCI 함수에 배포할 아키텍처를 선택하면 테넌시에 새 Functions 애플리케이션 및 기능이 생성됩니다.
- 인스턴스 그룹
인스턴스 그룹에 배치할 아키텍처를 선택하면 테넌시에 생성된 원하는 구성의 새 컴퓨트 인스턴스가 제공됩니다.
- 컨테이너 이미지 레지스트리
이 아키텍처는 내부 사용을 위해 레지스트리를 전용 Docker 레지스트리로 배포합니다. Docker 이미지는 레지스트리에 푸시되고 레지스트리에서 풀링됩니다. 레지스트리를 공용 Docker 레지스트리로 사용하여 인터넷 액세스 및 적합한 URL에 대한 지식을 가진 모든 사용자가 Oracle Cloud의 공용 저장소에서 이미지를 가져올 수 있습니다.
- 아티팩트 레지스트리
이 구조는 인스턴스 그룹 OKE 및 함수 배치에서 사용되는 소프트웨어 및 구성에 대한 아티팩트를 생성합니다. 이 아키텍처는 내부 사용을 위해 아티팩트 레지스트리 저장소를 생성합니다. 소프트웨어 바이너리, 텍스트 및 배치 구성은 아티팩트 레지스트리 저장소로 업로드되고 다운로드됩니다.
고려 사항
이 참조 아키텍처를 배포할 때는 다음 사항을 고려하십시오.
- DevOps 지원 배포
DevOps는 OKE, Compute 호스트 및 함수에 대한 배치를 지원합니다. 이 구조는 OKE 클러스터에 배치됩니다. 요구 사항에 따라 다른 끝점에 배치해 보십시오.
- Linux 지원
컴퓨트 인스턴스에 대한 인스턴스 그룹 배포에 대해서는 Linux 호스트만 지원됩니다.
- 배치된 아티팩트
DevOps로 배포할 아티팩트는 OCI 아티팩트 레지스트리 또는 컨테이너 이미지 레지스트리 저장소에 있어야 합니다.
- 응용 프로그램 그룹화
모범 사례로 각 애플리케이션 및 모든 마이크로서비스를 단일 프로젝트로 그룹화합니다.
배치
이 참조 아키텍처에 대한 Terraform 코드는 Oracle Cloud Infrastructure Resource Manager에서 샘플 스택으로 사용할 수 있습니다. 또한 GitHub에서 코드를 다운로드하여 특정 요구 사항에 맞게 사용자 정의할 수 있습니다.
- Oracle Cloud Infrastructure Resource Manager의 샘플 스택을 사용하여 배포합니다.
- 리소스 관리자에 액세스하려면 특정 사용 사례에 해당하는 배치 단추를 누릅니다.
Oracle Container Engine for Kubernetes 인스턴스 그룹 함수 아직 사인인하지 않은 경우 테넌시 및 사용자 인증서를 입력합니다.
- 스택을 배치할 지역을 선택합니다.
- 화면 프롬프트 및 지침에 따라 스택을 만듭니다.
- 스택을 생성한 후 Terraform 작업을 누르고 계획을 선택합니다.
- 작업이 완료될 때까지 기다린 다음 계획을 검토합니다.
변경하려면 [스택 세부정보] 페이지로 돌아가서 스택 편집을 누르고 필요한 변경을 수행합니다. 그런 다음 계획 작업을 다시 실행합니다.
- 추가 변경이 필요하지 않은 경우 스택 세부정보 페이지로 돌아가서 Terraform 작업을 누르고 적용을 선택합니다.
- 리소스 관리자에 액세스하려면 특정 사용 사례에 해당하는 배치 단추를 누릅니다.
- GitHub에서 Terraform 코드를 사용하여 배포합니다.
- GitHub로 이동합니다.
- 저장소를 로컬 컴퓨터에 복제하거나 다운로드합니다.
README
문서의 지침을 따릅니다.