Go용 Cloud Debugger 설정

개요

이 페이지에서는 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 on Google Cloud 다른 곳에서 실행 중인 VM 및 컨테이너 Cloud 함수

Cloud Debugger 설정

Cloud Debugger를 설정하려면 다음 작업을 완료해야 합니다.

  1. 프로젝트에 Cloud Debugger API가 사용 설정되어 있는지 확인합니다.

  2. 사용 중인 컴퓨팅 환경에 Debugger를 설치하고 구성합니다.

  3. 소스 코드를 선택합니다.

Cloud Debugger API 사용 설정 확인

Cloud Debugger를 사용하려면 Cloud Debugger API가 사용 설정되었는지 확인합니다. Cloud Debugger는 대부분의 프로젝트에서 기본으로 사용 설정됩니다.
Cloud Debugger API 사용 설정

Google Kubernetes Engine

GCLOUD

gcloud를 사용하여 Debugger를 사용 설정하려면 다음 단계를 완료하세요.

  1. 다음 액세스 범위 중 하나를 사용하여 클러스터를 만듭니다.

    • 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
    
  2. Debugger 에이전트를 컨테이너식 앱에 추가하려면 Dockerfile에 다음 줄을 추가합니다.

    RUN go get -u 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은 애플리케이션 또는 서비스의 이름입니다. 이 이름을 버전과 함께 사용하여 Cloud Console에서 애플리케이션을 식별합니다.

    • APP_VERSION은 애플리케이션에서 제공하는 버전 마커입니다. 예를 들어 빌드 번호를 사용할 수 있습니다. Cloud Console에는 실행 중인 버전이 module - version으로 표시됩니다. 예를 들면 main - 1.0입니다.

    • PATH_TO_BINARY는 애플리케이션 바이너리에 대한 상대 경로를 지정합니다.

    • ARG1ARG2는 애플리케이션에 필요한 추가 인수에 대한 자리표시자입니다.

이제 Debugger를 컨테이너식 앱을 배포할 때 사용할 수 있습니다.

클러스터 생성에 대한 자세한 내용은 클러스터 만들기를 참조하세요.

CONSOLE

Console에서 Debugger를 사용 설정하려면 다음 단계를 완료하세요.

  1. 클러스터 유형을 선택한 후 노드 풀 창에서 추가 옵션을 클릭합니다.

    추가 옵션 버튼이 빨간색 직사각형으로 강조표시된 노드 풀 필드

  2. 보안 창에서 다음 중 하나를 선택합니다.

    • 모든 Cloud API에 대한 전체 액세스 허용

    • 각 API에 대한 액세스를 허용하고 Cloud Debugger를 사용 설정됨으로 설정

Compute Engine

  1. Compute Engine VM 인스턴스가 64비트 Debian Linux 이미지를 실행하고 있는지 확인합니다.

  2. Compute Engine VM 인스턴스가 액세스 범위의 선택사항인 모든 Cloud APIs에 대한 전체 액세스 허용으로 만들어졌거나 다음 액세스 범위 중 하나인지 확인합니다.

    • https://www.googleapis.com/auth/cloud-platform
    • https://www.googleapis.com/auth/cloud_debugger
  3. 현재 Go 컴파일러의 최적화는 디버깅의 정확성에 영향을 미칩니다. 따라서 애플리케이션이 기본 Go 컴파일러 최적화를 사용하여 빌드된 경우 Cloud Debugger는 애플리케이션에 대한 잘못된 정보를 표시합니다.

    올바른 디버깅 정보를 얻으려면 기본 최적화를 사용하지 않고 애플리케이션을 빌드합니다. 다음 샘플 명령어는 go1.10 이상 버전을 사용할 때 최적화를 중지하는 방법을 보여줍니다.

    go build -gcflags=all='-N -l'
    

    위의 gcflags 값은 최적화를 중지하는 -N과 인라인을 중지하는 -l를 포함합니다.

  4. 디버거 에이전트를 다운로드합니다.

    Cloud Debugger 에이전트는 시작 시 애플리케이션에서 사용 설정하는 경량 바이너리입니다. 에이전트는 애플리케이션과 함께 시작되고 애플리케이션을 실행하는 동안 Cloud Debugger 백엔드와 통신합니다.

    Compute Engine 애플리케이션을 빌드하고 배포했으면 디버그 에이전트를 다운로드하여 설치합니다.

    go get -u cloud.google.com/go/cmd/go-cloud-debug-agent
    
  5. 에이전트 및 프로그램을 시작합니다.

    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은 애플리케이션 또는 서비스의 이름입니다. 이 이름을 버전과 함께 사용하여 Cloud Console에서 애플리케이션을 식별합니다.

    • APP_VERSION은 애플리케이션에서 제공하는 버전 마커입니다. 예를 들어 빌드 번호를 사용할 수 있습니다. Cloud Console에는 실행 중인 버전이 module - version으로 표시됩니다. 예를 들면 main - 1.0입니다.

    • PATH_TO_BINARY는 애플리케이션 바이너리에 대한 상대 경로를 지정합니다.

    • ARG1ARG2는 애플리케이션에 필요한 추가 인수에 대한 자리표시자입니다.

    예를 들면 다음과 같습니다.

    go-cloud-debug-agent -appmodule=main -appversion=1.0 -- bin/my-app my-arg
    

이제 Debugger를 앱에서 사용할 수 있습니다.

로컬 및 기타 위치

Go용 Cloud Debugger 에이전트는 Go 1.9 이하를 사용하는 로컬 또는 기타 환경에서 지원됩니다.