개요
이 페이지에서는 Cloud Debugger를 사용하도록 환경 및 Go 애플리케이션을 구성하는 방법을 설명합니다.
일부 환경에서는 Cloud Debugger 에이전트가 데이터를 전송할 수 있도록 액세스 범위를 명시적으로 지정해야 합니다.
가능한 최대 액세스 범위를 설정한 다음 ID 및 액세스 관리를 사용해 액세스를 제한하는 방법을 권장합니다.
이 권장사항에 따라 액세스 범위가 cloud-platform
옵션이 있는 모든 Cloud API가 되도록 설정합니다.
언어 버전 및 컴퓨팅 환경
Cloud Debugger는 다음 컴퓨팅 환경의 Go 1.9 이하에서 사용할 수 있습니다.
App Engine 표준 환경 | App Engine 가변형 환경 | Compute Engine | Google Kubernetes Engine | Cloud Run | Cloud Run for Anthos | 다른 곳에서 실행 중인 VM 및 컨테이너 | Cloud 함수 |
---|---|---|---|---|---|---|---|
Cloud Debugger 설정
Cloud Debugger를 설정하려면 다음 작업을 완료해야 합니다.
프로젝트에 Cloud Debugger API가 사용 설정되어 있는지 확인합니다.
사용 중인 컴퓨팅 환경에 Debugger를 설치하고 구성합니다.
소스 코드를 선택합니다.
Cloud Debugger API 사용 설정 확인
Cloud Debugger를 사용하려면 Cloud Debugger API가 사용 설정되었는지 확인합니다. Cloud Debugger는 대부분의 프로젝트에서 기본으로 사용 설정됩니다.Cloud Debugger API 사용 설정
Google Kubernetes Engine
GCLOUD
gcloud
를 사용하여 Debugger를 사용 설정하려면 다음 단계를 완료하세요.
다음 액세스 범위 중 하나를 사용하여 클러스터를 만듭니다.
https://www.googleapis.com/auth/cloud-platform
: 클러스터에 모든 Google Cloud API에 대한 액세스 권한이 부여됩니다.https://www.googleapis.com/auth/cloud_debugger
: 클러스터에 Debugger API에 대한 액세스 권한만 부여됩니다. 클러스터의 보안을 강화하려면 이 액세스 범위를 사용하세요.
gcloud container clusters create example-cluster-name \ --scopes=https://www.googleapis.com/auth/cloud_debugger
Debugger 에이전트를 컨테이너식 앱에 추가하려면
Dockerfile
에 다음 줄을 추가합니다.RUN go get cloud.google.com/go/cmd/go-cloud-debug-agent \ go-cloud-debug-agent -sourcecontext=[PATH_TO_FILE] -appmodule=[APP_NAME] \ -appversion=[APP_VERSION] -- [PATH_TO_BINARY] [ARG1] [ARG2]
각 항목의 의미는 다음과 같습니다.
PATH_TO_FILE
은 소스 컨텍스트 구성이 포함된 JSON 형식의 파일에 대한 상대 경로를 지정합니다.APP_NAME
은 애플리케이션 또는 서비스의 이름입니다. 이 이름을 버전과 함께 사용하여 Google Cloud 콘솔에서 애플리케이션을 식별합니다.APP_VERSION
은 애플리케이션에서 제공하는 버전 마커입니다. 예를 들어 빌드 번호를 사용할 수 있습니다. Google Cloud 콘솔은 실행 중인 버전을module - version
으로 표시합니다. 예를 들면main - 1.0
입니다.PATH_TO_BINARY
는 애플리케이션 바이너리에 대한 상대 경로를 지정합니다.ARG1
및ARG2
는 애플리케이션에 필요한 추가 인수에 대한 자리표시자입니다.
이제 Debugger를 컨테이너식 앱을 배포할 때 사용할 수 있습니다.
클러스터 생성에 대한 자세한 내용은 클러스터 만들기를 참조하세요.
콘솔
Google Cloud Console을 사용하여 Debugger를 사용 설정하려면 다음 단계를 완료하세요.
노드 풀 섹션에서 보안을 선택한 다음 각 API에 액세스 설정을 선택합니다.
Debugger를 사용 설정합니다.
선택사항: 모든 Cloud API에 전체 액세스 허용을 선택합니다.
Compute Engine
Compute Engine VM 인스턴스가 64비트 Debian Linux 이미지를 실행하고 있는지 확인합니다.
Compute Engine VM 인스턴스가 액세스 범위의 선택사항인 모든 Cloud APIs에 대한 전체 액세스 허용으로 만들어졌거나 다음 액세스 범위 중 하나인지 확인합니다.
https://www.googleapis.com/auth/cloud-platform
https://www.googleapis.com/auth/cloud_debugger
현재 Go 컴파일러의 최적화는 디버깅의 정확성에 영향을 미칩니다. 따라서 애플리케이션이 기본 Go 컴파일러 최적화를 사용하여 빌드된 경우 Cloud Debugger는 애플리케이션에 대한 잘못된 정보를 표시합니다.
올바른 디버깅 정보를 얻으려면 기본 최적화를 사용하지 않고 애플리케이션을 빌드합니다. 다음 샘플 명령어는 go1.10 이상 버전을 사용할 때 최적화를 중지하는 방법을 보여줍니다.
go build -gcflags=all='-N -l'
위의
gcflags
값은 최적화를 중지하는-N
과 인라인을 중지하는-l
를 포함합니다.디버거 에이전트를 다운로드합니다.
Cloud Debugger 에이전트는 시작 시 애플리케이션에서 사용 설정하는 경량 바이너리입니다. 에이전트는 애플리케이션과 함께 시작되고 애플리케이션을 실행하는 동안 Cloud Debugger 백엔드와 통신합니다.
Compute Engine 애플리케이션을 빌드하고 배포했으면 디버그 에이전트를 다운로드하여 설치합니다.
go get cloud.google.com/go/cmd/go-cloud-debug-agent
에이전트 및 프로그램을 시작합니다.
go-cloud-debug-agent -sourcecontext=[PATH_TO_FILE] -appmodule=[APP_NAME] \ -appversion=[APP_VERSION] -- [PATH_TO_BINARY] [ARG1] [ARG2]
각 항목의 의미는 다음과 같습니다.
PATH_TO_FILE
은 소스 컨텍스트 구성이 포함된 JSON 형식의 파일에 대한 상대 경로를 지정합니다.APP_NAME
은 애플리케이션 또는 서비스의 이름입니다. 이 이름을 버전과 함께 사용하여 Google Cloud 콘솔에서 애플리케이션을 식별합니다.APP_VERSION
은 애플리케이션에서 제공하는 버전 마커입니다. 예를 들어 빌드 번호를 사용할 수 있습니다. Google Cloud 콘솔은 실행 중인 버전을module - version
으로 표시합니다. 예를 들면main - 1.0
입니다.PATH_TO_BINARY
는 애플리케이션 바이너리에 대한 상대 경로를 지정합니다.ARG1
및ARG2
는 애플리케이션에 필요한 추가 인수에 대한 자리표시자입니다.
예를 들면 다음과 같습니다.
go-cloud-debug-agent -appmodule=main -appversion=1.0 -- bin/my-app my-arg
이제 Debugger를 앱에서 사용할 수 있습니다.
로컬 및 기타 위치
Go용 Cloud Debugger 에이전트는 Go 1.9 이하를 사용하는 로컬 또는 기타 환경에서 지원됩니다.