'데이터 엔지니어'로 성장하기

정리하는 걸 좋아하고, 남이 읽으면 더 좋아함

Data/Superset

Superset) 4.0.2 커스터마이징하기(1)_Flag,Theme,LandingPage

MightyTedKim 2024. 12. 22. 17:02
728x90
반응형

 

지난 포스팅에서는  superset 4.x 버전에 대해서 간단하게 알아봤어요.

 

Superset) 너 왜이렇게 버전업이 빠르니? (7개월 만에 2.1에서 4.0)

작년에 superset POC하고 올해 적용하기로 했어요예전에 2.1 버전을 설치했는데, 지금 보니 4.1 이더라고요 오늘 포스팅에서는 각 버전 별 특징과실제 느낀 차이점에 대해 이야기할 예정입니다. 예

mightytedkim.tistory.com

 

이번에는 간단한 설치부터, 적용한 설정값들에 대해서 다뤄볼게요.

0. 들어가기 전에

예상 독자는 아래와 같습니다.

1. superset 4.x를 docker-compose로 실행하고 싶은 분

2. docker-compose 설정값에서 알아야하는 것

 

1. superset 설치하기

- 공식 문서: https://superset.apache.org/docs/installation/docker-compose/

 

Docker Compose | Superset

Since docker compose is primarily designed to run a set of containers on a single host

superset.apache.org

공식 문서를 보면 설명이 잘 나와있는데, 약간 불친절해요. 

실제로 k8s를 이용해서 설치/운영하는게 훨씬 쉽습니다

하지만 docker-compose를 이용해 테스트하는 경우도 필요하니 알아두면 좋습니다.

git clone --depth=1 https://github.com/apache/superset.git
#1: 로컬 깃 소스 기준 
docker compose up --build
# 2: 브랜치 기준
docker compose -f docker-compose-non-dev.yml up
# 3: 태그 기준
export TAG=4.0.1 docker compose -f docker-compose-image-tag.yml up

 

2. superset 설정값 바꾸기

- 이 부분이 중요한데. 없는 파일들을 만들면

오버라이딩 되는 방식으로 구성이 되어있어요

https://superset.apache.org/docs/installation/docker-compose/

설정 파일을 실행하면

test용 파일을 읽어서 덮어씌워요


예시를 통해서 설명할게요

1. docker image의 entrypoint 실행

2. superset_config.py라는 설정 파일을 실행

3. superset_config.py에서 superset_config_docker.py가 있으면 실행

https://github.com/apache/superset/blob/master/docker/pythonpath_dev/superset_config.py

[의견]
superset_config_docker.py 파일은 존재하지가 않아요 
그래서 눈치껏 알아서 잘 설정해야해요. 
비슷한 예로 `requirements-local.txt` 도 있습니다. 

3. 설정 값 예시

제 파일은  superset_config_docker.py는 아래와 같습니다.

$ cat superset_config_docker.py
print('Loaded superset_config_docker.py')
# Feature flags
FEATURE_FLAGS = {
    "ENABLE_TEMPLATE_PROCESSING": True,
    "DASHBOARD_RBAC": True,
}

# Landing page customization
from flask import redirect, g
from flask_appbuilder import expose, IndexView
from superset.utils.core import get_user_id

class SupersetIndexView(IndexView):
    @expose("/")
    def index(self):
        if not g.user or not get_user_id():
            return redirect("/login")
        return redirect("/dashboard/list")

FAB_INDEX_VIEW = f"{SupersetIndexView.__module__}.{SupersetIndexView.__name__}"

# Theme overrides
THEME_OVERRIDES = {
  "borderRadius": 16,
   "colors": {
     "primary": {       "base": '#804479',     },
     "secondary": {       "base": 'green',     },
     "grayscale": {       "base": '#e46268',     }
   }
}

```

 

* FLAG 값을 켜줬어요. 4.x로 넘어오면서,

이전 버전의 설정값들은 많이 정리 또는 기본으로 들어갔더라고요

# Feature flags
# https://github.com/apache/superset/blob/master/RESOURCES/FEATURE_FLAGS.md
FEATURE_FLAGS = {
  "ENABLE_TEMPLATE_PROCESSING": True,  --jinja_template
  "DASHBOARD_RBAC": True --대시보드 권한, 이건 권한 이야기할 때 다시

template_processing과 dasboard 설정이 적용된걸 볼 수 있어요

 

 

* 랜딩 페이지가 home이 아니라 dashboard/list로 변경하고 싶었어요
(권한 관련 세팅하다보면 우회되는 버그들이 많아서 변경했어요)

# Landing page customization
from flask import redirect, g
from flask_appbuilder import expose, IndexView
from superset.utils.core import get_user_id

class SupersetIndexView(IndexView):
    @expose("/")
    def index(self):
        if not g.user or not get_user_id():
            return redirect("/login")
        return redirect("/dashboard/list")

FAB_INDEX_VIEW = f"{SupersetIndexView.__module__}.{SupersetIndexView.__name__}"

welcome 페이지 설정을 변경할 수 있어요

 

* 컬러 테마를 좀 변경했어요

# Theme overrides
THEME_OVERRIDES = {
  "borderRadius": 16,
   "colors": {
     "primary": {      "base": '#804479',     },
     "secondary": {       "base": 'green',     },
     "grayscale": {       "base": '#e46268',     }
   }
}

오른쪽처럼 바껴요

 

이 밖에도 로고를 바꾸는 등의 여러 설정들이 있어요.

 

4. 마치며

다음 글에서는 권한 설정을 어떻게 해야하는지, 로고는 어떻게 바꾸는지 등에 대해서 정리해볼게요

 

 

 

참고

https://mightytedkim.tistory.com/227

https://superset.apache.org/docs/installation/docker-compose/

 

Docker Compose | Superset

Since docker compose is primarily designed to run a set of containers on a single host

superset.apache.org

https://mightytedkim.tistory.com/227

728x90
반응형