App Suite Releases
  • 8.47
  • 8.35
  • 7.10.6
Imprint
  • 8.47
  • 8.35
  • 7.10.6
Imprint
  • Release 8.51
    • Noteworthy Changes
      • Important Changes
      • App Suite Middleware
    • Changelogs
      • App Suite UI
      • App Suite Middleware
      • Additional Components
        • AI Service
        • OX Guard UI
        • Switchboard
        • Changelog
    • Helm Charts
      • AI-Service documentation
      • App Suite Stack Chart
      • Helm Chart core-cacheservice
      • Helm Chart core-documentconverter
      • Helm Chart core-imageconverter
      • core-mw
      • UI Service
      • Switchboard
  • Release 8.50
  • Release 8.49
  • Release 8.48
  • Release 8.47
  • Release 8.46

core-mw

Version: 6.22.2 Type: application AppVersion: 8.51.0

App Suite Middleware Core Helm Chart

Maintainers

NameEmailUrl
Open-Xchange GmbHinfo@open-xchange.com

Source Code

  • https://github.com/open-xchange/appsuite-middleware

Requirements

RepositoryNameVersion
oci://registry.open-xchange.com/appsuite-core-internal/charts/3rdpartycollabora-online1.1.60
oci://registry.open-xchange.com/appsuite-core-internal/charts/3rdpartygotenberg1.18.0
oci://registry.open-xchange.com/appsuite-core-internal/chartsox-common1.0.49

Additional informations

4.0.0

  • This version introduces new configuration.redis and configuration.sessiond section which adds support for Redis. Please refer to the documentation in values.yaml.
  • Changed the default service type from NodePort to ClusterIP for http-api, sync and admin service.
  • Removed all ingress configuration settings.
  • Removed services.documentconverterHost, services.imageconverterHost and services.spellcheckHost. Not necessary anymore but it's possible to override them e.g. via .Values.global.dc.serviceName
  • Renamed environment variables
    • OX_IMAGECONVERTER_URL → IC_SERVER_URL
    • OX_SPELLCHECK_URL → SPELLCHECK_SERVER_URL
    • OX_DOCUMENTCONVERTER_URL → DC_SERVER_URL
  • Partially or fully override ox-common.names.fullname via nameOverride or fullnameOverride.

5.10.1

  • This version introduces new configuration.redis.cache section which adds support for a separate cache for volatile data. Please refer to the documentation in values.yaml.

6.0.1

  • Hazelcast is now required for OX Documents only.
  • Disabled packages open-xchange-documents-backend and open-xchange-hazelcast per default.
  • Introduced a new role documents that enables packages open-xchange-documents-backend and open-xchange-hazelcast and adds necessary HZ_* env variables to containers. The role has been added to the defaultScaling.
  • Removed packages.minimalWhitelist as it was not used anymore
  • Removed role hazelcast-data-holding and hazelcast-lite-member

6.4.0

  • Whether to use TLS to connect to the Redis endpoint can now be configured using redis.tls.enabled and redis.cache.tls.enabled.

6.19.5

  • Added support for PodDisruptionBudget (PDB) via the new pdb configuration section.
  • This version adds a new middleware.open-xchange.com/type label to pods. Upgrading to this version will trigger a rolling restart of all pods due to the label change.

6.21.0

Third-party Java agent support

The chart supports injecting third-party Java agents (e.g. Elastic APM) into the middleware pod via extraInitContainers. A typical setup uses an init container to copy the agent JAR into a shared volume, which is then mounted into the middleware container and activated via javaOpts.other.

Support scope: OX supports the Helm injection mechanism (extraInitContainers, extraVolumes, extraMounts, javaOpts.other). The internal behavior of third-party agents is outside OX support scope.

Example: Elastic APM agent
extraInitContainers:
  - name: elastic-apm-init
    image: docker.elastic.co/apm/apm-agent-java:1.52.0
    command: ["cp", "/usr/agent/elastic-apm-agent.jar", "/apm-agent/"]
    volumeMounts:
      - name: apm-agent
        mountPath: /apm-agent

extraVolumes:
  - name: apm-agent
    emptyDir: {}

extraMounts:
  - name: apm-agent
    mountPath: /opt/apm-agent
    readOnly: true

javaOpts:
  other: "-javaagent:/opt/apm-agent/elastic-apm-agent.jar"

Upgrading

To 6.0.1

If you are using custom node definitions (scaling.nodes) in your Helm values, please make sure to remove roles hazelcast-data-holding and hazelcast-lite-member. Beside of that, a new role called documents has been introduced. The role needs to be added to every node definition that contains the http-api role and should run OX Documents. Furthermore, it ensures that a Hazelcast headless service is still deployed for OX Documents.

Please consider the following scaling.nodes definition:

core-mw:
  scaling:
    nodes:
      groupware:
        replicas: 2
        roles:
          - admin
          - http-api
          - hazelcast-data-holding
      sync:
        replicas: 1
        roles:
          - sync
          - businessmobility
          - hazelcast-lite-member

A migrated version could look like this:

core-mw:
  scaling:
    nodes:
      groupware:
        replicas: 2
        roles:
          - admin
          - http-api
          - documents
      sync:
        replicas: 1
        roles:
          - sync
          - businessmobility

Warning

Nodes that do not have the role documents will not be deployed as a StatefulSet anymore. Instead they will be deployed as a Deployment. Upgrading a StatefulSet to a Deployment is not easily possible without some preparation. Simply upgrading via Helm would remove all pods of the StatefulSet before starting the first pod of the new Deployment. This would result in a short downtime for endusers.

Example

Take a look at the following migrated example:

core-mw:
  scaling:
    nodes:
      groupware-without-docs:
        replicas: 2
        roles:
          - admin
          - http-api
      sync:
        replicas: 1
        roles:
          - sync
          - businessmobility

Nodes groupware-without-docs will not run OX Documents and roles hazelcast-data-holding and hazelcast-lite-member have been removed, too. Prior 6.0.1, those nodes were deployed as a StatefulSet. After the upgrade, they will be deployed as Deployment. If downtime is not feasible, you need to do the following before the upgrade:

  1. Remove the StatefulSet without removing the pods with:
kubectl delete statefulset appsuite-core-mw-groupware-without-docs --cascade=orphan
  1. Upgrade via Helm

If you're low on resources, you should scale replicas to 0 in your values.yaml. Otherwise, you will end up with the two pods from the StatefulSet and another two pods for the Deployment:

core-mw:
  scaling:
    nodes:
      groupware-without-docs:
        replicas: 0
        [...]

You can now upgrade the deployment via Helm:

helm upgrade [...]

After the upgrade, you can manually delete the StatefulSet pods and scale up the Deployment:

kubectl delete pod appsuite-core-mw-groupware-without-docs-1
kubectl scale deployment appsuite-core-mw-groupware-without-docs --replicas=1
kubectl delete pod appsuite-core-mw-groupware-without-docs-0
kubectl scale deployment appsuite-core-mw-groupware-without-docs --replicas=2

This process needs to be followed for all node definitions that previously had the hazelcast-data-holding role without having the documents role after the migration.

Don't forget to scale up the replicas in your values.yaml again.

Using existing*Secret values

The existing*Secret values let you supply configuration from Secrets you create and manage yourself (for example via Vault, sealed-secrets or external-secrets) instead of placing sensitive data directly in values.yaml. The chart only references these Secrets, so each one must already exist in the release namespace before you install or upgrade.

There are two behaviors. Know which one applies to the value you are setting:

  • Additive – your Secret is mounted alongside the chart-rendered configuration; both apply.
  • Replace – your Secret replaces the chart-rendered equivalent, and the corresponding plain values.yaml settings are then ignored.
ValueBehaviorCombines with / replaces
existingPropertiesSecretAdditiveproperties, secretProperties, propertiesFiles, secretPropertiesFiles
existingUISettingsSecretAdditiveuiSettings, secretUISettings, uiSettingsFiles, secretUISettingsFiles
existingMetaSecretAdditivemeta
existingContextSetsSecretAdditivecontextSets, secretContextSets
existingETCFilesSecretAdditiveetcFiles, secretETCFiles
existingETCBinariesSecretAdditiveetcBinaries, secretETCBinaries
existingYAMLFilesSecretAdditiveyamlFiles, secretYAMLFiles
existingASConfigSecretReplaceasConfig
existingEnvSecretAdditive (env)container environment (envFrom)
redis.existingSecretReplacechart-generated Redis properties secret
mysql.existingSecretReplacechart-generated configdb credentials secret

Override precedence

For the additive property/UI-settings secrets, configuration is applied in numeric file-name order. To make your file win over the chart-generated configuration, prefix it with a number higher than the chart's:

  • properties: use a prefix >= 1001 (the chart uses <= 1000)
  • UI settings: use a prefix >= 2001 (the chart uses <= 2000)
# stringData of the secret named by existingPropertiesSecret
1001_existing.yaml: |
  anywhere:
    com.openexchange.foobar: "true"

existingEnvSecret is added as the last envFrom source, so on a duplicate key it overrides the common-env and chart-generated env secrets, but never extraEnv. For example, a MASTER_ADMIN_USER key in your secret wins over the MASTER_ADMIN_USER the chart generates from masterAdmin.

This override happens only at the container-environment level. The chart's own templating still reads the plain masterAdmin / masterPassword values (it does not look at existingEnvSecret) when it generates other resources.

Rolling restarts on content change

With checksums.existingSecrets: true (the default), the checksum of each referenced Secret's contents is folded into a pod annotation, so editing a Secret triggers a rolling restart.

Example

existingPropertiesSecret: my-extra-props   # additive; file prefixed 1001_ to override chart props
existingASConfigSecret: my-as-config       # replaces asConfig entirely
existingEnvSecret: my-env                  # extra environment variables, last-wins on duplicate keys

Configuration

The following table lists the configurable parameters of the App Suite Middleware Core chart and their default values.

KeyTypeDefaultDescription
affinityobject{}Affinity for pod assignment
asConfig.default.hoststring"all"
basicAuthLoginstring""The user name used for HTTP basic auth.
basicAuthPasswordstring""The password used for HTTP basic auth.
checksumsobject{"commonEnv":true,"config":true,"existingSecrets":true}Configures the checksum annotation used to trigger rolling updates.
checksums.commonEnvbooltrueDetect changes in the shared App Suite secret. It does not detect changes in the Secret defined by existingEnvSecret. Please use checksum.existingSecrets for this.
checksums.configbooltrueDetect config changes in ConfigMaps and Secrets that are created by this chart.
checksums.existingSecretsbooltrueDetect changes in Secrets defined by existing* values (e.g. existingPropertiesSecret or existingContextSetsSecret).
collabora-online.enabledboolfalseWhether Collabora should be enabled or not.
collabora-online.image.repositorystring"registry.open-xchange.com/appsuite-core-internal/3rdparty/collabora-online"
collabora-online.image.tagstring"25.04.9.4.1"
configurationobject{"businessmobility":{"logging":{"debug":{"enabled":false,"logPath":""}}},"languages":[],"logging":{"debug":true,"file":{"maxFileSize":"2MB","maxIndex":99,"minIndex":0,"name":"/var/log/open-xchange/open-xchange.log.0","pattern":"/var/log/open-xchange/open-xchange.log.%i"},"json":{"prettyPrint":false},"logger":[{"level":"WARN","name":"org.apache.cxf"},{"level":"WARN","name":"com.openexchange.soap.cxf.logger"}],"logstash":{"host":"localhost","port":31337},"queueSize":2048,"root":{"file":false,"json":true,"level":"INFO","logstash":false},"syslog":{"facility":"USER","host":"localhost","port":514}}}Configuration
configuration.businessmobility.logging.debug.enabledboolfalseWhether debug log is enabled or not
configuration.businessmobility.logging.debug.logPathstring""The path of the log file @default /var/log/open-xchange
configuration.languageslist[]List of languages which should be enabled. The default set of languages is de_DE, en_US, es_ES, fr_FR and it_IT.
Example for enabling a couple of languages: [ nl_NL, fi_FI, pl_PL ] or for all available languages [ all ]
configuration.logging.debugbooltrueEnables logback's debug mode
configuration.logging.json.prettyPrintboolfalseWhether PrettyPrint is enabled
configuration.logging.loggerlist[{"level":"WARN","name":"org.apache.cxf"},{"level":"WARN","name":"com.openexchange.soap.cxf.logger"}]List of named logger
configuration.logging.logstashobject{"host":"localhost","port":31337}Logstash configuration
configuration.logging.queueSizeint2048The number of logging events to retain for delivery
configuration.logging.root.fileboolfalseWhether File logging is enabled
configuration.logging.root.jsonbooltrueWhether JSON logging is enabled
configuration.logging.root.levelstring"INFO"Sets the log level of the root logger
configuration.logging.root.logstashboolfalseWhether logging to logstash is enabled
configuration.logging.syslogobject{"facility":"USER","host":"localhost","port":514}Syslog configuration
containerPortslist[{"containerPort":8009,"name":"http"}]Container ports
contextSetsobject{}Context sets
createCommonEnvbooltrueWhether to create a shared secret containing common properties as environment variables (e.g. SESSIOND_ENCRYPTION_KEY)
credstoragePasscryptstring""Key to encrypt/decrypt the password held in credential storage.
defaultRegistrystring"registry.open-xchange.com"The default registry
defaultScaling.nodes.default.roles[0]string"http-api"
defaultScaling.nodes.default.roles[1]string"sync"
defaultScaling.nodes.default.roles[2]string"admin"
defaultScaling.nodes.default.roles[3]string"businessmobility"
defaultScaling.nodes.default.roles[4]string"request-analyzer"
defaultScaling.nodes.default.roles[5]string"documents"
documentConverterClient.cache.remoteCacheobject{}
enableDBConnectionCheckbooltrueWhether to wait for configdb.
enableInitializationboolfalseWhether initial bootstraping is enabled or not.
etcBinarieslist[]etc files
etcFilesobject{}etc files
existingASConfigSecretstring""Name of an existing, self-managed secret (in the release namespace) holding as-config.yml. When set, this replaces the chart-rendered asConfig entirely (the asConfig value is then ignored). Content changes trigger a rolling restart when checksums.existingSecrets is enabled.
existingContextSetsSecretstring""Name of an existing, self-managed secret (in the release namespace) holding additional context sets. Mounted in addition to contextSets/secretContextSets. Content changes trigger a rolling restart when checksums.existingSecrets is enabled.
existingETCBinariesSecretstring""Name of an existing, self-managed secret (in the release namespace) holding additional binary etc files. Mounted in addition to etcBinaries/secretETCBinaries. Content changes trigger a rolling restart when checksums.existingSecrets is enabled.
existingETCFilesSecretstring""Name of an existing, self-managed secret (in the release namespace) holding additional etc files. Mounted in addition to etcFiles/secretETCFiles. Content changes trigger a rolling restart when checksums.existingSecrets is enabled.
existingEnvSecretstring""Name of an existing, self-managed secret (in the release namespace) whose keys are added as environment variables to the containers (via envFrom). It is mounted last, so on a duplicate key it takes precedence over the common-env and chart-generated env secrets, but not over extraEnv. Note: this only affects the container environment; values the chart reads internally (e.g. masterAdmin) are not changed by it. Content changes trigger a rolling restart when checksums.existingSecrets is enabled.
existingMetaSecretstring""Name of an existing, self-managed secret (in the release namespace) holding additional meta settings. Mounted in addition to meta. Content changes trigger a rolling restart when checksums.existingSecrets is enabled.
existingPropertiesSecretstring""Name of an existing, self-managed secret (in the release namespace) holding additional properties. Mounted in addition to properties/secretProperties/propertiesFiles/secretPropertiesFiles. Content changes trigger a rolling restart when checksums.existingSecrets is enabled.
existingUISettingsSecretstring""Name of an existing, self-managed secret (in the release namespace) holding additional UI settings. Mounted in addition to uiSettings/secretUISettings/uiSettingsFiles/secretUISettingsFiles. Content changes trigger a rolling restart when checksums.existingSecrets is enabled.
existingYAMLFilesSecretstring""Name of an existing, self-managed secret (in the release namespace) holding additional YAML files. Mounted in addition to yamlFiles/secretYAMLFiles. Content changes trigger a rolling restart when checksums.existingSecrets is enabled.
extraContainerslist[]List of extra sidecar containers
extraEnvlist[]List of extra environment variables
extraInitContainerslist[]List of extra init containers injected into spec.initContainers. Use this to prepare volumes or run setup tasks before the middleware starts (e.g. copying a Java agent JAR). OX supports the Helm injection mechanism; the behavior of third-party agents is outside OX support scope.
extraMountslist[]List of extra mounts
extraPodSpecobject{}Extra PodSpec definitions
extraStatefulSetPropertiesobject{}List of extra StatefulSet properties
extraVolumeslist[]List of extra volumes
extras.monitoring.enabledboolfalseWhether monitoring resources should be created, e.g. a ConfigMap containing the Grafana dashboards.
featuresobject{"definitions":{"admin":["open-xchange-admin","open-xchange-admin-contextrestore","open-xchange-admin-soap","open-xchange-admin-soap-usercopy","open-xchange-admin-user-copy"],"documents":["open-xchange-documents-backend","open-xchange-hazelcast"],"guard":["open-xchange-guard","open-xchange-guard-backend-mailfilter","open-xchange-guard-backend-plugin","open-xchange-guard-file-storage","open-xchange-guard-s3-storage"],"guard-admin":["open-xchange-guard-admin"],"omf-source":["open-xchange-omf-source","open-xchange-omf-source-dualprovisioning","open-xchange-omf-source-dualprovisioning-cloudplugins","open-xchange-omf-source-guard","open-xchange-omf-source-mailfilter"],"plugins":["open-xchange-plugins-antiphishing","open-xchange-plugins-antiphishing-vadesecure","open-xchange-plugins-blackwhitelist","open-xchange-plugins-blackwhitelist-sieve","open-xchange-plugins-contact-storage-group","open-xchange-plugins-contact-storage-provider","open-xchange-plugins-contact-whitelist-sync","open-xchange-plugins-mx-checker","open-xchange-plugins-onboarding-maillogin","open-xchange-plugins-trustedidentity","open-xchange-plugins-unsubscribe","open-xchange-plugins-unsubscribe-vadesecure"],"reseller":["open-xchange-admin-reseller","open-xchange-admin-soap-reseller"],"usm-eas":["open-xchange-usm","open-xchange-eas"],"weakforced":["open-xchange-weakforced"]},"status":{"documents":"disabled","omf-source":"disabled","plugins":"disabled","reseller":"disabled","usm-eas":"disabled","weakforced":"disabled"}}Feature definition
features.definitions.adminlistsee values.yamlAdmin definitions
features.definitions.documentslistsee values.yamlDocuments definitions
features.definitions.guardlistsee values.yamlGuard definitions
features.definitions.omf-sourcelistsee values.yamlOX2OX Migration Framework Source definitions
features.definitions.pluginslistsee values.yamlPlugins definitions
features.definitions.resellerlistsee values.yamlReseller definitions
features.definitions.usm-easlistsee values.yamlUSM EAS sync definitions
features.statusobjectsee values.yamlChoose whether to enable or disable features.
fullnameOverridestring""Fully override of the ox-common.names.fullname template
global.extras.monitoring.enabledboolfalse
global.imageRegistrystring""Sets the image registry globally
global.mysql.existingSecretstring""
gotenberg.chromium.disableJavaScriptbooltrue
gotenberg.enabledboolfalseWhether Gotenberg should be enabled or not.
gotenberg.extraEnv[0].namestring"XDG_DATA_HOME"
gotenberg.extraEnv[0].valuestring"/tmp/.data"
gotenberg.extraEnv[1].namestring"XDG_CONFIG_HOME"
gotenberg.extraEnv[1].valuestring"/tmp/.config"
gotenberg.extraEnv[2].namestring"XDG_CACHE_HOME"
gotenberg.extraEnv[2].valuestring"/tmp/.cache"
gotenberg.image.repositorystring"registry.open-xchange.com/appsuite-core-internal/3rdparty/gotenberg"
gotenberg.image.tagstring"8.28.0"
gotenberg.securityContext.readOnlyRootFilesystembooltrue
gotenberg.volumeMounts[0].mountPathstring"/tmp"
gotenberg.volumeMounts[0].namestring"tmp-volume"
gotenberg.volumes[0].emptyDir.mediumstring"Memory"
gotenberg.volumes[0].emptyDir.sizeLimitstring"256Mi"
gotenberg.volumes[0].namestring"tmp-volume"
hooks.beforeApplyobject{}
hooks.beforeAppsuiteStartobject{}
hooks.startobject{}
hzGroupNamestring""The Hazelcast group name.
image.pullPolicystring"IfNotPresent"Image pull policy
image.repositorystring"appsuite-core/middleware"Image repository
image.tagstring""Image tag
imagePullSecretslist[]Reference to one or more secrets to be used when pulling images
initContainerobject{}
istio.compression.enabledboolfalseWhether to enable HTTP compression (gzip, deflate, etc.).
istio.injection.enabledboolfalseWhether to enable sidecar injection or not.
istio.virtualServices.destinationPortint80The virtual service destination port
javaOpts.debug.gcLogs.enabledboolfalseEnables Java Garbage Collector logging
javaOpts.debug.heapdump.customobject{}The definition of a custom volume excluding its name which shall be used instead of a hostpath volume.
javaOpts.debug.heapdump.enabledboolfalseEnables Java Heap Dump creation in OOM situations
javaOpts.debug.heapdump.hostPath.dirstring"/mnt/appsuite-heap-dumps"hostPath directory on the k8s worker nodes, which needs to be created manually by the k8s admin. The directory will be mounted inside the core-mw container as '/heapdump'.
javaOpts.memory.maxHeapSizestring"2048M"Sets -XX:MaxHeapSize. Ignored if maxRAMPercentage is set.
javaOpts.memory.maxRAMPercentagestring""Sets -XX:MaxRAMPercentage instead of maxHeapSize. Takes precedence over maxHeapSize when set.
javaOpts.networkstring""
javaOpts.otherstring"-XX:+UseCompactObjectHeaders"Extra JVM options appended verbatim (env JAVA_OPTS_OTHER). Default enables Compact Object Headers (-XX:+UseCompactObjectHeaders, JEP 519): 8-byte object headers → less live heap and GC pressure. (To switch the garbage collector to ZGC, use zgc below — not this field.)
javaOpts.serverstring""
javaOpts.zgcboolfalseUse generational ZGC instead of the default G1 (appends -XX:+UseZGC). Opt-in: ZGC gives sub-ms, near-constant GC pauses, well-suited to the virtual-thread worker pool, but needs substantial native-memory headroom beyond the heap (off-heap generational structures plus socket/NIO direct buffers). Too little does NOT surface as an OOM — it shows up as failures to open IMAP/SMTP connections under load. A ~50% heap ratio alone is not enough at small limits: in CI, 4G heap on a 6G limit and 3G heap on a 6G limit both failed, while 4G heap on an 8G limit (~3-4G free) passed cleanly. Before enabling, size heap ≤ ~50% of resources.limits.memory AND leave several GB free (e.g. a 4G heap wants an ≥8G limit). Validate under load before rollout.
jolokiaLoginstring""User used for authentication with HTTP Basic Authentication.
jolokiaPasswordstring""Password used for authentification with HTTP Basic Authentication.
masterAdminstring""The name of the master admin.
masterPasswordstring""The password of the master admin.
metaobject{}Meta
mysql.auth.passwordstring""The database password. (read/write connection)
mysql.auth.readPasswordstring""The database password. (read connection)
mysql.auth.readUserstring""The database user name. (read connection)
mysql.auth.rootPasswordstring""The MySQL root password.
mysql.auth.userstring""The database user name. (read/write connection)
mysql.auth.writePasswordstring""The database password. (write connection)
mysql.auth.writeUserstring""The database user name. (write connection)
mysql.databasestring""The database/schema name. (read/write connection)
mysql.existingSecretstring""Name of an existing, self-managed secret (in the release namespace) holding the configdb connection credentials. When set, the chart does not render its own MySQL secret and references this one instead. Unlike the other existing* secrets, this is not tracked by the checksums.existingSecrets annotation.
mysql.hoststring""The database host. (read/write connection)
mysql.portstring""The database port. (read/write connection)
mysql.readDatabasestring""The database/schema name. (read connection)
mysql.readHoststring""The database host. (read connection)
mysql.readPortstring""The database port. (read connection)
mysql.writeDatabasestring""The database/schema name. (write connection)
mysql.writeHoststring""The database host. (write connection)
mysql.writePortstring""The database port. (write connection)
nameOverridestring""Partially override of the ox-common.names.fullname template
NOTE: Preserves the release name.
nodeSelectorobject{}Tolerations for pod assignment
packagesobject{"status":{"open-xchange-admin-autocontextid":"disabled","open-xchange-authentication-imap":"disabled","open-xchange-authentication-ldap":"disabled","open-xchange-authentication-masterpassword":"disabled","open-xchange-authentication-oauth":"disabled","open-xchange-cassandra":"disabled","open-xchange-dataretention-csv":"disabled","open-xchange-drive-client-windows":"disabled","open-xchange-eas-provisioning":"disabled","open-xchange-eas-provisioning-mail":"disabled","open-xchange-eas-provisioning-sms":"disabled","open-xchange-hostname-config-cascade":"disabled","open-xchange-hostname-ldap":"disabled","open-xchange-multifactor":"disabled","open-xchange-parallels":"disabled","open-xchange-passwordchange-script":"disabled","open-xchange-saml-core":"disabled","open-xchange-sms-sipgate":"disabled","open-xchange-sms-twilio":"disabled","open-xchange-spamhandler-parallels":"disabled","open-xchange-sso":"disabled"},"whitelist":[]}Packages By default, all packages will be enabled. If a package is defined within a feature and that feature is disabled, the package will not be started UNLESS it is explicitly reactivated in this section. All disabled packages will be written into the environment variable OX_BLACKLISTED_PACKAGES.
packages.statusobjectsee values.yamlChoose whether to enable or disable packages.
packages.whitelistlist[]Whitelist The whitelist stands in contrast to the blacklist approach. Packages listed here are added to the OX_WHITELISTED_PACKAGES variable. This variable takes precedence over OX_BLACKLISTED_PACKAGES, causing the blacklist to be ignored.
pdbobject{"create":false,"maxUnavailable":"","minAvailable":""}Pod Disruption Budget configuration
pdb.createboolfalseWhether a PodDisruptionBudget should be created
pdb.maxUnavailablestring""Maximum number or percentage of pods that can be unavailable. Mutually exclusive with minAvailable. Examples: 1, "25%"
pdb.minAvailablestring""Minimum number or percentage of pods that must be available. Mutually exclusive with maxUnavailable. Examples: 1, "50%"
podAnnotationsobject{"logging.open-xchange.com/format":"appsuite-json"}Annotations to add to the pod
podSecurityContextobject{}The pod security context
priorityClassNamestring""The priority class for pods
probe.liveness.enabledbooltrueEnable the liveness probe
probe.liveness.failureThresholdint15The liveness probe failure threshold
probe.liveness.httpGetobject{"path":"/live","port":8016,"scheme":"HTTP"}Specifies the HTTP request to perform
probe.liveness.httpGet.pathstring"/live"Path to access on the HTTP server
probe.liveness.httpGet.portint8016Name or number of the port to access on the container. Number must be in the range 1 to 65535.
probe.liveness.httpGet.schemestring"HTTP"Scheme to use for connecting to the host (HTTP or HTTPS). Defaults to "HTTP".
probe.liveness.periodSecondsint10The liveness probe period (in seconds)
probe.readiness.enabledbooltrueEnable the readiness probe
probe.readiness.failureThresholdint2The readiness probe failure threshold
probe.readiness.httpGetobject{"path":"/ready","port":8009,"scheme":"HTTP"}Specifies the HTTP request to perform
probe.readiness.httpGet.pathstring"/ready"Path to access on the HTTP server
probe.readiness.httpGet.portint8009Name or number of the port to access on the container. Number must be in the range 1 to 65535.
probe.readiness.httpGet.schemestring"HTTP"Scheme to use for connecting to the host (HTTP or HTTPS). Defaults to "HTTP".
probe.readiness.initialDelaySecondsint30The readiness probe initial delay (in seconds)
probe.readiness.periodSecondsint5The readiness probe period (in seconds)
probe.readiness.timeoutSecondsint5The readiness probe timeout (in seconds)
probe.startup.enabledbooltrueEnable the startup probe
probe.startup.failureThresholdint30The startup probe failure threshold
probe.startup.httpGetobject{"path":"/health","port":8009,"scheme":"HTTP"}Specifies the HTTP request to perform
probe.startup.httpGet.pathstring"/health"Path to access on the HTTP server
probe.startup.httpGet.portint8009Name or number of the port to access on the container. Number must be in the range 1 to 65535.
probe.startup.httpGet.schemestring"HTTP"Scheme to use for connecting to the host (HTTP or HTTPS). Defaults to "HTTP".
probe.startup.initialDelaySecondsint30The startup probe initial delay (in seconds)
probe.startup.periodSecondsint10The startup probe period (in seconds)
probeHeaderslist[]
propertiesobjectsee values.yamlProperties
propertiesFilesobject{}Properties files
rbac.createbooltrueWhether Role-Based Access Control (RBAC) resources should be created
rbac.ruleslist[]Custom RBAC rules
redis.affinityobject{}Affinity for pod assignment
redis.auth.passwordstring""The Redis password.
redis.auth.usernamestring""The Redis username.
redis.cacheobject{"auth":{"password":"","username":""},"enabled":false,"hosts":[],"mode":"","sentinelMasterId":"","tls":{"enabled":false}}Configuration for a separate cache for volatile data.
redis.cache.auth.passwordstring""The Redis password.
redis.cache.auth.usernamestring""The Redis username.
redis.cache.enabledboolfalseWhether a separate cache for volatile data is enabled or not, which is highly recommended in production.
redis.cache.hostslist[]List of Redis hosts:
Example for redis: [ <redis_host>:<redis_port> ]
Example for redis+sentinel: [ <sentinel1_host>:<sentinel1_port>,<sentinel2_host>:<sentinel2_port>,<sentinel3_host>:<sentinel3_port> ]
> Note: If hosts is empty or null, then an internal redis-standalone instance will be deployed.
redis.cache.modestring""Redis operation mode (standalone, cluster, sentinel).
redis.cache.sentinelMasterIdstring""Name of the sentinel masterSet, if operation mode is set to sentinel.
redis.cache.tlsobject{"enabled":false}Redis TLS configuration.
redis.cache.tls.enabledboolfalseWhether to use TLS to connect to Redis end-point or not.
redis.existingSecretstring""Name of an existing, self-managed secret (in the release namespace) holding Redis properties. When set, this replaces the chart-generated Redis properties secret. Content changes trigger a rolling restart when checksums.existingSecrets is enabled.
redis.extraEnvVarslist[]List of extra environment variables
redis.hostslist[]List of Redis hosts:
Example for redis: [ <redis_host>:<redis_port> ]
Example for redis+sentinel: [ <sentinel1_host>:<sentinel1_port>,<sentinel2_host>:<sentinel2_port>,<sentinel3_host>:<sentinel3_port> ]
> Note: If hosts is empty or null, then an internal redis-standalone instance will be deployed.
redis.image.repositorystring"redis"Redis image repository
redis.image.tagstring"7-alpine"Redis image tag
redis.modestring""Redis operation mode (standalone, cluster, sentinel)
redis.nodeSelectorobject{}Node labels for pod assignment
redis.sentinelMasterIdstring""Name of the sentinel masterSet, if operation mode is set to sentinel.
redis.tlsobject{"enabled":false}Redis TLS configuration.
redis.tls.enabledboolfalseWhether to use TLS to connect to Redis end-point or not.
redis.tolerationslist[]Tolerations for pod assignment
remoteDebug.enabledboolfalseWhether Java Remote Debugging is enabled.
remoteDebug.nodePortstringnilThe node port (default range: 30000-32767)
remoteDebug.portint8102The Java Remote Debug port.
replicasint1Number of nodes
resourcesobject{"limits":{"memory":"4096Mi"},"requests":{"cpu":"1000m","memory":"4096Mi"}}CPU/Memory resource requests/limits
restricted.drive.enabledbooltrueIf enabled tries to mount drive restricted configuration
roles.admin.services[0].ports[0].namestring"http"
roles.admin.services[0].ports[0].portint80
roles.admin.services[0].ports[0].protocolstring"TCP"
roles.admin.services[0].ports[0].targetPortstring"http"
roles.admin.services[0].typestring"ClusterIP"
roles.businessmobility.services[0].ports[0].namestring"http"
roles.businessmobility.services[0].ports[0].portint80
roles.businessmobility.services[0].ports[0].protocolstring"TCP"
roles.businessmobility.services[0].ports[0].targetPortstring"http"
roles.businessmobility.services[0].typestring"ClusterIP"
roles.businessmobility.values.features.status.usm-easstring"enabled"
roles.businessmobility.values.properties."com.openexchange.usm.ox.url"string"http://localhost:8009/appsuite/api/"
roles.documents.controllerstring"StatefulSet"
roles.documents.services[0].headlessbooltrue
roles.documents.services[0].namestring"hazelcast-headless"
roles.documents.services[0].ports[0].namestring"tcp-hazelcast"
roles.documents.services[0].ports[0].portint5701
roles.documents.statefulSetServiceNamestring"hazelcast-headless"
roles.documents.values.features.status.documentsstring"enabled"
roles.http-api.services[0].ports[0].namestring"http"
roles.http-api.services[0].ports[0].portint80
roles.http-api.services[0].ports[0].protocolstring"TCP"
roles.http-api.services[0].ports[0].targetPortstring"http"
roles.http-api.services[0].typestring"ClusterIP"
roles.request-analyzer.services[0].ports[0].namestring"http"
roles.request-analyzer.services[0].ports[0].portint80
roles.request-analyzer.services[0].ports[0].protocolstring"TCP"
roles.request-analyzer.services[0].ports[0].targetPortstring"http"
roles.request-analyzer.services[0].typestring"ClusterIP"
roles.sync.services[0].ports[0].namestring"http"
roles.sync.services[0].ports[0].portint80
roles.sync.services[0].ports[0].protocolstring"TCP"
roles.sync.services[0].ports[0].targetPortstring"http"
roles.sync.services[0].typestring"ClusterIP"
secretContextSetsobject{}Secret Context sets
secretETCBinarieslist[]Secret etc files
secretETCFilesobject{}Secret etc files
secretPropertiesobject{}Secret properties
secretPropertiesFilesobject{}Secret properties files
secretUISettingsobject{}Secret UI settings
secretUISettingsFilesobject{}Secret UI settings files
secretYAMLFilesobject{}Secret YAML files
securityContextobject{"allowPrivilegeEscalation":false}The security context
serverNamestring"server"The server name.
serviceAccount.annotationsobject{}Annotations to add to the service account
serviceAccount.createbooltrueWhether a service account should be created
serviceAccount.namestring""The name of the service account to use. If not set and create is true, a name is generated using the fullname template
terminationGracePeriodSecondsint60Duration in seconds the pod waits to terminate gracefully.
tolerationslist[]Tolerations for pod assignment
uiSettingsobject{}UI settings
uiSettingsFilesobject{}UI settings files
update.enabledboolfalseWhether an update task job for the specified database schemata is created or not
update.jobobject{"ttlSecondsAfterFinished":86400}Job object settings
update.job.ttlSecondsAfterFinishedint86400The number of seconds after which a job is deleted automatically
update.schematastring""Database schemata to update. If empty, all schemata will be updated.
update.typeslist[]Filter for which types the update tasks are triggered. Every type with an unique bundle set will create a container in the update job. All containers (except one) are configured as init containers to ensure they run sequentially.
update.valuesobject{}Override type sepcific update values
useLegacyBashScriptsbooltrueWhether to use the old bash style init scripts. This is necessary if you want to use bash style hooks instead of go binaries.
yamlFilesobject{}YAML files
Prev
Helm Chart core-imageconverter
Next
UI Service