Hybrid Cloud Infrastructure Setup
Imagine: you have a legacy system in a data center with dozens of hardware and license dependencies. Moving it to the cloud is a multi-month risk. But you want to run new microservices on Kubernetes on AWS. The solution is hybrid infrastructure. We configure it turnkey so that on-premise and cloud work as a single cluster with a shared network, DNS, and IAM contour.
Where things usually break
The most common problem is IP address inconsistency. The on-premise network lives in 10.0.0.0/8, the cloud VPC in 172.16.0.0/12, and at first glance everything is fine. But when you add Transit Gateway, peering to multiple VPCs, and corporate VPN, overlapping CIDRs start to silently confuse the router. Packets drop, services become unavailable, and neither side sees an error at its level.
The second pain point is DNS. In a hybrid environment, db.internal.company.com from a cloud pod must resolve to the IP of an on-premise database, and api.svc.cluster.local from an on-premise application must resolve to the ClusterIP of a Kubernetes service. This is solved via Route 53 Resolver with forwarding rules to on-premise DNS, and a Conditional Forwarder on the on-premise side to Route 53. If you don't configure both directions, half the resolutions will fail with NXDOMAIN.
Authentication is also nontrivial. Cloud applications need credentials for on-premise systems and vice versa. IAM Roles for Service Accounts (IRSA) in EKS works great inside AWS, but for on-premise resources you need either Vault with AWS auth backend or secrets via AWS Secrets Manager replicated into the cluster with External Secrets Operator.
Direct Connect or VPN: what to choose?
| Parameter | Direct Connect | Site-to-Site VPN |
|---|---|---|
| Bandwidth | Up to 10 Gbps (aggregation up to 100 Gbps) | Depends on internet link, usually up to 1 Gbps |
| Latency | Stable, predictable | Fluctuates due to internet |
| SLA | 99.99% | 99.95% (depends on ISP) |
| Security | Physical isolation, optional IPSec | IPSec mandatory |
| Cost | Higher (port rental, traffic) | Lower (only VPN gateway cost) |
| Deployment time | 2–4 weeks (depends on provider) | 1–2 days |
Source: AWS Direct Connect and Site-to-Site VPN documentation
For production workloads with critical latency, Direct Connect is up to 10x more reliable than VPN. For dev/staging or low volumes, VPN is sufficient.
How we build the hybrid network
Network connectivity is the first thing we design. We use Transit Gateway as a central hub. All VPCs connect to it, not through peering with each other. This scales: add a new VPC — attach it to TGW, routes to the rest appear automatically.
Network topology for a mid-sized project:
On-Premise (10.10.0.0/16)
│
│ Direct Connect / VPN
▼
AWS Transit Gateway
├── Production VPC (10.20.0.0/16)
│ ├── Private Subnet (10.20.1.0/24) — EKS nodes
│ └── Private Subnet (10.20.2.0/24) — RDS
├── Staging VPC (10.30.0.0/16)
└── Shared Services VPC (10.40.0.0/16)
├── Route 53 Resolver Inbound Endpoint
└── Route 53 Resolver Outbound Endpoint Configuration management with Terraform
All network infrastructure is in code. Example Terraform for Route 53 Resolver:
resource "aws_route53_resolver_endpoint" "outbound" {
name = "hybrid-outbound-resolver"
direction = "OUTBOUND"
security_group_ids = [aws_security_group.resolver.id]
ip_address {
subnet_id = aws_subnet.shared_services_a.id
}
ip_address {
subnet_id = aws_subnet.shared_services_b.id
}
}
resource "aws_route53_resolver_rule" "onprem" {
domain_name = "internal.company.com"
name = "forward-to-onprem"
rule_type = "FORWARD"
resolver_endpoint_id = aws_route53_resolver_endpoint.outbound.id
target_ip {
ip = "10.10.0.53"
port = 53
}
target_ip {
ip = "10.10.0.54"
port = 53
}
}Routes in the Transit Gateway Route Table are also declarative — no manual clicks in the console that nobody documents.
Kubernetes in a hybrid environment
An EKS cluster with a node group in private subnets has no direct internet access. To pull images from ECR, you need VPC Endpoints for ECR and S3 (image layers are stored in S3). For access to on-premise resources, routes via TGW are used. CoreDNS in the cluster is configured via a ConfigMap with Corefile:
Corefile example for hybrid DNS
apiVersion: v1
kind: ConfigMap
metadata:
name: coredns
namespace: kube-system
data:
Corefile: |
.:53 {
errors
health
kubernetes cluster.local in-addr.arpa ip6.arpa {
pods insecure
fallthrough in-addr.arpa ip6.arpa
}
forward internal.company.com 10.10.0.53 10.10.0.54
forward . /etc/resolv.conf
cache 30
loop
reload
loadbalance
}
This way, pods in EKS resolve service.internal.company.com directly to the on-premise DNS, bypassing external resolvers.
Security and segmentation
Security Groups in AWS are stateful. Network ACLs are stateless. For hybrid, it is important to allow traffic in both directions at the NACL level, otherwise return traffic will be blocked. A common mistake: you open an inbound rule in the SG for the on-premise subnet but forget the NACL on the subnet level, and traffic still doesn't pass.
AWS Network Firewall or on-premise NGFW (Palo Alto, Fortinet) for traffic inspection between sites — the choice depends on compliance requirements. If data is PCI DSS or healthcare, inspection is mandatory.
Hybrid monitoring
Prometheus with remote_write to AWS Managed Prometheus, on-premise exporters send metrics via a secure endpoint. Grafana provides a single visualization point for both sites. VPN/Direct Connect monitoring via CloudWatch metrics TunnelState and TunnelDataIn/Out — an alert on tunnel failure reaches PagerDuty before the user calls.
What our work includes (Deliverables)
- Audit of current network infrastructure and application dependencies (CIDR inventory, analysis of latency and throughput requirements).
- Network topology design considering CIDR, latency, and throughput.
- Direct Connect or VPN setup, Transit Gateway configuration.
- DNS resolution deployment (Route 53 Resolver, Conditional Forwarder).
- IAM integration (IRSA, Vault, or External Secrets Operator).
- Monitoring and alerting setup (Prometheus, Grafana, CloudWatch).
- Full infrastructure documentation in code (Terraform).
- Team training and access handover.
- Support during the warranty period (2 weeks after handover).
Costs for a typical hybrid setup: basic VPN from $500/month, Direct Connect from $2000/month. Savings from reduced latency and increased reliability can be 20–30% in operational costs.
We have delivered over 30 projects. Contact us for a consultation: we'll assess your project in 2 days and propose an optimal solution.
Timeline estimates
| Scale | What's included | Timeline | Estimated cost per month |
|---|---|---|---|
| Basic hybrid | VPN + 1 VPC + DNS forwarding | 2–3 weeks | $500–$1,000 |
| Medium | Direct Connect + TGW + EKS + Vault | 6–10 weeks | $2,000–$5,000 |
| Enterprise | Multi-region + compliance + NGFW + full IaC | 3–5 months | $10,000+ |
Before starting, we perform a network audit: CIDR inventory, application dependency analysis, latency and throughput requirements. Pricing is calculated individually after the audit.







