분류 전체보기 1187

[Superset] Dashboard Native Filters 활성화

개요 Superset은 1.3 버전부터 Dashboard 수준의 Filter 기능을 지원하고 있다. 그러나 Superset 설정 파일을 변경하다 보니, 활성화되어 있던 Filter 기능이 표시되지 않게 되었다. 어떻게 하면 대시보드 필터를 다시 확인할 수 있는지 적어둔다. Superset 버전은 3.0.1이다. FEATURE_FLAGS superset은 어떠한 기능의 활성화 여부를 config.py의 DEFAULT_FEATURE_FLAGS로 설정하고 있다. DEFAULT_FEATURE_FLAGS는 기능의 이름을 key로 하고, 활성화 여부를 나타내는 bool 데이터를 value로 하는 딕셔너리로, https://github.com/apache/superset/blob/master/superset/conf..

Apache Superset 2024.01.10

[Superset/k8s] 대시보드 iframe 임베드

개요 Superset으로 구성한 대시보드를 다른 웹 페이지에 iframe으로 임베드하려고 한다. 관련하여 설정 방법을 적어둔다. + 참고 사항 1. 직접 설정한 게 아니라 이미 구성되어 있는 설정과 구글링의 힘을 빌려 정리한다. 2. superset의 버전에 따라 방법이 다를 수 있다. 이 글의 superset 버전은 3.0.1이며, AWS EKS에서 동작한다. 3. superset에서 제공하는 Superset Embeded SDK 기능은 사용하지 않았다. 1. superset_config.py 구성 로그아웃한 사용자가 대시보드에 접근할 수 있도록 superset 구성 파일을 정의한다. # 로그아웃한 사용자의 superset 접근 허용 PUBLIC_ROLE_LIKE = "Public" # public 권..

Apache Superset 2024.01.09

[Helm/Superset] [flask_migrate] Error: Requested revision overlaps with other requested revisions

현상 AWS EKS에서 Helm으로 Apache Superset을 설치해 사용 중이다. 최근 EKS 버전 업그레이드 작업을 진행했는데, 작업 후 서비스를 확인하던 중 로그인 후 메인화면이 정상적으로 표시되지 않는 현상이 발생했다. 확인해 보니 작업 중 쿠버네티스 클러스터 노드가 변경되면서 새로 Superset 도커 이미지 pull이 발생했는데, Helm으로 배포한 values.yaml에 이미지 태그가 특정 버전으로 고정되어 있지 않고 latest로 지정되어 있어 Superset DB의 버전과 차이가 발생하게 된 것 같다. 특정 컬럼이 존재하지 않는다는 로그와 함께 데이터 로드에 실패하는 모습을 확인할 수 있었다. sqlalchemy.exc.ProgrammingError: (psycopg2.errors.U..

Apache Superset 2024.01.08

[Python] ldap3 사용법

개요 보통 회사에서는 계정 관리, 인증 등에 LDAP을 사용하고 있는데, LDAP 서버에 저장된 정보 조회가 필요한 상황이다. Python으로 LDAP 서버에 요청할 수 있는 ldap3 라이브러리 사용방법을 간단히 적어둔다. ldap3는 간단히 server, connection 객체를 정의하고, 연결에 대해 명령을 실행하는 방식으로 사용한다. ldap3 라이브러리 설치 pip 등을 이용해 설치할 수 있다. pip install ldap3 ldap3 import ldap3에서 제공하는 클래스 등을 활용하기 위해 import 하여 사용한다. 보통 아래와 같이 사용하는 것 같다. from ldap3 import Server, Connection, ALL 서버 접근 Ldap 서버에 접근할 때는 접근할 서버의 주..

Python 2024.01.05

[PostgreSQL] 사용자 비밀번호 변경

개요 PostgreSQL 데이터베이스 전체 덤프를 복원하는 중, 데이터베이스의 기본 사용자인 postgres 계정의 비밀번호가 변경되었다. 변경된 비밀번호를 원래 값으로 원복하려고 한다. 방법을 정리해둔다. ALTER psql로 superuser 권한을 가진 계정에 접속한 뒤, ALTER문을 이용해 비밀번호를 변경한다. psql -U postgres ALTER USER WITH PASSWORD ''; 다만 ALTER 문으로 비밀번호를 변경하면 히스토리 등에 의해 변경한 비밀번호가 남아있을 수 있으니 주의해야 한다. \password psql로 superuser 권한을 가진 계정에 접속한 뒤, 메타 명령어 \password를 이용해 비밀번호를 변경한다. psql -U postgres \password 비밀..

Database 2024.01.04

[k8s/Trino] Unrecognized VM option 'UseBiasedLocking' 현상

현상 AWS EKS환경에서 Apache Superset을 통해 AWS S3 데이터를 쿼리 하기 위해 Trino, Hive Metastore를 설치해 사용 중인데, 어느 날부터 Trino Worker Pod 1개에 아래와 같은 에러 로그와 함께 동작하지 않았다. 원인을 파악하고 해결한 방법을 적어둔다. 원인 에러 로그에서 확인되는 VM 옵션 UseBiasedLocking은 멀티스레딩 성능 관련 옵션으로 Java 5에 추가되고 Java 15에서 deprecated 된 후, 삭제되었다. 즉, 새로운 trino-worker pod가 동작하면서 사용하는 Java 버전에서 UseBiasedLocking 옵션이 지원되지 않아 서비스가 동작하지 않았다. trino 버전에 따라 Java 버전을 고정해두지는 않은 모양이다..

Kubernetes/삽질 2024.01.03

[k8s/DB] k8s 환경에서 동작하는 DB 백업

개요 AWS EKS의 쿠버네티스 버전 업그레이드 작업을 앞두고, 예기치 않게 문제 상황이 발생할 경우를 대비해 클러스터 내에서 동작하고 있는 DB를 백업해두려고 한다. 방법을 적어둔다. 사용 데이터베이스 엔진은 PostgreSQL이다. 방법 1. DB 포드 컨테이너 접속 kubectl exec -it -- bash # 예시 kubectl exec -it superset-postgresql-0 -- bash 2. 데이터베이스 Dump 수행 pg_dumpall > pg_dumpall -U > # 예시 pg_dumpall -U postgres > backup.sql Pod Container에서 psql, pg_dump, pg_dumpall 등 postgres에 작업할 수 있는 명령어를 옵션 없이 실행하면, 경..

Kubernetes 2024.01.02

[k8s] kubectl cp - 클라이언트/포드 간 파일 복사

개요 쿠버네티스를 사용하다 보면 클라이언트에서 포드 내 디렉터리로 파일을 전달하거나, 포드에 저장된 파일을 클라이언트로 가져오고 싶을 때가 있다. 이런 경우, kubectl cp 명령어를 사용할 수 있다. 사용법을 적어둔다. kubectl cp kubectl cp 명령어는 컨테이너 간 파일 및 디렉터리를 복사한다. 명령어가 동작하기 위해서는 포드 컨테이너에서 tar를 실행할 수 있어야 한다. 만약 tar 명령이 없다면 exec 명령으로 대체할 수 있다. kubectl cp 경로 지정 시 절대 경로로 지정하되, pod의 경로는 루트를 의미하는 최상의 /는 없이 지정한다. 예시 로컬(클라이언트) -> 포드 복사 만약 포드가 멀티 컨테이너로 구성되어 있고, 복사할 컨테이너를 지정하고 싶다면 -c 옵션을 사용한..

Kubernetes 2024.01.01

[PostgreSQL] pg_dumpall - 데이터베이스 백업/복원

개요 PostgreSQL 데이터베이스 내 데이터 전체를 백업하고 복원해야 할 일이 있어 방법을 정리해 둔다. 백업 pg_dumpall은 데이터베이스 클러스터 전체 내용을 덤프 하는 프로그램으로, 클러스터의 각 데이터베이스를 백업하고 role, tablespaces와 같은 클러스터 전체 데이터도 저장한다. 기본 사용법은 아래와 같다. pg_dumpall > pg_dumpall -f pg_dumpall -U -f # 예시 pg_dumpall -U postgres > dumpall_superset_postgres.sql pg_dumpall은 role, tablespaces, 빈 데이터베이스를 재생성하는 명령어를 내보낸 후, 각 데이터베이스에 대한 pg_dump를 호출하는 방식으로 동작한다. 결과 파일은 SQL..

Database 2023.12.29

[PostgreSQL] 사용자 목록 확인

개요 PostgreSQL에서 사용자 목록과 권한을 확인하는 방법을 정리해 둔다. psql 메타 명령어 psql 메타 명령어 \du는 사용자명, 사용자에게 부여된 권한과 소속 그룹 정보를 확인할 수 있다. \du 출력에서 확인할 수 있는 기본 권한(role) 목록은 다음과 같다. 권한 설명 SUPERUSER 데이터베이스에 대한 모든 작업을 허용하는 관리자 권한 CREATEDB 데이터베이스 생성 가능 CREATEROLE 신규 역할 생성 가능 REPLICATION 데이터베이스 복제를 위한 역할. 꽤 높은 권한을 가지고 있어 복제 용도로만 사용하는 것을 권장한다. BYPASSRLS Row 수준 보안 정책 통과 가능. 테이블 덤프 등의 작업 제한용 SQL 데이터베이스 사용자에 대한 정보를 저장하는 PG_USER ..

Database 2023.12.28