Google Cloud Run 자동 배포 시 환경변수 설정하기
GitHub와 Cloud Run을 연결해서 자동 배포는 되는데, 서비스가 계속 실패한다면? 환경변수 설정을 확인해보세요!
🤔 문제 상황
Next.js 프로젝트를 Google Cloud Run에 배포했는데, 로컬에서는 잘 되던 서비스가 배포 후 작동하지 않는 경우가 있습니다.
원인: .env 파일이 Git에 포함되지 않아서 Cloud Run에서 환경변수를 읽지 못합니다.
# 로컬에서는 .env 파일이 있어서 잘 됨
DATABASE_URL=”postgresql://…”
SOOMGO_EMAIL=”…”
API_KEY=”…”
# Cloud Run에 배포하면?
# → .env 파일이 없어서 에러 발생! 😱
💡 해결 방법: 환경변수를 Cloud Run에 직접 설정하기
두 가지 방법이 있습니다. 상황에 맞게 선택하세요!
방법 1️⃣ 빠른 해결 (5분 소요)
이런 분들께 추천:
- 빠르게 테스트하고 싶을 때
- 개인 프로젝트나 개발 환경
단계별 가이드
1. 환경변수 설정 스크립트 만들기
프로젝트 폴더에 set-env.sh 파일을 만들고 아래 내용을 넣습니다:
#!/bin/bash
PROJECT_ID=$1
SERVICE_NAME=”your-service-name” # 본인의 서비스 이름
REGION=”asia-northeast3″ # 서울 리전
# Cloud Run에 환경변수 설정
gcloud run services update $SERVICE_NAME \
–region $REGION \
–update-env-vars “\
DATABASE_URL=여기에_DB_주소,\
API_KEY=여기에_API_키,\
OTHER_VAR=여기에_다른_값”
2. 실행 권한 부여
chmod +x set-env.sh
3. 스크립트 실행
./set-env.sh your-project-id
✅ 완료! 이제 서비스를 다시 확인해보세요.
방법 2️⃣ 보안 강화 (10분 소요) ⭐ 추천
이런 분들께 추천:
- 실제 서비스 운영 환경
- 비밀번호, API 키 등 민감한 정보 보호 필요
왜 이 방법이 더 좋을까요?
| 항목 | 방법 1 (직접 설정) | 방법 2 (Secret Manager) |
|---|---|---|
| 보안 | Cloud Run 콘솔에서 보임 😅 | 암호화되어 안전하게 저장 🔐 |
| 관리 | 매번 스크립트로 설정 | 한 번 설정하면 자동 적용 |
| 적합한 환경 | 개발/테스트 | 프로덕션 |
단계별 가이드
1. Secret Manager 설정 스크립트 만들기
setup-secrets.sh 파일 생성:
#!/bin/bash
PROJECT_ID=$1
# Secret Manager API 활성화
gcloud services enable secretmanager.googleapis.com
# 비밀 정보 저장 (예시)
echo -n “postgresql://…” | gcloud secrets create DATABASE_URL –data-file=-
echo -n “your-api-key” | gcloud secrets create API_KEY –data-file=-
echo -n “your-password” | gcloud secrets create PASSWORD –data-file=-
2. Cloud Run과 연결하는 스크립트 만들기
update-service.sh 파일 생성:
#!/bin/bash
PROJECT_ID=$1
SERVICE_NAME=”your-service-name”
REGION=”asia-northeast3″
# Secret Manager의 비밀 정보를 Cloud Run에 연결
gcloud run services update $SERVICE_NAME \
–region $REGION \
–update-secrets=DATABASE_URL=DATABASE_URL:latest,API_KEY=API_KEY:latest,PASSWORD=PASSWORD:latest
3. 실행 권한 부여
chmod +x setup-secrets.sh update-service.sh
4. 순서대로 실행
# 1단계: Secret Manager에 비밀 정보 저장
./setup-secrets.sh your-project-id
# 2단계: Cloud Run과 연결
./update-service.sh your-project-id
✅ 완료! 이제 비밀 정보가 안전하게 관리됩니다.
🚀 자동 배포 설정하기 (보너스)
Secret Manager를 설정했다면, 앞으로 Git Push만 해도 자동으로 환경변수가 적용되게 만들 수 있습니다!
cloudbuild.yaml 파일 수정
프로젝트의 cloudbuild.yaml 파일에 다음 내용을 추가:
steps:
# … (기존 빌드 단계들)
– name: ‘gcr.io/google.com/cloudsdktool/cloud-sdk’
entrypoint: gcloud
args:
– ‘run’
– ‘deploy’
– ‘your-service-name’
– ‘–image’
– ‘gcr.io/$PROJECT_ID/your-image:latest’
– ‘–region’
– ‘asia-northeast3’
# 🔥 여기가 핵심! 환경변수 자동 설정
– ‘–update-env-vars’
– ‘NODE_ENV=production,NEXT_PUBLIC_URL=https://…’
# 🔒 Secret Manager 연결
– ‘–update-secrets’
– ‘DATABASE_URL=DATABASE_URL:latest,API_KEY=API_KEY:latest’
이제 이렇게 하면 끝!
git add .
git commit -m “환경변수 설정 완료”
git push origin main
→ GitHub에 푸시하면 자동으로 환경변수가 포함되어 배포됩니다! 🎉
🔍 환경변수가 잘 설정되었는지 확인하기
방법 1: 콘솔에서 확인
- Cloud Run 콘솔 접속
- 서비스 클릭
- “변수 및 보안 비밀” 탭 확인
방법 2: 명령어로 확인
gcloud run services describe your-service-name \
–region asia-northeast3 \
–format ‘yaml(spec.template.spec.containers[0].env)’
💡 팁과 주의사항
✅ 꼭 기억하세요
- .env 파일은 절대 Git에 올리지 마세요
# .gitignore에 이미 있는지 확인
.env*
- 환경변수 이름을 코드와 맞추세요
// 코드에서 사용하는 이름
process.env.DATABASE_URL
// Cloud Run에 설정하는 이름도 동일하게
DATABASE_URL=…
- 프로덕션 환경에서는 꼭 Secret Manager 사용
- 민감한 정보 보호
- 버전 관리 가능
- 감사 로그 자동 기록
🚫 피해야 할 실수
- ❌ API 키를 코드에 직접 하드코딩
- ❌ .env 파일을 Git에 커밋
- ❌ env.example에 실제 값 넣기 (플레이스홀더만!)
🎯 정리
빠른 테스트가 필요하다면
→ 방법 1 (직접 설정) 사용
실제 서비스 운영이라면
→ 방법 2 (Secret Manager) 사용
자동 배포를 원한다면
→ cloudbuild.yaml에 환경변수 설정 추가
📚 더 알아보기
이 글이 도움이 되셨나요? 댓글로 여러분의 경험을 공유해주세요! 💬
태그: #GoogleCloudRun #환경변수 #자동배포 #SecretManager #Next.js #DevOps
AI 인사이트 무료 구독
- AI 도구로 비용 절감 전략
- 정부지원사업 성공 사례
- 매주 금요일 · 스팸 없음