Waypoint Deploy vs. Terraform?

Looking at this example, we see a deploy block. The function of this seems to conflict with what Terraform is providing us - we want X number of instances in a certain region, etc.

Am I missing something in how the two interact?

1 Like

Hi @JerkyTreats!

The docs don’t clearly describe this in Waypoint vs Other Software docs yet I’ve heard @mitchellh explain this before, so I can give it a shot.

I think of Terraform at being purpose-built and excellent at deploying infrastructure such as a VMs, Load Balancers, SecurityGroup rules, and other associated resources that need to be in place before you use that infrastructure for applications. Yes, you can use Terraform to manage the lifecycle of your applications, but the plan and apply workflow is not purpose-built for the application workflow. Terraform is missing some 1st class lifecycle management hooks for things like managing a gradual rollout (90% on version A, 10% on version B), exec and log functionality, preview URLs and other application-centric concerns like creating artifacts, making multiple versioned deployments and release management.

Waypoint’s core design target is deploying applications with the build, deploy, release workflow. So I envision using Terraform to deploy and manage the infrastructure tier that changes less frequently and is more abstract for all types of infrastructure and use Waypoint for what it is purpose built for, which is the application tier that sits on top of your infrastructure.


If Waypoint can manage the whole kubernetes claster, is not it also doing the infra management job? If so, why would one combine Waypoint and Terraform?

Waypoint does not manage the lifecycle (create, update, delete) of the Kubernetes cluster itself. A terraform module like GKE, AKS, EKS would be ideal for that.

Waypoint is smaller is cope designed to be an optimal workflow to deploy applications. In this case you would configure Waypoint to use the Kubernetes cluster that was created by Terraform. Then you can create many different deployments and releases of application(s) to that cluster using Waypoint.