본문 바로가기

개발/MSG-Lab

[MSG] 네이버 클라우드로 인프라 구축하기 - 5, object storage

반응형

1. 오브젝트 스토리지란

aws의 s3같은 기능을 제공해주는 object storage입니다.

프로젝트에서는 깃허브에 소스 코드를 올리고, 이를 GA(github action)을 통해 ci를 진행합니다.

GA에서 테스트와 빌드가 성공하게 되면 jar파일을 zip형태로 압축해서 object storage에 전송합니다.

 

2. 프로젝트에서 스토리지에서 파일을 가지고 오는 2가지 경우

스토리지의 파일은 2가지 방법으로 클라우드에 전달되는데요.

첫번째 상황은 init script를 통해, 방금 생성된 인스턴스에 어플리케이션을 띄우는 경우입니다.

두번째 상황은 source deploy를 통해 이미 생성되어, 어플리케이션이 실행중인 인스턴스에 새로은 어플리케이션 버전을 배포하는 경우입니다.

 

3. 사용법

그럼 이제 본격적으로 사용법을 알아보겠습니다.

먼저 object storage에 버킷부터 생성해야 합니다.

 

버킷은 내가 사용할 공간이예요. 여기에 폴더도 만들고, 파일도 업로드합니다.

 

3-1. 버킷 생성시 주의 사항

버킷 생성시 주의사항은 공개 여부입니다.

저는 비공개설정으로 진행했습니다.(공개하면 전체공개가 됩니다.)

 

3-2. 버킷 사용시 주의 사항

다음으로 버킷을 사용하기 위해서 주의사항입니다.

VPC환경안의 서브넷이 어떻게 구축되었는지에 따라서 사용법이 다릅니다.(놀랍죠..ㅎㅎ)

 

  • Public Subnet에 구축된 서버
    • 공인 도메인인 kr.object.ncloudstorage.com을 이용해 인터넷 기반의 통신이 가능합니다.
    • 사설 도메인인 kr.object.private.ncloudstorage.com을 이용해 사설 통신이 가능합니다.
  • Private Subnet에 구축된 서버
    • 기본적으로 사설 도메인인 kr.object.private.ncloudstorage.com을 이용해 사설 통신이 가능합니다.
    • NAT Gateway를 이용하면 공인 도메인인 kr.object.ncloudstorage.com을 이용해 통신할 수 있습니다.

url이 다릅니다. 바로 다음에 깃허브 액션을 통해 object storage에 zip파일을 push할건데요.

이때 작성하는 스크립트에 들어가는 url에 유의하셔야 합니다..!

 

4. 깃허브 액션을 통해 object storage에 zip 파일 push하기

여기서부터는 생각보다 복잡합니다.

POST /object-storage 이런식으로 api를 호출해야 하는데, 헤더에 인증 정보가 삽입되기 때문입니다.

여기에 삽입되는 인증정보는 access key, secret key 2가지를 이용합니다.

위의 2가지 키를 얻기 위해서는 네이버 클라우드 > 마이페이지 > 계정관리 > 인증키 관리로 접속하셔야 합니다.

 

이후 인증정보를 포함한 api 요청을 직접 만들어야 하는데요.

여기서 샘플 코드를 확인할 수 있습니다.

저는 GA에서 object storage로 put을 하기위해 파이썬 코드를 사용했습니다.

(zip 파일을 파이썬으로 읽을때, 바이너리 형식으로 읽어야 합니다.)

+ 인증정보는 노출되면 안되기 때문에 깃허브 설정 기능을 이용했습니다.

(인증 헤더를 만드는 과정이 복잡하여 샘플 코드를 적극 활용하셔야 공수를 줄일 수 있습니다.)

 

5. init script를 통해 object storage의 zip 파일 가져오기

위에서와 마찬가지로 파이썬으로 미리 제공되는 샘플 코드를 활용했습니다.

다만 앞서 말했다시피 url에 주의해야 합니다.(init script가 동작하는 환경은 VPC 인스턴스 "안"이예요!)

반응형