Passing customer overrides through configMaps by using additionalMounts

Use additionalMounts to pass customer overrides through a configMap to the pods.

The additionalMounts can be mounted to the OMServer by using the label selectors. For more information about additionalMounts, see Configuring additionalMounts parameter.
Depending on the type of OMServer, the mountPath for the customer_overrides.properties varies.
  • For app and xapi servers, the mountPath is based on the release version that you are using,
    • For versions 10.0.2309.1 and older:

      /config/dropins/smcfs.ear/properties.jar/customer_overrides.properties

    • For versions 10.0.2309.2 and higher:

      /config/dropins/smcfs.ear/lib/properties.jar/customer_overrides.properties

  • For other servers, the mountPath is
    • /opt/ssfs/runtime/properties/customer_overrides.properties

If the mountPath in the additionalMounts of the OMServer matches any of the listed customer overrides paths mentioned earlier, then the Sterling Order Management System Software Operator overrides the customer overrides that are specified in customerOverrides.propertyList.

Example

Consider the following snippet with serverProperties, servers, additionalMounts, and configMap. The first additionalMounts in the following snippet, selects the OMServer with label name: agentserver and mounts customer_overrides.properties to the pod with the mountPath /opt/ssfs/runtime/properties/customer_overrides.properties. Therefore, a new configMap is not created, and the contents of customer_overrides.properties key in the om-props configMap is added to the customer_overrides.properties inside the pod, even though the deployment-agent server indicates to use the property in the group Prop_A.

The second additionalMounts in the following snippet, selects the OMServer with label name: appserver and mounts customer_overrides.properties to the pod with the mountPath /config/dropins/smcfs.ear/properties.jar/customer_overrides.properties. As a result, the contents of customer_overrides.properties key in the om-props configMap is added to the customer_overrides.properties inside the pod.

Ensure that when you define customer overrides properties in the YAML, do not to use Kubernetes reserved characters such as "_". For more information about guidelines on special characters, see Guidelines on using quotation marks with YAML special characters.

configMap with customer overrides data:
kind: ConfigMap
apiVersion: v1
metadata:
  name: om-props
data:
  customer_overrides.properties: |
    logService.systemlogger.logfilename: /shared/logs/system.log
    logService.systemlogger.sysout: /shared/logs/noapp.log
    yfs.log4j.configuration: /resources/log4jconfig.custom.configmap.xml
    yfs.yfs.logall: N

OMEnvironment spec (truncated)

  # serverProperties
  serverProperties:
    customerOverrides:
      - groupName: Prop_A
        propertyList:
          yfs.yfs.logall: N
          yfs.log4j.configuration: /resources/log4jconfig.custom.configmap.xml
   
  # om server
  servers:
    - name: deployment-agent
      replicaCount: 1
      profile: ProfileSmall
      podLabels:
        role: agentserver
      property:
        customerOverrides: Prop_A    
        agentServer:
          names: [DefaultServer]

  # additional mounts
  additionalMounts:
    configMaps:
      - name: om-props
        matchLabels:
          name: agentserver
        mountPath: /opt/ssfs/runtime/properties/customer_overrides.properties
        subPath: customer_overrides.properties
        readOnly: false
      - name: om-props
        matchLabels:
          name: appserver
        mountPath: /config/dropins/smcfs.ear/properties.jar/customer_overrides.properties # mountPath for app server
        subPath: customer_overrides.properties
        readOnly: false

Guidelines on using quotation marks with YAML special characters

  • Use quotation marks in YAML, if the value includes special characters. For example, the following special characters might require quotation marks:

    {, }, [, ], ,, &, :, *, #, ?, |. -, <. >, =, !, %, @, \.

  • It is not required to use quotation marks when a single special character is surrounded by spaces. For example, * with spaces on both sides.
  • Use quotation marks if a special character is part of a longer string. For example, the cron string */5 * * * * requires quotation marks ("*/5 * * * *").
  • Using a single quotation mark, you can add almost any character in your string and it does not parse escape codes. For example, "\n" is returned as the string \n.
  • Double quotation marks parse escape codes. For example, "\n" is returned as a line feed character.
  • The values Yes and No must be enclosed in quotation marks (single or double) or else they are interpreted as TrueClass and FalseClass values.