my blog

my blogprojectsmulti-cloud-vpc-networking-aws-gcp-azure

$ kubectl describe project multi-cloud-vpc-networking-aws-gcp-azure

Multi-Cloud VPC Networking — AWS, GCP & Azure

Built a multi-cloud networking project from scratch across AWS, GCP, and Azure using Terraform. Provisioned multi-tier VPC/VNet architectures with public, private, and database subnets across multiple availability zones.

What I implemented:

AWS: Multi-tier VPC with NAT Gateways (HA across AZs), Security Groups, NACLs, VPC Peering between prod and staging
Site-to-site IPsec VPN between AWS and my physical home lab using strongSwan — simulating a real hybrid cloud setup
GCP: Custom-mode VPC, Cloud NAT, Cloud Router, Firewall Rules, VPC Peering
Azure: VNet, NSG per subnet, NAT Gateway, custom Route Tables, VNet Peering
All infrastructure built with reusable Terraform modules

Real issues I debugged:

CIDR conflict between home lab and AWS VPC — redesigned to 172.16.0.0/16 range
Terraform for_each failing on unknown values — fixed using indexed map instead of toset()
NACLs blocking cross-VPC ping — had to explicitly allow peered VPC CIDRs (stateless behavior)
strongSwan tunnel ESTABLISHED but ICMP still failing — missing ICMP rule in both SG and NACL
Azure VM size unavailability across regions — debugged using az vm list-skus

What I learned:

Stateful (Security Groups) vs stateless (NACLs) firewalls in practice
VPC peering is non-transitive — each pair needs its own connection and route updates on both sides
GCP and Azure require bidirectional peering setup, unlike AWS auto_accept
Real hybrid cloud connectivity using IPsec IKEv1 with static routing