이 가이드에서는 Compute Engine을 시작하는 방법을 보여줍니다. 이 가이드에 따라 Hello World Go 웹 앱을 Compute Engine에 배포합니다. App Engine을 시작하는 데 도움이 필요하면 App Engine 표준 환경을 참조하세요.
목표
- Cloud Shell을 사용하여 Hello World 샘플 앱을 다운로드하고 배포합니다.
- Cloud Build를 사용하여 Hello World 샘플 앱을 빌드합니다.
- Hello World 샘플 앱을 단일 Compute Engine 인스턴스에 배포합니다.
비용
이 문서에서는 비용이 청구될 수 있는 다음과 같은 Google Cloud 구성요소를 사용합니다.
프로젝트 사용량을 기준으로 예상 비용을 산출하려면 가격 계산기를 사용하세요.
시작하기 전에
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Compute Engine and Cloud Build APIs.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Compute Engine and Cloud Build APIs.
-
Google Cloud 콘솔의 Cloud Shell에서 앱을 엽니다.
Cloud Shell을 사용하면 브라우저에서 직접 명령줄을 통해 클라우드 리소스에 액세스할 수 있습니다.
-
저장소를 클론하는 데 동의하면 확인을 클릭하여 샘플 코드를 다운로드하고 앱 디렉터리로 변경합니다.
- 새 Google Cloud 프로젝트를 사용하도록 Cloud Shell에서 gcloud CLI를 구성합니다.
# Configure gcloud for your project gcloud config set project YOUR_PROJECT_ID
Cloud Shell에서 앱 실행
Cloud Shell에서 로컬 웹 서버를 시작합니다.
go build -o app ./app
Cloud Shell에서 웹 미리보기를 클릭하고 포트 8080에서 미리보기를 선택합니다. 그러면 실행 중인 앱이 표시된 새 창이 열립니다.
웹브라우저에
Hello, World!
가 표시됩니다.계속 진행할 수 있으면 Cloud Shell에서 Control+C를 눌러 로컬 웹 서버를 중지합니다.
단일 인스턴스에 배포
이 섹션에서는 Compute Engine에서 앱의 단일 인스턴스 실행을 단계별로 알아봅니다.
Cloud Shell에서 앱을 실행하는 단일 Compute Engine 인스턴스 가상 머신(VM)에 배포할 수 있습니다.
Cloud Build를 사용하여 앱 빌드
Cloud Build는 앱을 빌드하고 tar 파일로 압축한 다음 Cloud Storage 버킷에 파일을 업로드하는 데 사용됩니다. 버킷은 Cloud Storage에서 데이터를 보관하는 기본 컨테이너입니다.
터미널 창에서 Cloud Storage 버킷을 만듭니다.
YOUR_BUCKET_NAME
은 버킷의 이름을 나타냅니다.gcloud storage buckets create gs://YOUR_BUCKET_NAME
Cloud Storage 버킷으로 어떤 이름이든 선택할 수 있습니다. 버킷 이름을 프로젝트 ID와 동일하게 지정하면 이름을 기억하는 데 도움이 됩니다. 버킷 이름은 모든 Google Cloud에서 고유해야 하므로 프로젝트 ID를 버킷 이름으로 사용하지 못할 수도 있습니다.
Cloud Build 프로세스를 시작합니다.
gcloud builds submit --substitutions=_DEPLOY_DIR=gs://
YOUR_BUCKET_NAME
,_DEPLOY_FILENAME=app.tar.gzgcloud builds submit
명령어는--substitutions
를 사용하여 결과 tar 파일이 업로드되는 위치를 구성합니다. 나중에 tar 파일이 Compute Engine 인스턴스로 다운로드됩니다.Cloud Build는 YAML 구성 파일을 사용하여 빌드에 필요한 단계를 정의합니다.
시작 스크립트를 사용하여 인스턴스 초기화
인스턴스에서 코드를 다운로드하고 실행하도록 지시할 방법이 필요합니다. 인스턴스를 시작하거나 재시작할 때마다 실행되는 시작 스크립트를 인스턴스에 포함하면 됩니다.
시작 스크립트는 인스턴스가 처음 부팅될 때 실행됩니다.
시작 스크립트는 다음과 같은 작업을 수행합니다.
Cloud Logging 에이전트를 설치하고 앱 로그를 모니터링하도록 구성합니다.
배포 tar 파일을 다운로드하고 추출합니다.
systemd
서비스를 시작하여 앱을 실행합니다.
Compute Engine 인스턴스 만들기 및 구성
Compute Engine 인스턴스를 만듭니다.
Linux/macOS
gcloud compute instances create my-app-instance \ --image-family=debian-10 \ --image-project=debian-cloud \ --machine-type=g1-small \ --scopes userinfo-email,cloud-platform \ --metadata-from-file startup-script=startup-script.sh \ --metadata app-location="gs://YOUR_BUCKET_NAME/app.tar.gz" \ --zone YOUR_ZONE \ --tags http-server
YOUR_ZONE
을 개발 영역으로 바꿉니다. 예를 들어us-central1-a
입니다. 리전 및 영역에 대한 자세한 내용은 지역 및 리전을 참조하세요.--metadata app-location
플래그는 앱 tar 파일을 다운로드할 시작 스크립트를 알려줍니다.Windows
gcloud compute instances create my-app-instance ^ --image-family=debian-10 ^ --image-project=debian-cloud ^ --machine-type=g1-small ^ --scopes userinfo-email,cloud-platform ^ --metadata-from-file startup-script=startup-script.sh ^ --metadata app-location="gs://YOUR_BUCKET_NAME/app.tar.gz" ^ --zone YOUR_ZONE ^ --tags http-server
YOUR_ZONE
을 개발 영역으로 바꿉니다. 예를 들어us-central1-a
입니다. 리전 및 영역에 대한 자세한 내용은 지역 및 리전을 참조하세요.--metadata app-location
플래그는 앱 tar 파일을 다운로드할 시작 스크립트를 알려줍니다.그러면 새 인스턴스가 생성되고, 인스턴스가 Google Cloud 서비스에 액세스하도록 허용되고, 시작 스크립트가 실행됩니다. 인스턴스 이름은
my-app-instance
입니다.인스턴스 생성의 진행 상황을 확인합니다.
gcloud compute instances get-serial-port-output my-app-instance --zone YOUR_ZONE
시작 스크립트가 완료되면 다음 메시지가 표시됩니다.
startup-script: INFO Finished running startup scripts.
인스턴스에 대한 트래픽을 허용하도록 방화벽 규칙을 만듭니다.
gcloud compute firewall-rules create default-allow-http-80 \ --allow tcp:80 \ --source-ranges 0.0.0.0/0 \ --target-tags http-server \ --description "Allow port 80 access to http-server"
인스턴스의 외부 IP 주소를 가져옵니다.
gcloud compute instances list
앱 실행을 확인하려면 브라우저에 다음 URL을 입력합니다.
http://YOUR_INSTANCE_IP
YOUR_INSTANCE_IP
를 인스턴스의 외부 IP 주소로 바꿉니다.
인스턴스 관리 및 모니터링
Google Cloud 콘솔을 사용하여 인스턴스를 모니터링하고 관리할 수 있습니다.
- In the Google Cloud console, go to the VM instances page.
- In the list of virtual machine instances, click SSH in the row of the instance that you want to connect to.
- Compute Engine 리소스에서 생성한 모든 로그를 보려면 로그 뷰어 페이지로 이동합니다.
로그 탐색기로 이동
Cloud Logging이 자동으로 구성되어
syslog
를 포함한 다양한 공통 서비스의 로그를 수집합니다.
삭제
이 튜토리얼에서 사용된 리소스 비용이 Google Cloud 계정에 청구되지 않도록 하려면 리소스가 포함된 프로젝트를 삭제하거나 프로젝트를 유지하고 개별 리소스를 삭제하세요.
프로젝트 삭제
- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.
개별 리소스 삭제
gcloud compute instances delete my-app-instance --zone=YOUR_ZONE --delete-disks=all gcloud compute firewall-rules delete default-allow-http-80
다음 단계
Google Cloud에 대한 참조 아키텍처, 다이어그램, 권장사항 살펴보기. Cloud 아키텍처 센터 살펴보기
앱 빌드를 위한 기타 Go 리소스는 다음을 참조하세요.
- Compute Engine > 인스턴스 그룹에서 인스턴스 그룹 배포 관리 및 모니터링
- 네트워크 서비스 > 부하 분산에서 URL 맵과 백엔드 서비스를 비롯한 부하 분산 구성 관리
- Google Kubernetes Engine에 앱 배포
- 다른 Google Cloud 서비스 알아보기