쿠버네티스의 인그레스 컨트롤러인그레스 컨트롤러는 쿠버네티스에서 외부 트래픽(HTTP/HTTPS)을 클러스터 내부의 서비스로 라우팅하는 역할을 담당하는 컴포넌트임.이는 인그레스 리소스(Ingress Resource)와 함께 작동하며, 클러스터 외부에서 클러스터 내부의 애플리케이션에 접근하기 위한 고급 트래픽 관리 기능을 제공함. Ingress와 Ingress Controller의 개념1. Ingress쿠버네티스의 리소스 타입 중 하나로, HTTP/HTTPS 트래픽의 라우팅 규칙을 정의함.클라이언트 요청을 특정 서비스로 라우팅하기 위해 호스트 기반 또는 경로 기반 규칙을 지정할 수 있음.예를 들어, 특정 도메인(example.com)이나 경로(/api, /blog)로 들어오는 요청을 각각 다른 서비스로 전달..
쿠버네티스의 Pod Disruption Budget (PDB)PodDisruptionBudget(PDB)는 쿠버네티스에서 워크로드의 가용성을 보장하면서도 클러스터에서 안전한 스케일링이나 유지보수 작업을 수행할 수 있도록 도와주는 메커니즘임.주로 애플리케이션의 고가용성을 유지하면서 Pod를 중단시키는 작업을 제어하는 데 사용됨. PDB의 주요 목적1. 중단 제한PDB는 장애 발생 시 클러스터 관리자가 수동으로 Pod를 중단하거나 노드 스케일링, 업데이트와 같은 작업 중 Pod의 중단이 일정 수준 이하로 유지되도록 보장함.이는 애플리케이션의 서비스 중단을 방지하기 위한 것임. 2. 자동화된 워크플로 제어노드 업그레이드(예: kubelet 업그레이드), 클러스터 유지보수(예: Cordon/Drain 작업) 및..
Airflow의 ExecutorApache Airflow의 Executor는 태스크를 실행하는 방식과 실행 환경을 결정하는 핵심 컴포넌트임.Executor는 워크플로우의 성능과 확장성을 직접적으로 좌우함.각 환경에 적합한 Executor를 선택하는 것이 중요함. Airflow의 Executor 종류1. SequentialExecutor2. LocalExecutor3. CeleryExecutor4. KubernetesExecutor5. DaskExecutor6. DebugExecutor SequentialExecutor1. 특징기본 설정으로 제공되며, 태스크를 순차적으로 하나씩 실행함.데이터베이스와 함께 Airflow 초기 설정 및 테스트용으로 적합함. 2. 장점간단하고 설정이 필요 없음.로컬 테스트 및 ..
PGBouncerPGBouncer는 PostgreSQL의 경량 프록시 및 연결 풀링(connection pooling) 솔루션임.PostgreSQL은 연결 생성 및 관리에 리소스를 소모하기 때문에 많은 애플리케이션이 짧고 빈번한 데이터베이스 연결을 사용하는 경우 성능 저하를 겪을 수 있음.PGBouncer는 이러한 문제를 해결하며, 쿠버네티스 환경에서 매우 유용하게 활용됨. PGBouncer의 주요 역할1. 연결 풀링데이터베이스 연결을 재사용하여 연결 수를 최소화.max_connections 제한이 있는 PostgreSQL의 연결 병목을 완화. 2. 로드 밸런싱여러 클라이언트 연결을 단일 연결로 병합하여 서버 부하 감소. 3. 데이터베이스 보안PGBouncer를 통해 데이터베이스를 간접적으로 노출시킴으로..
쿠버네티스 인그레스의 PathType쿠버네티스 Ingress의 PathType은 요청 경로(/path)를 처리하고 매칭하는 방식에 대한 제어를 제공함.이를 통해 특정 HTTP(S) 요청이 적절한 백엔드 서비스로 라우팅되도록 설정할 수 있음.PathType은 경로 매칭의 정확성과 라우팅 동작을 결정하는 중요한 요소임. PathType의 종류쿠버네티스 Ingress는 총 3가지 PathType을 지원함. 1. Exact (정확 매칭)2. Prefix (접두사 매칭)3. ImplementationSpecific (컨트롤러 구현에 의존) Exact (PathType: Exact)요청 경로와 완벽히 일치하는 경우에만 트래픽을 라우팅함.경로가 정확히 동일하지 않으면 요청이 무시됨. 1. 특징/example 요청은 ..
쿠버네티스 인그레스쿠버네티스의 Ingress는 클러스터 외부에서 내부 서비스로 HTTP(S) 트래픽을 라우팅하기 위한 리소스임.Ingress는 쿠버네티스 클러스터에서 외부 트래픽과 서비스 간의 연결을 효율적으로 관리함.도메인 기반 라우팅, HTTPS 지원, 리다이렉션 등의 고급 기능을 제공함. Ingress의 핵심 개념Ingress는 단순한 서비스 노출 방식인 NodePort와 LoadBalancer와 달리, HTTP/HTTPS 레벨에서의 트래픽 관리를 제공함. 1. Ingress 컨트롤러Ingress 리소스는 스스로 동작하지 않음.이를 구현하고 실행하기 위해 Ingress Controller가 필요함. 1-2. 일반적으로 사용되는 Ingress ControllerNGINX Ingress Controll..
Nginx Dockerfile을 arm64로 ECR에 배포하는 방법ARM64 아키텍처의 Nginx 이미지를 생성하여 AWS ECR에 배포하는 방법은 다음과 같음.ARM64 지원을 위해 Docker의 multi-platform 빌드 기능을 활용함. Dockerfile 작성Nginx 이미지를 기반으로 Dockerfile을 작성함.# Base imageFROM nginx:1.21# Copy custom configuration (optional)COPY nginx.conf /etc/nginx/nginx.conf# Expose port 80EXPOSE 80# Start nginxCMD ["nginx", "-g", "daemon off;"] 빌드 환경 설정ARM64 아키텍처 이미지를 생성하려면 Docker의 Bu..
쿠버네티스 프로브쿠버네티스에서 프로브는 파드 내 컨테이너의 상태를 모니터링하기 위해 사용되는 매커니즘임.프로브는 주기적으로 컨테이너의 상태를 확인함.이를 통해 컨테이너가 정상적으로 작동 중인지, 재시작이 필요한지, 혹은 서비스에서 제외해야 하는지를 판단함. Liveness Probe1. 목적컨테이너가 "살아 있는지" 확인함.살아있지 않으면, 쿠버네티스는 해당 컨테이너를 재시작함. 2. 사용 시나리오애플리케이션이 무한 루프에 빠지거나, 데드락 상태에 빠질 때. livenessProbe: httpGet: path: /healthz port: 8080 initialDelaySeconds: 3 periodSeconds: 5 Readiness Probe1. 목적컨테이너가 "트래픽을 받을 준비가 되..
쿠버네티스 파드쿠버네티스의 파드는 쿠버네티스에서 애플리케이션의 배포 및 관리의 가장 작은 단위임.파드는 하나 이상의 컨테이너를 그룹으로 묶어 실행 환경을 제공함.이를 통해 컨테이너 간의 긴밀한 협업과 관리가 용이함. 파드의 주요 특징1. 컨테이너 그룹파드는 하나 이상의 컨테이너를 포함할 수 있음.파드 내 컨테이너는 서로 밀접하게 연관된 작업을 수행함.같은 네트워크 네임스페이스와 스토리지 볼륨을 공유함. 2. 공유 네트워크파드 내 모든 컨테이너는 동일한 IP 주소와 포트를 공유함.같은 파드 내 컨테이너는 localhost를 통해 서로 통신할 수 있음.파드 간 통신은 쿠버네티스 네트워크 정책을 따름. 3. 공유 스토리지파드 내 컨테이너는 공통 볼륨을 마운트하여 데이터를 공유할 수 있음.예를 들어, 한 컨테이..