This repository contains examples of how to set up the Howso Platform in various configurations based around Helm charts.
Howso Platform is a Kubernetes application that consists of many services, packaged as a helm chart.
The Howso Platform is distributed as a Replicated application. Replicated is a Kubernetes application distribution platform that facilitates self-hosted installation of Kubernetes applications. This documentation will cover accessing the application as Replicated hosted helm charts.
Helm modularizes Kubernetes manifests into charts, which can be installed, upgraded, and uninstalled. It allows a straightforward method for templating out certain values, to make it simple to configure the application.
The Howso Platform relies on datastores, such as postgres, redis, and an s3 compatible object store, and a message queue (NATS). These requirements can themselves be deployed as helm charts. The documentation will use common available charts for these dependencies, that are configurable enough to provide a range from simple tests to scaled production configurations.
The Helm charts for the Howso Platform, including Redis, PostgreSQL, MinIO, and NATS, are designed to work together seamlessly in (an almost) default configurations. With the exception of some small changes (i.e. enabling JetStream in NATS) these charts require minimal setup for a quick start. This interoperability facilitates an easy and efficient initial deployment of the Howso Platform.
In the basic examples, this type of configuration will be demonstrated. It is recommended to start with this configuration before more complex arrangements.
While the default configurations are suitable for a quick start and testing purposes, they are not intended for hardened, production-level deployments. Key aspects such as air-gapping (deploying to environments with no internet access), securing communication tunnels, adhering to OpenShift policies, and scaling will require additional configuration.
Though not exhaustive, the included, air-gap and openshift examples will demonstrate how some of these configurations can be achieved.
Creating secrets as a seperate step is a good Kubernetes practice. In the case of Helm installs, it takes the management of the secrets out of the Helm toolchain. This helps avoid problems where, for instance, argocd, using Helm template behind-the-scenes, both logs secrets, and makes often unintended changes to them.
Including secret creation as a discreet step should also make it clear where additional secret management tools (such as external-secrets) could be used, without complicating the examples.
The examples should work in any Kubernetes cluster, but to make them easy to work locally, examples using k3d are provided. The OpenShift examples should use CodeReady Containers. Checkout the prereqs for more details.
All paths are relative to the root of this repository.
MinIO is used as the default s3 object store with Howso Platform. For production deployments ensure you have a valid license for MinIO. MinIO, under the AGPL license, is included with Howso Inc.'s OEM license for commercial Howso Platform deployments, covering usage up to 1 terabyte.