GCP Cloud SDK

GCP SDK를 사용하면 Command Line Interface(CLI)를 통해 GCP내 작업들을 쉽게 수행 가능합니다.

https://cloud.google.com/sdk

  • 각 OS별 프로그램 설치

  • gcloud init : gcloud 초기화시 project, region, zone 을 아래와 같이 선택함

    • region : asia-northeast3

    • zone : asia-northeast3-a

    • project : sample-dev

  • gcloud 작동 확인 :

    • gcloud compute instances list

gcloud 환경설정

https://cloud.google.com/sdk/gcloud/reference/init

https://cloud.google.com/sdk/gcloud/reference/config/set

$ gcloud init --project=sample-dev --skip-diagnostics $ gcloud config set project sample-dev $ gcloud config set compute/region asia-northeast3 $ gcloud config set compute/zone asia-northeast3-a

macOS에서의 설정

Cloud SDK를 설치하고 사용하기 위해서는 python3 (3.7, 3.8), python2 (2.7.9 이상)가 필요합니다.

$ python -V Python 3.8.12

macOS Big sur 기준으로 xcode와 Homebrew가 설치되어 있다면 3.9버전으로 설정되어 있을 확률이 높습니다. 버전이 맞지 않으면 에러가 발생하니 꼭 확인해야합니다.

버전을 확인 했으면 SDK를 다운로드 합니다.

https://cloud.google.com/sdk/docs/install

파일 목록 중 자신의 플랫폼에 맞는 파일을 다운로드 합니다. 그 다음 다운로드 받은 SDK 압축파일을 원하는 위치에 옮겨 놓고 압축을 해제합니다.

그 다음 환경변수를 설정합니다. bash면 .bashrc, zsh면 .zshrc

<GOOGLE_CLOUD_SDK_PATH>를 압축해제한 경로로 바꿔주면 됩니다.

주의사항

설치와 설정이 끝난 후 gcloud를 실행시키면 아래와 같은 에러가 발생하는 상황이 생길 수 있습니다.

이 같은 에러는 python 버전이 맞지 않아 발생하는 에러로 위 로그를 보면 python3.9를 사용해서 실행하고 있습니다.

하지만 gcloud는 3.7, 3.8만 지원하므로 버전을 바꿔주어야 정상적으로 사용할 수 있습니다.

먼저 python3.8이 설치되어 있는지 확인합니다.

만약에 python3.7 또는 3.8이 없다면 설치해줍니다.

설치가 끝났으면 3.8버전을 사용하도록 환경변수를 설정해주고 python 명령어가 python3.8 버전을 가리키도록 alias를 설정해줍니다.

.zshrc 또는 .bashrc에 아래 내용을 추가해줍니다.

이후 수정한 내용을 반영 후 작동여부를 확인합니다.

Ubuntu 에서 설치

https://cloud.google.com/sdk/docs/quickstart#deb

Cloud SDK 설치

Cloud SDK 초기화 및 설정

Ubuntu 20.04 LTS 에서는 python 관련해서 따로 설정은 필요 없었음 (내장된 python3 - Python 3.8.5 를 사용하는 것으로 보임)

해당 문서 참고하여 나오는 질문에 답을 해줌. gcloud config list 명령을 이용하여 설정한 것 확인할 수 있음

설정하기

Windows

https://cloud.google.com/sdk/docs/quickstart-windows

Quickstart 가이드를 따라서 진행을 하면 됨.

https://cloud.google.com/sdk/docs/install 문서를 보면 윈도우즈의 경우 Cloud SDK는 기본적으로 Python 3가 번들로 함께 제공됩니다. 

gcloud 도구 명령어 스크립팅

출력 필터링 및 형식 지정 :  --filter 및 --format 플래그를 이용하여 원하는 정보를 뽑아낼 수 있음.

기초 가이드 : https://cloud.google.com/sdk/docs/scripting-gcloud

블로그에서 출력 필터링 및 형식 지정 예제 : https://cloud.google.com/blog/products/it-ops/filtering-and-formatting-fun-with

https://cloud.google.com/sdk/gcloud/reference/topic/formats

 

특정한 값 하나만 가져오려면 format에서 아래 형태를 이용하는 것이 간단함

Python 사용하기

Python 세팅하기. 일반적인 Python 세팅을 하면 됨. Python용 Cloud 클라이언트 라이브러리는 아직 설치하지 않아도 됨.

 

애플리케이션에서는  Google Cloud 클라이언트 라이브러리 를 이용하면 애플리케이션 기본 사용자 인증 정보(ADC)를 이용하여 필요한 사용자 인증 정보를 자동으로 찾아 애플리케이션을 인증할 수 있음.

 

GCP python 샘플예제

GitHub - GoogleCloudPlatform/python-docs-samples: Code samples used on cloud.google.com

python application login 예제

Set up Application Default Credentials  |  Authentication  |  Google Cloud 문서에서 애플리케이션 인증용 예제로 나온 프로그램을 이용한 것임. 소스코드에서 여러가지 인증방식을 이용하고 있음.

python IAM 예제

https://github.com/GoogleCloudPlatform/python-docs-samples/blob/HEAD/iam/api-client/access.py )

소스코드에서 GOOGLE_APPLICATION_CREDENTIALS 를 이용하고 있음. 서비스 계정에서 api 키를 만들었다. 서비스 계정에서 만든 api 키를 환경변수 GOOGLE_APPLICATION_CREDENTIALS 에 설정을 해 주었다

 

AM 정책 관련한 아래 작업을 하는 경우에는 "Policy update access denied." 에러가 나왔다.

https://github.com/GoogleCloudPlatform/python-docs-samples/blob/HEAD/iam/api-client/access.py

https://stackoverflow.com/questions/65661144/getting-error-while-allowing-accounts-and-roles-in-terraform-for-gcp 등의 문서를 참고해서 서비스 계정을 만들 때 resourcemanager.projects.setIamPolicy 권한을 추가해 주었다. 해당 소스코드에서 권한이 필요해서 에러가 나왔을 것이다.
https://cloud.google.com/iam/docs/granting-changing-revoking-access#iam-get-policy-python