VS Code용 Cloud Code에서 Cloud API 및 Cloud 클라이언트 라이브러리 관리

Google Cloud 제품 및 서비스에 프로그래매틱 방식으로 액세스하려면 Cloud API를 사용합니다. 이러한 API는 간단한 JSON REST 인터페이스를 노출합니다. Cloud API에 액세스하려면 Cloud 클라이언트 라이브러리를 사용하는 것이 좋습니다.

Cloud Code를 사용하면 사용 중인 Cloud API 및 언어용 Cloud 클라이언트 라이브러리를 프로젝트에 쉽게 추가할 수 있습니다. 동일한 뷰에서 각 API의 샘플을 검색하고 샘플을 애플리케이션에 쉽게 통합할 수 있습니다.

Cloud API 탐색

사용 가능한 모든 Google Cloud API를 탐색하려면 다음 안내를 따르세요.

  1. Cloud Code를 클릭한 다음 Cloud APIs 섹션을 펼칩니다.

    Cloud API 뷰는 Cloud API를 카테고리별로 그룹화합니다.

  2. API의 세부정보를 보려면 API 이름을 클릭합니다. 서비스 이름, 상태, 클라이언트 라이브러리 설치 안내, 문서, 코드 샘플과 같은 세부정보가 표시됩니다.

Cloud API 사용 설정

API 세부정보 페이지를 사용하여 프로젝트에 대해 Cloud API를 사용 설정하려면 다음 단계를 따르세요.

  1. Cloud API 세부정보 페이지에서 Cloud API를 사용 설정할 프로젝트를 선택합니다.
  2. API 사용 설정을 클릭합니다. API가 사용 설정되면 변경사항을 확인하는 메시지가 표시됩니다.

프로젝트에 클라이언트 라이브러리 추가

Cloud Code를 사용하여 Cloud API를 탐색하고 사용 설정할 수 있을 뿐 아니라 프로젝트에 언어별 클라이언트 라이브러리를 추가할 수 있습니다.

클라이언트 라이브러리를 설치하려면 해당 언어의 API 세부정보 페이지에 있는 안내를 따릅니다.

API 샘플 사용

API 브라우저에서 각 API의 코드 샘플을 검색하고 사용할 수 있습니다.

  1. Cloud Code를 클릭한 다음 Cloud APIs 섹션을 펼칩니다.

  2. 세부정보 뷰를 열려면 API 이름을 클릭합니다.

  3. API의 코드 샘플을 보려면 코드 샘플을 클릭합니다.

  4. 샘플 목록을 필터링하려면 검색할 텍스트를 입력하거나 언어 목록에서 프로그래밍 언어를 선택합니다.

  5. 샘플을 보려면 샘플 이름을 클릭합니다. 샘플을 클립보드에 복사하거나 GitHub에서 샘플을 볼 수 있는 옵션이 있습니다.

인증 설정

필요한 API를 사용 설정하고 필요한 클라이언트 라이브러리를 추가한 다음에는 성공적으로 인증할 수 있도록 애플리케이션을 구성해야 합니다. 구성은 개발 유형 및 실행 중인 플랫폼에 따라 달라집니다.

인증 단계를 완료하면 애플리케이션에서 인증할 수 있고 배포 준비가 완료됩니다.

로컬 개발

로컬 머신

IDE에서 Google Cloud에 로그인하는 경우 Cloud Code가 애플리케이션 기본 사용자 인증 정보(ADC)를 설정하므로 이 단계를 건너뛸 수 있습니다. IDE 외부에서 Google Cloud에 로그인한 경우(예: gcloud CLI 사용) ADC를 설정하고 다음을 실행하여 Google Cloud 클라이언트 라이브러리가 ADC를 통해 인증하도록 합니다.

gcloud auth login --update-adc

minikube

  1. IDE에서 Google Cloud에 로그인하는 경우 Cloud Code가 애플리케이션 기본 사용자 인증 정보(ADC)를 설정하므로 이 단계를 건너뛸 수 있습니다. IDE 외부에서 Google Cloud에 로그인한 경우(예: gcloud CLI 사용) ADC를 설정하고 다음을 실행하여 Google Cloud 클라이언트 라이브러리가 ADC를 통해 인증하도록 합니다.

    gcloud auth login --update-adc
  2. minikube start --addons gcp-auth를 실행하여 minikube를 시작합니다. 이 명령은 포드에 ADC를 마운트합니다. Google Cloud를 사용한 minikube 인증에 대한 자세한 내용은 minikube gcp-auth 문서를 참조하세요.

기타 로컬 K8s 클러스터

  1. IDE에서 Google Cloud에 로그인하는 경우 Cloud Code가 애플리케이션 기본 사용자 인증 정보(ADC)를 설정하므로 이 단계를 건너뛸 수 있습니다. IDE 외부에서 Google Cloud에 로그인한 경우(예: gcloud CLI 사용) ADC를 설정하고 다음을 실행하여 Google Cloud 클라이언트 라이브러리가 ADC를 통해 인증하도록 합니다.

    gcloud auth login --update-adc
  2. Google Cloud 클라이언트 라이브러리가 사용자 인증 정보를 찾을 수 있게 하려면 배포 매니페스트를 수정하여 Kubernetes pod에 로컬 ~/.config/gcloud 디렉터리를 마운트합니다.
  3. Google Cloud 프로젝트 ID를 GOOGLE_CLOUD_PROJECT라는 환경 변수로 설정합니다.

Kubernetes pod 구성 예시:

apiVersion: v1
kind: Pod
metadata:
  name: my-app
  labels:
    name: my-app
spec:
  containers:
  - name: my-app
    image: gcr.io/google-containers/busybox
    ports:
      - containerPort: 8080
    env:
    - name: GOOGLE_CLOUD_PROJECT
      value: my-project-id
    volumeMounts:
      - mountPath: /root/.config/gcloud
        name: gcloud-volume
  volumes:
    - name: gcloud-volume
      hostPath:
        path: /path/to/home/.config/gcloud

Cloud Run

IDE에서 Google Cloud에 로그인하는 경우 Cloud Code가 애플리케이션 기본 사용자 인증 정보(ADC)를 설정하므로 이 단계를 건너뛸 수 있습니다. IDE 외부에서 Google Cloud에 로그인한 경우(예: gcloud CLI 사용) ADC를 설정하고 다음을 실행하여 Google Cloud 클라이언트 라이브러리가 ADC를 통해 인증하도록 합니다.

gcloud auth login --update-adc

서비스 계정이 필요한 API를 사용한 로컬 개발

Cloud Translation API와 같은 일부 API에는 요청을 인증할 수 있는 적절한 권한이 있는 서비스 계정이 필요합니다. 자세한 내용은 서비스 계정 만들기 및 관리를 참조하세요. 서비스 계정을 사용하는 빠른 시작은 Cloud Code에서 Cloud 클라이언트 라이브러리 사용을 참조하세요.

  1. 터미널을 열려면 터미널 > 새 터미널을 클릭합니다.

  2. 서비스 계정을 만들어 API 요청을 인증합니다.

    gcloud iam service-accounts create \
    SERVICE_ACCOUNT_ID \
    --project PROJECT_ID
    

    다음 값을 바꿉니다.

    • SERVICE_ACCOUNT_ID: 서비스 계정 ID입니다.
    • PROJECT_ID: 프로젝트 ID입니다.

    이러한 ID를 찾으려면 Google Cloud에서 화면 왼쪽 상단에 있는 탐색 메뉴를 클릭하고 IAM 및 관리자 위에 포인터를 놓고 서비스 계정을 클릭합니다.

    이메일 열에는 각 서비스 계정의 고유한 SERVICE_ACCOUNT_IDPROJECT_ID가 다음 형식으로 표시됩니다.

    SERVICE_ACCOUNT_ID@PROJECT_ID.iam.gserviceaccount.com

    예를 들어 my-service-account@my-project.iam.gserviceaccount.com의 서비스 계정 이메일 주소는 다음과 같은 값을 가집니다.

    • SERVICE_ACCOUNT_ID: my-service-account
    • PROJECT_ID: my-project
  3. 서비스 계정에 적절한 역할을 부여합니다. 다음 샘플 명령어는 Cloud Translation API 사용자 역할을 부여합니다. 부여할 역할을 확인하려면 사용 중인 Cloud API 문서를 참조하세요.

    gcloud projects \
    add-iam-policy-binding \
    PROJECT_ID \
    --member='serviceAccount:SERVICE_ACCOUNT_ID@PROJECT_ID.iam.gserviceaccount.com' \
    --role='roles/cloudtranslate.user'
    
  4. 서비스 계정 키를 만듭니다.

    gcloud iam service-accounts keys \
    create key.json --iam-account \
    SERVICE_ACCOUNT_ID@PROJECT_ID.iam.gserviceaccount.com
    
  5. 이 키를 기본 사용자 인증 정보로 설정합니다.

    export \
     GOOGLE_APPLICATION_CREDENTIALS=key.json
    
  6. 선택사항: 사용자가 서비스 계정을 가장할 수 있게 허용하려면 gcloud iam service-accounts add-iam-policy-binding 명령어를 실행하여 사용자에게 서비스 계정의 서비스 계정 사용자 역할(roles/iam.serviceAccountUser)을 부여합니다.

    gcloud iam service-accounts add-iam-policy-binding \
        SERVICE_ACCOUNT_ID@PROJECT_ID.iam.gserviceaccount.com \
        --member="user:USER_EMAIL" \
        --role="roles/iam.serviceAccountUser"
    

    다음 값을 바꿉니다.

    • USER_EMAIL: 사용자의 이메일 주소입니다.

원격 개발

GKE

프로젝트 범위에 따라 GKE에서 Google Cloud 서비스를 인증하는 방법을 선택할 수 있습니다.

  • (개발 전용)
    1. 다음 설정을 사용하여 GKE 클러스터를 만듭니다.
      • Compute Engine 기본 서비스 계정(GKE가 기본적으로 사용하는 서비스 계정)을 사용하고 액세스 범위모든 Cloud API에 전체 액세스 허용으로 설정합니다(두 설정 모두 노드 풀 > 보안 섹션 내에서 액세스 가능). Compute Engine 서비스 계정이 노드에 배포된 모든 워크로드에서 공유되기 때문에 이 메서드는 권한을 과도하게 프로비저닝하므로 개발에만 사용해야 합니다.
      • 클러스터에서 워크로드 아이덴티티가 사용 설정되어 있지 않은지 확인합니다(클러스터 > 보안 섹션).
    2. 서비스 계정에 필요한 역할을 할당합니다.
  • (프로덕션에 권장됩니다.)
    1. GKE에서 Google Cloud 서비스를 인증하도록 워크로드 아이덴티티로 GKE 클러스터 및 애플리케이션을 구성합니다. 그러면 Kubernetes 서비스 계정이 Google 서비스 계정과 연결됩니다.
    2. Kubernetes 배포 YAML 파일에서 .spec.serviceAccountName 필드를 설정하여 Kubernetes 서비스 계정을 참조하도록 Kubernetes 배포를 구성합니다. Cloud Code 샘플 애플리케이션으로 만든 앱에서 작업하는 경우 이 파일은 kubernetes-manifests 폴더 아래에 있습니다.
    3. 액세스하려는 Google Cloud 서비스에 추가 역할이 필요한 경우 앱 개발에 사용 중인 Google 서비스 계정에 역할을 부여합니다.

Cloud Run

  1. Cloud Run 애플리케이션 배포를 위해 새로운 고유 서비스 계정을 만들려면 서비스 계정 페이지로 이동한 후 보안 비밀이 저장된 프로젝트를 선택합니다.

    서비스 계정 페이지로 이동

  2. 서비스 계정 만들기를 클릭합니다.
  3. 서비스 계정 만들기 대화상자에 서비스 계정을 설명하는 이름을 입력합니다.
  4. 서비스 계정 ID를 고유하고 쉽게 알아볼 수 있는 값으로 변경한 후 만들기를 클릭합니다.
  5. 액세스하려는 Google Cloud 서비스에 추가 역할이 필요하면 역할을 부여하고 계속을 클릭한 후 완료를 클릭합니다.
  6. 서비스 계정을 배포 구성에 추가합니다.
    1. Cloud Code 상태 표시줄을 사용하여 Cloud Run: Deploy 명령어를 선택합니다.
    2. Cloud Run Deployment UI의 버전 설정 아래에서 서비스 계정 필드에 서비스 계정을 지정합니다.
    Cloud Run에서 펼쳐진 고급 버전 설정 섹션: service-account-name@project-name.iam.gserviceaccount.com 형식의 서비스 계정 이름이 입력된 배포 및 서비스 계정 필드

Cloud Run

프로젝트 범위에 따라 GKE에서 Google Cloud 서비스를 인증하는 방법을 선택할 수 있습니다.

  • (개발 전용)
    1. 다음 설정을 사용하여 GKE 클러스터를 만듭니다.
      • GKE가 기본적으로 사용하는 서비스 계정인 Compute Engine 기본 서비스 계정을 사용 중이고 액세스 범위모든 Cloud API에 전체 액세스 허용으로 설정되어 있는지 확인합니다(두 설정 모두 노드 풀 > 보안 섹션에서 액세스 가능). Compute Engine 서비스 계정이 노드에 배포된 모든 워크로드에서 공유되기 때문에 이 메서드는 권한을 과도하게 프로비저닝하므로 개발에만 사용해야 합니다
      • 클러스터에서 워크로드 아이덴티티가 사용 설정되어 있지 않은지 확인합니다(클러스터 > 보안 섹션).
    2. 서비스 계정에 필요한 역할을 할당합니다.
  • (프로덕션에 권장됩니다.)
    1. GKE에서 Google Cloud 서비스를 인증하도록 워크로드 아이덴티티로 GKE 클러스터 및 애플리케이션을 구성합니다. 그러면 Kubernetes 서비스 계정이 Google 서비스 계정과 연결됩니다.
    2. 서비스 계정을 배포 구성에 추가합니다.
      1. Cloud Code 상태 표시줄을 사용하여 Cloud Run: Deploy 명령어를 선택합니다.
      2. Cloud Run Deployment UI의 버전 설정 아래에서 서비스 계정 필드에 서비스 계정을 지정합니다.
      Cloud Run에서 펼쳐진 고급 버전 설정 섹션: service-account-name@project-name.iam.gserviceaccount.com 형식의 Kubernetes 서비스 계정 이름이 입력된 배포 및 서비스 계정 필드
    3. 액세스하려는 Google Cloud 서비스에 추가 역할이 필요한 경우 앱 개발에 사용 중인 Google 서비스 계정에 역할을 부여합니다.

Secret Manager 권한이 사용 설정된 원격 개발

인증에 서비스 계정을 사용하여 원격으로 개발하고 애플리케이션이 보안 비밀을 사용하는 경우 원격 개발 안내 외에도 몇 가지 추가 단계를 완료해야 합니다. 이 단계에서는 특정 Secret Manager 보안 비밀에 액세스하는 데 필요한 역할을 Google 서비스 계정에 할당합니다.

  1. Cloud Code를 클릭한 다음 Secret Manager 섹션을 펼칩니다.

    Cloud Code의 Secret Manager에 두 개의 보안 비밀이 표시됨

  2. 보안 비밀을 마우스 오른쪽 버튼으로 클릭하고 Cloud 콘솔에서 권한 수정을 선택합니다. 이렇게 하면 웹브라우저에서 해당 보안 비밀에 대한 Secret Manager 구성 페이지가 열립니다.

    Secret Manager 패널에서 마우스 오른쪽 버튼으로 클릭한 보안 비밀

  3. Google Cloud 콘솔에서 권한을 클릭한 다음 추가를 클릭합니다.

  4. 새 주 구성원 필드에 서비스 계정의 이름을 입력합니다.

  5. 역할 선택 필드에서 Secret Manager 보안 비밀 접근자 역할을 선택합니다.

  6. 저장을 클릭합니다.

    이제 서비스 계정에 이 특정 보안 비밀에 대한 액세스 권한이 있습니다.

지원받기

의견을 보내려면 GitHub에서 문제를 보고하거나 Stack Overflow에서 질문하세요.