Encore vs

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.”
Josef Sima, Engineering Director at Groupon
3xfaster development speed
90%shorter time to market
See case study
// POWERING DEVELOPMENT AT
GrouponPave BankBookshop.orgCoinbasePalletGradient Labs

How do Encore and Kubernetes compare?

What you write, what you operate, and what you get by default.

EncoreKubernetes
What you writeApplication code with resources declared in TypeScript or GoDockerfiles, YAML manifests, Helm charts
Where it runsYour own cloud: Fargate ECS, EKS, Cloud Run or GKEAny cluster you create and operate
Cluster setupCreated and managed by Encore when you pick KubernetesYou create, upgrade and patch it
Databases, buckets, cronDeclared in code, provisioned on deploySeparate Terraform or operators
Secretsencore secret set --type prod, scoped per serviceSecret objects per namespace
Ingress and TLSConfigured automaticallyIngress controller and cert setup
Local developmentencore run starts local Postgres and Pub/Subminikube, kind or Docker Compose
TracingBuilt in, locally and in the cloudAdd OpenTelemetry and a backend
ControlEncore defaults, configurable per environmentFull control over every object
What you get to skip

What do you skip when Encore runs your Kubernetes?

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.

  • Terraform modules
  • IAM policies
  • VPC and subnets
  • Security groups
  • Kubernetes
  • Helm charts
  • CI/CD pipelines
  • Load balancers
  • Secrets per environment
  • Staging environments
  • Tracing setup
  • Database networking

How does each one get a backend into production?

Kubernetes

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.

Encore

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 →

What does the code look like instead of manifests?

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

Which teams moved off hand-run Kubernetes?

"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."

When should you pick Encore, and when Kubernetes?

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.

Migrating from Kubernetes

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
KubernetesEncore
Deployment per serviceEncore service, defined in code
Namespace per environmentEncore environment
Secret objectsSecrets set with encore secret set
CronJobCron job calling an API endpoint
Ingress and certificatesManaged ingress with TLS

Top rated on G2

See how we stack up in the market.

Read G2 reviews →
G2 User LoveG2 High Performer Summer 2025G2 High Performer Fall 2025G2 High Performer Winter 2026

Frequently asked questions

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.

Start building with Encore

Deploy to your own AWS or GCP account, with infrastructure provisioned automatically.