$ 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