본문 바로가기

CI&CD

폐쇄망 에어플로우(airflow) 설치

728x90

 

 

Running Airflow in Docker — Airflow Documentation

 

airflow.apache.org

 

환경상 폐쇄망에서 에어플로우를 설치하게되었다.

폐쇄망에 docker(24.0.9)와 compose가 설치되어있는 상태를 가정했다.

 

1) 외부망에서 파일 준비

# docker image 준비
docker pull apache/airflow:2.8.1 #원하는 버전
docker pull postgres:13
docker pull redis:latest
docker save -o airflow.tar apache/airflow:2.8.1
docker save -o postgres.tar postgres:13
docker save -o redis.tar redis:latest

# docker compose yaml 파일 준비(버전 확인 필수)
curl -LfO 'https://airflow.apache.org/docs/apache-airflow/2.8.1/docker-compose.yaml'

# 모든 파일을 폐쇄망 서버로 전송한다
scp * user@targetIP:/target_dir

 

 

2) 폐쇄망에서 docker image road - 관리자 권한 필요

docker load -i airflow.tar
docker load -i postgres.tar
docker load -i redis.tar

 

 

 

2-1) 폐쇄망에서 docker-compose.yaml 파일 수정 (option)

포트 변경과 docker image를 맞춰줘야한다.

포트는 airflow-webserver에서 바꿔주면되는데,

compose를 이용해서 설치하려면 컨테이너 포트 (:8080)을 수정하면안된다.

services:
  postgres:
    image: postgres:13 # 해당 docker image
    environment:
      POSTGRES_USER: airflow
      POSTGRES_PASSWORD: airflow
      POSTGRES_DB: airflow
    volumes:
      - postgres-db-volume:/var/lib/postgresql/data
    healthcheck:
      test: ["CMD", "pg_isready", "-U", "airflow"]
      interval: 10s
      retries: 5
      start_period: 5s
    restart: always

  redis:
    image: redis:latest # 해당 docker image
    expose:
      - 6379
    healthcheck:
      test: ["CMD", "redis-cli", "ping"]
      interval: 10s
      timeout: 30s
      retries: 50
      start_period: 30s
    restart: always

  airflow-webserver:
    <<: *airflow-common
    command: webserver
    ports:
      - "<PORT>:8080" # port 지정
    healthcheck:
      test: ["CMD", "curl", "--fail", "http://localhost:<PORT>/health"]
      interval: 30s
      timeout: 10s
      retries: 5
      start_period: 30s
    restart: always
    depends_on:
      <<: *airflow-common-depends-on
      airflow-init:
        condition: service_completed_successfully

 

설정 완료 후 저장

 

3) 데이터 베이스 초기화와 에어플로우 실행

docker compose up airflow-init
docker compose up

 

 

exited with code 0이 나오면 정상적으로 실행완료된것이다.

 

컨테이너들의 상태를 확인하면 완료

 

만약 yaml 파일을 수정후 재 설치가 필요하다면
docker compose down -v # 에어플로우 관련 컨테이너를 모두 삭제함
docker compose build --no-cache
docker compose up airflow-init
docker compose up -d

 

 

728x90