진행과정에서 폴더구조나 해당 프로세스에 대해 이해가 가지 않을 수 있습니다.
이러한 문제사항 발생시 저의 깃허브를 참조하셔서 진행하시되 막히면 언제든지 질문주세요! 아무도 보지 않겠지만... ㅠ
gcp에 접속하여 ubuntu 20.04 이미지를 바탕으로 가상 머신을 먼저 생성하자!!
aws와는 달리 gcp에서는 이용자가 직접 key를 만들고 공개키를 구글 머신 메타데이터에 등록을 해줘야 한다.
먼저 rsa 기반 공개키와 비밀키를 생성해보자.
참고 https://cloud.google.com/compute/docs/connect/add-ssh-keys
ssh-keygen -t rsa -b 2048 -f <dir/filename> -C <"user_google_id">
정상적으로 생성된 모습이다. (리눅스 환경에서도 비슷하게 만들 수 있다.)
이제 우리는 키 2개를 볼 수 있는데 하나는 key.pub, 하나는 key 이렇게 될 것이다.
.pub에 적혀있는 내용을 메타데이터 > ssh 키 를 클릭하여 공개키를 등록하자.
이제 거의 다 되었다.
ssh -i gcp_key google_id@public_ip
를 입력해 host에 접속이 가능하다.
정상적으로 접속이 되었다.
해당 페이지를 보면서 설치하자.
https://docs.docker.com/engine/install/ubuntu/
sudo apt-get update
sudo apt-get install \ ca-certificates \ curl \ gnupg \ lsb-release
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
echo \ "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \ $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin
sudo docker run hello-world
curl -LfO 'https://airflow.apache.org/docs/apache-airflow/2.3.2/docker-compose.yaml'
를 통해 yaml 파일을 받아주자.
우리는 local executor
를 사용할 예정이다. 때문에 yaml 파일을 조금 수정해주자.
celery executor 관련된 redis, backend, worker, broker, flower 등을 모두 주석처리 해주자.
그리고 example 로드도 false 로 진행해주자.
이제 도커 컴포즈를 진행해주자.
하기전에 디렉토리와 .env 파일을 만들어주자.
mkdir -p ./dags ./logs ./plugins
echo -e "AIRFLOW_UID=$(id -u)" > .env
docker compose version
정상적으로 잘 출력이 된다.
먼저 db migration 부터 진행해주자.
docker-compose up airflow-init
정상적으로 작동이 된다.
컨테이너 작동상태를 확인해보자.
정상적으로 작동한다.
공개 ip로 설정된 주소를 통해 8080 포트로 들어가 접속한다.
방화벽 설정은 진행 해줘야한다.
참고할 내용
http://공개ip주소:port 로 이제 접속이 가능하다.
이 작업을 하기 위해 하루를 꼬박 트러블 슈팅을 진행했다. 이제 가장 어려운 환경세팅이 끝이 났으므로 dag 구성만 하면 된다.
안녕하세요, 선생님
기록해두신 내용 보며 잘 따라하고 있습니다.
그런데, docker compose up airflow-init 단계에서..
잘 진행되다가 airflow를 실행시키기 위한 메모리가 부족하다고 뜨네요 ㅠㅠ
혹시 GCP VM 램은 몇으로 하셨는지 여쭤봐도 될까요??
저는 e2-medium (4GB 메모리)로 만들어서 진행했는데
이게 부족한건가싶습니다..