-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathsetup.sh
More file actions
executable file
·140 lines (116 loc) · 5.11 KB
/
Copy pathsetup.sh
File metadata and controls
executable file
·140 lines (116 loc) · 5.11 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
#!/bin/bash
# vLLM Cloud Run 프로젝트 초기 설정 스크립트
# 이 스크립트는 프로젝트를 처음 설정할 때 한 번만 실행하면 됩니다.
set -e # 오류 발생 시 스크립트 중단
echo "=========================================="
echo "vLLM Cloud Run 프로젝트 초기 설정"
echo "=========================================="
# 색상 정의
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m' # No Color
# 1. 환경 변수 확인 및 설정
echo -e "${YELLOW}[1/7] 환경 변수 확인${NC}"
# 필수 환경 변수 확인
if [ -z "$PROJECT_ID" ]; then
echo -e "${RED}오류: PROJECT_ID 환경 변수가 설정되지 않았습니다.${NC}"
echo "다음 명령어로 설정하세요:"
echo " export PROJECT_ID=your-project-id"
exit 1
fi
if [ -z "$HF_TOKEN" ]; then
echo -e "${RED}오류: HF_TOKEN 환경 변수가 설정되지 않았습니다.${NC}"
echo "Hugging Face에서 토큰을 생성하고 다음 명령어로 설정하세요:"
echo " export HF_TOKEN=your-huggingface-token"
exit 1
fi
# 기본값 설정 (필요시 수정)
REGION=${REGION:-europe-west1}
SERVICE_NAME=${SERVICE_NAME:-vllm-gemma-2-2b-it}
AR_REPO_NAME=${AR_REPO_NAME:-vllm-gemma-2-2b-it-repo}
SERVICE_ACCOUNT=${SERVICE_ACCOUNT:-vllm-gemma-2-2b-it}
SERVICE_ACCOUNT_ADDRESS="${SERVICE_ACCOUNT}@${PROJECT_ID}.iam.gserviceaccount.com"
HF_SECRET_NAME=${HF_SECRET_NAME:-HF_TOKEN}
echo -e "${GREEN}✓ 환경 변수 확인 완료${NC}"
echo " PROJECT_ID: $PROJECT_ID"
echo " REGION: $REGION"
echo " SERVICE_NAME: $SERVICE_NAME"
# 2. 필요한 API 활성화
echo -e "${YELLOW}[2/7] 필요한 Google Cloud API 활성화${NC}"
gcloud services enable run.googleapis.com \
cloudbuild.googleapis.com \
secretmanager.googleapis.com \
artifactregistry.googleapis.com \
--project="$PROJECT_ID"
echo -e "${GREEN}✓ API 활성화 완료${NC}"
# 3. 서비스 계정 생성
echo -e "${YELLOW}[3/7] 서비스 계정 생성${NC}"
if gcloud iam service-accounts describe "$SERVICE_ACCOUNT_ADDRESS" --project="$PROJECT_ID" &>/dev/null; then
echo -e "${YELLOW}서비스 계정이 이미 존재합니다. 건너뜁니다.${NC}"
else
gcloud iam service-accounts create "$SERVICE_ACCOUNT" \
--display-name="Cloud Run vllm SA to access secret manager" \
--project="$PROJECT_ID"
echo -e "${GREEN}✓ 서비스 계정 생성 완료${NC}"
fi
# 4. 서비스 계정에 권한 부여
echo -e "${YELLOW}[4/7] 서비스 계정에 권한 부여${NC}"
gcloud projects add-iam-policy-binding "$PROJECT_ID" \
--member="serviceAccount:$SERVICE_ACCOUNT_ADDRESS" \
--role="roles/secretmanager.secretAccessor"
echo -e "${GREEN}✓ 권한 부여 완료${NC}"
# 5. Secret Manager에 Hugging Face 토큰 저장
echo -e "${YELLOW}[5/7] Secret Manager에 Hugging Face 토큰 저장${NC}"
if gcloud secrets describe "$HF_SECRET_NAME" --project="$PROJECT_ID" &>/dev/null; then
echo -e "${YELLOW}보안 비밀이 이미 존재합니다. 업데이트합니다.${NC}"
echo -n "$HF_TOKEN" | gcloud secrets versions add "$HF_SECRET_NAME" \
--data-file=- \
--project="$PROJECT_ID"
else
echo -n "$HF_TOKEN" | gcloud secrets create "$HF_SECRET_NAME" \
--data-file=- \
--replication-policy="automatic" \
--project="$PROJECT_ID"
fi
echo -e "${GREEN}✓ 보안 비밀 저장 완료${NC}"
# 6. Artifact Registry 리포지토리 생성
echo -e "${YELLOW}[6/7] Artifact Registry 리포지토리 생성${NC}"
if gcloud artifacts repositories describe "$AR_REPO_NAME" \
--location="$REGION" \
--repository-format=docker \
--project="$PROJECT_ID" &>/dev/null; then
echo -e "${YELLOW}리포지토리가 이미 존재합니다. 건너뜁니다.${NC}"
else
gcloud artifacts repositories create "$AR_REPO_NAME" \
--repository-format=docker \
--location="$REGION" \
--description="Docker repository for vLLM Cloud Run service" \
--project="$PROJECT_ID"
echo -e "${GREEN}✓ 리포지토리 생성 완료${NC}"
fi
# 7. Cloud Build 서비스 계정에 권한 부여
echo -e "${YELLOW}[7/7] Cloud Build 서비스 계정에 권한 부여${NC}"
CLOUD_BUILD_SA="${PROJECT_ID}@cloudbuild.gserviceaccount.com"
# Artifact Registry 쓰기 권한
gcloud projects add-iam-policy-binding "$PROJECT_ID" \
--member="serviceAccount:$CLOUD_BUILD_SA" \
--role="roles/artifactregistry.writer"
# Secret Manager 접근 권한
gcloud projects add-iam-policy-binding "$PROJECT_ID" \
--member="serviceAccount:$CLOUD_BUILD_SA" \
--role="roles/secretmanager.secretAccessor"
# Cloud Run 관리자 권한
gcloud projects add-iam-policy-binding "$PROJECT_ID" \
--member="serviceAccount:$CLOUD_BUILD_SA" \
--role="roles/run.admin"
echo -e "${GREEN}✓ Cloud Build 권한 부여 완료${NC}"
echo ""
echo -e "${GREEN}=========================================="
echo "초기 설정이 완료되었습니다!"
echo "==========================================${NC}"
echo ""
echo "다음 단계:"
echo " 1. deploy.sh 스크립트를 실행하여 서비스를 배포하세요."
echo " 2. 또는 로컬에서 테스트하려면 docker-compose를 사용하세요."
echo ""