ํ‹ฐ์Šคํ† ๋ฆฌ ๋ทฐ

๐Ÿค– AI Assisted Content
์ด ๊ธ€์€ AI(Claude, Anthropic)์˜ ๋„์›€์„ ๋ฐ›์•„ ์ž‘์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
์ž‘์„ฑ์ž๊ฐ€ ๋‚ด์šฉ์„ ๊ฒ€ํ† ํ•˜๊ณ  ํŽธ์ง‘ํ–ˆ์œผ๋‚˜, AI๊ฐ€ ์ดˆ์•ˆ ์ž‘์„ฑ ๋ฐ ๊ตฌ์„ฑ์— ์ฐธ์—ฌํ–ˆ์Œ์„ ๋ฐํž™๋‹ˆ๋‹ค.

๋“ค์–ด๊ฐ€๋ฉฐ

EKS ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ์šด์˜ํ•˜๋‹ค ๋ณด๋ฉด IP ๊ณ ๊ฐˆ ๋ฌธ์ œ๋กœ Secondary CIDR์„ ๋ถ™์ด๊ณ  VPC CNI์˜ Custom Networking์„ ๋„์ž…ํ•˜๋Š” ์‹œ์ ์ด ์˜ต๋‹ˆ๋‹ค. Pod๋ฅผ ๋ณ„๋„ ์„œ๋ธŒ๋„ท์œผ๋กœ ๋นผ์„œ Primary CIDR์˜ IP๋ฅผ ์•„๋ผ๋Š” ๊ตฌ์„ฑ์ด์ฃ .

๊ทธ๋Ÿฐ๋ฐ ๋ง‰์ƒ ์ „ํ™˜ํ•˜๊ณ  ๋‚˜๋ฉด ์ด๋Ÿฐ ์ฆ์ƒ์ด ์ค„์ค„์ด ํ„ฐ์ง€๊ธฐ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค.

  • Pod๊ฐ€ MongoDB์— ๋ถ™์ง€ ๋ชปํ•จ
  • Pod์—์„œ S3, ECR, STS ๊ฐ™์€ AWS API ํ˜ธ์ถœ์ด ํƒ€์ž„์•„์›ƒ
  • ๋ฉ€์ฉกํ•˜๋˜ ์„œ๋น„์Šค ๊ฐ„ ํ†ต์‹ ์ด ์•Œ ์ˆ˜ ์—†๋Š” ์ด์œ ๋กœ ๋Š๊น€

๋Œ€๋ถ€๋ถ„์˜ ์›์ธ์€ ๋ณด์•ˆ๊ทธ๋ฃน(SG)์ž…๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ๋„ "๋ถ„๋ช… ์—ด์–ด๋’€๋Š”๋ฐ ์™œ ์•ˆ ๋˜์ง€?" ์‹ถ์€ ๋ฌ˜ํ•œ ํ˜•ํƒœ๋กœ ๋ง‰ํž™๋‹ˆ๋‹ค. ์ด ๊ธ€์€ ๊ทธ ์ด์œ ๋ฅผ VPC CNI์˜ SNAT ๋™์ž‘ ์›๋ฆฌ๋ถ€ํ„ฐ ์‹ค์ œ SG ๋ณ€๊ฒฝ ํฌ์ธํŠธ๊นŒ์ง€ ํ•œ ๋ฒˆ์— ์ •๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

ํ•ต์‹ฌ ์›๋ฆฌ: VPC CNI๋Š” "VPC ๋ฐ–"์œผ๋กœ๋งŒ SNAT ํ•œ๋‹ค

AWS ๊ณต์‹ ๋ฌธ์„œ ์›๋ฌธ๋ถ€ํ„ฐ ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

By default, when a pod communicates to any IPv4 address that isn't within a CIDR block that's associated to your VPC, the VPC CNI translates the pod's IPv4 address to the primary private IPv4 address of the primary ENI of the node.

ํ’€์–ด ๋งํ•˜๋ฉด ์ด๋ ‡์Šต๋‹ˆ๋‹ค.

  • Pod โ†’ ์ธํ„ฐ๋„ท(VPC ๋ฐ–): ๋…ธ๋“œ์˜ Primary ENI IP๋กœ SNAT ๋จ
  • Pod โ†’ VPC ๋‚ด๋ถ€ ๋ฆฌ์†Œ์Šค: SNAT ๋˜์ง€ ์•Š์Œ. Pod IP(Secondary CIDR)๊ฐ€ ๊ทธ๋Œ€๋กœ Source IP

์—ฌ๊ธฐ์„œ ํ•จ์ •์ด ์‹œ์ž‘๋ฉ๋‹ˆ๋‹ค. MongoDB, VPC Endpoint, ALB, ๋‹ค๋ฅธ Pod... ์ด ๋ชจ๋“  ๋ชฉ์ ์ง€๊ฐ€ VPC ๋‚ด๋ถ€์ž…๋‹ˆ๋‹ค. ์ฆ‰ Pod๊ฐ€ ์ด๋“ค์—๊ฒŒ ๋ง์„ ๊ฑธ ๋•Œ Source IP๋Š” ๋…ธ๋“œ IP๊ฐ€ ์•„๋‹ˆ๋ผ Secondary CIDR์— ์†ํ•œ Pod IP์ž…๋‹ˆ๋‹ค.

์™œ ์„œ๋น„์Šค๊ฐ€ ์ฃฝ๋Š”๊ฐ€

๊ธฐ์กด Security Group ๊ทœ์น™์„ ํ•œ ๋ฒˆ ๋– ์˜ฌ๋ ค๋ณด์„ธ์š”. ๊ฑฐ์˜ ๋Œ€๋ถ€๋ถ„ ์ด๋ ‡๊ฒŒ ์ƒ๊ฒผ์„ ๊ฒ๋‹ˆ๋‹ค.

ingress {
  from_port   = 27017
  to_port     = 27017
  protocol    = "tcp"
  cidr_blocks = [data.aws_vpc.this.cidr_block]  # โ† ์ด๊ฒƒ!
  description = "MongoDB from VPC"
}

data.aws_vpc.this.cidr_block์€ Primary CIDR ๋”ฑ ํ•˜๋‚˜๋งŒ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. Secondary CIDR์€ ํฌํ•จ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ฆ‰, ์ด ๊ทœ์น™์€ ์‚ฌ์‹ค์ƒ ์ด๋ ‡๊ฒŒ ํ•ด์„๋ฉ๋‹ˆ๋‹ค.

"Primary CIDR ๋Œ€์—ญ์˜ ํด๋ผ์ด์–ธํŠธ๋งŒ MongoDB์— ์ ‘๊ทผ ๊ฐ€๋Šฅ"

๊ทธ๋Ÿฐ๋ฐ Custom Networking ์ดํ›„ Pod IP๋Š” Secondary CIDR์ด๊ณ , SNAT๋„ ๋˜์ง€ ์•Š์•„ ๊ทธ๋Œ€๋กœ ํŒจํ‚ท์— ์ฐํž™๋‹ˆ๋‹ค. ๊ฒฐ๊ณผ๋Š” ๋ช…ํ™•ํ•ฉ๋‹ˆ๋‹ค. ์ „๋ถ€ ์ฐจ๋‹จ.

๋ณ€๊ฒฝ์ด ํ•„์š”ํ•œ SG ์ฒดํฌ๋ฆฌ์ŠคํŠธ

์•„๋ž˜ ๊ธฐ์ค€์œผ๋กœ ํ›‘์œผ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

"์ด SG๋ฅผ ํ–ฅํ•ด Pod๊ฐ€ ๋จผ์ € ๋ง์„ ๊ฑฐ๋Š”๊ฐ€?" โ€” Yes๋ฉด ์ˆ˜์ • ํ•„์š”.

โš ๏ธ ๋ฐ˜๋“œ์‹œ ์ˆ˜์ •ํ•ด์•ผ ํ•˜๋Š” SG

1. VPC Endpoint SG
Pod๊ฐ€ S3, ECR, STS, Logs, SSM ๋“ฑ์„ ํ˜ธ์ถœํ•  ๋•Œ ์‚ฌ์šฉ. ์ „๋ถ€ Pod๊ฐ€ ํด๋ผ์ด์–ธํŠธ.

Before: TCP 443  from  VPC Primary CIDR
After : TCP 443  from  VPC Primary CIDR + Pod CIDR
        (๋˜๋Š” Source = ๋…ธ๋“œ SG)

2. MongoDB / RDS / ElastiCache ๋“ฑ DB SG
DB ํด๋ผ์ด์–ธํŠธ๋Š” 100% Pod์ž…๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ ๋ง‰ํžˆ๋ฉด ์„œ๋น„์Šค ์žฅ์•  ์ง๊ฒฐ.

Before: TCP 27017  from  VPC Primary CIDR
After : TCP 27017  from  VPC Primary CIDR + Pod CIDR

๐Ÿค” ์ผ€์ด์Šค ๋ฐ”์ด ์ผ€์ด์Šค๋กœ ํŒ๋‹จํ•  SG

3. ๋‚ด๋ถ€ ALB Frontend SG
์™ธ๋ถ€ ์‚ฌ์šฉ์ž๋งŒ ํ˜ธ์ถœํ•œ๋‹ค๋ฉด ๊ทธ๋Œ€๋กœ ๋‘ฌ๋„ ๋ฉ๋‹ˆ๋‹ค. ๋‹จ Pod ๊ฐ„ ํ˜ธ์ถœ์—์„œ ๋‚ด๋ถ€ ALB๋ฅผ ๊ฒฝ์œ ํ•˜๋Š” ๊ตฌ์กฐ(MSA์—์„œ ํ”ํ•จ)๋ผ๋ฉด Source IP๊ฐ€ Pod CIDR์ด ๋ฉ๋‹ˆ๋‹ค. ์ด ๊ฒฝ์šฐ Pod CIDR ์ถ”๊ฐ€ ํ•„์š”.

4. EKS Node SG
Self(Node SG) ์ฐธ์กฐ๋กœ ๊ฑธ๋ ค์žˆ๋Š” Pod-to-Pod, CoreDNS ๋ฃฐ์€ Pod ENI๊ฐ€ ๋…ธ๋“œ SG๋ฅผ ์ƒ์†ํ•œ๋‹ค๋Š” ์ „์ œ์—์„œ ๊ทธ๋Œ€๋กœ ์œ ํšจํ•ฉ๋‹ˆ๋‹ค. VPC CNI 1.8.0 ์ด์ƒ์ด๋ฉด ENIConfig์˜ securityGroups๋ฅผ ์ง€์ •ํ•˜์ง€ ์•Š์„ ๋•Œ ์ž๋™์œผ๋กœ ๋…ธ๋“œ SG๊ฐ€ Pod ENI์— ์ƒ์†๋ฉ๋‹ˆ๋‹ค.

๐Ÿ’ก ๋งŒ์•ฝ Pod ENI์— ๋ณ„๋„ SG(SG-POD-01 ๋“ฑ)๋ฅผ ๋ถ„๋ฆฌํ•˜๊ธฐ๋กœ ํ–ˆ๋‹ค๋ฉด Self ์ฐธ์กฐ ๋ฃฐ์„ ์ „๋ถ€ ์žฌ์„ค๊ณ„ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

5. Admission Webhook Pod๋กœ ๋“ค์–ด์˜ค๋Š” 9443
Webhook์„ ํ˜ธ์ถœํ•˜๋Š” ์ฃผ์ฒด๋Š” API Server(EKS Managed ENI)์ด๊ณ , EKS Managed ENI๋Š” Primary CIDR ์•ˆ์— ์žˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๊ธฐ์กด Source = VPC CIDR ๊ทœ์น™์œผ๋กœ๋„ ๋™์ž‘์€ ํ•ฉ๋‹ˆ๋‹ค. ๋‹ค๋งŒ ์˜๋ฏธ์ƒ Source = Cluster SG ์ฐธ์กฐ๋กœ ๋ฐ”๊พธ๋Š” ๊ฒƒ์ด ๋” ์ •ํ™•ํ•œ ๊ด€๋ก€์ž…๋‹ˆ๋‹ค.

โœ… ๊ฑด๋“œ๋ฆฌ์ง€ ์•Š์•„๋„ ๋˜๋Š” SG

6. ALB Backend SG
AWS Load Balancer Controller๊ฐ€ IP Target ๋ชจ๋“œ์—์„œ Pod ENI SG(๊ธฐ๋ณธ๊ฐ’: ๋…ธ๋“œ SG)์— from ALB SG ์ธ๋ฐ”์šด๋“œ๋ฅผ ๋™์ ์œผ๋กœ ์ฃผ์ž…ํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฑด ์ปจํŠธ๋กค๋Ÿฌ๊ฐ€ ์•Œ์•„์„œ ํ•ด์ค๋‹ˆ๋‹ค.

๊ถŒ์žฅ ํŒจํ„ด: CIDR ๋Œ€์‹  SG ์ฐธ์กฐ

Pod CIDR์„ ์ผ์ผ์ด ๋‚˜์—ดํ•˜๋Š” ๋ฐฉ์‹์€ ๋‹น์žฅ์€ ๊ฐ„๋‹จํ•˜์ง€๋งŒ, Secondary CIDR์„ ํ™•์žฅํ•˜๊ฑฐ๋‚˜ Pod ์„œ๋ธŒ๋„ท์„ ์ถ”๊ฐ€ํ•  ๋•Œ๋งˆ๋‹ค SG ๋ฃฐ์„ ๋‹ค์‹œ ์†๋ด์•ผ ํ•˜๋Š” ๋ถ€๋‹ด์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ€๋Šฅํ•˜๋ฉด SG ์ฐธ์กฐ ๋ฐฉ์‹์œผ๋กœ ํ†ต์ผํ•˜๋Š” ๊ฒƒ์„ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค.

# Before (CIDR ๋‚˜์—ด)
cidr_blocks = [
  "10.0.0.0/16",    # Primary
  "100.64.0.0/16",  # Pod Secondary
]

# After (SG ์ฐธ์กฐ)
security_groups = [aws_security_group.eks_node.id]

SG ์ฐธ์กฐ ๋ฐฉ์‹์˜ ์žฅ์ ์€ ๋ช…ํ™•ํ•ฉ๋‹ˆ๋‹ค. Pod ENI์— ๋…ธ๋“œ SG๊ฐ€ ์ž๋™์œผ๋กœ ๋ถ™๊ธฐ ๋•Œ๋ฌธ์— "์ด SG ๋‹ฌ๊ณ  ์žˆ๋Š” ์• ๋Š” ๋‹ค ํ—ˆ์šฉ" ์ด๋ผ๋Š” ๊ทœ์น™ ํ•˜๋‚˜๋กœ Primary๋“  Secondary๋“  ์ „๋ถ€ ์ปค๋ฒ„๋ฉ๋‹ˆ๋‹ค. ๋‚˜์ค‘์— Pod ์„œ๋ธŒ๋„ท์„ ์•„๋ฌด๋ฆฌ ๋Š˜๋ ค๋„ SG ๋ฃฐ์€ ๊ทธ๋Œ€๋กœ์ž…๋‹ˆ๋‹ค.

ENIConfig securityGroups ๋™์ž‘์˜ ์ค‘์š”ํ•œ ํŒฉํŠธ

VPC CNI ๋ฒ„์ „๋ณ„๋กœ ๊ธฐ๋ณธ ๋™์ž‘์ด ๋‹ค๋ฆ…๋‹ˆ๋‹ค. ๊ณต์‹ ๋ฌธ์„œ ์›๋ฌธ์ž…๋‹ˆ๋‹ค.

If you don't specify a valid security group... version 1.8.0 or later of the Amazon VPC CNI plugin for Kubernetes, then the security groups associated with the node's primary elastic network interface are used.

์ •๋ฆฌํ•˜๋ฉด,

  • VPC CNI โ‰ฅ 1.8.0 โ†’ ENIConfig์—์„œ securityGroups ์ƒ๋žต ์‹œ, ๋…ธ๋“œ Primary ENI์˜ SG๊ฐ€ Pod ENI์— ์ƒ์†
  • VPC CNI < 1.8.0 โ†’ VPC ๊ธฐ๋ณธ SG๊ฐ€ ๋ถ™์Œ (์˜ˆ์ƒ ๋ชป ํ•œ ๋™์ž‘์˜ ์›์ธ์ด ๋˜๊ธฐ ์‰ฌ์›€)

๋„์ž… ์ „ ๋ฐ˜๋“œ์‹œ VPC CNI ์• ๋“œ์˜จ ๋ฒ„์ „์„ ํ™•์ธํ•˜์„ธ์š”.

์‹ค์ „ ์ฒดํฌ๋ฆฌ์ŠคํŠธ

Custom Networking ์ „ํ™˜ ์ „ ์•„๋ž˜ ํ•ญ๋ชฉ์„ ๋ฏธ๋ฆฌ ์ ๊ฒ€ํ•˜๋ฉด ์žฅ์•  ์—†์ด ๋„˜์–ด๊ฐˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • VPC CNI ์• ๋“œ์˜จ ๋ฒ„์ „์ด 1.8.0 ์ด์ƒ์ธ๊ฐ€
  • VPC Endpoint SG์— Pod CIDR ๋˜๋Š” ๋…ธ๋“œ SG ์ฐธ์กฐ๊ฐ€ ์ถ”๊ฐ€๋๋Š”๊ฐ€
  • MongoDB/RDS ๋“ฑ DB SG์— Pod CIDR ๋˜๋Š” ๋…ธ๋“œ SG ์ฐธ์กฐ๊ฐ€ ์ถ”๊ฐ€๋๋Š”๊ฐ€
  • ๋‚ด๋ถ€ ALB๋ฅผ Pod๊ฐ€ ํ˜ธ์ถœํ•˜๋Š” ํ๋ฆ„์ด ์žˆ๋‹ค๋ฉด ALB SG์—๋„ Pod CIDR์ด ๋ฐ˜์˜๋๋Š”๊ฐ€
  • Terraform์—์„œ data.aws_vpc.*.cidr_block๋งŒ ์ฐธ์กฐํ•˜๋Š” SG ๋ฃฐ์ด ๋‚จ์•„์žˆ์ง€ ์•Š์€๊ฐ€
  • Pod ENI์— ๋ณ„๋„ SG๋ฅผ ์“ธ ๊ณ„ํš์ด๋ผ๋ฉด, Self ์ฐธ์กฐ ๊ธฐ๋ฐ˜ ๋ฃฐ์„ ์ „๋ถ€ ์žฌ์„ค๊ณ„ํ–ˆ๋Š”๊ฐ€

๋งˆ๋ฌด๋ฆฌ

Custom Networking ์ž์ฒด๋Š” IP ๊ณ ๊ฐˆ ๋ฌธ์ œ์— ๋Œ€ํ•œ ๊น”๋”ํ•œ ํ•ด๋‹ต์ด์ง€๋งŒ, Pod์˜ Source IP๊ฐ€ ๋ฐ”๋€๋‹ค๋Š” ๋‹จ ํ•˜๋‚˜์˜ ์‚ฌ์‹ค ๋•Œ๋ฌธ์— ๊ธฐ์กด SG ์„ค๊ณ„ ์ „๋ฐ˜์„ ๋‹ค์‹œ ๋“ค์—ฌ๋‹ค๋ด์•ผ ํ•˜๋Š” ์ž‘์—…์ž…๋‹ˆ๋‹ค. ํŠนํžˆ Terraform์—์„œ ๊ด€์šฉ์ ์œผ๋กœ ์จ์˜ค๋˜ data.aws_vpc.this.cidr_block์ด Primary CIDR๋งŒ ๋ฐ˜ํ™˜ํ•œ๋‹ค๋Š” ์ , ๊ทธ๋ฆฌ๊ณ  VPC CNI๊ฐ€ VPC ๋‚ด๋ถ€ ํŠธ๋ž˜ํ”ฝ์€ SNAT ํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ์  ๋‘ ๊ฐ€์ง€๋งŒ ๊ธฐ์–ตํ•ด๋„ ๋Œ€๋ถ€๋ถ„์˜ ์žฅ์• ๋ฅผ ์˜ˆ๋ฐฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ•ต์‹ฌ ํ•œ ์ค„ ์š”์•ฝ:

"Pod๊ฐ€ ํด๋ผ์ด์–ธํŠธ๋กœ ์ฐธ์—ฌํ•˜๋Š” ๋ชจ๋“  SG์—, Pod์˜ Secondary CIDR(๋˜๋Š” ๋…ธ๋“œ SG ์ฐธ์กฐ)๋ฅผ ์ถ”๊ฐ€ํ•˜๋ผ."

๋‹ค์Œ ๋‹จ๊ณ„๋กœ๋Š” AWS_VPC_K8S_CNI_EXTERNALSNAT ์„ค์ •๊ณผ NAT Gateway ๋น„์šฉ ์ตœ์ ํ™”, ๊ทธ๋ฆฌ๊ณ  SecurityGroupPolicy(Security Groups for Pods)๋ฅผ ํ™œ์šฉํ•œ Pod๋ณ„ SG ๋ถ„๋ฆฌ ์ „๋žต๋„ ํ•จ๊ป˜ ์‚ดํŽด๋ณด๋ฉด ์ข‹์Šต๋‹ˆ๋‹ค.

์ฐธ๊ณ  ์ž๋ฃŒ

๊ณต์ง€์‚ฌํ•ญ
์ตœ๊ทผ์— ์˜ฌ๋ผ์˜จ ๊ธ€
์ตœ๊ทผ์— ๋‹ฌ๋ฆฐ ๋Œ“๊ธ€
Total
Today
Yesterday
๋งํฌ
TAG
more
ยซ   2026/06   ยป
์ผ ์›” ํ™” ์ˆ˜ ๋ชฉ ๊ธˆ ํ† 
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
๊ธ€ ๋ณด๊ด€ํ•จ