Your cluster is humming along, and then it happens. The data team wants new environments spun up for a pipeline test, and the platform team groans. It will take hours of YAML edits, credentials, and manual approvals. This is the moment where Crossplane meets Dagster, and everything suddenly syncs.
Crossplane gives Kubernetes the power to provision cloud infrastructure using declarative APIs. Dagster orchestrates data pipelines, keeping assets and dependencies in check. Put them together, and you get a self-provisioning, data-aware infrastructure loop: Dagster triggers pipeline runs that depend on environments, and Crossplane automates those environments on demand. Both tools speak YAML, both integrate cleanly with OIDC or AWS IAM, and both thrive when everything is immutable and versioned.
In a Crossplane Dagster workflow, Dagster runs a job that requests a new data resource, such as an ephemeral S3 bucket or Postgres instance. Crossplane reads that claim, provisions the resource in your chosen cloud, and returns connection details. The next Dagster step ingests or transforms data using those credentials, then calls Crossplane again to tear it all down. The result is infrastructure that breathes with your pipelines—no tickets, no handoffs, no static configs.
When wiring this up, focus on identity boundaries first. Use a single service identity per pipeline with scoped IAM roles. Rotate secrets regularly, ideally through your identity provider like Okta or via short-lived tokens. If a run fails, Dagster should trigger a cleanup job rather than relying on manual intervention. Crossplane’s managed resource lifecycle ensures deletion happens even if workloads crash.
Key benefits of using Crossplane with Dagster