전체 글 1333

[Linux] (CRON) info (No MTA installed, discarding output)

개요운영 중인 서버의 루트 영역에서 용량을 많이 사용하고 있다는 알람을 받았다. 확인해 보니 /var/log/info.log 라는 파일의 용량이 컸고, 아래와 같은 로그가 반복적으로 발생하고 있었다.Jun 17 08:21:52 ec2 CRON[3378698]: (CRON) info (No MTA installed, discarding output)Jun 17 08:21:52 ec2 CRON[3378707]: (CRON) info (No MTA installed, discarding output)원인을 파악하고 현상을 해소해보자. 원인cron 작업은 실행 중 발생한 출력을 사용자에게 이메일로 전송하고자 한다. 그 과정에서 postfix와 같은 메일 서버가 설치되어 있지 않아 발생하는 오류이다. 해당 로..

Linux 2025.06.25

[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라는 소프트웨어인데 어떻게 설치하고 사용하는지 간단히 알아본다. CloudBeaver효율적이고 안전한 데이터 관리를 위해 설계된 경량 웹 애플리케이셔이다. 웹 브라우저를 통해 접근하며 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