2025/04 18

[Helm] Jenkins - coalesce.go:220: warning: cannot overwrite table with non table for

현상AWS EKS의 NodeGroup LT 업데이트로 인해 노드 재시작이 발생했는데, Jenkins 서비스가 시작하던 중 플러그인 버전 충돌이 발생해 Jenkins 버전 업그레이드를 진행하려고 한다.Jenkins Helm Chart(https://charts.jenkins.io)의 4.6.1 버전에서 5.1.0 버전으로 업그레이드를 진행하려고 했는데…… helm upgrade 중 아래와 같이 오류가 발생하면서 업그레이드가 되지 않았다.원인을 확인하고 문제를 해결해 보자. 원인확인해 보니 Chart Templete과 매핑하고자 하는 values.yaml의 데이터 형식 등이 맞지 않을 때, 매핑되지 않는 값을 전달하거나 list를 전달해야 하는데 dictionmary를 전달하는 등의 상황일 때 발생하는 ..

[Helm] jenkins - 플러그인 버전 충돌 디버깅하기

현상AWS EKS 환경에서 Jenkins를 Helm으로 설치해서 동작시키고 있는데, 서비스가 종료되었다가 재시작하면서 동작을 안 하고 있는 상태이다.대체로 단순 서비스 재시작 시 Jenkins가 정상적으로 올라오지 않는 상황은 Jenkins 버전과 플러그인 버전 충돌이 원인일 수 있다.관련해서 확인하고 해결할 수 있는 부분을 적어둔다. 참고로 구성은 다음과 같다.쿠버네티스 클러스터 / 버전 : AWS EKS / kubernetes 1.27.6Helm Chartrepository : https://charts.jenkins.iochart version : 4.6.1app version : 2.414.1 describe플러그인 버전 충돌이 발생하면 대체로 플러그인 설치가 진행되는 initContainer..

Kubernetes/삽질 2025.04.23

[Helm] superset - Error: failed to create containerd task: failed to create shim task: OCI runtime create failed: runc create failed: unable to start container process: exec: "/bin/sh": stat /bin/sh: no such file or directory: unknown

현상AWS EKS로 구성된 쿠버네티스 클러스터를 운영하고 있는데, 인프라 운영팀으로부터 NodeGroup과 연결된 Launch Templete의 리소스 태그 변경이 필요하다는 연락을 받았다. LT를 업데이트하면 기존에 동작하고 있던 Node가 종료되면서 새로운 버전의 LT로 만들어진 Node가 생성되기 때문에 서비스 확인 등의 작업이 필요한 상황이었다. 1년 정도 유지보수를 하지 않다가 작업한 상황이라 걱정이 되었는데, 아니나 다를까 작업 후 Helm으로 설치한 Superset에서 아래와 같은 오류가 발생했다.원인을 파악하고 문제를 해결해보자. 참고로 현재 환경은 다음과 같다.쿠버네티스 클러스터 / 버전 : AWS EKS / kubernetes 1.27.6Helm Chartrepository : http..

Kubernetes/삽질 2025.04.22

[Python] Pandas - Display 옵션 조정

개요Jupyter 노트북 환경에서 작업을 하다 보면 DataFrame을 확인할 때 컬럼이나 행이 생략되어 전체 정보를 확인할 수 없는 경우가 있다. 이런 경우 생략하는 정도를 조정하면 보다 효율적으로 데이터를 조회할 수 있다. 현재 옵션 확인옵션을 조정하기 전에 먼저 어떤 옵션이 있는지 확인할 필요가 있을 것 같다.옵션에 대한 설명은 pandas.describe_option을 통해 확인할 수 있다.import pandas as pdpd.describe_option()코드 상으로도 확인할 수 있지만 공식 문서를 활용하는 게 더 수월할 수 있다.https://pandas.pydata.org/pandas-docs/stable/user_guide/options.html#available-options 인쇄..

[Python] requests Transport Adapters - 요청 재시도

개요이전에 Python으로 HTTP 요청을 구현하면서 2024.07.18-[Python] Requests hooks - 응답에 대한 콜백 구현하기에서 살펴봤던 hooks를 활용해 재시도 로직을 구현했었다. 그런데 최근에 requests 모듈에서 제공하는 Transport Adapters를 활용해서 재시도 로직을 구현할 수 있다는 것을 알게 되었다.방법을 정리해 보자. Transport Adapters전송 어댑터(Transport Adapters)는 HTTP 서비스의 상호 작용 방식을 제어하는 메커니즘을 제공하며, 서비스별 구성을 적용할 수 있다.Requests는 단일 전송 어댑터인 HTTPAdapter와 함께 제공된다. HTTPAdapter는 urllib3을 사용해 HTTP와 HTTPS 간의 기본적인 ..

카테고리 없음 2025.04.18

[Python] aiofiles - 비동기 파일 작업

개요Python으로 비동기 프로그래밍을 진행 중인데, 프로그램 결과 파일을 생성해야 한다. 그런데 Python에서 파일을 다룰 때 사용하는 open 함수는 비동기를 지원하지 않는다고 한다. 이 문제를 해결하기 위해 Python 비동기 프로그래밍으로 파일 작업을 할 수 있도록 지원해 주는 ailfiles라는 라이브러리 사용 방법을 알아본다.   aiofilesaiofiles은 비동기 애플리케이션에서 로컬 디스크의 파일을 처리하기 위해 Python으로 작성한 Apache 2 라이센스의 라이브러리다.일반적으로 로컬 파일 IO는 블로킹이기 때문에 쉽게 비동기 방식으로 수행할 수 없다. 다시 말해 파일 IO 수행은 비동기 애플리케이션에 영향을 줄 수 있기 때문에, 실행 중인 스레드를 차단해서는 안 된다. 하지만 ..

Python 2025.04.17

[MySQL] LIMIT ~ OFFSET - 조회 범위 지정

개요데이터베이스를 조회한 데이터를 응답하는 RestAPI의 응답시간이 늦다는 피드백이 왔다. 관련해서 요청 데이터 양을 변경하여 API 테스트가 필요한데, 요청할 때마다 데이터를 다르게 주고 싶다.관련해서 LIMIT과 OFFSET을 활용하고자 사용 방법 등을 정리한다.  LIMITLIMIT은 조회하는 행의 수를 제한할 때 사용한다. SELECT column_name(s)FROM table_nameLIMIT number;예시 데이터는 1부터 10까지의 값을 가진 테이블인데 이 테이블을 5행까지만 조회하는 것으로 제한한 것이다.  LIMIT ~ OFFSETLIMIT은 OFFSET 옵션으로 조회 시 건너뛸 행의 수를 지정할 수 있다.SELECT column1, column2, ...FROM table_name..

Database 2025.04.16

[Python] websockets - 웹소켓 연결 확인

개요2025.04.06-[Python] websockets - 연결 종료 시 자동 재연결에서 연결이 자동으로 종료되는 경우, 자동으로 재연결을 시도하도록 코드를 개선했었다.확인해보니 어떤 웹소켓 서버의 경우에는 기본적으로 아무 데이터도 수/발신하지 않는 상태로 120초 정도가 경과하면 웹소켓 연결을 종료한다고 한다. 때문에 websockets 라이브러리는 클라이언트에서 서버와의 연결을 확인함과 동시에 keepalive 역할을 할 수 있는 ping 함수를 제공하고 있다. 사용 방법을 가볍게 알아본다.  websockets.pingwebsockets.ping 함수는 0x9 연산코드를 포함하는 Ping 프레임을 보낸다. pong_waiter = await websocket.ping()# only if you ..

Python 2025.04.15

[Python] 여러 웹소켓 연결하기

개요Python으로 WebSocket 통신이 필요한 프로그램을 개발하고 있는데, 여러 웹소켓 통신 연결 및 유지가 필요한 상황이다. 평소 Python으로 개발을 할 때 특정 서버, 그것도 여러 서버와 지속적인 통신 연결을 유지할 상황이 많지 않았다. 이번 기회에 적당한 방법을 정리해 둔다.   웹소켓 통신 함수먼저 웹소켓 통신을 유지할 함수를 작성한다. 함수는 2025.04.06-[Python] websockets - 연결 종료 시 자동 재연결에서 작성한 코드이다. 다만 재사용성을 확보할 수 있도록 통신할 URL과 전송할 데이터를 매개변수로 전달받을 수 있도록 수정했다.import asynciofrom websockets.asyncio.client import connectimport jsonasync ..

Python 2025.04.14

[Python] websockets - 연결 종료 시 자동 재연결

개요Python websockets 라이브러리르 사용해서 가상 자산 거래소에 orderbook 정보를 구독하고 있는데, 일정 시간이나 횟수가 지나면 자동으로 연결이 종료되는 문제가 발생했다.관련해서 자동으로 연결을 재시도할 수 있도록 코드를 변경해보려고 한다.   기존 코드import asynciofrom websockets.asyncio.client import connectimport jsonasync def connect_test(): url = "wss://ws-api.korbit.co.kr/v2/public" send_data = [ { "method": "subscribe", "type": "orderbook", ..

Python 2025.04.11
1 2