์๋ก ๋ค๋ฅธ ๋ VPC๋ฅผ ์ฌ์ค ๋คํธ์ํฌ๋ก ์ง์ ์ฐ๊ฒฐํด ์ธํฐ๋ท์ ๊ฑฐ์น์ง ์๊ณ ๋ด๋ถ IP๋ก ํต์ ํ๊ฒ ํ๋ ๋ฉ์ปค๋์ฆ. ์ด๋ค ๋ฒ์์ VPC๋ฅผ ๋ฌถ์์ง(๊ฐ์ ๊ณ์ ยท๋ฆฌ์ / cross-account / cross-region), ๋ผ์ฐํ ์ ์ด๋๊น์ง ์๋ฐฉํฅ์ผ๋ก ๊น์ง, DNS๋ฅผ ์๋ํธ๊น์ง ํ์ง๊ฐ ์ค๊ณ ์ถ์ด๋ค.
์ธ์ ์ฐ๋
- ์ฌ๋ด VPN VPC โ ์ํฌ๋ก๋ VPC ์ฐ๊ฒฐ (๊ฐ๋ฐ์ยท์ด์์ ์ฌ์ค ์ ๊ทผ)
- ๊ฐ์ ์กฐ์ง์ ๋ฉํฐ ๊ณ์ /๋ฉํฐ ๋ฆฌ์ ํ๊ฒฝ์์ ๋ด๋ถ ํต์
- ๋ง์ดํฌ๋ก์๋น์ค ๊ฐ ์ฌ์ค ํต์ , mTLS ์ ์ฉ ์ 1์ฐจ ๋ณด์ ๊ฒฝ๊ณ
๋์๊ณผ์ ๋น๊ต
| ๋ฐฉ์ | ํน์ง | ์ ํ ๊ธฐ์ค |
|---|---|---|
| VPC Peering | 1:1 ์ฐ๊ฒฐ, ์ ์ด์ ๋ผ์ฐํ ๋ถ๊ฐ | VPC ์๊ฐ ์ ๊ณ ํ ํด๋ก์ง๊ฐ ๋จ์ํ ๋ |
| Transit Gateway | ํ๋ธ-์คํฌํฌ, ์ ์ด์ ๋ผ์ฐํ ๊ฐ๋ฅ | VPC ๋ค์(๋๋ต 5+), ์ค์ ์ง์ค ๋ผ์ฐํ ํ์ |
| PrivateLink | ์๋น์ค ๋จ์ ๋ ธ์ถ, ๋จ๋ฐฉํฅ | ํน์ ์๋ํฌ์ธํธ๋ง ๋ ธ์ถ, ์๋ฐฉํฅ ๋ผ์ฐํ ๋ถํ์ |
| Site-to-Site VPN | ์จํ๋ ๋ฏธ์ค โ VPC | ํด๋ผ์ฐ๋ ์ธ๋ถ ๋คํธ์ํฌ์ ์ฐ๊ฒฐ |
Peering์ด N:N์ผ๋ก ๋๋ฉด ๋ฉ์ ํญ๋ฐ โ TGW๋ก ๊ฐ์ํ ์์ ์ด๋ค.
๊ตฌ์ฑ ์์
์ฐ๊ฒฐ ํ ์์ ํ์ํ ๋ฆฌ์์ค(AWS ๊ธฐ์ค).
- Peering Connection: ์์ฒญ ์ธก์์ ์์ฑ. (
aws_vpc_peering_connection) - Peering Connection Accepter: ์๋ฝ ์ธก์์ ์์ฑ. cross-account ๋๋ cross-region์ผ ๋๋ง ๋ณ๋ ๋ฆฌ์์ค๊ฐ ํ์ํ๋ค. (
aws_vpc_peering_connection_accepter) - Route Table ์ํธ๋ฆฌ: ์์ชฝ VPC ๋ชจ๋์ ๋ผ์ฐํธ ํ ์ด๋ธ์ ์๋ CIDR โ peering connection ID ์ถ๊ฐ. ํ์ชฝ๋ง ๊น๋ฉด ๋จ๋ฐฉํฅ์ด ๋์ด ์๋ต ํจํท์ด ๋์์ค์ง ์๋๋ค.
- VPN ์ธก ๋ผ์ฐํธ: VPN๊ณผ ์ฐ๊ฒฐํ ๊ฒฝ์ฐ
aws_ec2_client_vpn_route์ถ๊ฐ. ๋น ๋จ๋ฆฌ๋ฉด VPN ์ ์์ ๋์ง๋ง ๋์ VPC๋ก ๊ฐ๋ ํธ๋ํฝ์ด ๋๊ธด๋ค. - Security Group / NACL: peering์ด ๊น๋ ค ์์ด๋ SG์์ ์๋ CIDR์ ํ์ฉํด์ผ ์ค์ ํธ๋ํฝ์ด ํต๊ณผํ๋ค.
์ผ์ด์ค๋ณ ์ฐจ์ด
๊ฐ์ ๊ณ์ + ๊ฐ์ ๋ฆฌ์
- Accepter ๋ฆฌ์์ค ๋ถํ์ โ peering connection ์์ฒด๊ฐ ์์ชฝ ์ญํ ์ ๊ฒธํ๋ค.
auto_accept = trueํ ์ค๋ก ์๋ ์๋ฝ.- IaC ํ ์ฌ์ดํด๋ก ๋๋๋ค.
๋ค๋ฅธ ๊ณ์ ๋๋ ๋ค๋ฅธ ๋ฆฌ์
- Accepter ๋ฆฌ์์ค ํ์, provider ๋ณ๋ ์ง์ .
auto_accept์ด ๋์ํ์ง ์์ โ Terraform apply ์ PendingAcceptance ์ํ๋ก ๋จ๋๋ค.- ์ด์ ์ ์ฐจ: ์ฝ์/CLI๋ก ์๋ ์๋ฝ โ state import โ ์ฌ apply.
- ์๋ํํ๋ ค๋ฉด ๋ณ๋ ์คํฌ๋ฆฝํธ(state rm + import)๊ฐ ํ์ํ๋ค.
VPN โ VPC
- ์ ๋ ์ผ์ด์ค์ ๋ํด
aws_ec2_client_vpn_route์ถ๊ฐ. - VPN ํด๋ผ์ด์ธํธ๊ฐ ์ฌ์ฉํ subnet, ๋์ CIDR, endpoint ID๋ฅผ ์ง์ ํ๋ค.
DNS ํด์
allow_remote_vpc_dns_resolution = true๋ฅผ ์์ชฝ ๋ชจ๋ ์ผ๋ฉด ์๋ VPC์ private DNS hostname์ ์๊ธฐ ์ชฝ resolver๋ก ํด์ํ ์ ์๋ค. ๋ด๋ถ ๋๋ฉ์ธ์ด๋ RDS endpoint๋ฅผ ์ด๋ฆ์ผ๋ก ์ฐธ์กฐํด์ผ ํ๋ฉด ์ผ ๋ค.
ํจ์
- route table ํ์ชฝ๋ง ์ค์ : ๊ฐ์ฅ ํํ ์ค์. ICMP๋ ํตํ๋๋ฐ TCP๊ฐ ์ ๋๋ ๋น๋์นญ ์ฆ์์ผ๋ก ๋ณด์ผ ์๋ ์๋ค.
- CIDR ์ถฉ๋: ์์ชฝ VPC CIDR์ด ๊ฒน์น๋ฉด peering ์์ฒด๊ฐ ๊ฑฐ๋ถ๋๋ค. ์ค๊ณ ๋จ๊ณ์์ IPAM/CIDR ํ๋์ด ํ์.
- ์ ์ด์ฑ ์์: AโB, BโC๊ฐ ์์ด๋ AโC๋ ์ ๋๋ค. ๋ฉ์๊ฐ ํ์ํ๋ฉด ๋ชจ๋ ์์ ์ง์ ์ฐ๊ฒฐํ๊ฑฐ๋ TGW๋ก.
- ์๋ ์๋ฝ ํ import ๋๋ฝ: drift ๋ฐ์, ๋ค์ plan์์ ์ฌ์์ฑ ์๋๋ก ์ด์ด์ง๋ค. ์ด๋ accepter๋ง importํ๋ฉด ๋ถ์กฑํ๊ณ , requester ์ชฝ๋ state rm ํ ์ฌ import ํด์ผ ํ๋ค โ ์๋ ์๋ฝ ๊ณผ์ ์์ AWS๊ฐ ์์ชฝ ๊ฐ์ฒด๋ฅผ ๋ชจ๋ ๊ฐฑ์ ํ๊ธฐ ๋๋ฌธ.
- SG ๋ฏธํ์ฉ: peering์ ๊น๋ ธ๋๋ฐ ํธ๋ํฝ ์ฐจ๋จ. ๋คํธ์ํฌ ๋ ๋ฒจ๊ณผ SG ๋ ๋ฒจ์ ๋ฐ๋ก ์ ๊ฒํด์ผ ํ๋ค.
Terraform ํจํด ํค์๋
aws_vpc_peering_connection(+_accepterfor cross-account/region)aws_route+for_eachover route table IDs (์์ชฝ RT์ ์๋ ์ ์ฉ)requester/accepter๋ธ๋ก์allow_remote_vpc_dns_resolution- ๋ชจ๋ํ ์ ID ๋์ ์ด๋ฆยทํ๊ทธ๋ฅผ ์
๋ ฅ์ผ๋ก ๋ฐ๊ณ ๋ด๋ถ์์
data๋ธ๋ก์ผ๋ก ์กฐํ โ ๊ฐ๋ ์ฑยท์ฌ์ฌ์ฉ์ฑ์ด ์ฌ๋ผ๊ฐ๋ค.