본문 바로가기
MegazoneCloud
← 전체 글
미분류

Cloud Shell

Cloud Shell 명령어의 기본 구조

1. gcloud 기본 구문 패턴

gcloud [Group/Service] [Resource/Component] [Action] [Resource_name] [Flags]

예시:

gcloud compute instances create myvm --zone=asia-northeast-a
  • 그룹 자체가 단일 대상을 다루는 경우 Resource를 생략한다.
    • auth나 config 같은 그룹은 다루는 대상이 명확하므로 굳이 리소스명을 붙이지 않고 바로 동작을 붙여 사용한다.
  • 세부 리소스가 복수 개 존재하는 경우에는 Resource가 필요하다.
    • compute 안에는 instances, disks, networks 등의 여러 종류의 리소스가 존재하므로 무엇을 제어할지 명시해야 한다.

2. 실제 gcloud 명령어의 3가지 주요 패턴

# 패턴 1: 가장 기본적인 풀 구조 (대부분의 GCP 제품)
gcloud [Group] [Resource] [Action] + ([Argument + Flag])
예: gcloud compute instances list

# 패턴 2: 그룹 내 대상이 단일한 경우 (리소스 생략)
gcloud [Group] [Action] + ([Argument + Flag])
예: gcloud auth list, gcloud config list

# 패턴 3: 계층이 더 깊은 복잡한 리소스의 경우 (서브 리소스)
gcloud [Group] [Resource] [Sub-Resource] [Action] + ([Argument + Flag])
예: gcloud container clusters node-pools list

Argument vs Flag

  • Argument: -- 없이 그냥 쓰는 이름이나 필터값
  • Flag: --를 붙여서 키-값 형태로 전달하는 설정값

3. 명령어 해석의 핵심 (왼쪽에서 오른쪽으로 구체화)

  • gcloud config set compute/region us-east1
    • 해석: 설정을 세팅한다(바꾼다) compute/region을 us-east1 으로
  • gcloud config get-value compute/region
    • 해석: 설정의 값을 가져온다 compute/region의
  • gcloud config set compute/zone us-east1-d
    • 해석: 설정을 세팅한다(바꾼다) compute/zone을 us-east1-d로

4. Region과 Zone의 차이

  • 둘 다 리소스가 존재하는 지역을 의미하나 Region이 더 넓은 개념이다. (예: 미국 동부 사우스캐롤라이나 > 그 안의 물리적 데이터센터)
  • 완전히 다른 Zone(us-east1-a vs us-east1-b) 사이에는 전력망, 냉각 장치, 백업 발전기, 네트워크 인프라가 100% 물리적으로 분리되어 있다.
  • 따라서 us-east1-a Zone 데이터센터 전체에 대형 화재나 정전이 발생하더라도, us-east1-b Zone은 아무런 영향을 받지 않고 정상 작동한다.

5. 프로젝트 및 환경 변수 설정

  • 여기에서 project-info 역시 Resource로 project-info에는 SSH 키, 기본 네트워크 설정, 리소스 사용량 제한인 Quota 등이 존재한다.
  • $는 뒤에 있는 명령어를 실제값으로 바꿔주는 것이다.
  • 여기에서 만약 project 이름이 A라면 project의 value를 가져오는 것이므로 --project $(gcloud config get-value project) 자리에 A가 들어가는 것이다.
export PROJECT_ID=$(gcloud config get-value project)
  • 변수에 값을 할당할 수 있는데 이런 형식으로 쓰면 된다.
  • PROJECT_ID에 project의 이름을 할당하는 것이다.
export PROJECT\_ID=$(gcloud config get-value project)
  • ZONE이라는 변수에 compute/zone을 할당하는 것이다.
  • 만약 zone이 us-central1-a라면 ZONE에 us-central1-a가 할당된다.
echo -e "PROJECT ID: $PROJECT_ID\nZONE: $ZONE"
  • echo는 출력
  • -e는 \n(줄바꿈) 등의 출력 형식에 쓰이는 기호를 인식한다.
  • 해석: compute의 instances를 만들어라 gcelab2라는 이름으로, machine type은 e2-medium으로, zone은 ZONE에 할당되었던 값으로 한다.

6. 도움말 및 기본 설정 관리

  • gcloud compute instances create --help
    • 명령어 맨 뒤에 --help를 붙이면, 해당 명령어 위치에서 사용할 수 있는 모든 옵션을 보여준다.
  • gcloud -h
    • --help의 줄임말
  • gcloud config --help 와 gcloud help config
    • 동일한 결과를 출력하는 명령어이다.
  • gcloud config list
    • 사용자가 직접 설정한 config만 출력
  • gcloud config list --all
    • 모든 config를 출력
  • gcloud components list
    • components: 특정 서비스 전용 추가 도구(kubectl, bq, gsutil, pubsub-emulator 등)

7. 인스턴스 및 방화벽 조회 / 필터링

  • gcloud compute instances list
    • instance 리스트 출력
  • gcloud compute instances list --filter="name=('gcelab2')"
    • instance 중에서 이름이 gcelab2인 것만 출력
  • gcloud compute firewall-rules list
    • firewall-rules(방화벽) 리스트 출력
  • gcloud compute firewall-rules list --filter="network='default'"
    • firewall-rules 중에서 network가 default인 것만 출력
  • gcloud compute firewall-rules list --filter="NETWORK:'default' AND ALLOW:'icmp'"
    • firewall-rules 중에서 network가 default이고 allow가 icmp인 것만 출력

‘=’  와 ‘:’ 의 차이점

  • =: 문자열이 토씨 하나 틀리지 않고 정확히 똑같아야만 참(True)이 된다.
  • :: 해당 키나 문자열 내에 검색어가 부분적으로 포함되어 있거나 리스트 요소로 존재하면 참(True)이 된다. (대소문자 구분 안 함)

8. SSH 접속 및 웹 서버 설치/검증

gcloud compute ssh gcelab2 --zone $ZONE
  • $ZONE에 있는 gcelab2(instance)를 ssh로 연결한다.
  • --zone을 굳이 명시하는 이유? 서로 다른 존에서 중복된 이름이 있을 수 있기 때문이다!
sudo apt update && sudo apt install -y nginx
  • sudo: 관리자 권한으로 해당 명령어를 실행한다(패키지 설치/업데이트에는 높은 권한이 필요하기 때문)
  • apt update: 리눅스 저장소에서 최신 패키지 목록 정보를 새로고침한다.
  • &&: 앞의 명령어가 성공할 경우에만 뒤의 명령어를 연속해서 실행한다.
  • apt install: 지정한 패키지를 시스템에 새로 설치한다.
  • -y: 설치 과정에서 물어보는 “계속 진행하시겠습니까? [Y/n]” 질문에 자동으로 ‘Yes’를 입력하고 넘어간다.
  • nginx: 설치하고자 하는 패키지 이름
exit
  • SSH 원격 접속을 종료하고 원래 터미널로 돌아오기 위함
curl http://$(gcloud compute instances list --filter=name:gcelab2 --format='value(EXTERNAL_IP)')
  • instance에서 gcelab2가 이름인 것만 조회하는데 형식을 제외하고 EXTERNAL_IP 값만 추출한다.
  • curl: 웹 페이지에 HTTP 요청을 보내서 서버가 돌려주는 결과(HTML 코드 등)를 터미널 화면에 출력하는 도구

9. 방화벽 태그 및 규칙 설정

  • GCP의 방화벽 규칙(Firewall Rules)은 기본적으로 “특정 태그가 달린 VM에만 방화벽 통로를 열어준다”는 방식으로 작동하기 때문에 태그를 붙인다. (http와 https는 사용되는 포트가 다르기 때문에 두 개의 태그를 붙임)
  • --direction: 트래픽 방향
  • --priority: 규칙의 우선순위 (숫자가 작을수록 우선 적용된다)
  • --network: 이 방화벽 규칙을 적용할 VPC 네트워크 이름
  • --action: 조건에 맞는 트래픽을 허용할지, 차단할지 선택
  • --rules: 허용할 프로토콜 및 포트
  • --source-ranges: 출발지 IP 범위
  • --target-tags: 목적지 VM의 태그

10. Cloud Logging

  • gcloud logging logs list
    • 모든 로그의 이름 출력
  • gcloud logging logs list --filter="compute"
    • compute인 로그만 출력
  • gcloud logging read "resource.type=gce_instance" --limit 5
    • resource type이 compute engine의 VM인 로그만 5개로 제한하여 출력
  • gcloud logging read "resource.type=gce_instance AND labels.instance_name=gcelab2" --limit 5
    • resource 타입이 compute engine의 VM이며 instance의 이름이 gcelab2인 것만 5개로 제한하여 출력

11. 추가 GCP 주요 명령어 요약

gcloud beta interactive

  • 해석: 대화형(Interactive) 모드로 진입한다.
  • 특징: 명령어를 작성하는 중에 뒤에 올 수 있는 하위 명령어와 플래그를 실시간으로 보여주어 초보자가 사용하기 편리하다.

gcloud compute instances describe myvm –zone ZONE

  • 해석: myvm이라는 이름의 가상 머신(VM) 인스턴스에 대한 상세 정보를 조회한다.
  • --zone ZONE: 해당 VM이 위치한 실제 존(Zone) 이름을 지정하는 플레이스홀더이다. (예: --zone us-central1-a)

gsutil cp gs://cloud-training/Migrating2gcp/index.js .

  • gsutil: 구글 클라우드 스토리지(GCS)를 명령어 라인에서 관리하기 위한 도구
  • 해석: 지정된 GCS 버킷 경로(gs://cloud-training/Migrating2gcp/index.js)에 있는 파일을 현재 내 컴퓨터(또는 현재 작업 중인 가상 머신 경로 . )로 복사(다운로드)한다.

gcloud storage cp gs://cloud-training/Migrating2gcp/index.js .

(최신 권장 방식: gcloud 단일 CLI 통합 및 속도 최적화)


node index.js

  • 해석: Node.js 런타임 환경을 이용해 현재 폴더에 있는 index.js 자바스크립트 파일을 실행한다.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다