Installation with Kubernetes and Helm

Cadenza can be installed and operated on Kubernetes using container images and a Helm chart. This installation method provides several advantages:

  • Scalable deployments across multiple nodes for high availability and load distribution

  • Declarative configuration management through Helm values, enabling reproducible deployments

  • Built-in health checks and automated recovery of failed pods

  • Easy integration with Kubernetes ecosystem tools for monitoring, logging, and security

  • Simplified version upgrades with rollback capabilities if needed

The following sections describe the architecture of Cadenza on Kubernetes and provide an introduction to using the Helm chart.

Architecture and Components

Cadenza Architecture in Kubernetes

The architecture diagram shows a typical deployment of Cadenza on Kubernetes.

Components deployed via Helm chart:

  • Cadenza: The main application, which can be scaled across multiple pods for high availability and load distribution.

  • Chromedriver: Provides headless browser capabilities for report generation and printing functionality

  • Logshipper (fluentbit): Collects and forwards application logs to external logging systems

  • Database migration tool: Prepares and migrates the database schema during initial installation and updates. This component runs as a one-time Kubernetes Job and is therefore not shown in the architecture diagram as a persistent pod.

Additional components shown in the diagram:

The diagram also illustrates typical accompanying components that are not part of the Helm chart but are commonly used with Cadenza:

  • Kubernetes Ingress Controller and LoadBalancer Service for external access

  • Identity Provider (e.g., Keycloak) for authentication and authorization

  • Metrics collection systems (e.g., Prometheus) for monitoring

  • Centralized logging systems (e.g., Elasticsearch, Opensearch)

  • Database systems for operational and business data

  • Geo-Services for maps, routing, and geocoding

These accompanying components need to be deployed and configured separately according to your infrastructure requirements.

The following sections provide an introduction to using the Helm chart and deploying Cadenza on Kubernetes. For comprehensive documentation including all available Helm values, configuration options, and detailed examples, please refer to the Cadenza Helm chart documentation on ArtifactHUB.

Requirements

Local Machine Requirements

To deploy Cadenza on Kubernetes from your local machine, you need the following tools installed:

  • Kubernetes command line tool kubectl - The version should be compatible with your Kubernetes cluster version. Version requirements are documented in the Helm chart documentation.

  • Helm - Version requirements are documented in the Helm chart documentation.

  • Network access to the container registry where Cadenza images and Helm chart are hosted

Kubernetes Cluster Requirements

Your Kubernetes cluster must meet the following requirements:

  • Kubernetes version: The minimum required Kubernetes version depends on the Cadenza Helm chart version you are deploying. You can find this information in the Chart.yaml file under the kubeVersion field. Since Disy releases chart versions aligned with Cadenza versions (where <major>.<minor> must match between Helm chart and Cadenza), the minimum Kubernetes version may change between Cadenza releases.

  • Ingress Controller: A working Kubernetes Ingress controller must be deployed that supports sticky sessions (session affinity) based on cookies. This is required for proper session management in Cadenza.

  • Namespace: Either a dedicated Kubernetes cluster for Cadenza or a separate namespace within an existing cluster. Define appropriate resource quotas for the namespace where Cadenza will run. See Resource Requirements for guidance on sizing your cluster.

Next Steps

Once you understand the architecture and ensure that your requirements are met, follow these steps to deploy Cadenza on Kubernetes:

  1. Configuration: Start by preparing your Helm values and configuring Cadenza for your specific requirements. This includes setting up access to the Disy registry, configuring Cadenza application settings, and defining resource allocations. See Configuration and Helm Values for detailed instructions.

  2. Installation: Once your configuration is ready, proceed with the installation. For production deployments, this includes database schema preparation using the migration tool. See Installation and Updates for step-by-step instructions.

  3. Verification: After installation, verify that all components are running correctly and Cadenza is accessible through your Ingress. The installation guide includes detailed verification steps.