전체 글 1372

[Jenkins] job 이관하기

개요EKS 업그레이드를 작업하던 중 사이드 이펙트로 클러스터에서 동작하던 Jenkins의 볼륨 위치가 변경되었다. 이에 따라 기존에 생성했던 Job을 신규 경로로 이관하고자 한다.방법을 적어둔다. JENKINS_HOME방법을 알아보기에 앞서 JENKINS_HOME의 구조에 대해서 먼저 적어둔다. Jenkins는 빌드를 수행하고 아카이브를 보관하기 위해 디스크 공간을 필요로 하는데, 이 공간이 JENKINS_HOME이다. JENKINS_HOME의 위치는 Jenkins 구성 화면에서 확인할 수 있고, 기본적으로 ~/.jenkins로 설정되어 있다. 필요한 경우에는 JENKINS_HOME 환경변수나, JENKINS_HOME이라는 시스템 속성에 값을 지정하며 원하는 경로를 홈 경로로 설정할 수 있다. JEN..

Jenkins 2025.06.24

[CloudBeaver] 웹 클라우드 데이터베이스 클라이언트

개요업무를 하다가 웹 브라우저 상에서 동작하는 데이터베이스 클라이언트 소프트웨어를 하나 발견했다. CloudBeaver라는 소프트웨어인데 어떻게 설치하고 사용하는지 간단히 알아본다. CloudBeaverCloudBeaver는 효율적이고 안전한 데이터 관리를 위해 설계된 경량 웹 애플리케이션이다. 웹 브라우저를 통해 접근하며 SQL, NoSQL, 클라우드 데이터베이스 등 다양한 데이터베이스를 지원한다.Java 애플리케이션이고, 웹은 TypeScript, React로 구현되어 있다. DBeaver에서 관리하며 엔터프라이즈 버전과 무료인 커뮤니티 버전을 제공한다. CloudBeaver는 다음과 같은 기능을 제공한다.- 사용자 친화적인 인터페이스- 안전한 연결- 다양한 배포 옵션- 다중 사용자 환경- 다양한..

Database 2025.06.23

[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