There are many tools which try to simplify application deployments, but not many support declarative deployments. Even if app sources are fetched from git, creating new apps or updating app config requires imperative commands. Kubernetes is the dominant declarative approach, but it takes too much YAML to manage an app with Kubernetes. OpenRun supports a limited use case, deploying web apps for internal users across a team. For that use case, it supports declarative deployments on top of Docker/Podman or Kubernetes, with a very simple config.
Some of the unique features of OpenRun are:
- All apps have a staging env, code and config changes are staged before being promoted to prod
- Supports OIDC/SAML integration, allowing you to control access to apps using RBAC policies
- Full solution which handles builds, CD and request routing. Does not require additional tooling like Jenkins/ArgoCD etc
OpenRun can run on a single machine, in which case it directly deploys the container to Docker/Podman. When deployed to Kubernetes, OpenRun builds the images using Kaniko and deploys apps as a Kubernetes deployment, using server side apply to make updates.
The whole Starlark based config for creating apps is just:
app(path="/streamlit/uber", source="github.com/streamlit/demo-uber-nyc-pickups",
spec="python-streamlit") # python-streamlit knows how route requests for Streamlit
app(path="/myapp", source="github.com/example/example",
spec="container") # container spec works for any app which has a Dockerfile
While mainly built for teams, OpenRun is the easiest way to deploy web apps and share them with friends and family https://openrun.dev/docs/use-cases/personal/. You can limit who has access to the apps using OAuth authentication.