개요
Go 런타임은 애플리케이션 코드 및 종속 항목을 설치한 후 가변형 환경에서 해당 애플리케이션을 실행하는 소프트웨어 스택입니다.
지원되는 Go 런타임 버전은 1.19
(미리보기), 1.18
(미리보기), 1.15
, 1.14
, 1.13
, 1.12
, 1.11
, 1.10
, 1.9
입니다.
중요: 런타임 지원은 Go 버전 1.18부터 Google Cloud 빌드팩으로 전환됩니다.
미리보기:
1.18
버전부터는 모든 새 Go 런타임이 운영체제를 선택할 수 있는 빌드팩을 사용하여 빌드됩니다. 새 런타임을 사용하려면app.yaml
에서 추가 설정을 지정해야 합니다. 자세히 알아보기Go 런타임 버전
1.15
이하는 Docker를 사용하여 빌드됩니다. 소스 코드는 GitHub에서 제공됩니다.
Go 버전 선택
새 런타임 버전(미리보기)
Go 런타임 버전 1.18 이상의 경우 운영체제를 지정하려면 app.yaml
설정에 runtime_config
및 operating_system
이 포함되어야 합니다. Go 런타임 버전 1.18(미리보기) 및 1.19(미리보기)는 Ubuntu 22에서 실행됩니다.
필수:
애플리케이션은
gcloud
CLI 버전 417.0.1 이상을 사용해야 합니다. 현재gcloud
버전을 보려면gcloud version
명령어를 실행합니다.애플리케이션은 Go 모듈을 사용해야 하며
go.mod
파일이app.yaml
과 같은 폴더에 포함되어 있어야 합니다. 예를 들어go.mod
를 사용하는 앱의 폴더 구조는 다음을 나타내야 합니다.<application-root>/ --> app.yaml --> go.mod --> Other source files used in your application.
선택사항: app.yaml
에 runtime_version
설정을 포함하여 런타임 버전을 지정할 수 있습니다. runtime_version
설정이 지정되지 않으면 기본적으로 최신 Go 버전이 사용됩니다.
예시
Go 버전 1.18 지정하기
runtime: go env: flex runtime_config: operating_system: "ubuntu22" runtime_version: 1.18
Ubuntu 22에서 지원하는 최신 Go 버전 지정하기
runtime: go env: flex runtime_config: operating_system: "ubuntu22"
앱은 app.yaml
파일에 지정된 버전의 최신 안정화 출시 버전을 사용합니다. App Engine은 새로운 패치 버전으로 자동 업데이트되지만 주 버전을 자동 업데이트하지는 않습니다.
예를 들어 애플리케이션을 Go 1.18.10으로 배포하고 나중에 Go 1.18.11로 자동으로 업데이트할 수 있지만 메이저 버전 Go 1.19로 자동으로 업데이트되지 않습니다.
아래 표시된 대로 app.yaml
에서 Go 런타임 버전 1.19
를 선택하면 1.19.5와 같은 1.19의 최신 버전을 사용할 수 있습니다.
runtime: go
env: flex
runtime_config:
operating_system: "ubuntu22"
runtime_version: 1.19
자세한 내용은 app.yaml
참조를 확인하세요.
이전 런타임 버전
Go 1.15 및 이전 런타임 버전의 경우 runtime: go1.x
등의 app.yaml
구성 파일에서 go1.x
형식을 사용하여 특정 Go version
을 선택할 수 있습니다.
예시
runtime: go1.14 env: flex
버전을 지정하지 않으면 go1.11
의 기본 버전이 자동으로 선택됩니다.
앱은 app.yaml
파일에 지정된 버전의 최신 안정화 출시 버전을 사용합니다. App Engine은 새로운 패치 버전으로 자동 업데이트되지만 주 버전을 자동 업데이트하지는 않습니다.
예를 들어 애플리케이션을 Go 1.14.10으로 배포하고 나중에 Go 1.14.11로 자동으로 업데이트할 수 있지만 주 버전 Go 1.15로 자동으로 업데이트되지 않습니다.
아래 표시된 대로 app.yaml
에서 go 런타임 버전 go1.15
를 선택하면 1.15.15와 같은 1.15의 최신 버전을 사용할 수 있습니다.
runtime: go1.15 env: flex
패키지 가져오기
App Engine에 앱을 배포하면 코드가 컴파일됩니다. 배포 명령어를 실행하면 앱 종속 항목이 먼저 로컬 GOPATH
에서 수집된 후 빌드 서버로 모두 전송됩니다. 누락된 종속 항목(예: 타사 라이브러리)이 있으면 빌드가 실패합니다.
앱을 배포하기 전에 로컬에서 테스트하면 빌드 실패가 방지되고 앱의 모든 종속 항목이 코드와 함께 배포되도록 할 수 있습니다.
런타임 확장
Go 런타임을 확장 및 맞춤설정하는 방법에 대한 자세한 내용은 GitHub의 Go 런타임 빌더를 참조하세요.
메타데이터 서버
애플리케이션의 각 인스턴스에서 Compute Engine 메타데이터 서버를 사용하여 호스트 이름, 외부 IP 주소, 인스턴스 ID, 커스텀 메타데이터, 서비스 계정 정보 등의 인스턴스 정보를 쿼리할 수 있습니다. App Engine에서는 인스턴스별로 커스텀 메타데이터를 설정할 수 없지만 프로젝트 차원의 커스텀 메타데이터를 설정해 App Engine 및 Compute Engine 인스턴스에서 읽는 것은 가능합니다.
cloud.google.com/go/compute/metadata
패키지를 사용하여 메타 데이터 서버에 액세스합니다.