Skip to content

OpenGov/ephemeral.run

Repository files navigation

ephemeral.run

CI ephemeral.run website Release Version License

ephemeral.run logo

ephemeral.run is an open-source project created by @OpenGov and @infracloudio to provide development teams with full application environments for every PR – before merging!

On 14 October 2020 we introduced ephemeral.run at a CNCF community webinar. The slides and recording can be viewed here.

Getting Started

Read GETTING-STARTED.md to... get started.

Contributing

We're just getting started, so star the repo, open issues, open PRs, and we'll slowly build this topic out.

Our maintainers (admins) are:

Note that this repository's configuration and permissions are managed by Terraform (maintained by @jspiro). Changes must never be made in the GitHub UI.

Design Goals

These were the design goals we started with:

  • Minimal per-environment cost that scales linearly with your team
  • Environments are "real" (not faked) and reflective of production
  • Easy to use and convenient for everyone, not just developers
  • Minimally complex configuration, fewer moving parts, prefer OSS reuse over "not invented here"
  • Left-shift as much development and testing as possible to be pre-merge

Anti-goals:

  • Performance: While we want these to be fast to start, they can only be so fast while meeting the above goals

Roadmap

These are sorted by what we feel provides the broadest value to teams. Over time we'd like to migrate to a better document format like this or use GitHub Projects. (If you're a good project manager, help us out!)

  • A generic, fork-friendly framework with simplified configuration DSL/templates.
    • Skaffold is powerful but verbose and easy to miswire. Not everyone needs that flexibility.
  • A loving and proactive @runbot (like GitHub's @dependabot)
  • BotKube integration for ChatOps
  • Suspend/Resume: Scale down compute indefinitely while retaining data
  • Dynamic TTLs on cluster resources
  • Local-to-remote telepresence: Connect a locally running service in an IDE to a remote cluster
  • CI integration
    • Wait for CI to finish building before starting, or launch/manage an environment from a pipeline
  • Smarter Pod scheduling to optimize autoscaling
    • Run the fewest number of nodes necessary and schedule with MostRequestedPriority or other tricks. The default spread behavior can keep all our nodes online for only one environment.
  • Centralized Control Plane with UI
  • Usage reporting and analytics
  • Budgeting policies
    • Dynamically control the number of environments and autoscalers

Logo

Our logo was designed by @torymartin88 (torymartin.com).


Licensing

ephemeral.run is licensed under the Apache License, Version 2.0. See LICENSE for the full license text.