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