All of the above and then some - but I wouldn’t over-index on K8s if it’s not something you’re already using. Our endorsement is more for containerization in general than it is for any particular container orchestrator - K8s just happens to be the one that we built out support for first. Historically, a lot of our functionality was implemented first for K8s and only later for Docker and ECS. There’s increasingly parity in our support for the different tools though and we have users successfully deploying Dagster on all of them.
All 3 have examples in
https://github.com/dagster-io/dagster/tree/master/examples if you’d like to play around with any. The Docker Compose one will require the least additional legwork to get up and running.
Re: Dagit, it really depends on what your load is going to be. If you’re a pretty small team using Dagster, then a single Dagit instance is probably sufficient. If you have lots of users interacting with Dagit, you might find it useful to horizontally scale it so that there are many Dagit instances.
And one more thing I’ll mention is that we offer a managed product (Dagster Cloud) which dramatically reduces the footprint of what you need to deploy (we’ll handle Dagit, the Daemons, the database, migrations, etc.) If you’re at the stage of evaluating different deployment options, it might be something worth looking into:
https://dagster.io/cloud