You finally got your data models singing, your Kubernetes cluster humming, and then someone says, “Can we just run dbt on EKS?” That’s when the music cuts out and the YAML files start multiplying. Configuring EKS dbt shouldn’t feel like playing technical whack-a-mole, but too often it does.
Let’s fix that.
Amazon EKS gives teams a managed Kubernetes control plane for deploying scalable workloads. dbt brings declarative data transformations with the rigor of versioned SQL. Together, they promise fast, consistent data pipelines that scale with your infra. The catch is usually authentication, orchestration, and keeping secrets under control, not the SQL itself.
Running dbt inside EKS works best when your cluster has a clear identity strategy. Every Pod that runs dbt should assume an AWS IAM role mapped from your identity provider, like Okta or Azure AD, via OIDC. That translation is what lets dbt jobs access S3, Redshift, or Snowflake without static credentials. The end result: temporary tokens, centralized policy, and fewer late-night key rotations.
Here’s the basic flow. When a data job starts, the EKS service account attached to the Pod requests a token from the cluster’s OIDC provider. AWS IAM verifies the claim, assumes the right role, and grants short-lived access. dbt uses that access to pull models, run transformations, and push results back to the warehouse. You never touch a password.
If jobs fail with mysterious 403 errors, check the IAM trust policy and RBAC mapping. Most “it used to work” issues come from mismatched role annotations or expired service account tokens. Keep your OIDC thumbprint updated, rotate roles quarterly, and tag every dbt Pod for audit visibility.