Terraform foundation
Backends, account baseline, VPC, DNS, certificates, edge, registries, storage, secrets, EKS, and data services.
Case file / AWS + GitOps
A SaaS platform needed a lean stage environment and a production path with stronger managed-service boundaries. Modular Terraform established the AWS foundation; Argo CD reconciled EKS platform services and workloads through one reviewable operating model.

Project snapshot
The challenge
The platform needed to support the same workload shape across environments while allowing cost, data, and protection decisions to become stricter in production.
Architecture note
Terraform and Argo CD have different ownership boundaries, but they describe one environment model. Stage and production share the control path while making different cost and resilience choices.
Environment architecture
Backends, account baseline, VPC, DNS, certificates, edge, registries, storage, secrets, EKS, and data services.
Environment projects, root applications, platform controllers, workload manifests, and sync ordering.
Cost-aware stage
A compact controller node group keeps cluster services stable. Karpenter adds workload capacity, while lower-cost egress and in-cluster data services reduce idle infrastructure.
Production path
The same EKS and GitOps operating model connects to managed PostgreSQL and Valkey, private service boundaries, protected object storage, and an edge path with CDN and WAF controls.
Shared platform controls
AWS Secrets Manager to External Secrets
ECR and immutable workload references
DNS, TLS, load balancing, CDN, and WAF
Scoped CI and workload AWS roles
Engineering decisions
Terraform owns AWS resource lifecycles and remote-state boundaries. Argo CD owns platform controllers and Kubernetes desired state. The split makes drift and recovery easier to reason about.
A small managed node group is dedicated to essential controllers. Karpenter provides application capacity, preserving a stable control layer without fixing all workload capacity in advance.
Stage uses lower-cost egress and Kubernetes-hosted PostgreSQL, Valkey, and mail capture. Those choices are isolated behind the same service and GitOps boundaries used by the wider platform.
Production moves PostgreSQL and Valkey to managed AWS services with private networking, encryption, backup retention, and deletion safeguards encoded in Terraform.
External Secrets reads approved values from AWS Secrets Manager through scoped workload identity. Git contains references and desired state, not the secret values themselves.
Argo CD sync waves establish namespaces, controllers, storage, secrets, and scaling components before application workloads reconcile. Automated prune and self-heal keep accepted desired state in place.
Delivery path
The order matters: state and AWS boundaries first, GitOps control plane second, platform controllers third, then application workloads.
Create global and regional Terraform backends, then isolate environment stack state.
Provision networking, DNS, certificates, edge controls, registries, storage, secrets, EKS, and environment-specific data services.
Register the environment project and root Argo CD application against the intended cluster destination.
Install platform controllers and shared services before identity, API, workers, and specialist workloads.
Repository review changes desired state; Argo CD applies, prunes, and self-heals that accepted state.
Operating outcome
Architecture risk avoided
Stage is not a separate hand-built sandbox, and production is not a late rewrite. Both environments follow the same infrastructure and GitOps ownership model.
After handover
Ownership after handover
Terraform, Argo CD applications, workload manifests, secret references, bootstrap notes, and recovery boundaries remain in the client-owned delivery model.
Schedule a platform call