Tools and Disciplines
There are a number of tools and techniques that will aid your software organization in distributing Modern On-prem Software.
Kubernetes
Kubernetes has quickly become the standard for orchestrating packaged applications. Defining your application as Kubernetes manifests is a great way to deliver to your own cloud-native infrastructure, while also ensuring you’ll be ready to deploy to a Kubernetes-based Modern On-prem environment.
Helm
Helm is the most common package manager for Kubernetes applications. As such, many enterprises are familiar with deploying Helm charts into their environments. Helm allows vendors to template common configuration options as well as many other useful features.
Operators
Kubernetes Operators have become popular ways to distribute lower-level Kubernetes applications that often need to orchestrate several instances of an application within a single cluster. Operators are then responsible for maintaining the lifecycle of those instances.
Kustomize
When packaging for kubernetes, there are many options for groups several Kubernetes manifests. The most popular by far is Helm, with other options like kustomize. While Helm is great for 1st-party application delivery, it often falls short when delivering an application to a third party (and to any on-prem environment).
12-factor
The principles behind 12-factor apps are valuable when shipping a cloud-native application, although some ideas like “config should always be in environment variables” have fallen out of favor due to security concerns. Among some of the most valuable principles for delivering reliable, self-healing applications are disposability and concurrency.
Swappable External Components
We dive into great detail in minimizing the if is_onprem: ...
statements in an application in our guide on
swappable external components.
Modern On-prem Tools for Vendors
- Kubernetes
- Helm
- Kustomize
- Container Registries ( Quay, Dockerhub)
- Replicated
- Kots
- Kubectl preflight
- Kubectl support-bundle
- Cloud-native Databases: ( cockroachdb, Yugabyte, tidb, Vitess)
- Kubebuilder
- Operator Framework
- TensorFlow Federated
- Open Cloud Architecture
- Terraform
- Chaos Engineering
- Pact Testing
- ServiceMesh ( Istio, linkerd, Consul)
- Crossplane
- SchemaHero