자체 서명 인증서로 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 통신이 동작하려면 localhost와 airflow-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.pem과 key.pem을 config 폴더에 두세요.
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에서 접근할 수 있어요.