Anything to be aware of? Any gotchas or pitfalls or other reasons not to do this?
This is a great question.
A few questions to ask yourself first.
- What does your current delivery pipeline look like? Do you have any requirement of (or even just strong preference for) particular tools like Jenkins, Terraform, Ansible, ArgoCD, Flux, etc?
- Are there any significant behavioral differences you intend to have between the SaaS and the user-hosted (multi-prem) versions of your application?
- Are you tied to multi-tenant SaaS or are you also thinking about single-tenant SaaS (“managed single tenant” instances)
There are a few conflicting things to think about and balance here
- The less difference between how you run your SaaS and how your run on-premises software, the fewer things you need to maintain, and the more you can focus engineering resources on your core product.
- App Manager (f.k.a KOTS) is primarily designed for situations where the person or team deploying the software has little or no access to the person or team who developed the software. Some features of App Manager that are incredibly useful in the multi-prem case end up being extra hoops to jump through when the team building the app is the same as the one deploying it
a. For example, if you want to deploy a new version of a KOTS application using the built in “upgrade”, you’re stuck clicking a button in a web app or invoking a CLI call with K8s API permissions to your production cluster.
- There do exist Replicated customers who use the platform for their multi-tenant SaaS and are happy with how it works
- Replicated runs at least one multi-tenant SaaS component internally via KOTS and App Manager, primarily using the advanced GitOps functionality so we can overcome some of the “black box” limitations in (2) and roll out new versions via our FluxCD pipeline rather than interacting with the App Manager console directly.
- For single-tenant instances, there’s a little bit cleaner use case for App Manager, as having 50 instances on different versions may be preferable, and the ability for a less technical user to control administration, versioning, and upgrades may be desirable.
Overall, at this point, it’s hard to make a hard recommendation one way or the other on whether to leverage App Manager to drive a multi-tenant SaaS application. The limitations in (2) can be pretty tough to work around if you have strong opinions about how you deliver your software, or if you are migrating iteratively from a legacy stack or legacy delivery pipeline.