7월, 2025의 게시물 표시

Prometheus stack 으로 서버 시스템 모니터링 하기

이미지
 개요 본 문서에서는 Helm 차트를 이용해 Prometheus Stack을 설치하고, Kubernetes 기반 시스템의 상태를 효율적으로 모니터링하는 방법을 소개합니다. Prometheus, Grafana, Alertmanager 등을 포함한 통합 모니터링 스택을 통해 클러스터의 리소스 사용량, 네트워크 트래픽, 애플리케이션 성능 등을 직관적으로 시각화하고, 운영 안정성을 높일 수 있습니다. 헬름차트 정보 NAME                                                    CHART VERSION   APP VERSION     DESCRIPTION prometheus/kube-prometheus-stack                        75.15.1         v0.83.0         kube-prometheus-stack collects Kubernetes manif... values.yaml 수정내용 요약 grafana ingress 활성 및 호스트이름 등록 prometheus ingress 활성 및 호스트이름 등록 설치 helm repo add prometheus https://prometheus-community.github.io/helm-charts helm install prometheus-stack prometheus/kube-prometheus-stack -n monitoring --create-namespace -f ...

MySQL 컨테이너 환경 문제 1 - InnoDB init failed

 개요 컴퓨터를 껏다가 키는 동작을 여러 날 시겼으며, 잘 동작하던 MySQL 파드가 어느날 갑자기 동작하지 않았습니다.  복구 설차를 설명 합니다. 진단 및 해결절차 로그를 보면 innoDB 엔진 초기화가 안되는데, 데이터 파일에 문제가 생긴듯 하다. """ mysql 05:51:19.18 INFO  ==> Starting mysql in background 2025-07-28T05:51:19.188987Z 0 [System] [MY-015015] [Server] MySQL Server - start. 2025-07-28T05:51:19.389196Z 0 [System] [MY-010116] [Server] /opt/bitnami/mysql/bin/mysqld (mysqld 9.3.0) starting as process 38 2025-07-28T05:51:19.391364Z 0 [Warning] [MY-013242] [Server] --character-set-server: 'utf8' is currently an alias for the character set UTF8MB3, but will be an alias for UTF8MB4 in a future release. Please consider using UTF8MB4 in order to be unambiguous. 2025-07-28T05:51:19.394161Z 1 [System] [MY-013576] [InnoDB] InnoDB initialization has started. 2025-07-28T05:51:19.589469Z 1 [ERROR] [MY-012960] [InnoDB] Cannot create redo log files because data files are corrupt or the database was not shut down cleanly after creating the data files. 2025-07-28T05:51:...

Gitaction 으로 배포자동화 하기

 개요 깃허브 또는 깃랩에서 리포지토리의 태깅을 하면, 자동으로 빌드 배포가 수행하도록 하기 위해서, 젠킨스를 원격 호출 합니다. 코드 # .github/workflows/trigger-jenkins-on-tag.yml name: Realese Application on:   push:     # v1.2, v0.8 처럼 'v'로 시작하는 모든 태그     tags:       - 'v*' jobs:   trigger-jenkins:     runs-on: ubuntu-latest     steps:       - name: Trigger Jenkins build         # 토큰은 GitHub Secrets 에 등록했다고 가정         env:           JENKINS_TOKEN: ${{ secrets.JENKINS_TOKEN }}         run: |           # GITHUB_REF 에는 refs/tags/v0.8 형태로 들어오므로, 앞부분을 잘라냅니다.           TAG="${GITHUB_REF#refs/tags/}"           echo "🔔 Triggering Jenkins build for tag ${TAG}"           curl -X POST \             "http://jenkins.apps.lab3.dslee.lab/job/autotrade-binance-...

Argo CD 설치 및 Autotrade app 자동배포 파이프 만들기 - Gitops 형상관리

이미지
 개요 Git 리포지토리에 저장된 Kubernetes 매니페스트를 클러스터와 연동하여, 변경 사항을 자동으로 감지·반영하거나 필요 시 수동으로 동기화하는 GitOps 기반 배포 자동화 도구입니다. 이를 통해 애플리케이션 배포 과정을 코드로 관리하여 일관성과 안정성을 높이고, 배포 파이프라인의 투명한 변경 이력 관리를 가능하게 합니다. 설치 helm install argocd oci://ghcr.io/argoproj/argo-helm/argo-cd \   --namespace argocd \   --create-namespace \   --set configs.params."server\.insecure"=true \   --set server.ingress.enabled=true \   --set server.ingress.hostname="argocd.apps.lab3.dslee.lab" 암호확인 kubectl -n argocd get secret argocd-initial-admin-secret -o jsonpath="{.data.password}" | base64 -d 암호 수정 argocd login localhost:8080  argocd account update-password 깃허브 리포지토리 추가 예시 argocd repo add https://gitlab.cicd.local/pj1/pilot-app-1.git \  --username admin@example.com \  --password ...-rzfqbCiMr97Pbc- \  --insecure-skip-server-verification 깃러브 Manifests (deployment 와 kustomization 파일을 생성 합니다.) https://github.com/dslee1371/gitops/tree/main/autotrade-binance 애플리케이션 생성 생성되며, Sync 하고, 정상 상태...

Jenkins 설치 및 Autotrade app 자동배포 파이프 만들기

이미지
 개요 젠킨스를 설치하고, 배포를 자동화하는 파이프라인을 만들려고 합니다. 설치

딥시크 R1 첫인상 – 기대 이상의 성능, 아쉬운 추론

이미지
 개요 최근에 출시된 딥시크(DeepSeek) R1 모델에 대한 관심이 높아지고 있어, 저도 간단한 테스트를 진행해 보았습니다. 간단한 질문을 통해 추론 능력을 확인해보려 했지만, 예상외로 기본적인 질문에도 명확한 답변을 내놓지 못하는 경우 가 있었습니다. 예를 들어, 아래와 같은 간단한 논리 추론 문제를 제시했습니다: 영희는 철수보다 키가 크고, 철수는 민수보다 키가 작습니다. 누가 가장 키가 큽니까? 하지만 딥시크 R1은 이 질문에 대한 정답을 명확히 제시하지 못하고, 계속 생각중   을 보였습니다. 라마3.1보다 나은 점은? 딥시크 R1은 전반적인 문장 생성 능력이나, 복잡한 지문 이해에서 라마(LLaMA) 3보다 더 안정적인 출력을 보이는 경우가 많았습니다. 문법 오류도 적고, 응답 속도도 빠르며, 일반적인 요약이나 번역에서도 높은 품질을 보여주었습니다. 하지만 추론에는 약점이… 반면, 논리적 추론이나 간단한 퍼즐형 질문에 대해서는 지나치게 복잡하게 생각하는 경향 이 있었습니다. 모델이 스스로 '과잉 추론(overthinking)'을 하다 보니, 오히려 정답에서 멀어지는 모습도 종종 관찰되었습니다. 마무리하며 딥시크 R1은 전체적인 성능에서는 라마보다 인상적인 부분이 많지만, 추론 과제에서는 아직도 인간 수준의 단순화된 사고를 모방하는 데 한계 가 있는 듯합니다. 앞으로의 버전에서는 이런 불필요한 사고 전개를 줄이고, 핵심을 빠르게 짚어내는 방향으로 개선되길 기대 해 봅니다.

LLaMA 3.1 API의 개인용 AI 트레이딩 봇 연동 준비

 개요 최근 인공지능 기술이 빠르게 발전함에 따라, 개인 투자 분야에서도 대규모 언어 모델(LLM, Large Language Model)을 활용한 자동화 및 판단 시스템이 주목받고 있습니다. 저는 Meta의 LLaMA 3.1 (LLaMA: Large Language Model Meta AI) 모델을 로컬 서버에 구축하고, 이를 활용해 바이낸스(Binance) 거래소에서의 암호화폐 매매 판단 및 자동 거래 애플리케이션을 구현하였습니다. 1. Ollama 설치하기 (LLaMA 모델 실행 환경) [LLaMA 3.1] 모델을 구동하기 위해서는 Ollama 라는 로컬 모델 실행 툴이 필요합니다. 공식 웹사이트( https://ollama.com )에 접속하면 운영체제에 맞는 설치 파일을 쉽게 찾을 수 있습니다. macOS / Windows / Linux 모두 지원 예: macOS의 경우 .pkg , Windows는 .msi 형태 제공 👉 설치 후, 터미널(CLI)에서 아래 명령어로 정상 설치 여부를 확인합니다: ollama --version 2. LLaMA 3.1 모델 구동하기 Ollama 설치가 완료되면, 터미널에서 다음 명령어 한 줄로 LLaMA 3.1 모델을 다운로드하고 실행할 수 있습니다: ollama run llama3.1 💡 처음 실행 시, 모델이 자동으로 다운로드되며, 약간의 시간이 소요될 수 있습니다. ✅ 이후 실행은 캐시된 모델을 이용해 바로 구동됩니다. 3. WebUI 설치 (Open WebUI) LLM 모델을 GUI로 쉽게 테스트하고 싶다면, Open WebUI 를 Docker 컨테이너로 실행하면 됩니다. 다음 명령어를 통해 로컬 포트 3000 에 WebUI가 구동됩니다: docker run -d \   -p 3000:8080 \   -v open-webui:/app/backend/data \   --name open-webui \   --restart always \ ...

AI 기반 바이낸스 코인 자동 트레이딩 봇 구조 프로젝트

이미지
이 포스트에서는 Python과 AI 모델(LLama 3.1)을 활용하여 바이낸스 선물 자동매매 시스템 을 설계한 전체 구조를 소개합니다. 이 봇은 실시간 가격, 계정 정보, 기술적 지표, AI 분석, 그리고 포지션 전략까지 통합하여 트레이딩을 자동화하며, 데이터는 Mysql 을 통해 관리됩니다. 📌 목차 사용 기술 및 라이브러리 구성 환경변수 관리 (.env) 데이터베이스 구조 및 초기화 트레이드 기록 및 계정 히스토리 함수 성과 분석 및 통계 계산 기술적 지표 분석 로직 AI 모델 연동 및 응답 파싱 메인 트레이딩 루프 1. 사용 기술 및 라이브러리 구성 ccxt : 바이낸스 선물 API 연동 (포지션/가격/잔고 관리) mysql : 데이터 저장 (트레이드 및 계정 이력)  pandas, numpy : 시계열 데이터 및 기술적 지표 계산 requests : 외부 AI 모델 및 뉴스 API 통신 dotenv : API 키 및 민감 정보 환경변수로 관리 2. 환경변수 관리 (.env) .env 파일에 민감한 키 정보를 관리합니다: BINANCE_API_KEY , BINANCE_SECRET_KEY AI_API_URL , AI_API_KEY (예: 로컬 Llama3.1 WebUI 엔드포인트) 3. 데이터베이스 구조 및 초기화 초기 실행 시 아래 테이블을 생성합니다: trades : 거래 상태 기록 ( open/closed , 가격, 수량 등) trade_results : 개별 거래의 성과 기록 account_history : 계정 잔액 히스토리 4. 트레이드 기록 및 계정 히스토리 함수 save_trade() : 포지션 진입 정보 기록 close_trade() : 포지션 종료 및 수익 계산 update_account_history() : 주기적 잔액 저장 get_active_trade_info() : 현재 오픈된 거래 정보 조회 ...

RKE2 + 롱혼 PVC, PV의 영구디스크 관리 솔루션

이미지
 클라우드 네이티브 환경에서 **퍼시스턴트 스토리지(Persistent Storage)**는 안정적인 서비스 운영을 위한 핵심 요소입니다. 이번 포스팅에서는 RKE2 + Rancher + Longhorn 조합으로 구성된 스토리지 환경과 그 상태를 대시보드를 통해 살펴본 내용을 공유합니다. 📌 Longhorn 소개 Longhorn은 Rancher Labs에서 개발한 오픈소스 클라우드 네이티브 블록 스토리지 솔루션 입니다. 간단한 설치, 고가용성(HA) 아키텍처, 백업/복원 기능 등 다양한 이점을 제공하며, Kubernetes와 완벽하게 통합됩니다. 🧱 시스템 구성 Kubernetes 배포 방식 : RKE2 관리 툴 : Rancher UI 스토리지 솔루션 : Longhorn v1.7.0 총 노드 수 : 4  workers 총 디스크 용량 : 1.5 TiB 🖥️ Longhorn 대시보드 살펴보기 Longhorn의 웹 UI는 실시간 상태 확인에 매우 유용합니다. 아래는 대시보드 주요 항목에 대한 설명입니다. ✅ 스토리지 상태 총 용량 : 1.5 TiB 스케줄 가능 용량(Schedulable) : 969 GiB 예약된 용량(Reserved) : 461 GiB 사용 중(Used) : 108 GiB 아직 생성된 Volume은 없지만, 향후 PVC 생성 시 자동으로 프로비저닝 될 준비가 완료된 상태입니다. ✅ 노드 상태 총 4개 노드 모두 스케줄 가능(Schedulable) 상태 장애(Unscheduled, Down, Disabled) 상태 노드는 없음 ✅ 설치 헬름 설치 helm install longhorn longhorn-latest/longhorn \    --namespace longhorn-system \    --create-namespace \    --version=1.7.0 \ ...

Nexus 의 헬름차트 저장소으로 사용

이미지
 헬름 저장소 만들기 1. Nexus > 설정 > Create Repository 2. Helm (hosted) 선택 3. Name 과 Blob store 를 입력하고 Create Repository를 클릭합니다. 4. 생성된 "helm host" 리포지토리를 확인할 수 있습니다. 생성된 리포티토리에 헬름차트 업로드하기 1. 커맨드으로 파일 업로드 하기 curl -u admin:admin12341234 \   --upload-file rancher-2.11.3.tgz \   http://172.10.30.11:8081/repository/helm-host/ 2. 업로드한 헬름차트를 넥서스에서 확인 합니다. 예시2) 헬름차트를 다운로드 하고, 넥서스 저장소에 업로드 하기 1. 롱혼 헬름차트를 다운하기 위해서, 리포지토리 추가 helm repo add longhorn https://charts.longhorn.io  2. 롱혼 헬름차트를 리포토지토리에서 파일로 다운 helm pull longhorn/longhorn --version 1.7.0  3. 다운로드한 파일을 넥서스 저장소에 업로드 하기 curl -u admin:admin12341234 \   --upload-file longhorn-1.7.0.tgz \   http://172.10.30.11:8081/repository/helm-host/

RKE2 + Rancher UI 의 클러스터 관리

이미지
 Rancher UI는 Kubernetes 클러스터를 관리할 수 있는 강력한 웹 기반 인터페이스입니다. 제공된 Rancher UI 화면은 **클러스터 대시보드(Cluster Dashboard)**이며, 클러스터의 전체 상태를 한눈에 볼 수 있게 구성되어 있습니다. 아래는 주요 구성 요소에 대한 설명입니다. 🔷  Helm으로 설치 helm repo add rancher-latest https://releases.rancher.com/server-charts/latest helm install rancher lancher-latest/rancher \       --version 2.11.3 \       --namespace cattle-system --create-namespace \       --set bootstrapPassword="admin" \       --set tls=external \       --set ingress.enabled=true \       --set hostname=rancher.apps.lab3.dslee.lab 🔷 상단 정보 Provider : RKE2 – Rancher Kubernetes Engine 2를 사용하여 생성된 클러스터입니다. Kubernetes Version : v1.30.3+rke2r1 – 현재 클러스터에서 사용 중인 Kubernetes 버전입니다. Architecture : amd64 – 클러스터 노드의 아키텍처입니다. Created : 16 hours ago – 클러스터가 생성된 시간입니다. 🔶 주요 지표 요약 Total Resources : 1624 – 클러스터 내 전체 리소스 개수입니다. Nodes : 7 – 현재 클러스터에 등록된 노드 수입니다. Deploymen...

GCP BigQuery 테이블에 사용자 권한 부여 방법 정리

 BigQuery에서 특정 사용자에게 테이블 단위로 접근 권한을 부여해야 할 때, GCP에서는 IAM(Identity and Access Management)을 통해 프로젝트, 데이터셋, 테이블 단위로 역할(Role)을 지정할 수 있습니다. 이 글에서는 dslee1371@gmail.com 계정에 BigQuery 권한을 할당한 과정을 단계별로 정리합니다. ✅ 1단계: IAM에서 기본 역할 부여 먼저, 프로젝트 레벨에서 기본 BigQuery 권한을 부여합니다. 경로 : IAM & Admin > IAM 역할 부여 대상 : dslee1371@gmail.com 부여된 역할 : BigQuery Job User, BigQuery Read Session User, Browser 📌 설명: BigQuery User 역할은 사용자가 BigQuery에서 쿼리를 실행할 수 있는 기본 권한을 제공합니다. 하지만 이 권한만으로는 특정 Dataset이나 Table에 접근할 수 없으므로, 추가적으로 Dataset 및 Table 권한을 설정해야 합니다. ✅ 2단계: Dataset 수준 권한 설정 다음으로, 특정 데이터셋(Dataset)에 대한 접근 권한을 추가합니다. 경로 : BigQuery > [Dataset 이름] > Share > Manage Permissions 역할 부여 대상 : dslee1371@gmail.com 부여된 역할 : BigQuery User 📌 설명: BigQuery User : 쿼리 실행 및 테이블 데이터 조회를 허용합니다. BigQuery Metadata Viewer : 테이블의 스키마 구조와 메타데이터를 확인할 수 있습니다. ✅ 3단계: Table 수준 권한 설정 마지막으로, 특정 테이블에 직접 접근할 수 있도록 별도의 권한을 설정합니다. 경로 : BigQuery > [Table 이름] > Share > Manage ...