You can use Bunnyshell Ephemeral environments for this (bunnyshell.com).
- The Postgres instances will be deployed in Kubernetes (bring your own infra if you want),
- you can configure seeding,
- and also you can run any other containers next to Postgres (for example E2E tests).
- You can trigger the process manually or automatically (PR, GH actions, cli tool, API, etc).
It allows you to use your local IDE to edit the code, but the actual container runs in the cloud.
It allows the user to define and create thin or full environments (any number of services) running in the cloud, so no load on your local.
Full support for debugging.
I work at Bunnyshell, so happy to see it mentioned here. Happy to share some more details:
Bunnyshell creates two types of CDEs:
- local IDE, code running in the cloud. The cool thing here is you get to use a local IDE (any IDE/editor you want), no lag, the user edits a local files and the files are synced in real time to the cloud environment. All editing on local, all execution in the cloud. Supports debuggers.
- remote IDE, code running in the cloud. When configured in this way, both the IDE and the execution happen in the cloud. No code on local.
The CDE is just one side of Bunnyshell, the other is provisioning environments on demand or automatically (eg. ephemeral environments on each PR). All these envs support remote development (if enabledd).
Our team makes heavy use of CDEs internally for actually building the product.
Bunnyshell.com has a remote development feature that works like this:
- environments are deployed to you Kubernetes cluster (via bunnyshell)
- developers edit files locally (on their laptops) in any IDE/editor they wish
- code is synced in real-time to the cloud env
So devs write code locally, but it runs remotely, in the cloud, in a complete environments.
Also, ephemeral environments are available ( create/destroy env on PR open/close).
If you are looking for ways to do hybrid local/remote development, have a look at Bunnyshell.com.
One nice feature of Buunyshell is being able to edit your code in any IDE/editor running on your laptop, and having the code code run in remote cloud environments. Feels like magic. And it's even better for teams because every team member can create envs (long lived or jsut for PRs) on demand.
Sounds like your challenge is more about integrating the containers in a useful pipeline to get ephemera (preview) environments. Like deploy a new env for each PR and update each env when it's branch gets a new commit.
An easy way to get ephemeral envs starting from your docker-compose definition is Bunnyshell.com. It uses Kubernetes behind the scenes, but it's all pretty much abstracted away from the user. There is a free so you can experiment.
I have recently tried to set up Steampipe to query all our cloud costs, but I noticed that costs are only available for AWS. Azure, GCP, DigitalOcean costs are not available in their respective plugins.
Has anyone found a way to get the costs in those plugins? It is a limitation of the plugins or of the underlying cloud APIs?
Sorry about that, I should have been more informative.
Bunnyshell makes it easy to create and manage environments. (EaaS - environments as a service)
You connect your k8s cluster(s) and git accounts/repos, it reads the docker-compose files and creates deployments on the cluster.
You don’t need to know or write Kubernetes manifests, those are created for you.
You also get auto updates and ephemeral/preview environments (when a PR is created against the branch of your env, Bunnyshell deploys a new env with the proposed changes).
You are not restricted to creating resources only on the cluster, you can use Terraform for any resource that is external to the cluster ( like S3 buckets, RDS instances, anything Terraform can handle).
I wanted a way to keep track of my expenses so I built a mobile app in Flutter to do just that. App data is stored on device, no cloud, no tracking, no third parties, and I use SQLite files for storage and export. I made it available for free: