Encore is infrastructure from code. You declare databases, cron jobs, buckets and secrets in your backend code, and Encore provisions them in your own cloud on AWS or GCP. Kubernetes is a container orchestrator that you configure with manifests and operate yourself. Pick Encore to reach production without writing manifests, and pick Kubernetes when you need full control of the cluster.
Updated November 5, 2026
“What used to take days or weeks of back-and-forth between developers and infra teams is now automated and completed in minutes.”
What you write, what you operate, and what you get by default.
![]() | ||
|---|---|---|
| What you write | Application code with resources declared in TypeScript or Go | Dockerfiles, YAML manifests, Helm charts |
| Where it runs | Your own cloud: Fargate ECS, EKS, Cloud Run or GKE | Any cluster you create and operate |
| Cluster setup | Created and managed by Encore when you pick Kubernetes | You create, upgrade and patch it |
| Databases, buckets, cron | Declared in code, provisioned on deploy | Separate Terraform or operators |
| Secrets | encore secret set --type prod, scoped per service | Secret objects per namespace |
| Ingress and TLS | Configured automatically | Ingress controller and cert setup |
| Local development | encore run starts local Postgres and Pub/Sub | minikube, kind or Docker Compose |
| Tracing | Built in, locally and in the cloud | Add OpenTelemetry and a backend |
| Control | Encore defaults, configurable per environment | Full control over every object |
Encore creates the cluster, namespaces, deployments, services and ingress from your application code. The cluster runs in your own cloud account, and you can open the console or connect with kubectl whenever you want.
You build a container image, then write a Deployment, a Service, an Ingress, a ConfigMap and Secrets for each service, usually packaged as a Helm chart. The database, object storage and queues live outside the cluster, so you provision them with Terraform and wire the connection strings in by hand.
You also own the cluster: version upgrades, node pools, autoscaling, the ingress controller and certificates. That gives you full control and takes ongoing work.
You write your services and declare the resources they use in code. On deploy, Encore provisions them in your AWS or GCP account. For compute you choose Fargate ECS or EKS on AWS, and Cloud Run or GKE on GCP.
With Kubernetes selected, Encore creates a namespace per environment, a deployment per service, cluster networking and ingress with TLS, and stores your secrets as Kubernetes Secrets. Encore provisions an IAM role for the service.
Read the Kubernetes deployment docs →This service declares a Postgres database, an object storage bucket, a secret and a daily cron job, with no YAML. Locally, encore run starts the Postgres database for you. In the cloud, Encore creates RDS or Cloud SQL, S3 or Cloud Storage, and the scheduled job.
Tested with encore.dev 1.58.8 and TypeScript 5.9.3.
import { api } from "encore.dev/api";
import { SQLDatabase } from "encore.dev/storage/sqldb";
import { Bucket } from "encore.dev/storage/objects";
import { CronJob } from "encore.dev/cron";
import { secret } from "encore.dev/config";
// Each declaration becomes a cloud resource in your AWS or GCP account.
const db = new SQLDatabase("orders", { migrations: "./migrations" });
const invoices = new Bucket("invoices", { versioned: false });
const stripeKey = secret("StripeSecretKey");
export const cleanup = api({}, async (): Promise<void> => {
await db.exec`DELETE FROM carts WHERE updated_at < now() - interval '30 days'`;
});
const _ = new CronJob("cart-cleanup", {
title: "Delete stale carts",
every: "24h",
endpoint: cleanup,
});Create the app, set the secret for production, and run it locally:
brew install encoredev/tap/encore && encore app create
encore secret set --type prod StripeSecretKey
encore run"I assumed we would eventually want to take over management of the Kubernetes infrastructure running the Encore application in our AWS account. More than a year in, we haven't, because there's been no need. It just works."
"We looked at things like Cloud Run, App Engine, and of course managing Kubernetes ourselves. But the effort required to spin up environments on every PR, wire up all the CI/CD pipelines, and maintain infrastructure didn't make sense."
Pick Encore when you are building backend services on AWS or GCP and want production infrastructure in your own cloud without a platform team. You still get Kubernetes if you want it, and each environment can use Fargate ECS, EKS, Cloud Run or GKE without changes to your application code.
Pick Kubernetes directly when you already have people who run clusters well, when you need attached GPUs or other workloads that Encore does not model, or when you run on-premises or on a cloud other than AWS and GCP. Kubernetes gives you control over every object, and your team operates it.
You can also mix them. On GCP, Encore can deploy into an existing GKE cluster next to services that are not built with Encore.
You can move one service at a time. Encore can deploy to a new cluster in your account, or on GCP into the GKE cluster you already run.
The migration guide covers how each part maps to Encore, how to run both side by side, and what to check before cutover.
Read the Encore migration guide"Encore is our foundation for all new development. Since adopting it, we've seen a 3x increase in development speed and 90% shorter project lead times."
"Encore lets us go from idea to shipped product at least 3x faster and saves us hours of devops work every week."
"We've reduced time spent on DevOps by 95%, and we're now on track to save $60K annually in cloud costs."
"Encore is an unfair advantage. At Pave we've moved 2x faster than we did at Monzo."
"We're saving $200k+ annually compared to additional hiring. The ROI is outstanding, easily 10x."
"You define infrastructure in your code and it's automatically spun up for you. You can go from zero to a deployed service on GCP in an hour. I don't know how else to do it."
"Encore's inferred infrastructure has allowed us to move at unprecedented speed. Combined with database branching in Neon, we're able to spin ephemeral environments up and down with incredible ease. Stakeholders love preview app URLs."
Common questions about Encore vs Kubernetes.
Not exactly: Kubernetes is a container orchestrator, while Encore is infrastructure from code that reads your application code and provisions the cloud resources it needs in your own AWS or GCP account. On AWS it can run your services on Fargate ECS or EKS, and on GCP on Cloud Run or GKE. When you pick Kubernetes as the compute platform, Encore creates and manages the cluster, and you do not write the manifests.
Yes, on GCP. You can import an existing GKE cluster as the compute platform for an environment. The Encore docs list AWS support for imported clusters as coming soon. Encore can also create a new GKE cluster or EKS Fargate cluster in your account.
Yes. When Encore deploys to Kubernetes, the cluster lives in your own cloud account and you can connect to it with kubectl. Encore creates a namespace per environment and a deployment per service.
Pick Kubernetes directly when you have a platform team that already runs clusters well, when you need workloads that Encore does not model, such as attached GPUs, or when you run on-premises or on a cloud other than AWS and GCP.
In Kubernetes you create Secret objects per namespace and mount them into pods. With Encore you declare a secret in code and set its value per environment type with encore secret set --type prod StripeSecretKey. When Encore deploys to Kubernetes, it stores those values as Kubernetes Secrets and binds each service only to the secrets it uses.
Deploy to your own AWS or GCP account, with infrastructure provisioned automatically.