본문 바로가기
데이터엔지니어링 기초/클라우드 (AWS, GCP, Azure)

vscode와 GCP연결하기 GCP CLI 활용

by goemgoem-i 2025. 1. 6.
반응형

이번에는 dag를 만들어보기로 했다

그러려면 gcp와 vscode를 연결해야해서 

한 번 설정을 해보겠다 

 

 

 

1-1. vscode에 연결하기

gcloud compute ssh <VM_NAME> --zone <ZONE>

 

  • <VM_NAME>: VM 인스턴스 이름.
  • <ZONE>: VM이 위치한 Zone (예: asia-northeast3-a).

 

vscode 터미널이나 powershell 또는 cmd에 입력 

 

 

 

 

이렇게 창이 뜨면 Accept 선택

 

 

 

 

error 참고

만약 위의 사진처럼 에러가 난다면

공개 키(public key)  등록할 때 마지막에 email 주소 들어가있지 않아서 그럴 수도 있다

https://cloud.google.com/compute/docs/connect/create-ssh-keys?hl=ko

 

SSH 키 만들기  |  Compute Engine Documentation  |  Google Cloud

SSH 키 생성 방법

cloud.google.com

이 링크 참고해서 마지막에 VM 사용자 이름이 안 나와 있어서 등록을 하도록 하자

 

 

 

 

 

 

아무튼 별다른 문제 없이 나온다면

accept를 눌렀을 때 이렇게 vscode랑 gcp의 ssh가 연결된 것을 볼 수 있다

 

 

 

 

1-2. 나갔다가 다시 설정하는 경우

gcloud --version

혹시나 설치했는지 확인이 필요하다면 위 코드를 통해서 

 

Google Cloud SDK 420.0.0
bq 2.0.92
core 2023.01.01

이런식으로 결과가 나오는 지 확인 가능하다

 

gcloud auth login

이후 로그인까지 완료되면 연결되는 것을 볼 수 있다

 

 

 


 

 

2-1. GCP 프로젝트 설정

gcloud projects list

list로 프로젝트를 참고해서 

 

gcloud config set project <PROJECT_ID>

<PROJECT_ID>는 위 명령어에서 확인한 프로젝트 ID로 대체

 

 

2-2. 기본 Region과 Zone 설정

gcloud compute zones list

사용가능한 zone을 확인하고

 

gcloud config set compute/zone asia-northeast3-a

zone설정을 해준다

 

만약 어떤 zone을 할지 모르겠으면 vm인스턴스에 있는 영역을 참고하면 된다

 

 

 

2-3. GCP VM 설정

gcloud compute instances list

현재 프로젝트에 생성된 VM 인스턴스를 확인하면

 

NAME      ZONE               MACHINE_TYPE   PREEMPTIBLE  INTERNAL_IP  EXTERNAL_IP     STATUS
airflow   asia-northeast3-a  e2-medium      FALSE        10.128.0.2   34.64.123.45    RUNNING

이런식으로 나오는데 

 

  • STATUS가 RUNNING이어야 SSH 연결이 가능하다 
    • 만약 연결이 안되어있으면 vm인스턴스 시작 버튼을 눌러주자
  • EXTERNAL_IP가 없다면 외부 IP를 추가해야한다
    • 외부 IP 확인:
      • 위 명령어에서 EXTERNAL_IP 열을 확인합니다.
      • 값이 없다면 외부 IP가 설정되지 않은 것입니다.
    • 외부 IP 추가:
      • GCP 콘솔에서 VM을 선택 → 편집네트워크 인터페이스외부 IP → 새로운 외부 IP 생성

 

 

2-4. 방화벽 설정

gcloud compute firewall-rules list

를 통해서 방화벽을 확인한다

 

 

**SSH(포트 22)**가 허용된 상태이므로 이 규칙은 잘 설정된 것임

 

 

 

 

 

3. vscode에 있는 dag 파일 저장

exit

현재 SSH 터미널에 종료하고

 

 

gcloud compute scp "<파일경로>" airflow:/home/<USER>/airflow_test/dags --zone asia-northeast3-a

로컬 PC(Windows)의 PowerShell 또는 CMD(명령 프롬프트)에서 아래 명령어를 실행해준다

정확한 파일 경로를 불러와야한다

 

 

gcloud compute ssh airflow --zone asia-northeast3-a

 

다시 vscode에서 위 코드를 입력해 GCP VM에서 파일 확인

 

 

ls /home/<USER>/airflow_test/dags

업로드된 파일 확인

 

 

 

 

해결 방법 : GCP VM에 디렉터리 쓰기 권한 부여

error

**Permission Denied**로 인해 파일을 GCP VM의 지정된 디렉터리에 업로드할 수 없다는 것으로

이 문제는 GCP VM의 업로드 대상 디렉터리에 쓰기 권한이 없어서 발생한거라 쓰기 원한을 부여해야한다

 

1. SSH로 GCP VM에 접속

gcloud compute ssh airflow --zone asia-northeast3-a

 

 

2. 디렉터리에 쓰기 권한 확인 및 부여:

업로드 대상 디렉터리에 쓰기 권한을 부여함

sudo chmod -R 777 /home/wjdeun0642/airflow_test/dags

 

3. 권한 변경 확인

ls -ld /home/wjdeun0642/airflow_test/dags

출력에서 drwxrwxrwx가 표시되면 권한이 제대로 부여된 것

 

 

4. DAG 파일 업로드

SSH 세션을 종료한 후, 다시 로컬 PowerShell 또는 VSCode 터미널에서 파일 업로드 명령어를 실행

gcloud compute scp "<파일경로>" airflow:/home/<USER>/airflow_test/dags --zone asia-northeast3-a

 

 

5. 업로드 성공하면 파일 업로드 되었는지 확인

ls /home/<USER>/airflow_test/dags

 

 

 

 

 

 

 

4. docker 연결

 

1) 디렉터리 이동

cd /home/<USER>/airflow_test

먼저, Docker Compose 파일이 있는 디렉터리로 이동

 

 

2) Docker Compose 상태 확인

docker-compose --version

 

 

3) Docker Compose를 사용한 Airflow 실행

docker-compose.yaml 파일을 사용해 Airflow를 실행하려면 아래 명령어를 실행하세요

 

 

3-1) 초기화 (최초 실행 시 필요)

docker-compose up airflow-init

 

 

3-2) Airflow 서비스 시작:

  • Docker Compose를 통해 Airflow와 관련된 모든 서비스를 백그라운드에서 시작
docker-compose up -d

 

 

 

3-3) Airflow 연결상태 참고

docker ps

 

 

 

 

 

5. 웹 서버 확인

Airflow 웹 UI는 Docker Compose 파일에서 정의된 포트에서 실행됩니다. 기본적으로는 포트 8080

 

  • GCP VM에서 SSH 포트 포워딩 사용 (로컬 머신에서 접속): 로컬 브라우저에서 Airflow 웹 UI에 접근하려면 SSH 포트 포워딩을 설정합니다
     
gcloud compute ssh airflow --zone asia-northeast3-a -- -L 8080:localhost:8080

 

 

  • 로컬 브라우저에서 Airflow 접속:

 

 

6. Docker Compose 정지 및 재시

#서비스 중지
docker-compose down

#서비스 재시작
docker-compose up -d

 

반응형