Requirements
Software
There are a variety of methods of orchestrating a containerized application, and platforms which support this. SD Elements requires the following:
-
Helm 3.2 or newer
-
A platform which supports deploying containers using Helm and which uses or supports kubectl 1.18 or newer
-
A storage provider with support for the
ReadWriteMany
Kubernetes storage modeStarting with the SD Elements 2022.3 release, the ReadWriteMany
storage mode is no longer required. Existing deployments will need it until they get upgraded to version 2022.3. -
An ingress controller or load balancer that allows external clients to reach the SD Elements web deployment, and the ability to deploy SD Elements within such an environment. For proper configuration, consult the documentation for the solution that you selected for your environment.
-
Name resolution both within the Kubernetes cluster and for endpoints outside of it. This may be accomplished with an open-source CNI (Container Network Interface) plugin, or if using a cloud Kubernetes environment its native name resolution system.
Hardware
The requirements below are the minimal node compute resources that should be able to support both Kubernetes and SD Elements.
-
Cloud platforms that support Kubernetes will configure and manage the Kubernetes control plane, leaving the data plane resources as configurable. The total amount of resources for SD Elements should be the equivalent of no less than 16 vCPUs and 40GB RAM.
-
For bare metal Kubernetes clusters, those where both the control plane and data plane are managed by the administrators who will deploy SD Elements, the cluster should consist of at least 3 control plane nodes, and 5 data plane nodes each using 4 vCPUs and 8GB RAM.
Shared Object Storage
SD Elements shares files internally among its microservices. When you install or upgrade SD Elements, you will need to configure Shared Object Storage to facilitate API object storage.
Logging
SD Elements pods will produce logs that can be gathered by a supporting solution.
Components
SD Elements is composed of the following software elements, which are included in the deployment and don’t need to be installed or configured separately:
Apache + WSGI Webserver (dynamic content) |
Apache processes application requests from Nginx. It also runs the Django Python application in WSGI processes. |
Nginx Webserver (static content) |
Nginx serves public static content directly to clients. It acts as a reverse proxy to Apache, hosts TLS/SSL for the SD Elements web application, and exposes ports 9080 and 9443 to SD Elements application users. |
PostgreSQL Database |
This is the database server for the application. It’s accessed by the Apache WSGI processes. |
RabbitMQ Message Queue |
RabbitMQ is a queuing system for jobs (Issue Tracker, Scanner integration, emails). |
Postfix mail server |
Postfix handles emails initiated by the SD Elements application. |
Memcached server |
Memcached server manages stored data for the SD Elements application and its services. |
Celery workers |
Celery runs application jobs (Issue Tracker, Scanner integration, emails). |
Tested Versions
The table below contains versions of SD Elements that are deployable on corresponding versions of Kubernetes. While all listed versions should work, those emphasized in bold and italics represent deployments verified by QA.
SD Elements Version | Microk8s Version | EKS Version | OpenShift Version |
---|---|---|---|
5.12.29 | 1.18 1.19 1.20 1.21 | 1.18 | |
5.13.38 | 1.18 1.19 1.20 1.21 | 1.18 | |
5.14.17 | 1.18 1.19 1.20 1.21 | 1.18 | |
5.15.17 | 1.18 1.19 1.20 1.21 | 1.18 | |
5.16.25 | 1.18 1.19 1.20 1.21 | 1.18 1.19 | |
5.17.19 | 1.18 1.19 1.20 1.21 | 1.18 1.19 | |
5.18.24 | 1.18 1.19 1.20 1.21 | 1.18 1.19 | |
5.19.21 | 1.18 1.19 1.20 1.21 | 1.18 1.19 | |
5.20.19 | 1.18 1.19 1.20 1.21 | 1.18 1.19 1.20 | |
2022.2.XX | 1.18 1.19 1.20 1.21 | 1.18 1.19 1.20 1.21 | 4.8 |
2022.3.XX | 1.21 1.22 | 1.20 1.21 1.22 | 4.8 |
2022.4.XX | 1.21 1.22 1.23 | 1.20 1.21 1.22 1.23 | 4.9 |
2023.1.XX | 1.22 1.23 1.24 1.25 1.26 | 1.23 | 4.11 |