이번 포스팅에서는 Google Cloud Storage를 사용하여 정적 파일을 저장해줄 버킷을 생성하고 연동하는 방법에 대해서 알아볼 예정이다.


1. Cloud Storage에 버킷 생성

구글 클라우드 플랫폼에서는 Gunicorn 서버를 사용하여 앱을 배포한다. 하지만 Gunicorn 서버는 정적 파일을 서빙하지 않기 때문에 따로 Cloud Storage를 생성하여 정적파일을 서빙해줘야 한다.

먼저 버켓을 생성하고 기본적으로 버켓을 공개해놓는다.

# 버켓 생성
$ gsutil mb gs://<버켓이름>

# 기본 공개 설정
$ gsutil defacl set public-read gs://<버켓이름> 


장고로 돌아와서, 프로젝트 내의 정적파일을 한 폴더에 모아준다.

$ ./manage.py collectstatic


파일이 static/ 안에 모두 모였다면 버켓과 해당 폴더를 연결해준다.

# gsutil rsync -R static/ gs://<버켓이름>/static

연결해 준 후에는 settings.pySTATIC_URL을 다음과 같이 바꿔준다.

# settings.py

STATIC_URL="http://storage.googleapis.com/<버켓이름>/static/"

완료! 이제 Kubernetes 엔진을 생성해보자.


2. Kubernetes 엔진 클러스터 생성하기

(1) 클러스터 생성

Kubernetes 엔진 콘솔 페이지에서 엔진 준비가 된 것을 확인한 후에 다음 명령어로 클러스터를 만들어준다.

$ gcloud container clusters create test-app \
  --scopes "https://www.googleapis.com/auth/userinfo.email","cloud-platform" \
  --num-nodes 2 --zone "asia-northeast1-a"


(2) 클러스터 확인

클러스터를 만들고 나서는 kubectl 명령어로 클러스터 설정을 제공할 예정이므로 만들어준 클러스터 인스턴스를 쓸 것임을 다음 명령어로 확인해준다.

$ gcloud container clusters get-credentials test-app --zone "asia-northeast1-a"


(3) 클러스터 시크릿파일 설정

인스턴스 수준의 접근을 허용하는 크레덴셜 파일을 생성한다. 해당 json 파일은 서비스 계정 생성시 받은 파일이다.

$ kubectl create secret generic cloudsql-oauth-credentials --from-file=credentials.json=[프로젝트 내 credentials.json의 상대경로]


두 번째 시크릿 파일은 데이터베이스에 접근하기 위한 파일이다.

$ kubectl create secret generic cloudsql --from-literal=username=[데이터베이스 사용자명] --from-literal=password=[비밀번호값]

두 파일 모두 만들어 주면 엔진 사용설정은 끝이 난다.



Julia Hwang

디발자를 꿈꾸는 웹개발자의 블로그입니다.