GitOps를 도입하는 과정에서 Load Balancer(LB) 구성을 코드로 선언하고 버전 관리하는 것은 인프라 일관성 측면에서 중요하다. 이 글에서는 AWS EKS 환경에서 Helm 차트를 통해 AWS Load Balancer Controller를 설치하고, Kubernetes Gateway API를 사용해 ALB/NLB를 선언적으로 관리하는 방법을 설명한다.1. 구성 요소AWS Load Balancer Controller (LBC)AWS Load Balancer Controller는 Kubernetes 리소스를 감시하여 AWS Elastic Load Balancing 리소스를 자동으로 프로비저닝하는 컨트롤러다. Ingress 리소스로부터 ALB를, Service 리소스로부터 NLB를 생성하는 기존 ..
분류 전체보기
서비스 메쉬(Service Mesh)는 마이크로서비스 아키텍처에서 서비스 간의 통신을 제어하고 관찰하며 보안을 강화하기 위한 인프라 계층이다. Istio는 이러한 서비스 메쉬를 구현하는 대표적인 오픈소스 도구이다. 본 글에서는 Istio의 설치부터 샘플 애플리케이션 배포, 그리고 트래픽 관리의 기초를 다룬다. 환경은 minikube로 진행했다. 1. Istio 설치 및 환경 구성Istio 설치는 공식 스크립트를 통해 수행한다. 설치 후 실행 파일의 경로를 환경 변수에 추가.curl -L https://istio.io/downloadIstio | sh -export PATH="$PATH:/home/ygbaek/istio-1.29.0/bin"설치가 완료되면 istioctl x precheck 명령을 통해 현..
1. 개요AWS에서 두 계정간에 CloudWatch 메트릭을 시각화할 때 Grafana에서 CloudWatch를 데이터소스로 직접 연결하면 구성도 간단하고 운영도 쉽다. 하지만 CloudWatch Exporter를 사용해서 Prometheus에 저장하는 방식을 사용하면 직접 연결했을 때 대시보드를 조회할 때마다 발생할 수 있는 CloudWatch의 API 호출 비용을 줄일 수 있고, PromQL로 기존에 수집중인 다른 메트릭과 결합할 수도 있다. 구성하고자 하는 전체 구조는 다음과 같다.2. 계정 간 권한 설정 (Cross-Account IAM)2.1 B 계정 - 모니터링 대상 (권한 위임)A 계정의 EC2가 B 계정의 메트릭을 읽을 수 있도록 IAM Role을 생성.연결 정책: CloudWatchRea..
1. 테스트 데이터 생성가상의 주식 데이터프레임을 생성한다. 날짜를 인덱스로 설정하고 종가(`Close`)와 거래량(`Volume`) 데이터를 생성.import pandas as pdimport numpy as npdata = { 'Date': pd.date_range(start='2025-01-01', periods=6), 'Close': [1000, 1100, 1050, 1200, 1150, 1300], 'Volume': [100, 150, 120, 200, 180, 250]}df = pd.DataFrame(data)df.set_index('Date', inplace=True)df# Close Volume# Date # 2025-01-01 1000 100# 2025-..
기본적으로 Git 리포지토리를 수정하여 상태를 동기화하는 것이 GitOps의 정석적인 방식이겠지만, 개발 환경 ArgoCD에서 Auto Sync를 활성화하고, API를 통해 버전 정보만 갱신하여 Parameter Override를 수행하는 방식을 해봤다. 1. 인증 토큰(JWT) 발급ArgoCD API를 호출하기 위해서는 먼저 세션 토큰을 발급받아야 한다. 관리자 또는 사용자 계정 정보를 사용하여 /api/v1/session 엔드포인트에 POST 요청을 보낸다.ARGOCD_TOKEN=$(curl -s -k -X POST \ -H "Content-Type: application/json" \ -d '{"username":"", "password":""}' \ https://${ARGOCD_SERVER..
Airflow에서 DAG파일을 관리하고 배포하는 방식은 여러 가지가 있다. 이전에는 nfs를 pv로 활용해서 nfs스토리지에 DAG파일을 놓고 사용해봤고 더 효율적인 방법을 위해 gitsync를 설정해보자.1. SSH 키 생성 및 GitHub 등록Git 저장소에 안전하게 접근하기 위해 SSH 키 쌍을 생성한다.# SSH 키 생성 (RSA 4096bit)ssh-keygen -t rsa -b 4096 -C "your_email@example.com"생성 경로: /root/.ssh/id_rsa_airflowPassphrase: 입력하지 않고 엔터로 진행한다.생성된 공개키(id_rsa_airflow.pub)의 내용을 복사하여 GitHub Repository > Settings > Deploy keys에 등록한다..
Airflow 학습을 목적으로 Upbit API를 활용해 매시간 비트코인(KRW-BTC) 분봉 데이터를 수집하고 저장하는 파이프라인을 만들어보자. 데이터 저장소는 Kubernetes 환경에 Rook Ceph를 배포하여 구축한 S3 호환 Object Storage를 사용했다.데이터는 Raw 형태(JSON)로 먼저 저장한 후, 분석 효율을 위해 Parquet 포맷으로 변환하여 Processed 영역에 다시 저장한다.1. Airflow Connections 설정DAG 코드 내에서 인증 정보를 하드코딩하지 않고, Airflow의 Connection 기능을 활용해 안전하게 관리한다.1.1 S3 Connection (Rook Ceph)Rook Ceph로 생성한 S3 버킷에 접근하기 위한 설정이다. Connectio..
Rocky Linux 8.10이 설치된 가상머신(VM) 4대로 구성된 Kubernetes 클러스터 환경을 기준으로 Rook Ceph(v1.18.8)를 배포하고, Object Storage를 구성하는 과정을 기술한다. 각 VM은 Kubernetes 노드로 동작 중이며, Ceph 스토리지 구성을 위한 별도의 블록 디바이스가 할당된 상태를 전제로 한다.1. 사전 요구 사항 (Prerequisites)Rook Ceph를 설치하기 전, Rocky Linux 8.10 노드에서 스토리지 구성을 위한 사전 작업이 필수적이다. 특히 Ceph OSD(Object Storage Daemon)로 사용할 디스크는 어떠한 파일 시스템이나 파티션도 존재하지 않는 Raw Device 상태여야 한다. 나는 control-plane노드..