마스터/에이전트 모드로 Jenkins 배치
구조
이 참조 아키텍처는 Jenkins Oracle Cloud Infrastructure Compute 플러그인을 사용하여 컨트롤러/에이전트 모드로 Jenkins를 배포하는 방법을 보여줍니다. Jenkins 컨트롤러 인스턴스에 설치되면 플러그인을 통해 Oracle Cloud Infrastructure 내에서 필요에 따라 에이전트 인스턴스를 생성하고 빌드 작업이 완료된 후 자동으로 인스턴스 또는 무료 리소스를 제거할 수 있습니다.
이 구조는 하나의 컨트롤러 인스턴스와 두 개의 에이전트 인스턴스를 배치 시작점으로 포함합니다. 필요에 따라 에이전트 인스턴스 수 또는 컨트롤러 인스턴스의 크기를 조정할 수 있습니다. Jenkins 컨트롤러 인스턴스는 Oracle Cloud Infrastructure 플러그인 코드와 함께 설치해야 합니다.
이 아키텍처는 하나의 가용성 도메인과 지역별 서브넷이 있는 지역을 사용합니다. 여러 가용성 도메인이 있는 영역에서 동일한 참조 구조를 사용할 수 있습니다. 가용성 도메인 수에 관계없이 배포에 지역별 서브넷을 사용하는 것이 좋습니다.
이 아키텍처에는 인터넷에 대한 보안 액세스를 제공하는 로드 밸런서 및 NAT 게이트웨이도 포함되어 있습니다.
다음 다이어그램은 이 참조 아키텍처를 보여 줍니다.

그림 jenkins-oci.png에 대한 설명
이 아키텍처 대신 Oracle Container Engine for Kubernetes(OKE)를 사용할 수 있습니다. 이 아키텍처는 OKE보다 설정하는 것이 더 간단하지만 사용 중인 에이전트 수를 확장할 때 더 많은 유연성을 제공합니다.
아키텍처에는 다음과 같은 구성 요소가 있습니다:
- Jenkins 컨트롤러 인스턴스
이 가상 컴퓨트 인스턴스는 컨트롤러 노드로 작동합니다. 에이전트 인스턴스(오프라인 또는 온라인)의 상태를 모니터하고 에이전트로부터 작업 결과 응답을 수신합니다.
- Jenkins 에이전트 인스턴스
이러한 가상 컴퓨트 인스턴스는 에이전트 노드 역할을 합니다. 컨트롤러 노드는 필요에 따라 컨트롤러 노드를 만들고 컨트롤러 노드의 지시대로 모든 작업을 수행합니다.
- 지역
Oracle Cloud Infrastructure 지역은 가용성 도메인이라는 하나 이상의 데이터 센터를 포함하는 지역화된 지역입니다. 지역은 다른 지역과 독립적이며 방대한 거리는 국가 또는 대륙에서 분리할 수 있습니다.
- VCN(가상 클라우드 네트워크) 및 서브넷
모든 컴퓨트 인스턴스는 서브넷으로 분할할 수 있는 VCN에 배치됩니다.
- 가용성 도메인
가용성 도메인은 영역 내의 독립적인 독립형 데이터 센터입니다. 각 가용성 도메인의 물리적 리소스는 결함 허용 한도를 제공하는 다른 가용성 도메인의 리소스와 격리됩니다. 가용성 도메인은 전원, 냉각 또는 내부 가용성 도메인 네트워크와 같은 인프라를 공유하지 않습니다. 따라서 한 가용성 도메인의 실패는 영역의 다른 가용성 도메인에 영향을 주지 않을 수 있습니다.
- 결함 도메인
결함 도메인은 가용성 도메인 내에서 하드웨어와 기반구조의 그룹화입니다. 각 가용성 도메인에는 독립적인 전원 및 하드웨어가 있는 결함 도메인이 세 개 있습니다. 여러 결함 도메인에 리소스를 배포할 때 응용 프로그램은 결함 도메인 내에서 물리적 서버 오류, 시스템 유지 관리 및 전원 오류를 허용할 수 있습니다.
- 로드 밸런서
로드 밸런서는 유입 트래픽을 Jenkins 컨트롤러 노드로 분산하고 컨트롤러 노드에 접근하는 사용자에게 인터넷 접근을 제공합니다. 100Mbps 로드 밸런서는 주로 Jenkins 컨트롤러에 연결하는 데 사용되며 유저에게 다시 전송되는 트래픽은 많지 않으므로 사용하는 것이 좋습니다.
- NAT 게이트웨이
NAT(Network Address Translation) 게이트웨이는 NAT 서비스를 제공합니다. 게이트웨이 크기를 선택할 필요가 없습니다.
- Bastion 호스트
배스천 호스트는 클라우드 외부에서 토폴로지에 대한 보안 제어 시작점 역할을 하는 컴퓨트 인스턴스입니다. 배스천 호스트는 일반적으로 DMZ(Demilitarized Zone)에서 프로비저닝됩니다. 이를 통해 클라우드 외부에서 직접 액세스할 수 없는 개인 네트워크에 중요한 리소스를 배치하여 보호할 수 있습니다. 토폴로지에는 정기적으로 모니터하고 감사할 수 있는 알려진 단일 시작점이 있습니다. 따라서 액세스 권한을 손상시키지 않으면서 토폴로지의 보다 중요한 구성 요소가 노출되지 않도록 할 수 있습니다.
- 보안 목록
각 서브넷에 대해 서브넷에서 허용되어야 하는 트래픽의 소스, 대상 및 유형을 지정하는 보안 규칙을 생성할 수 있습니다.
- 경로 테이블
가상 라우트 테이블에는 일반적으로 게이트웨이를 통해 서브넷에서 VCN 외부의 대상으로 트래픽을 라우팅하는 규칙이 포함됩니다.
권장 사항
요구 사항은 여기에 설명된 아키텍처와 다를 수 있습니다. 다음 권장 사항을 시작점으로 사용하십시오.
- 컴퓨트 구성(Jenkins 컨트롤러)
이 구조는 Jenkins 컨트롤러 노드에 두 개의 코어 VM(가상 머신) 구성을 사용합니다. 컨트롤러 노드는 작업을 분배하고 에이전트 노드 결과를 수집하며 가용성을 위해 에이전트 노드를 모니터합니다.
- 컴퓨트 구성(Jenkins 에이전트)
이 아키텍처는 Jenkins 에이전트 노드에 네 개의 코어 VM 구성을 사용합니다. 에이전트에 대한 CPU가 컨트롤러 노드에 대한 CPU보다 높은지 확인합니다.
- 컴퓨트 구성(배스천 호스트)
배스천 호스트는 전용 서브넷의 노드에 액세스하는 데 사용됩니다. VM.Standard.E2.1 또는 VM.Standard.E2.2 구성을 사용하는 것이 좋습니다.
- VCN
VCN를 생성할 때 VCN의 서브넷에 연결할 리소스 수에 따라 필요한 CIDR 블록 수 및 각 블록 크기를 결정합니다. 표준 전용 IP 주소 공간 내에 있는 CIDR 블록을 사용합니다.
전용 접속을 설정하려는 다른 네트워크(Oracle Cloud Infrastructure, 온프레미스 데이터 센터 또는 다른 클라우드 제공자)와 겹치지 않는 CIDR 블록을 선택합니다.
VCN를 생성한 후 CIDR 블록을 변경, 추가 및 제거할 수 있습니다.
서브넷을 설계할 때 트래픽 흐름 및 보안 요구사항을 고려하십시오. 특정 계층 또는 역할 내의 모든 리소스를 동일한 서브넷에 연결합니다. 이 서브넷은 보안 경계 역할을 할 수 있습니다.
지역별 서브넷을 사용합니다.
- 보안 목록
보안 목록을 사용하여 전체 서브넷에 적용되는 수신 및 송신 규칙을 정의하십시오.
이 아키텍처는 전체 전용 서브넷에 대해 ICMP를 내부적으로 허용합니다.
고려 사항
- 성능
최상의 성능을 얻으려면 Jenkins 컨트롤러 노드에 충분한 코어 및 메모리가 있는지 확인하십시오. 에이전트 노드에서 실행되는 빌드 또는 기타 작업에 따라 충분한 코어 및 메모리가 있는 에이전트 노드를 생성합니다.
- 가용성
Jenkins 컨트롤러 노드는 에이전트 노드의 가용성을 모니터하고 필요에 따라 새 노드를 생성합니다. 여러 가용성 도메인이 있는 영역에서 서로 다른 가용성 도메인의 에이전트 노드에 대한 배치 템플리트(Jenkins 컨트롤러)를 생성할 수 있습니다.
- 비용
예상 작업 로드 배치에 따라 컨트롤러 및 에이전트 노드 모두에서 CPU 크기를 조정합니다. 콘솔에서 노드 구성을 변경할 수 있으므로 더 작은 CPU 수(권장 사항: 2)로 시작하여 필요에 따라 확장할 수 있습니다. 컨트롤러 노드에서 인스턴스 템플리트를 사용하여 에이전트 노드의 구성을 지정합니다.
- 모니터링 및 경고
필요에 따라 VM 구성을 확장하거나 축소할 수 있도록 컨트롤러 및 에이전트 노드에 대해 CPU 및 메모리 사용량에 대한 모니터링 및 경보를 설정합니다.
배치
이 참조 구조에 대한 Terraform 코드는 GitHub에서 사용할 수 있습니다. 한 번의 클릭으로 코드를 Oracle Cloud Infrastructure Resource Manager로 가져와서 스택을 생성하고 배치할 수 있습니다. 또는 Terraform CLI를 사용하여 GitHub에서 컴퓨터로 코드를 다운로드하고, 코드를 사용자정의하고, 구조를 배치할 수 있습니다.
- Oracle Cloud Infrastructure Resource Manager를 사용하여 배치:
을 누릅니다.
아직 사인인하지 않은 경우 테넌시 및 사용자 인증서를 입력합니다.
- 조건 및 조항을 검토하고 수락합니다.
- 스택을 배치할 영역을 선택합니다.
- 화면의 프롬프트 및 지침에 따라 스택을 만듭니다.
- 스택을 생성한 후 Terraform 작업 을 누르고 계획 을 선택합니다.
- 작업이 완료될 때까지 기다렸다가 계획을 검토합니다.
내용을 변경하려면 스택 세부 정보 페이지로 돌아가서 스택 편집 을 누르고 필요한 사항을 변경합니다. 그런 다음 계획 작업을 다시 실행합니다.
- 더 이상 변경할 필요가 없는 경우 스택 세부 정보 페이지로 돌아가서 Terraform 작업 을 누르고 적용 을 선택합니다.
- Terraform CLI를 사용하여 배치합니다:
- GitHub로 이동하십시오.
- 코드를 로컬 컴퓨터에 다운로드하거나 복제합니다.
- README의 지침을 따릅니다.