전체 글 1370

[Jupyterlab] jupyterlab-sql-explorer - SQL GUI 플러그인

개요예전에 jupyterlab / jupyter notebook을 사용할 때, 데이터베이스를 다루는 경우 jupyterlab-sql이라는 플러그인을 아주 잘 사용했다. 하지만 이 플러그인은 이제 유지보수가 이뤄지고 있지 않아 최신 버전의 jupyterlab에서는 사용이 불가능한 상태이다. 그래서 jupysql을 계속 사용해 왔는데, 최근 jupyterlab-sql을 대체할 만한 플러그인을 확인하여 기록해 둔다. jupyterlab-sql-explorerjupyterlab-sql-explorer는 사용자가 JupyterLab에서 SQL을 실행하고 데이터베이스 객체를 탐색할 수 있도록 도와주는 플러그인이다.JupyterLab 내에서 테이블, 뷰와 같은 데이터베이스 객체를 탐색할 수 있고, SQL문을 직접 ..

Kubernetes 2025.06.20

[EKS] aws-auth - EKS 클러스터에서 IAM 확인

개요업무에서 EKS에 접속해서 사용 중인데, 클러스터 내에서 내가 어떤 AWS 계정을 사용해서 작업을 수행하는지 확인하고 싶다. 찾아보니 EKS 접근 제어를 aws-auth라는 걸로 관리하는 것 같은데, 이번 글에서는 aws-auth에 대해서 조금 알아보려고 한다. aws-authEKS의 접근을 구성하는 방식 중 하나로, 클러스터가 IAM 보안 주체로 aws-auth라는 이름의 ConfigMap을 취급하는 방식이다. 즉, IAM 사용자, Role, Group을 Kubernetes RBAC과 연결하는 역할을 한다.aws-auth ConfigMap은 EKS 접근 제어를 관리하고 Kubernetes RBAC을 설정하며, EKS 노드 그룹이 클러스터에 조인할 수 있도록 허용하는 등의 역할을 담당한다.다만 공식..

Kubernetes 2025.06.19

[SOPS] age 방식으로 암호화

개요2025.06.10-[age] 파일 암호화 도구에서 age에 대해서 알아보았다. 이번 글에서는 업무에 사용 중인 방식인 SOPS를 age 옵션으로 암호화하는 방법을 적어둔다.공식 문서에서는 가능하면 PGP 대신 age를 사용해서 암호화하는 것이 좋다고 한다. 사전 준비먼저 암호화 및 복호화 작업에 사용할 공개 키 쌍을 생성한다.리눅스 기준으로, 생성한 키 쌍은 아래 경로에 위치해 있어야 복호화 시 참조하여 사용한다$XDG_CONFIG_HOME/sops/age/keys.txt# XDG_CONFIG_HOME가 설정되지 않았을 경우$HOME/.config/sops/age/keys.txt또는 환경변수 SOPS_AGE_KEY_FILE를 설정하는 방식으로 키 파일의 경로를 지정할 수 있다.이 글에서는 SOPS..

기타 2025.06.18

[age] 파일 암호화 도구

개요2025.05.30-SOPS(Secrets OPerationS)란에서 사용법 확인을 위해 SOPS Git에서 제공하고 있는 PGP 키를 이용해 파일을 암호화해 보았다. 다만 SOPS는 PGP 외에도 여러 암호화 방식을 지원하는데, 이 글에서는 SOPS에서 지원하고 있는 암호화 방식 중 하나인 age에 대해서 알아보려고 한다. 왜냐? 업무에서 사용하고 있기 때문이다……. ageage는 간단하고 현대적이며 안전한 파일 암호화 도구이자 포맷, 그리고 Go 라이브러리이다.별도의 구성 옵션 없이 사용할 수 있다는 특징을 가지며, Linux, macOS, FreeBSD, Windows 등의 다양한 환경에서 사용할 수 있다.RECIPIENTS라는 이름의 공개 키를 사용해 암호화하고 IDENTITIES라는 이름..

기타 2025.06.17

[Airflow] DagFileProcessorManager (PID=) last sent a heartbeat 51.22 seconds ago! Restarting it

현상업무를 하던 중, Dag 파싱이 정상적으로 이루어지지 않는 현상을 확인했다. Airflow Web UI에서 Dag의 코드를 확인하면 언제 파싱이 이루어졌는지 확인할 수 있는데, 확인 당시 기준 2일 전에 마지막으로 Dag 파싱이 이뤄지고 더 이상 파싱이 이뤄지지 않는 상태였다.원인을 파악하고 문제를 해결한 이력을 적어둔다. 원인먼저 Dag 파싱을 담당하는 DagFileProcessor의 로그가 존재하는지 확인했는데, 각 Dag 정의 파일의 파싱 이력 정도만 찾고 별도의 로그 파일은 확인하지 못했다.하지만 스케쥴러 로그 파일에서 아래와 같은 로그가 반복적으로 발생하고 있는 것을 확인했다.DagFileProcessorManager (PID=) last sent a heartbeat 51.22 seco..

Apache Airflow 2025.06.16

[GitLab] k8s Helm Chart 설치 시 runner 구성 방법

개요2025.06.04-[Gitlab] runner - PANIC: Failed to register this runner. Perhaps you are having network problems 에서 쿠버네티스 환경에서 Helm으로 설치한 gitlab-runner의 버전 업그레이드를 수행했는데, values.yaml 변경으로 별도로 설정해 두었던 일부 속성이 values.yaml에서 삭제되었다. 예로 들어 chart 0.15.0 버전에서는 runners.pollTimeout이라는 속성을 지원했는데,(https://artifacthub.io/packages/helm/gitlab/gitlab-runner/0.15.0?modal=values&path=runners.pollTimeout)현재는 지원하고 있지 ..

Kubernetes 2025.06.13

[Gitlab] runner - PANIC: Failed to register this runner. Perhaps you are having network problems

현상어느 날 갑자기, 잘 동작하고 있던 gitlab-runner가 아래와 같은 오류와 함께 동작하지 않는 상태가 되었다.문제가 되는 gitlab-runner는 아래의 방식으로 설치해여 사용 중이다.AWS EKS 1.27Helm Chart 배포chart repogitory : http://charts.gitlab.io/chart name : gitlab/gitlab-runnerchart version : 0.15.0원인을 파악하고 현상을 해소해보자. 원인1. 로그 확인 먼저 로그를 보면 http 410 오류 코드와 함께 네트워크에 문제가 있을 수도 있다는 출력을 확인할 수 있다.하지만 노드에 직접 접속하여 확인해봤더니, gitlab-runner가 동작하는 호스트와 gitlab 서버 간의 통신에는 이상이..

Git | GitLab 2025.06.12

[SOPS] 파일 일부 암호화

개요2025.05.30-SOPS(Secrets OPerationS)란에서 SOPS의 기본적인 사용방법에 대해서 알아보았다. SOPS는 기본적으로 파일 전체를 암호화하는데, 이럴 경우 내용을 파악할 수 없어 복호화를 항상 해야 한다는 번거로움이 발생한다. 때문에 yaml이나 json 등의 파일에서 필요한 속성, 항목만 암호화할 필요가 있다. 이번 글에서는 원하는 항목만 암호화하는 방법을 적어본다. yaml 암호화먼저 SOPS는 파일 확장자를 참조하여 파일을 암호화할 방법을 결정한다. yaml, json, env, ini와 같은 파일의 경우, 파일에서 키/값을 추출해 값만 암호화한다. 예로 들어 아래와 같은 yaml 형식의 데이터가 있다고 하자.foo: barhello: worldtest: test이 파일..

기타 2025.06.11

SOPS(Secrets OPerationS)란

개요k8s에서 서비스를 배포하고 관리하다보면 필연적으로 민감정보에 대한 관리를 고민하게 된다. k8s에서는 Secrets이라는 리소스를 사용해 민감정보를 관리하는데, Secrets을 정의하는 yaml 파일 내에서는 평문값을 노출하게 된다. 때문에 git과 같은 형상 관리 도구를 사용하기 꺼려졌었는데, 이번에 암호화 도구인 SOPS에 대해서 알게되어 내용을 정리해보고자 한다. SOPSSOPS(Secrets OPerationS)는 Mozilla에서 관리하는 오픈소스 프로젝트 중 하나로, 다양한 형식의 파일을 암호화하는 암호화된 파일 편집기이다. 설치https://github.com/getsops/sops/releases 에서 원하는 버전으로 설치하면 된다. window도 지원하는지 .exe 파일도 제공하..

기타 2025.06.10

[알고리즘] 최장 증가 수열(LIS) - 이분 탐색

개요2025.05.26-[알고리즘] 최장 증가 수열(LIS) - DP에서 최장 증가 수열을 동적 계획법으로 찾는 방법을 정리했었다. 다만 동적 계획법의 경우에는 O(n^2)의 시간 복잡도를 가진다. 때문에 배열의 길이가 아주 큰 경우에는 보다 효율적인 방법을 사용할 필요가 있다.이 글에서는 최장 증가 수열을 O(log n)의 시간 복잡도로 찾을 수 있는 이분 탐색을 사용한 방법을 정리해 본다. 최장 증가 부분 수열이분 탐색을 활용할 때는 LIS를 기록하는 배열을 하나 생성한 뒤, 주어진 배열을 하나씩 살펴보면서 각 숫자가 증가수열에 들어갈 위치를 찾는 방식이다. 상세한 과정은 다음과 같다. 구현1. 이분 탐색숫자가 들어갈 위치를 찾는 이분 탐색 함수는 아래와 같다.증가수열의 숫자가 들어갈 위치는 현재..

Algorithm 2025.06.09