Skip to main content

v2.23.0

Date of release: 12/10/2026

Engine version: 16.12.1

Conform version: 1.3.0

Foresight version: 1.6.0

Genesis version: 0.2.0

We appreciate your continued support and value your feedback. If you encounter any issues or have any questions, please don't hesitate to contact our support team.

Fixes and improvements​

  • RabbitMQ is upgraded to 4.3.6 and the RabbitMQ cluster operator to 2.23.0. Read the RabbitMQ 4.3 notice under Upgrade notices before you upgrade.
  • The Async API now removes a file's results an hour after processing finishes, instead of an hour after submission. Files that produce no clean file or report, for example when the engine returns an error, are removed straight away. Files left behind by interrupted processing are removed after a day.
  • Administrators can now set a non-default ICAP profile to Disabled in the Portal. Previously the option could not be selected.
  • The Portal no longer asks you to confirm stopping the ICAP server when it is already stopped.
  • Upgrading the cdrplatform-storage-monitor chart now leaves Storage Monitor running or stopped as it was. replicaCount sets only the starting state of a fresh install, so use kubectl scale or enable_storage_monitor.sh to turn Storage Monitor on or off.
  • Service base images are updated to fix known container vulnerabilities. Third-party components are also updated, including KEDA 2.21.0, MongoDB 7.0.43, MongoDB Controllers for Kubernetes 1.13.0, Prometheus 3.15.0 and External Secrets 2.11.0.
  • Cockpit, the RHEL web console, is removed from the Halo VM images. Halo does not use it, and removing it clears a vulnerability scanner finding for CVE-2026-4631.
  • On the Azure Marketplace image, the administrator account created at deployment now has passwordless sudo, whether you deploy with a password or an SSH key. Previously an account deployed with an SSH key had no usable sudo. This matches the AWS image and, like it, deviates from STIG rule V-258106.

Upgrade notices​

Expand the notices for the version you are upgrading from.

Versions before v2.23.0

RabbitMQ 4.3 upgrade notice​

Halo v2.23.0 upgrades RabbitMQ to 4.3, which RabbitMQ supports upgrading to in place only from 4.2. Halo v2.17.0 was the first release on RabbitMQ 4.2.

  • From Halo v2.17.0 or later, run the usual upgrade. The cdrplatform-rabbitmq chart moves RabbitMQ's metadata to Khepri before the upgrade, as RabbitMQ recommends.
  • From a release before v2.17.0, upgrade to a release from v2.17.0 to v2.22.x first. A RabbitMQ 4.0 or 4.1 cluster upgraded straight to 4.3 breaks and cannot be rolled back, so the chart refuses the upgrade before RabbitMQ changes. kubectl logs -n cdrplatform job/rabbitmq-khepri-migration shows the reason.

This release also upgrades the RabbitMQ cluster operator to 2.23.0, which no longer allows the cdrplatform-rabbitmq chart's earlier root init container. Upgrade the cdrplatform-rabbitmq chart before the rabbitmq-cluster-operator chart. If the operator is upgraded first, RabbitMQ stops until the cdrplatform-rabbitmq upgrade runs, so run it straight away. The upgrade removes the old init container and restarts RabbitMQ in either order. If that upgrade fails, kubectl logs -n cdrplatform job/rabbitmq-root-init-removal shows the reason.

RabbitMQ 4.3 cannot be rolled back to 4.2 in place. Rolling back to an earlier Halo release means restoring the RabbitMQ data taken before the upgrade. See the RabbitMQ 4.3 release post for details of the move to Khepri.

Versions before v2.22.0

MongoDB operator upgrade notice​

Starting Halo v2.22.0, in-cluster MongoDB is managed by MongoDB Controllers for Kubernetes (MCK, the mongodb-kubernetes chart) in place of the deprecated MongoDB Community Operator (community-operator). This applies only if you run MongoDB inside the cluster. Deployments backed by DocumentDB, Cosmos DB or another external MongoDB are unaffected and need no action.

If you run MongoDB inside the cluster, uninstall the Community Operator first, then install MCK. Your data is preserved if the MongoDBCommunity CRD carries the retain annotation before the uninstall.

Add the MongoDB Helm repository if you have not already:

helm repo add mongodb https://mongodb.github.io/helm-charts
helm repo update

Then, on a cluster running in-cluster MongoDB:

# Protect the data: this annotation stops the uninstall cascading to the CRD, replica set and volumes
kubectl annotate crd mongodbcommunity.mongodbcommunity.mongodb.com helm.sh/resource-policy=keep --overwrite

# Remove the old Community Operator
helm uninstall community-operator -n cdrplatform

# Install MongoDB Controllers for Kubernetes
helm install mongodb-kubernetes-operator mongodb/mongodb-kubernetes -n cdrplatform --version 1.12.0

# Redeploy the MongoDB chart (use the same cloud_provider you deployed with)
helm upgrade -i cdrplatform-mongodb cdrplatform-mongodb -n cdrplatform --atomic --set cloud_provider=<provider>

MCK adopts the existing replica set in place and rolls the MongoDB pod once. Confirm the pod is Ready and the data is intact before continuing the upgrade.

ICAP server upgrade notice​

The ICAP server is now operated from the portal: mutual TLS moved out of the chart's configuration block and became a setting an administrator can change, and starting and stopping the server moved there too. Four things need attention when upgrading an existing ICAP install.

configuration.ENABLE_MTLS was replaced by settings.ICAP.MutualTlsEnabled. The chart fails the render on the old key, naming the replacement, rather than accepting it and ignoring it. Update any values overlay or saved helm upgrade command before upgrading:

--set settings.ICAP.MutualTlsEnabled=true

The certificate volume is now always mounted, so enabling mutual TLS no longer changes the pod specification. It still takes effect on the next ICAP server restart, because the listener binds its port at startup. While mutual TLS is off the server does not bind the TLS port at all, where earlier versions bound it and refused every connection, so a port scan of an appliance without certificates no longer reports that port as open.

The ICAP server pod now runs as its own service account, so that it can write its settings to its own ConfigMap, where it previously ran as default. Anything in the namespace bound to default (a workload-identity annotation, an image-pull secret, a NetworkPolicy or an RBAC rule naming it) has to be reapplied to the new account. Set the annotations on the new account:

--set serviceAccount.annotations.<key>=<value>

Or keep the account the install already uses:

--set serviceAccount.name=<existing-account>

The ICAP server is now started and stopped from the Portal. Open Protection settings, click the ICAP tab and use the control under ICAP configuration. The appliance ships with the ICAP server installed but not running, and nothing answers on the ICAP ports until an administrator turns it on. The ICAP settings on that tab can be changed only while the server is on.

Stop the ICAP server once after your first upgrade if you were not running it. The chart no longer fixes the number of ICAP servers, so that the Portal control keeps whatever you set across later upgrades. Upgrading a release installed from an earlier chart starts the server once as part of that change, whatever state it was in beforehand:

kubectl scale deploy icap-server -n cdrplatform --replicas=0

Only the first upgrade needs this. A freshly imaged appliance is unaffected.

Versions before v2.9.0

RabbitMQ upgrade notice​

Starting Halo v2.9.0, the RabbitMQ version is upgraded from 3.13 to 4.x. When upgrading from an older version of Halo to any version above 2.9.0 all stable RabbitMQ feature flags should be enabled before performing the usual upgrade process using the following command:

rabbitmqctl enable_feature_flag all
Versions before v2.6.2

Deprecation notice​

The cdrplatform-metrics-collation service was deprecated and removed in release 2.6.2. When you upgrade to 2.6.2 or later, uninstall the cdrplatform-metrics-collation Helm chart using this command:

helm delete cdrplatform-metrics-collation -n cdrplatform
Service versions (image tags)
ServiceContainer RepositoryVersion
cdrplatform-engineglasswallhub.azurecr.io/cdrplatform-engine2.23.0-213632
cdrplatform-sync-apiglasswallhub.azurecr.io/cdrplatform-sync-api2.23.0-213632
cdrplatform-report-extractorglasswallhub.azurecr.io/cdrplatform-report-extractor2.23.0-213632
cdrplatform-portalglasswallhub.azurecr.io/cdrplatform-portal2.23.0-213632
cdrplatform-policy-apiglasswallhub.azurecr.io/cdrplatform-policy-api2.23.0-213632
cdrplatform-api-accessglasswallhub.azurecr.io/cdrplatform-api-access2.23.0-213632
cdrplatform-portal-accessglasswallhub.azurecr.io/cdrplatform-portal-access2.23.0-213632
cdrplatform-license-managementglasswallhub.azurecr.io/cdrplatform-license-management2.23.0-213632
cdrplatform-cleanupglasswallhub.azurecr.io/cdrplatform-cleanup2.23.0-213632
cdrplatform-async-apiglasswallhub.azurecr.io/cdrplatform-async-api2.23.0-213632
cdrplatform-metrics-projectionglasswallhub.azurecr.io/cdrplatform-metrics-projection2.23.0-213632
cdrplatform-tally-accumulatorglasswallhub.azurecr.io/cdrplatform-tally-accumulator2.23.0-213632
icap-serverglasswallhub.azurecr.io/icap-server2.23.0-213632
cdrplatform-rabbitmqglasswallhub.azurecr.io/cdrplatform-rabbitmq2.23.0-213632
cdrplatform-storage-monitorglasswallhub.azurecr.io/cdrplatform-storage-monitor2.23.0-213632
Prompt Injection Detection APIglasswallhub.azurecr.io/pulsar/detection2.23.0-213632
Helm chart versions
ChartChart RepositoryVersion
cdrplatform-rabbitmqglasswallhub.azurecr.io/helm/cdrplatform-rabbitmq0.9.8
cdrplatform-external-secretsglasswallhub.azurecr.io/helm/cdrplatform-external-secrets0.7.0
cdrplatform-storageglasswallhub.azurecr.io/helm/cdrplatform-storage0.8.1
cdrplatform-engineglasswallhub.azurecr.io/helm/cdrplatform-engine0.6.3
cdrplatform-sync-apiglasswallhub.azurecr.io/helm/cdrplatform-sync-api0.4.3
prometheus-scalingglasswallhub.azurecr.io/helm/prometheus-scaling0.3.1
cdrplatform-portalglasswallhub.azurecr.io/helm/cdrplatform-portal0.4.4
cdrplatform-policy-apiglasswallhub.azurecr.io/helm/cdrplatform-policy-api0.3.3
cdrplatform-api-accessglasswallhub.azurecr.io/helm/cdrplatform-api-access1.5.0
cdrplatform-portal-accessglasswallhub.azurecr.io/helm/cdrplatform-portal-access0.6.1
cdrplatform-license-managementglasswallhub.azurecr.io/helm/cdrplatform-license-management0.4.0
cdrplatform-cleanupglasswallhub.azurecr.io/helm/cdrplatform-cleanup0.4.0
cdrplatform-async-apiglasswallhub.azurecr.io/helm/cdrplatform-async-api0.2.5
cdrplatform-metrics-projectionglasswallhub.azurecr.io/helm/cdrplatform-metrics-projection0.2.3
cdrplatform-report-extractorglasswallhub.azurecr.io/helm/cdrplatform-report-extractor0.2.2
cdrplatform-tally-accumulatorglasswallhub.azurecr.io/helm/cdrplatform-tally-accumulator0.2.5
cdrplatform-mongodbglasswallhub.azurecr.io/helm/cdrplatform-mongodb0.3.1
icap-serverglasswallhub.azurecr.io/helm/icap-server2.2.3
cdrplatform-storage-monitorglasswallhub.azurecr.io/helm/cdrplatform-storage-monitor0.3.0
cdrplatform-pulsarglasswallhub.azurecr.io/helm/cdrplatform-pulsar0.1.0

Documentation​

Swagger documentation Glasswall documentation Clean a file Archive support License management