이번 실습에서는 Amazon EKS 환경에서 MySQL 3개를 StatefulSet으로 구성하고, EBS gp3 볼륨을 연결한 뒤 Source–Replica Replication까지 설정했다.진행하면서 MySQL Pod가 Pending 상태에 머무르는 문제가 발생했는데, 원인은 EKS 클러스터에 AWS EBS CSI Driver가 설치되어 있지 않았기 때문이었다.EBS CSI Driver 설치 후 PVC와 MySQL Pod가 정상 생성되었고, 마지막에는 mysql-sfs-0을 Source로 두고 mysql-sfs-1, mysql-sfs-2를 Replica로 연결하여 실제 데이터베이스가 복제되는 것까지 확인했다.전체 아키텍처 및 작업 흐름 Amazon EKS ..
전체 글
코딩관련 이모저모 정보를 올리는 블로그입니다.오늘은 AWS EKS 환경에서 Nginx와 FastAPI를 Kubernetes로 배포하고 외부 도메인을 통해 접근할 수 있는 구조를 구성했다.단순히 Pod를 띄우는 것에서 끝나는 것이 아니라 다음 요구사항을 하나씩 구현했다.Nginx Pod 최소 1개 ~ 최대 3개LoadBalancer를 통한 외부 접속 및 도메인 연결ConfigMap을 이용한 index.html 변경ConfigMap을 이용한 Nginx default.conf 변경FastAPI에서 Jinja2 페이지 제공FastAPI Pod 최소 2개 ~ 최대 6개Nginx 페이지에서 FastAPI 페이지로 이동이번 실습을 하면서 Docker 이미지와 Kubernetes가 어떤 관계인지도 조금 더 명확하게 이해할 수 있었다.1. 전체 아키텍처 및 작업 ..
이번 실습에서는 Kubernetes의 Pod와 Service 기초에서 한 단계 더 나아가 설정값과 데이터 저장공간을 분리해서 관리하는 방법을 학습했다.주요 실습 내용은 다음과 같다.Secret을 이용한 민감정보 관리Secret과 MySQL 8.0 연동emptyDir을 이용한 컨테이너 간 데이터 공유Sidecar 컨테이너를 이용한 Nginx 로그 확인hostPath를 이용한 Worker Node 저장공간 연결PV/PVC를 이용한 Persistent Storage 구성ConfigMap을 파일 형태로 Pod에 MountClusterIP / NodePort Service 구성MySQL 데이터 영속화 구조1. 전체 아키텍처 및 작업 흐름오늘 실습에서 사용한 Kubernetes 리소스의 관계를 먼저 정리하면 다음과..
오늘은 AWS EKS 환경에서 Kubernetes의 가장 기본적인 리소스인 Pod와 Service를 직접 YAML로 정의하고 배포하는 실습을 진행했다.단순히 nginx Pod 하나를 실행하는 것에서 시작하여 다음과 같은 내용을 실습했다.Pod YAML 작성 및 배포NodePort Service 생성Private EKS Worker Node에서 서비스 접근Init Container 구성Sidecar Container 구성emptyDir Volume을 이용한 컨테이너 간 데이터 공유Label과 Selector를 이용한 Pod 그룹화Service Selector를 이용한 특정 Pod 연결1. 전체 아키텍처 및 작업 흐름전체 구조Windows / WSL Ubuntu │ │ kubectl..
🏗️ 전체 아키텍처 및 작업 흐름전체적인 실습 과정은 다음과 같습니다.Private EC2 준비 ➔ Docker / AWS CLI 설치 ➔ IAM Role 설정 ➔ ECR 연동 ➔ AMI 생성 ➔ Manager / Worker 생성 ➔ Docker Swarm 구성 ➔ Node Label 설정 ➔ Nginx 배포 ➔ FastAPI 이미지 제작 / ECR Push ➔ FastAPI 배포전체 구성구성 요소역할Amazon ECRNginx / FastAPI Docker Image 저장Manager NodeDocker Swarm Cluster 및 Service 관리Worker Node Arole=app / Nginx 및 FastAPI 실행Worker Node Brole=app / Nginx 및 FastAPI 실행..
보안을 위해 데이터베이스(DB) 서버는 인터넷에 직접 노출되지 않는 프라이빗 서브넷(Private Subnet)에 배치하는 것이 표준 아키텍처입니다.이번 포스팅에서는 AWS EC2 2대(Public/Private)를 활용하여 커스텀 도커 이미지를 빌드/업로드(Push)하고, 프라이빗 서버에서 해당 컨테이너를 띄워 접속 테스트까지 진행한 전체 실습 과정을 정리합니다.🏗️ 전체 아키텍처 및 작업 흐름[ 개발자 PC / 퍼블릭 EC2 ] ────(1. docker push)────> [ Docker Hub ] │ │ (4. mysql 접속) (2. ..
Docker를 활용하여 커스텀 브릿지 네트워크를 구축하고, MySQL 및 FastAPI 컨테이너를 연동하는 실습을 진행하며 겪었던 다양한 에러와 해결 과정을 정리한 기록입니다.1. Docker Custom Bridge Network 구축 및 Container Alias 통신Docker의 기본 bridge 네트워크는 IP 주소 기반으로만 통신이 가능하지만, 사용자 정의 네트워크(Custom Bridge Network)를 생성하면 컨테이너 이름이나 별칭(Alias)을 이용한 DNS 통신이 가능해집니다.네트워크 생성 및 컨테이너 연결# 1. 커스텀 브릿지 네트워크 생성docker network create my-network1# 2. 네트워크 별칭(Alias)을 부여하여 컨테이너 구동docker run -d ..
웹 아키텍처를 공부하다 보면 자주 나오는 '리버스 프록시(Reverse Proxy)'의 정확한 개념과 역할, 그리고 많이 혼동하는 도메인 리다이렉션 및 AWS ALB(Application Load Balancer)와의 관계를 한 번에 정리합니다.1. 리버스 프록시(Reverse Proxy)란?리버스 프록시는 클라이언트(사용자)와 실제 백엔드 서버 사이에서 요청을 대신 받아 전달해 주는 '서버 측 대리인(중앙 관문)'입니다.사용자는 뒤에 백엔드 서버가 몇 대가 있는지, 어떤 포트(8000, 8080 등)로 동작하는지 몰라도 됩니다. 리버스 프록시 단 하나만 바라보고 요청을 보내면, 프록시가 내부 서버로 전달하여 응답을 대신 가져다줍니다.[ 클라이언트 ] ──(요청: 80/443)──> [ 리버스 프록시..
