OpenStack

OpenStack Contribution 하기

frontheadlock 2026. 4. 21. 09:46
반응형

 

OpenStack이란?

 

오픈스택 (OpenStack)은 클라우드 인프라 구축을 위한 오픈소스 플랫폼으로,

대규모 데이터센터에서 가상 머신과 컨테이너를 효율적으로 관리할 수 있도록 지원합니다.

 

컴퓨팅(Nova), 스토리지(Swift, Cinder), 네트워크(Neturon) 등의 다양한 컴포넌트로 구성되며,

확장성과 유연성이 뛰어나 퍼블릭, 프라이빗, 하이브리드 클라우드 환경에서 널리 사용됩니다.

 

Nova : 가상 머신과 컴퓨트 자원 관리
Neutron : 네트워크 관리
Cinder : 블록 스토리지 관리
Swift : 오브젝트 스토리지 관리
Keystone : 인증 서비스
Glance: 이미지 관리

 

OpenStack Contribution을 위한 과정

 

OpenStack에 처음 기여하려고 한다면, 

GitHub 와는 다른 기여방식에 당황할 수 있습니다.

 

GitHub의 경우 일반적으로 fork -> branch -> commit -> push -> PR의 흐름을 따릅니다.

 

하지만 OpenStack은 이와 다르게 동작합니다.

OpenStack의 코드리뷰는 Gerrit을 통해 진행되고,

Zuul에서 CI를 거쳐 OpenDev에 올라간 뒤 GitHub에 mirror 형태로 반영됩니다.

 

OpenInfra Community에서 사용하는 계정 종류

 

1. ubuntu one

 

  • Gerrit / Launchpad에 로그인하는 계정
  • OpenID를 이용해 개발활동과 관련된 모든 곳에 사용

2. openinfra.org

 

  • 오픈인프라 재단 홈페이지 계정

 

Gerrit 회원가입 과정

 

1. Ubuntu One 로그인

 

https://login.ubuntu.com/

 

계정 로그인

 

2. Gerrit 로그인

 

https://review.opendev.org/

 

계정 로그인

 

3. username 설정

username은 변경이 안되니 유의미한 네임으로..!

 

 

4. Gerrit 이용하기 위한 ssh key 생성

ssh-keygen -t rsa -b 4096 -C "gmpark007@gmail.com"

// OpenStack 전용 키 생성
ssh-keygen -t ed25519 -C "your_email@example.com" -f ~/.ssh/id_openstack_ed25519


5. SSH Key 세팅

 

~/.ssh/ 폴더 내 config 파일 생성 해 Gerrit 접속 정보 추가

nano ~/.ssh/config 

Host review opendev.org review
    HostName review.opendev.org
    Port 29418
    User FrontHeadlock
    IdentityFile ~/.ssh/id_rsa

 

 

6. id_rsa.pub의 내용을 복사해, gerrit의 New SSH Key 항목에 복사해 추가

 

~/.ssh에 저장된 id_rsa의 공개키를 cat 명령어로 확인해 해당 내용을 복사해 추가합니다.

 

7. git review 세팅 

 

OpenStack에서는 Gerrit에 패치를 올릴 때 git review 명령어를 사용합니다.

 

// git review 설치 

brew install git-review

//git review 설치 후 연습용 프로젝트인 sandbox clone
git clone https://opendev.org/opendev/sandbox.git

//git config 설정
cd sandbox
git config --global -add gitreview.username "FrontHeadlock"
git config --global -add gitreview.email "gmapark007@gmail.com"
git config --global core.editor vim

//clone 받은 디렉토리에 gerrit 설정 적용
git review -s

 

커밋 규칙

 

오픈 스택의 경우 커밋 규칙이 비교적 엄격합니다.

 

https://docs.openstack.org/contributors/id/common/git.html#commit-messages

 

커밋과 관련하여 절차를 문서화해놓았으며, 이를 준수하여 커밋 메시지를 작성해야 합니다.

커밋 시 각 줄에 대한 공백도 철저하게 지켜 작성해야합니다.

 

<Short Summary Line (under 50chars)>

<Optional Detailed Explanation (wrap at 72chars)>

Closes-Bug: #123456
Change-Id: Iabc123... (auto-generated by Gerrit) 

 

커밋 연습해보기

OpenStack은 실제 프로젝트에 바로 패치를 올리기 전에,

sandbox 프로젝트를 통해 Gerrit Workflow를 연습할 수 있도록 하고 있습니다.

 

https://bugs.launchpad.net/openstack-dev-sandbox

 

 

먼저 해당 사이트에서 Report a bug 탭을 통해 일종의 이슈를 생성합니다.

 

 

이후 이슈를 생성하면 summary 하단에 Bug#214880과 같은 리포트 넘버가 부여됩니다.

 

 

먼저, 간단한 커밋용 파일을 작성해봅니다.

 

 

커밋을 시도하면 다음과 같이 커밋 메시지를 작성해야합니다.

이때, 오픈스택의 커밋 규칙에 따라 작성하면 됩니다.

 

앞서, 생성한 이슈 넘버를 해당 커밋의 버그 처리 용도에 맞춰 작성하면 됩니다.

이때, Signed-off-by를 통해 코드 저작자가 명시됩니다.

 

 

이후 git review 를 통해 코드를 올리면, 아래의 remote 원격지 주소를 통해 본인의 코드 변경 이력에 대한 평가를 받을 수 있습니다.

 

GitHub과 Gerrit의 가장 큰 차이는 기존 패치에 새로운 내용을 반영하는 방식입니다.

GitHub는 PR을 보낸 브랜치에 새로운 커밋을 생성하고 푸시하지만,

Gerrit의 경우패치를 보낸 commit을 계속 재활용하여 커밋 내용을 변경하고, git review로 패치를 전송합니다.

 

리뷰에 대해 커밋을 지우고 사용하는 것이 아닌 --amend 옵션을 통해 커밋을 수정해 사용하게 됩니다.

 

 

https://review.opendev.org/c/opendev/sandbox/+/985389

 

 

이와 같은 작업을 거쳐,

최종적으로 OpenDev에 코드를 올릴 수 있습니다.

 

OpenStack 코드를 보면 GitHub에도 저장소가 존재합니다.

 

하지만 OpenStack의 경우 깃허브는 기여 창구라기보다는 mirror에 가깝습니다.

 

실제 코드 리뷰와 패치 반영은 OpenDev와 Gerrit을 통해 이뤄지고,

그 결과가 GitHub에 반영되는 구조입니다.

 

또한, Gerrit의 경우 patchset 방식으로,

깃허브처럼 커밋을 새로 발급해 쌓는 것이 아니라,

하나의 change를 기준으로 commit을 amend 하며 리뷰를 갱신합니다.

 

앞으로 실제 OpenStack 프로젝트에 기여하기에 앞서,

먼저 sandbox에서 Gerrit Workflow에 대해 충분히 연습하고

작은 문서 수정이나 버그 수정부터 시작하도록 하겠습니다.

반응형