AWS 인프라 구성 가이드
AWS 인프라 구성 가이드
AWS EKS 환경에서 Skuber+ Observability를 구축하기 위한 인프라 구성 가이드입니다.
설치 전에 이 문서의 모든 항목을 완료해야 합니다.
인프라 구성도
리소스 요약
| 리소스 | 수량 | 사양 | 비고 |
|---|---|---|---|
| EKS Cluster (Host) | 1개 | 노드 2개 | |
| EKS Cluster (Agent) | 1개 이상 | 모니터링 대상 클러스터 | 기존 클러스터 사용 |
| VM — ClickHouse | 1대 | 8-16 vCPU, 32-64GB RAM | |
| VM — Keeper | 1대 | 2 vCPU, 4GB RAM | |
| EBS Volume | 2개 | 500GB-1TB (Data), 50-100GB (OS) | |
| NLB | 1개 | Internal | TCP 9000, 8123 |
| Security Group | 2-3개 | ClickHouse, Keeper, (NLB) | |
| S3 Bucket | 1개 | S3 티어링 사용 시 (선택) | |
| IAM User | 1개 | Access Key 발급 | S3 티어링 사용 시 (선택) |
EKS Cluster (Host)
Skuber+ Observability의 Host 컴포넌트를 배포할 전용 EKS Cluster를 새로 생성하는 것을 권장합니다.
기존 워크로드와의 리소스 경합을 방지하고, 독립적인 운영이 가능합니다.
EKS Cluster 생성 절차는 AWS 공식 문서를 참조하세요.
노드 사양은 요구사항 문서의 Host Cluster 요구사항을 확인하세요.
EC2 인스턴스 생성
ClickHouse VM
| 항목 | 설정값 | 비고 |
|---|---|---|
| 인스턴스 타입 | r7g.2xlarge (8 vCPU, 64GB RAM) | 소규모: r7g.xlarge 가능 |
| AMI | Ubuntu 22.04 LTS | arm64 또는 amd64 |
| Root Volume | 100GB gp3 | OS용 |
| Data Volume | 500GB+ gp3 (IOPS 3,000+) | 데이터 저장용 |
| Subnet | Private Subnet | |
| Security Group | SG-ClickHouse (아래 참조) | |
| Key Pair | 설치 담당자가 접근 가능한 키페어 |
Data Volume 마운트 (필수, 고객사 직접 수행): Data Volume은
/var/lib/clickhouse경로에 마운트해야 합니다.
설치 도구(skuberplus-observability-db)는 마운트된 경로를 사용하며, 마운트를 자동으로 수행하지 않습니다.
ClickHouse 설치 전에 반드시 마운트를 완료하세요.마운트 예시:
# 1. 파일시스템 생성 (최초 1회) sudo mkfs.ext4 /dev/nvme1n1 # 2. 마운트 포인트 생성 및 마운트 sudo mkdir -p /var/lib/clickhouse sudo mount /dev/nvme1n1 /var/lib/clickhouse # 3. 재부팅 시 자동 마운트 (fstab 등록) echo '/dev/nvme1n1 /var/lib/clickhouse ext4 defaults,nofail 0 2' | sudo tee -a /etc/fstab # 4. 마운트 확인 df -h /var/lib/clickhouse디바이스 이름(
/dev/nvme1n1)은 실제 환경에 맞게 변경하세요.lsblk명령으로 확인할 수 있습니다.
Keeper VM
| 항목 | 설정값 | 비고 |
|---|---|---|
| 인스턴스 타입 | t3.medium (2 vCPU, 4GB RAM) | |
| AMI | Ubuntu 22.04 LTS | arm64 또는 amd64 (ClickHouse VM과 동일) |
| Root Volume | 50GB gp3 | OS + 데이터 |
| Subnet | Private Subnet (ClickHouse VM과 동일) | |
| Security Group | SG-Keeper (아래 참조) | |
| Key Pair | 설치 담당자가 접근 가능한 키페어 |
Keeper는 별도 Data Volume이 필요하지 않습니다. Root Volume에 데이터를 저장합니다.
Network Load Balancer (NLB)
Host Cluster에서 ClickHouse VM으로 접근하기 위해 Internal NLB가 필요합니다.
NLB 생성
| 항목 | 설정값 | 비고 |
|---|---|---|
| 타입 | Network Load Balancer | |
| Scheme | Internal | VPC 내부 전용 |
| 가용영역 | ClickHouse VM이 위치한 AZ 포함 |
리스너 설정
| 리스너 | 프로토콜 | 포트 | Target Group |
|---|---|---|---|
| 리스너 1 | TCP | 9000 | TG-ClickHouse-Native |
| 리스너 2 | TCP | 8123 | TG-ClickHouse-HTTP |
Target Group 설정
| 항목 | 설정값 |
|---|---|
| Target Type | IP |
| 프로토콜 | TCP |
| 헬스체크 | TCP 9000 |
| Cross-Zone Load Balancing | 활성화 (권장) |
Target 등록
NLB 생성 후, ClickHouse VM의 Private IP를 Target Group에 등록합니다.
NLB의 DNS 이름 또는 IP는 Host Cluster 설치 시
externalClickhouse.host값으로 사용됩니다.
설치 전에 NLB DNS를 확인하여 메모해두세요.
Security Group
SG-ClickHouse
ClickHouse VM에 적용하는 Security Group입니다.
| 방향 | 프로토콜 | 포트 | 소스/대상 | 설명 |
|---|---|---|---|---|
| Inbound | TCP | 9000 | NLB 서브넷 CIDR | Native 프로토콜 |
| Inbound | TCP | 8123 | NLB 서브넷 CIDR | HTTP 인터페이스 |
| Inbound | TCP | 9009 | SG-ClickHouse (자기 자신) | 내부 복제 (확장 대비) |
| Inbound | TCP | 9181 | SG-Keeper | Keeper 연결 |
| Inbound | TCP | 22 | 관리 IP (설치 담당자) | SSH 접속 (설치용) |
| Outbound | ALL | ALL | 0.0.0.0/0 |
Outbound ALL을 제한하는 환경에서는 Host Cluster OTel Gateway로 TCP 4317 (OTLP gRPC) 아웃바운드를 명시적으로 허용해야 합니다. CH VM의 OTel Agent가 메트릭을 전송합니다.
SG-Keeper
ClickHouse Keeper VM에 적용하는 Security Group입니다.
| 방향 | 프로토콜 | 포트 | 소스/대상 | 설명 |
|---|---|---|---|---|
| Inbound | TCP | 9181 | SG-ClickHouse | 클라이언트 연결 |
| Inbound | TCP | 9234 | SG-Keeper (자기 자신) | Raft 통신 (확장 대비) |
| Inbound | TCP | 22 | 관리 IP (설치 담당자) | SSH 접속 (설치용) |
| Outbound | ALL | ALL | 0.0.0.0/0 |
SG-NLB (참고용)
NLB에는 별도 Security Group이 적용되지 않지만, NLB가 위치한 서브넷의 NACL에서 아래 트래픽이 허용되어야 합니다.
| 방향 | 프로토콜 | 포트 | 소스/대상 | 설명 |
|---|---|---|---|---|
| Inbound | TCP | 9000 | Host Cluster 서브넷 CIDR | ClickHouse Native |
| Inbound | TCP | 8123 | Host Cluster 서브넷 CIDR | ClickHouse HTTP |
VPC / Subnet
| 항목 | 요구사항 |
|---|---|
| VPC | 기존 VPC 사용 또는 신규 생성 |
| Subnet | Private Subnet (인터넷 직접 접근 불필요) |
| 가용영역 | 단일 AZ 가능 |
| Host Cluster ↔ ClickHouse VM | 동일 VPC 또는 VPC Peering으로 연결 필요 |
Host Cluster(EKS)와 ClickHouse VM이 서로 다른 VPC에 있는 경우, VPC Peering 또는 Transit Gateway를 통해 네트워크를 연결해야 합니다.
IAM 권한
설치 시 필요한 권한 (Installer)
설치 담당자(사용자 또는 Role)가 보유해야 하는 최소 권한입니다.
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "EKSDescribeCluster",
"Effect": "Allow",
"Action": ["eks:DescribeCluster"],
"Resource": "arn:aws:eks:REGION:ACCOUNT_ID:cluster/CLUSTER_NAME"
}
]
}
REGION,ACCOUNT_ID,CLUSTER_NAME을 실제 값으로 교체하세요.
런타임 권한 — AWS Load Balancer Controller (IRSA)
Host Cluster에서 NLB를 Kubernetes Service로 자동 프로비저닝하려면 AWS Load Balancer Controller와 IRSA(IAM Role for Service Account)가 필요합니다.
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "ELBDescribe",
"Effect": "Allow",
"Action": [
"ec2:DescribeAvailabilityZones",
"ec2:DescribeVpcs",
"ec2:DescribeSubnets",
"ec2:DescribeSecurityGroups",
"ec2:DescribeInstances",
"ec2:DescribeNetworkInterfaces",
"ec2:DescribeTags",
"elasticloadbalancing:Describe*"
],
"Resource": "*"
},
{
"Sid": "ELBManage",
"Effect": "Allow",
"Action": [
"elasticloadbalancing:CreateLoadBalancer",
"elasticloadbalancing:CreateTargetGroup",
"elasticloadbalancing:CreateListener",
"elasticloadbalancing:CreateRule",
"elasticloadbalancing:DeleteLoadBalancer",
"elasticloadbalancing:DeleteTargetGroup",
"elasticloadbalancing:DeleteListener",
"elasticloadbalancing:DeleteRule",
"elasticloadbalancing:Modify*",
"elasticloadbalancing:RegisterTargets",
"elasticloadbalancing:DeregisterTargets",
"elasticloadbalancing:AddTags",
"elasticloadbalancing:RemoveTags",
"ec2:AuthorizeSecurityGroupIngress",
"ec2:RevokeSecurityGroupIngress",
"ec2:CreateSecurityGroup",
"ec2:DeleteSecurityGroup",
"ec2:CreateTags",
"ec2:DeleteTags"
],
"Resource": "*"
},
{
"Sid": "ServiceLinkedRole",
"Effect": "Allow",
"Action": ["iam:CreateServiceLinkedRole"],
"Resource": "*",
"Condition": {
"StringEquals": {
"iam:AWSServiceName": "elasticloadbalancing.amazonaws.com"
}
}
}
]
}런타임 권한 — EBS CSI Driver (IRSA)
ClickHouse 데이터용 EBS 볼륨을 Kubernetes에서 관리하려면 EBS CSI Driver와 IRSA가 필요합니다.
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "EBSDescribe",
"Effect": "Allow",
"Action": [
"ec2:DescribeAvailabilityZones",
"ec2:DescribeInstances",
"ec2:DescribeSnapshots",
"ec2:DescribeTags",
"ec2:DescribeVolumes",
"ec2:DescribeVolumesModifications"
],
"Resource": "*"
},
{
"Sid": "EBSManage",
"Effect": "Allow",
"Action": [
"ec2:CreateSnapshot",
"ec2:CreateTags",
"ec2:CreateVolume",
"ec2:DeleteSnapshot",
"ec2:DeleteTags",
"ec2:DeleteVolume",
"ec2:ModifyVolume",
"ec2:AttachVolume",
"ec2:DetachVolume"
],
"Resource": "*"
}
]
}S3 스토리지 티어링 (선택)
S3 Warm/Cold 스토리지를 사용하면 오래된 데이터를 S3로 자동 이동하여 로컬 디스크 사용량을 줄일 수 있습니다.
S3 티어링은 선택 사항이며, 설치 후 UI에서 활성화할 수 있습니다.
S3 버킷 준비
| 항목 | 요구사항 | 비고 |
|---|---|---|
| 버킷 수 | 1개 | Warm + Cold 공용 |
| 리전 | ClickHouse VM과 동일 리전 | 데이터 전송 비용 절감 |
| 퍼블릭 액세스 | 차단 (기본값) | |
| 버전 관리 | 비활성화 | |
| 암호화 | SSE-S3 (기본값) |
IAM 사용자 + Access Key 발급
ClickHouse VM에서 S3에 접근하기 위해 IAM 사용자의 Access Key를 사용합니다.
Step 1. IAM 사용자 생성 (프로그래매틱 접근용)
Step 2. 아래 정책을 사용자에게 연결
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "S3TieringAccess",
"Effect": "Allow",
"Action": [
"s3:GetObject",
"s3:PutObject",
"s3:DeleteObject",
"s3:ListBucket",
"s3:GetBucketLocation",
"s3:AbortMultipartUpload",
"s3:ListMultipartUploadParts",
"s3:ListBucketMultipartUploads"
],
"Resource": [
"arn:aws:s3:::YOUR_BUCKET_NAME",
"arn:aws:s3:::YOUR_BUCKET_NAME/*"
]
}
]
}
YOUR_BUCKET_NAME을 실제 버킷 이름으로 교체하세요.
Step 3. Access Key ID + Secret Access Key 발급 후 안전하게 보관
발급된 Access Key는 Skuber+ Observability UI의 S3 설정 화면에서 입력합니다.
자세한 설정 방법은 데이터 보존 문서를 참조하세요.
방화벽 규칙
Kubernetes Worker Nodes → 외부
| # | Source | Destination | Port | Protocol | 용도 | 유지 |
|---|---|---|---|---|---|---|
| 1 | K8s Worker Nodes | registry.skuberplus.com | 443 | TCP/HTTPS | 컨테이너 이미지 Pull | 상시 |
| 2 | K8s Worker Nodes | *.amazonaws.com | 443 | TCP/HTTPS | AWS API (S3, ELB 등) | 상시 |
| 3 | K8s Worker Nodes | iam.amazonaws.com | 443 | TCP/HTTPS | IRSA 설정, IAM 관리 | 상시 |
ClickHouse VM → 외부
| # | Source | Destination | Port | Protocol | 용도 | 유지 |
|---|---|---|---|---|---|---|
| 4 | ClickHouse VM | packages.clickhouse.com | 443 | TCP/HTTPS | ClickHouse 패키지 설치 | 설치 시 |
| 5 | ClickHouse VM | github.com | 443 | TCP/HTTPS | clickhouse-backup 설치 | 설치 시 |
| 6 | ClickHouse VM | *.s3.REGION.amazonaws.com | 443 | TCP/HTTPS | S3 Warm/Cold 스토리지 | S3 사용 시 상시 |
규칙 6번의
REGION은 S3 버킷이 위치한 리전으로 교체하세요 (예:ap-northeast-2).
연결 검증
방화벽 오픈 후 아래 명령어로 연결을 검증합니다.
1. Registry 연결 테스트 (K8s Worker Node에서 실행):
curl -v https://registry.skuberplus.com/v2/2. 이미지 Pull 테스트:
docker pull registry.skuberplus.com/observability/skuber-alpine:3.18.23. Helm 차트 Pull 테스트:
helm pull oci://registry.skuberplus.com/charts/skuber-otel-operator --version 1.0.14. ClickHouse VM에서 S3 연결 테스트 (S3 사용 시):
aws s3 ls s3://YOUR_BUCKET_NAME --region REGION사전 점검 목록
설치 전에 아래 항목을 모두 완료했는지 확인합니다.
- ClickHouse EC2 인스턴스 생성 완료
- Keeper EC2 인스턴스 생성 완료
- ClickHouse Data Volume 마운트 완료 (
/var/lib/clickhouse) - EKS Cluster (Host) 생성 완료
- NLB 생성 완료 (Internal, TCP 9000/8123)
- NLB Target Group에 ClickHouse VM Private IP 등록
- NLB DNS 이름 확인 및 메모
- Security Group 규칙 적용 완료 (SG-ClickHouse, SG-Keeper)
- IAM 정책 적용 완료 (Installer, LB Controller, EBS CSI)
- 방화벽 규칙 적용 완료 (registry.skuberplus.com 등)
- 방화벽 연결 검증 완료
- (S3 사용 시) S3 버킷 생성 완료
- (S3 사용 시) IAM 사용자 생성 + Access Key 발급 완료
- (S3 사용 시) ClickHouse VM → S3 연결 검증 완료
다음 단계
인프라 구성이 완료되면 설치를 진행합니다:
- 설치 가이드 — 전체 설치 가이드
- Host 클러스터 설치 — 중앙 수집 서버 설치
- Agent 클러스터 설치 — 모니터링 대상 클러스터 설치
문의
기술 지원 문의: sales@skuberplus.com