Skip to main content
Version: 8.9 (unreleased)

Use Amazon OpenSearch Service with the Helm chart

Configure Camunda 8 Self-Managed to use Amazon OpenSearch Service as a secondary storage backend when deploying with the Helm chart. OpenSearch is used for indexing and querying operational data consumed by multiple Camunda components. For a canonical definition, see Elasticsearch/OpenSearch.

Starting with Camunda 8.9, the Helm chart no longer provisions Elasticsearch by default. You can configure the Helm chart to connect to an external Amazon OpenSearch Service instance as an alternative secondary storage backend.

Secondary storage is configurable. For supported components, you can use an RDBMS-based secondary store instead. See RDBMS configuration or the glossary entry RDBMS. For the quick-install scenario, RDBMS with embedded H2 is used instead.

OpenSearch support

Camunda 8 supports both the open-source OpenSearch distribution and Amazon OpenSearch Service.

Prerequisites

Amazon OpenSearch requires two layers of permissions:

  • AWS IAM permissions
  • OpenSearch internal authentication

To connect to OpenSearch using AWS IAM roles for service accounts (IRSA), see the IAM roles for service accounts documentation.

To connect to OpenSearch using Basic authentication, follow the configuration below.

Configuration

Parameters

Orchestration Cluster secondary storage

ParameterTypeDefaultDescription
orchestration.data.secondaryStorage.typestring""Type of secondary storage. Set to opensearch to use OpenSearch.
orchestration.data.secondaryStorage.opensearch.urlstring""URL for the OpenSearch cluster as scheme://host:port (for example, https://opensearch:443).
orchestration.data.secondaryStorage.opensearch.auth.usernamestring""Username for OpenSearch authentication.
orchestration.data.secondaryStorage.opensearch.auth.secret.inlineSecretstring""OpenSearch password as a plain-text value (non-production only).
orchestration.data.secondaryStorage.opensearch.auth.secret.existingSecretstring""Reference to an existing Kubernetes Secret containing the password.
orchestration.data.secondaryStorage.opensearch.auth.secret.existingSecretKeystring""Key within the existing Kubernetes Secret containing the password.
orchestration.data.secondaryStorage.opensearch.tls.secret.existingSecretstring""Reference to an existing Kubernetes Secret containing the TLS trust store.
orchestration.data.secondaryStorage.opensearch.tls.secret.existingSecretKeystring""Key within the existing Kubernetes Secret for the TLS trust store.
orchestration.index.prefixstring""Index prefix in OpenSearch for the new Camunda exporter and the Orchestration Cluster.

Optimize database

ParameterTypeDefaultDescription
optimize.database.opensearch.enabledbooleanfalseEnable external OpenSearch.
optimize.database.opensearch.aws.enabledbooleanfalseEnable AWS IRSA integration.
optimize.database.opensearch.auth.usernamestring""Username for external OpenSearch authentication.
optimize.database.opensearch.auth.secret.inlineSecretstring""OpenSearch password as a plain-text value (non-production only).
optimize.database.opensearch.auth.secret.existingSecretstring""Reference to an existing Kubernetes Secret containing the password.
optimize.database.opensearch.auth.secret.existingSecretKeystring""Key within the existing Kubernetes Secret containing the password.
optimize.database.opensearch.prefixstringzeebe-recordIndex prefix for zeebe-record indices. See Configure Elasticsearch and OpenSearch index prefixes.
optimize.database.opensearch.tls.enabledbooleanfalseEnable TLS for external OpenSearch.
optimize.database.opensearch.tls.secret.existingSecretstring""Name of the Kubernetes Secret containing a TLS certificate.
optimize.database.opensearch.tls.secret.existingSecretKeystringexternaldb.jksKey within the secret containing the TLS certificate.
optimize.database.opensearch.url.protocolstring""Access protocol for OpenSearch. Possible values are http and https.
optimize.database.opensearch.url.hoststring""OpenSearch host, ideally the service name within the namespace.
optimize.database.opensearch.url.portinteger0Port used to access OpenSearch.

Example usage

orchestration:
data:
secondaryStorage:
type: opensearch
opensearch:
url: https://opensearch.example.com:443
auth:
username: user
secret:
# For non-production environments only:
inlineSecret: "your-password-here"
# For production (recommended):
# existingSecret: "opensearch-secret"
# existingSecretKey: "password"

optimize:
database:
opensearch:
enabled: true
auth:
username: user
secret:
# For non-production environments only:
inlineSecret: "your-password-here"
# For production (recommended):
# existingSecret: "opensearch-secret"
# existingSecretKey: "password"
url:
protocol: https
host: opensearch.example.com
port: 443

This configuration connects Camunda to an external Amazon OpenSearch Service instance. The Orchestration Cluster uses OpenSearch as its secondary storage backend, and Optimize is configured to query the same OpenSearch instance.

To avoid storing the username and password in plaintext in your values.yaml, reference a Kubernetes secret. For details and examples, see Helm charts secret management.

Connect to external OpenSearch with custom index prefixes

When running multiple Camunda instances on a shared OpenSearch cluster, use custom index prefixes to isolate data:

orchestration:
data:
secondaryStorage:
type: opensearch
opensearch:
url: https://opensearch.example.com:443
auth:
username: admin
secret:
inlineSecret: pass
index:
prefix: my-env-camunda # Prefix for Orchestration Cluster indices

optimize:
database:
opensearch:
enabled: true
prefix: my-env-zeebe # Prefix for zeebe-record indices
auth:
username: admin
secret:
inlineSecret: pass
url:
protocol: https
host: opensearch.example.com
port: 443

For more details about index prefix configuration and Optimize-specific settings, see Configure Elasticsearch and OpenSearch index prefixes.

Component configuration

Camunda components use the same configuration keys for both Elasticsearch and OpenSearch. To switch, replace the elasticsearch prefix with opensearch and provide the corresponding values.

For example:

  • Operate: CAMUNDA_OPERATE_ELASTICSEARCH_URLCAMUNDA_OPERATE_OPENSEARCH_URL
  • Tasklist: CAMUNDA_TASKLIST_ELASTICSEARCH_URLCAMUNDA_TASKLIST_OPENSEARCH_URL
  • Optimize: OPTIMIZE_ELASTICSEARCH_HTTP_PORTCAMUNDA_OPTIMIZE_OPENSEARCH_HTTP_PORT

For Zeebe, configure the OpenSearch exporter.

For full parameter details, see:

References