Oracle Cloud Infrastructure DevOps 서비스 및 Oracle Cloud Infrastructure 기능을 사용하여 CI/CD 파이프라인 구축

클라우드에서 애플리케이션을 효율적으로 실행하기 위해서는 소프트웨어를 신속하게 제공해야 합니다. Oracle DevOps 서비스는 개발자를 위한 CI/CD(지속적인 통합 및 배포) 플랫폼을 제공합니다. DevOps 서비스를 사용하면 Oracle Cloud에서 소프트웨어 및 애플리케이션을 쉽게 구축, 테스트 및 배포할 수 있습니다. DevOps 구축 및 배포 파이프라인을 통해 변화 중심의 오류를 줄이고 고객이 릴리스 구축 및 배포에 소비하는 시간을 줄일 수 있습니다.

또한 코드는 코드를 저장하기 위한 전용 Git 저장소를 제공하며 외부 코드 저장소에 대한 접속을 지원합니다. 업무를 온프레미스 또는 기타 클라우드에서 OCI를 기반으로 새 애플리케이션을 개발하거나 Oracle Cloud Infrastructure(OCI)로 마이그레이션하건 관계 없이 DevOps 서비스를 사용하여 소프트웨어 제공 라이프사이클을 간소화할 수 있습니다.

구조

이 참조 아키텍처에서는 OCI DevOps 및 OCI 함수 서비스를 사용하여 python 응용 프로그램을 구축하고 배치합니다.

응용 프로그램 소스 코드는 DevOps 코드 저장소에서 호스팅됩니다. 일반 유저가 코드를 코드 repository에 커밋합니다. 코드 저장소에 대한 새 커밋은 빌드 파이프라인 시작을 트리거합니다. 빌드 파이프라인은 사용자 정의 플로우를 따라 OCI 함수 서비스에 배치할 함수 아티팩트를 작성합니다. 빌드의 출력은 Docker 이미지로 컨테이너 레지스트리에 저장됩니다. 그런 다음 배치 파이프라인은 컨테이너 레지스트리의 내장 이미지를 사용하여 OCI Functions 환경에 배치합니다. 다음 구조 다이어그램은 Dockerfile을 사용하여 기본 이미지와 사용자정의 이미지를 사용하여 응용 프로그램을 작성하고 배치하는 방법을 보여줍니다.

이 예제 CI/CD 워크플로의 설정을 간소화하기 위해 이 샘플 애플리케이션은 Terraform을 사용하여 DevOps 리소스의 생성 및 구성을 자동화합니다.

다음 다이어그램은 이 참조 아키텍처를 보여줍니다.

다음은 cicd-pipe-devops-functions-arch.png에 대한 설명입니다.
그림 cicd-pipe-devops-functions-arch.png에 대한 설명

cicd-pipe-devops-functions-arch-oracle.zip

이 구조에는 다음 구성요소가 있습니다.
  • 영역

    OCI 지역은 가용성 도메인이라는 하나 이상의 데이터 센터를 포함하는 현지화된 지리적 영역입니다. 지역은 다른 지역에 독립적이며, 거리가 먼 나라 전체나 대륙을 구분할 수 있습니다. 아키텍처는 단일 영역을 사용합니다.

  • DevOps project

    CI/CD 워크플로우를 구현하는 데 필요한 DevOps 리소스의 논리적 그룹입니다. DevOps 리소스는 아티팩트, 파이프라인 구축, 배포 파이프라인, 외부 연결, 트리거, 환경일 수 있습니다. DevOps 프로젝트를 사용하면 모든 DevOps 리소스에 대해 로깅, 모니터링 및 알림을 쉽게 활성화할 수 있습니다.

  • 파이프라인 빌드

    빌드 파이프라인은 소스 코드 저장소에서 커밋 ID를 가져와서 해당 소스 코드를 사용하여 빌드 지침을 실행합니다. 파이프라인 구축은 소프트웨어 아티팩트 작성, 테스트 및 컴파일, OCI Repository로 아티팩트 전달, 선택적으로 배치 트리거 등 빌드 프로세스에 대한 단계 집합을 정의합니다. 빌드 사양 파일에서 빌드 실행의 흐름 및 지침을 정의합니다.

  • 코드 저장소

    DevOps 서비스에서 호스트하는 전용 Git 저장소입니다. DevOps Code Repository를 사용하여 소스 코드를 저장, 관리, 개발할 수 있습니다.

  • 배치 파이프라인

    아티팩트 세트를 대상 환경에 전달하고 배포하는 일련의 단계입니다. 소프트웨어 릴리스의 흐름과 논리는 직렬 또는 병렬로 실행할 수 있는 단계를 정의하여 제어할 수 있습니다.

  • 배치 단계

    단계는 파이프라인 실행 중에 발생하는 개별 작업입니다. DevOps 배치 파이프라인에는 릴리스 프로세스에 사용할 다음과 같은 미리 정의된 단계 유형이 포함되어 있습니다.

    • 롤링 배치: Oracle Container Engine for Kubernetes(OKE), 함수 또는 인스턴스 그룹에 대한 증분 릴리스
    • Wait: Wait N seconds
    • 수동 승인: 승인이 제공된 경우 진행합니다. 승인이 거부되면 중지합니다.
    • 호출 함수: 함수를 호출하여 사용자정의 작업 또는 통합을 수행하고 요청 매개변수의 아티팩트를 전달합니다.
  • DevOps 아티팩트

    DevOps 아티팩트는 애플리케이션을 구성하는 파일, 바이너리, 패키지, 매니페스트 또는 이미지에 대한 참조 또는 포인터입니다. 아티팩트를 생성할 때 실제 아티팩트의 소스 위치를 Oracle DevOps에 알립니다. DevOps는 OCI 컨테이너 이미지 레지스트리 및 OCI 아티팩트 레지스트리 저장소를 지원합니다.

  • 아티팩트 저장소

    아티팩트 저장소는 유사한 아티팩트를 그룹화하기 위한 저장소를 생성합니다. 저장소가 생성되면 아티팩트를 업로드할 수 있습니다. 이러한 아티팩트는 대상 배치 환경으로 전달되는 텍스트 파일, 바이너리 및 배치 매니페스트의 모음입니다. 각 아티팩트에는 해당 경로로 구성된 이름이 있습니다. 버전. 경로는 아티팩트를 구성하는 문자열입니다.

  • OCI 로깅 및 통지 서비스

    OCI 로깅 서비스는 배치와 관련된 로그를 저장합니다. 배포 런타임 출력 및 배포의 최종 결과는 로그 항목으로 표시됩니다. OCI Notifications 서비스는 배포 프로젝트의 최신 상태를 확인하고 필요한 작업을 수행합니다. 예를 들어, 배치 파이프라인의 단계와 같은 중요한 이벤트가 승인 대기 중일 때 통지를 받습니다. 통지 메시지를 받으면 DevOps 배포 파이프라인으로 이동하여 단계를 승인할 수 있습니다.

  • 배치 환경

    환경은 아티팩트가 배치된 고객의 컴퓨팅 리소스 모음입니다. 환경은 기능, VM(컴퓨트 가상 머신) 또는 베어메탈 인스턴스 또는 OKE 클러스터일 수 있습니다.

    • Oracle Kubernetes 클러스터: OCI Container Engine for Kubernetes(OKE)는 확장성이 뛰어난 완전 관리형 고가용성 서비스로서 컨테이너화 애플리케이션을 클라우드에 배포하는 데 사용할 수 있습니다.
    • 컴퓨트 인스턴스: OCI 컴퓨트 서비스를 사용하면 클라우드에서 컴퓨트 호스트를 프로비전하고 관리할 수 있습니다. CPU, 메모리, 네트워크 대역폭, 스토리지에 대한 리소스 요구사항을 충족하는 구성으로 컴퓨트 인스턴스를 배포할 수 있습니다.
    • 함수: Oracle Functions는 완전하게 관리되는 멀티테넌트로서 확장성이 뛰어난 온디맨드 방식의 FaaS(Functional-as-a-Service) 플랫폼입니다. 이 서비스는 엔터프라이즈급 Oracle Cloud Infrastructure를 기반으로 구축되었으며 Fn Project 오픈 소스 엔진을 기반으로 합니다.
    환경은 배치 파이프라인의 영역과 다른 OCI 지역에 있을 수 있습니다. 이렇게 분리하면 개발자가 동일한 배치 파이프라인을 사용하여 여러 OCI 지역에 배포할 수 있습니다.

권장 사항

다음 권장 사항을 시작점으로 사용하지만 요구 사항이 여기에 설명된 구조와 다를 수 있습니다.
  • 기능에 대한 메모리 할당 및 시간 초과
    다음 설정에 따라 func.yaml 파일을 업데이트하여 구성을 변경할 수 있습니다.
  • VCN(가상 클라우드 네트워크)

    VCN을 생성할 때 VCN의 서브넷에 연결하려는 리소스 수를 기반으로 필요한 CIDR 블록 수 및 각 블록의 크기를 확인하십시오. 표준 전용 IP 주소 공간 내에 있는 CIDR 블록을 사용합니다.

    VCN을 생성한 후에는 해당 CIDR 블록을 변경, 추가 및 제거할 수 있습니다.

    이 아키텍처는 OKE를 호스트하기 위해 공용 VCN을 사용합니다. 전용 VCN을 사용할 수도 있습니다. 이 경우 NAT 게이트웨이를 사용하여 공용 인터넷을 통해 클러스터 액세스 권한을 부여합니다.

  • 컨테이너 이미지 레지스트리

    이 아키텍처는 내부 사용을 위해 레지스트리를 전용 Docker 레지스트리로 배포합니다. Docker 이미지는 레지스트리에 푸시되고 레지스트리에서 풀링됩니다. 레지스트리를 공용 Docker 레지스트리로 사용하여 인터넷 액세스 및 적합한 URL에 대한 지식을 가진 모든 사용자가 OCI의 공용 저장소에서 이미지를 가져올 수 있습니다.

고려 사항

OCI DevOps 및 OCI 함수 서비스를 사용하여 Python 애플리케이션을 구축하고 배포할 경우 다음을 고려하십시오.

  • DevOps는 OKE, Compute 호스트 및 함수에 대한 배치를 지원합니다.
  • 인스턴스 그룹을 컴퓨트에 배치할 때 Linux 호스트만 지원됩니다.
  • DevOps와 함께 배치된 아티팩트는 OCI 아티팩트 레지스트리 또는 컨테이너 이미지 레지스트리 저장소에 있어야 합니다.
  • 각 애플리케이션과 모든 마이크로서비스를 단일 프로젝트로 그룹화하는 것이 가장 좋습니다.

배치

이 참조 아키텍처를 배포하는 데 필요한 코드는 GitHub에서 제공됩니다. 한 번의 클릭으로 코드를 Oracle Cloud Infrastructure Resource Manager로 가져와서 스택을 생성하고 배포할 수 있습니다. 또는 GitHub의 코드를 컴퓨터에 다운로드하고, 코드를 사용자 정의하고, Terraform CLI를 사용하여 아키텍처를 배포합니다.

  • Oracle Cloud Infrastructure Resource Manager의 샘플 스택을 사용하여 배포합니다.
    1. Oracle Cloud에 배포을 누릅니다.

      아직 사인인하지 않은 경우 테넌시 및 사용자 인증서를 입력합니다.

    2. 스택을 배치할 지역을 선택합니다.
    3. 화면 프롬프트 및 지침에 따라 스택을 만듭니다.
    4. 스택을 생성한 후 Terraform 작업을 누르고 계획을 선택합니다.
    5. 작업이 완료될 때까지 기다린 다음 계획을 검토합니다.

      변경하려면 [스택 세부정보] 페이지로 돌아가서 스택 편집을 누르고 필요한 변경을 수행합니다. 그런 다음 계획 작업을 다시 실행합니다.

    6. 추가 변경이 필요하지 않은 경우 스택 세부정보 페이지로 돌아가서 Terraform 작업을 누르고 적용을 선택합니다.
  • GitHub에서 Terraform 코드를 사용하여 배포합니다.
    1. GitHub로 이동합니다.
    2. 저장소를 로컬 컴퓨터에 복제하거나 다운로드합니다.
    3. README 문서의 지침을 따릅니다.

추가 탐색

Oracle DevOps 서비스에 대한 자세한 내용은 다음 리소스를 참조하십시오.

감사의 글

  • 작성자: Rahul M R
  • 기여자: Lukasz Feldman