자체 서명 인증서로 Airflow 실행하기

자체 서명 인증서로 Airflow 실행하기 (Running Airflow with a self-signed certificate)

Airflow를 자체 서명(self-signed) 인증서로 실행하기 위해 필요한 추가 단계를 설명하는 문서예요. Worker가 API Server를 신뢰하도록 인증서를 생성하고, docker-compose 구성을 HTTPS로 바꾸는 과정을 살펴볼게요.

출처: 문서

본문

Airflow는 자체 서명 인증서로 실행되도록 구성할 수 있지만, Worker가 API Server를 신뢰하도록 하려면 몇 가지 추가 단계가 필요해요. 이 가이드는 Running Airflow in Docker 설정을 기반으로 해요.

주의 (Caution)

이 절차는 학습·탐구·개발을 위한 것이에요. 프로덕션 사용에는 적합하지 않아요.

인증서 생성하기 (Generating the certificate)

첫 번째 단계는 인증서를 생성하는 거예요. health check와 Worker↔API Server 통신이 동작하려면 localhostairflow-apiserver를 Subject Alternative Names로 추가해야 해요.

export AIRFLOW_CN=example-common-name
openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem \
-sha256 -days 3650 -nodes \
-subj "/CN=$AIRFLOW_CN" \
-addext "subjectAltName=DNS:localhost,DNS:airflow-apiserver"

여기서 example-common-name은 서버의 common name이에요. cert.pemkey.pemconfig 폴더에 두세요.

docker-compose.yaml 수정하기 (Altering docker-compose.yaml)

아래 두 환경 변수를 추가하고 API Server URL을 HTTPS로 바꿔요:

AIRFLOW__CORE__EXECUTION_API_SERVER_URL: 'https://airflow-apiserver:8080/execution/'
# Added to enable SSL
AIRFLOW__API__SSL_CERT: '/opt/airflow/config/cert.pem'
AIRFLOW__API__SSL_KEY: '/opt/airflow/config/key.pem'

API Server의 health check가 인증서를 신뢰하도록 수정해요:

airflow-apiserver:
  <<: *airflow-common
  command: api-server
  ports:
    - "8080:8080"
  healthcheck:
    # Add --cacert to trust certificate
    test: ["CMD", "curl", "--fail", "--cacert", "${AIRFLOW_PROJ_DIR:-.}/config/cert.pem", "https://localhost:8080/api/v2/monitor/health"]

Airflow 실행하기 (Running Airflow)

이제 모든 서비스를 시작할 수 있어요:

docker compose up

웹서버는 https://localhost:8080에서 접근할 수 있어요.

더 알아보기 (Learn more)