Customizing an independent JMS server for Business Automation Workflow

You can deploy an independent Java Message Service (JMS) server instead of the embedded JMS server.

About this task

The embedded JMS server, running on the Workflow server pod, is configured by default. You can update the custom resource (CR) file to deploy an independent JMS server.

Procedure

To deploy an independent JMS server:

  1. Edit the CR and add is_embedded: false to baw_configuration.jms for IBM® Business Automation Workflow Runtime, as shown in the following example:
    baw_configuration:
    -  name: instance1
       jms:
          is_embedded: false
  2. You can customize the JMS parameters, edit the CR file, and add the customized parameters to baw_configuration.jms, as shown in the following example:
    baw_configuration:
    -  name: instance1
       jms:
          is_embedded: false
          ## Enable/disable logging where logs can be sent to Elasticsearch, default is 'false'
          logging_enabled: false
          ## Specify the group which Kubernetes will change the permissions of all files in volumes to when volumes are mounted by a pod, which is specified on the pod level. With scc(on OCP) or psp(on Kubernetes), you need to map the service account to proper scc or psp, for example on OCP, use commnad line: `oc adm policy add-scc-to-user anyuid -z wfps-instance1-sa -n NAMESPACE`
          fs_group: ""
          image:
            ## Image name for Java Messaging Service container.
            repository: cp.icr.io/cp/cp4a/baw/jms
            ## Image tag for Java Messaging Service container.
            tag: "24.0.0"
            ## Pull policy for Java Messaging Service container. Default value is IfNotPresent. Possible values are IfNotPresent, Always.
            pull_policy: IfNotPresent
          tls:
            ## TLS secret name for Java Message Service (JMS)
            tls_secret_name: ibm-jms-tls-secret
          resources:
            limits:
              ## Memory limit for JMS configuration
              memory: "1Gi"
              ## CPU limit for JMS configuration
              cpu: "1000m"
            requests:
              ## Requested amount of memory for JMS configuration
              memory: "512Mi"
              ## Requested amount of CPU for JMS configuration
              cpu: "100m"
          storage:
            ## Whether to enable persistent storage for JMS
            persistent: true
            ## Size for JMS persistent storage
            size: "1Gi"
            ## Whether to enable dynamic provisioning for JMS persistent storage
            use_dynamic_provisioning: true
            ## Access modes for JMS persistent storage
            access_modes:
            - ReadWriteOnce
            ## Storage class name for JMS persistent storage
            storage_class: "{{ shared_configuration.storage_configuration.sc_fast_file_storage_classname }}"
          node_affinity:
            # Values in this field will be used as kubernetes.io/arch selector values. Default values are ['amd64','s390x','ppc64le']
            deploy_arch: []
            #-------------------------------------
            # custom_node_selector_match_expression will be added in node selector match expressions.
            # It accepts array list inputs. You can assign multiple selector match expressions except (kubernetes.io/arch)
            # Example input:
            # - key: kubernetes.io/hostname
            #   operator: In
            #   values:
            #     - worker0
            #     - worker1
            #     - worker3
            #-------------------------------------
            custom_node_selector_match_expression: []
          # Values in this field will be used as annotations in all generated pods.
          # They must be valid annotation key-value pairs.
          # Example:
          # custom_annotations:
          #   key1: value1
          #   key2: value2
          custom_annotations: {}
          # Values in this field will be used as labels in all generated pods
          # It must be valid label key value pairs
          # Example:
          # custom_labels:
          #   key1: value1
          #   key2: value2
          custom_labels: {}
          ##  JMS Server custom plain XML snippet
          ##  custom_xml: |+
          ##    <server>
          ##      <!-- custom propeties here -->
          ##    </server>
          custom_xml:
          ## JMS custom XML secret name that contains custom configuration in Liberty server.xml,
          ## put the custom.xml in secret with key "sensitiveCustom.xml"
          ## kubectl create secret generic jms-custom-xml-secret --from-file=sensitiveCustom.xml=./custom.xml
          custom_secret_name:
  3. Apply the updated CR.