Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
Tags
- 1차원 DP
- 2차원 dp
- 99클럽
- @BeforeAll
- @BeforeEach
- @Builder
- @Entity
- @GeneratedValue
- @GenericGenerator
- @NoargsConstructor
- @Query
- @Table
- @Transactional
- Actions
- Amazon EFS
- amazon fsx
- Android Studio
- ANSI SQL
- api gateway 설계
- api gateway 필터
- ApplicationEvent
- argocd
- assertThat
- async/await
- AVG
- AWS
- aws autoscaling
- aws eks
- aws iam role
- AWS KMS
Archives
- Today
- Total
기록
K3s 기반 멀티 계정 클라우드 인프라 설계 (AWS Free Tier 최적화) 본문
아키텍처 개요
이번 프로젝트의 목표는 최소 비용으로 배포 환경을 구성하되, 실제 운영 환경 수준의 짜임새 있는 인프라 구조를 갖추는 것이었다. 이를 위해 다음과 같은 방향으로 인프라를 설계했다.
- K3s 기반 경량 Kubernetes 클러스터 운영
- AWS 3개 환경(Infra / Dev / Prd) 분리로 프리티어 자원 극대화
- EC2 기반 노드 구성, Redis는 퍼블릭 서브넷 배치
- ArgoCD + Helm 기반 GitOps 배포 구조 준비

🔹 각 계정의 역할 및 리소스 구성
1. Infra (Control Plane 전용)
전체 클러스터의 제어 권한을 가진 마스터 노드를 운용. 워커 노드는 Dev/Prd 환경에 분산되어 있지만, 모든 노드는 Infra 계정의 K3s Control Plane에 연결한다.
구성 리소스:
- EC2 인스턴스 (t2.micro): K3s 마스터 노드
- Elastic IP: 고정 Public IP 부여 → 워커 노드가 고정된 Endpoint로 접근 가능
- ECR (2개): Backend / Frontend 이미지 저장소
- S3 Bucket: Helm 차트, 설정 파일, 백업 파일 보관
- IAM Role (OIDC): GitHub Actions에서 이 계정 리소스를 배포할 수 있도록 설정
GitOps 흐름을 준비하며, Helm 차트를 통해 ArgoCD와 연동한다.
2. Dev 환경 (개발 환경)
개발 중인 서비스의 테스트 배포, Jenkins 기반의 빌드 테스트, 연동 검증 등을 수행하는 환경. 비용을 줄이기 위해 EC2 1대만 AutoScalingGroup으로 관리
구성 리소스:
- Auto Scaling Group: K3s Agent EC2 (1대, t2.micro)
- RDS (MySQL): 퍼블릭 서브넷 구성. Helm 차트에서 Spring 설정으로 연결 가능
- ElastiCache (Redis): 퍼블릭 서브넷, 캐시용/세션용으로 사용
- S3 Bucket: 개발 환경 리소스 (업로드 이미지, 로그 등) 저장
3. Prd 환경 (운영 환경)
운영을 모의하는 환경. Dev와 유사한 구성이나, CI/CD와 모니터링이 안정적으로 동작하는 구성을 목표로 한다.
구성 리소스:
- Auto Scaling Group: K3s Agent EC2 (1대, t2.micro)
- RDS (MySQL): 운영 데이터 저장
- ElastiCache (Redis): 퍼블릭 서브넷 구성.
- S3 Bucket: 운영 환경에서 사용하는 업로드 파일 및 로그 저장
'DevOps' 카테고리의 다른 글
Docker Compose로 MySQL 개발 환경 구성하기 + 초기 설정 자동화 (0) | 2025.04.14 |
---|---|
K3s 기반 멀티 노드 클러스터 구축기 (1) - 컨트롤 플레인 자동화와 Helm 설치까지 (0) | 2025.04.14 |
Gradle test 먼저 실행했더니 실패한 이유: JDK와 javac의 함정 (0) | 2025.04.11 |
AWS 프리티어로 ECS on EC2 구성하기 (CloudFormation 기반 자동화) (0) | 2025.04.01 |
Makefile 사용법과 매개변수 전달 방법 정리 (0) | 2025.03.26 |
Comments