[Flower] FLOWER_UNAUTHENTICATED_API environment variable is required to enable API without authentication
현상
최근 CeleryExecutor를 사용하는 Airflow 버전을 2.5.1에서 2.8.2로 업그레이드를 진행하면서 영향도를 확인하고 있는데, Flower의 업그레이드된 버전에 변경점이 있었는지(확인해 보니 1.2에서 2.0으로 업그레이드되어있었다) Flower를 통한 worker 조작 시 다음과 같은 에러가 발생하면서 설정 변경 등이 적용되지 않았다.
문제를 해결해보자.
원인
Flower 1.0과 다르게 2.0부터는 보안 상의 이유로 인증, 즉 로그인이 활성화되지 않은 경우에는 기본적으로 API의 사용이 비활성화된다. 따라서 가급적이면 로그인 인증 설정을 활성화하거나 별도의 설정을 통해 로그인 인증 없이 API 사용을 허용해야 한다.
해결
이 글에서는 로그인 인증 없이도 API를 사용할 수 있도록 허용하는 방식으로 문제를 해결한다.
Airflow와 함께 사용하고 있어서 Airflow 설정으로 조정할 수 있는지 확인해 봤는데, 관련 설정부가 없는 것 같다.
1. 환경 변수 FLOWER_UNAUTHENTICATED_API 설정
flower가 동작하는 서버에서 수행한다.
export FLOWER_UNAUTHENTICATED_API="true"
2. 서비스 재시작
Flower를 재시작한다. 이 글에서는 airflow webserver, scheduler, flower를 전부 재시작하긴 했다.
3. 적용 확인
Flower Web UI로 worker 설정 조작 등이 가능한지 확인해 본다. 이상이 없으면 이제 정상적으로 작업을 수행할 수 있다.
+ 참고로 airflow celery flower 시작 시 로그인 인증은 Flower 시작 시에 다음과 같이 설정할 수 있다.
airflow celery flower --basic-auth=user1:password1,user2:password2
참고 문서
https://flower.readthedocs.io/en/latest/api.html
https://stackoverflow.com/questions/77550121/celery-flower-unauthenticated-api-not-working