Preparing storage
Prepare storage, including the required persistent volumes (PVs) and persistent volume claim (PVCs) for the operator, Application Engine, IBM Business Automation Navigator, IBM FileNet® Content Manager, New in 20.0.3 Intelligent Task Prioritization, New in 20.0.3 Workforce Insights, Java™ Message Service (JMS), IBM Process Federation Server, Elasticsearch, and IBM Business Automation Workflow.
Procedure
-
Prepare storage for the operator.
The operator requires a persistent volume (PV) and persistent volume claim (PVC) to store the Db2® JDBC driver. The following example illustrates the procedure using Network File System (NFS). An existing NFS server is required before you create PVs and PVCs.
-
Create a directory for the operator on the NFS server.
- If you are using Db2, run the following command on the NFS server:
mkdir -p NFS_storage_directory/db/jdbc/db2 chown -R :65534 NFS_storage_directory/db chmod -R g+rw NFS_storage_directory/db - New in 20.0.3 If you are using Oracle, run
the following command on the NFS server:
mkdir -p NFS_storage_directory/db/jdbc/oracle chown -R :65534 NFS_storage_directory/db chmod -R g+rw NFS_storage_directory/db - New in 20.0.3 If you are using PostgreSQL, run the following command on the NFS
server:
mkdir -p NFS_storage_directory/db/jdbc/postgresql chown -R :65534 NFS_storage_directory/db chmod -R g+rw NFS_storage_directory/db
- If you are using Db2, run the following command on the NFS server:
-
Copy the JDBC JAR files to the new operator directory.
- If you are using Db2, copy
db2jcc4.jaranddb2jcc_license_cu.jartoNFS_storage_directory/db/jdbc/db2. - New in 20.0.3 If you are using Oracle, copy
ojbdc8.jartoNFS_storage_directory/db/jdbc/oracle. - New in 20.0.3 If you are using PostgreSQL, copy a PostgreSQL JDBC 4.2 driver JAR file to
NFS_storage_directory/db/jdbc/postgresql.
- If you are using Db2, copy
-
In the
/etc/exportsconfiguration file, add the following line at the end:<NFS_STORAGE_DIRECTORY> *(rw,sync,no_subtree_check) -
After editing and saving the
/etc/exportsconfiguration file, you must restart the NFS service for the changes to take effect. The following example shows restarting the NFS server on RHEL 7:systemctl stop nfs systemctl stop rpcbind systemctl start rpcbind systemctl start nfs -
To create the shared PV and PVC that are required by the operator, create a file that is named
operator-shared-pv-pvc.yamlwith the following contents:
whereapiVersion: v1 kind: PersistentVolume metadata: name: operator-shared-pv spec: storageClassName: "ecm-openshift-nfs" accessModes: - ReadWriteMany capacity: storage: 1Gi nfs: path: <NFS_STORAGE_DIRECTORY>/db server: <NFS_SERVER_IP> persistentVolumeReclaimPolicy: Recycle --- kind: PersistentVolumeClaim apiVersion: v1 metadata: name: operator-shared-pvc annotations: volume.beta.kubernetes.io/storage-class: "ecm-openshift-nfs" labels: app.kubernetes.io/instance: ibm-dba app.kubernetes.io/managed-by: ibm-dba app.kubernetes.io/name: ibm-dba spec: accessModes: - ReadWriteMany resources: requests: storage: 1Gi<NFS_STORAGE_DIRECTORY>is the operator folder on your NFS server<NFS_SERVER_IP>is the IP address of your NFS server
-
Run the following command on the OpenShift master node:
oc apply -f operator-shared-pv-pvc.yaml -
New in 20.0.3 If you are using Oracle or
PostgreSQL, modify the
baw_configurationsection of the custom resource template under the database data configuration to use the custom JDBC drivers, custom JDBC PVC name, and JDBC driver files.
-
Create a directory for the operator on the NFS server.
- Prepare storage for Application Engine, by following the instructions in Implementing storage.
- Prepare storage for IBM
Business Automation Navigator, by
following the instructions in Creating volumes and folders for deployment on Kubernetes.
Important: The value for the
baw_configuration[x].case.network_shared_directory_pvc(the persistent volume claim (PVC) name for the case network shared directory) parameter in the custom resource must be set to the same value as the IBM Business Automation Navigatorpvc_for_icn_pluginstoreparameter. - Prepare storage for IBM FileNet Content Manager, by following the instructions in Configuring storage for the content services environment.
-
New in 20.0.3 Prepare storage for Intelligent Task Prioritization.
The Intelligent Task Prioritization feature requires a PV to be created before you can deploy. You have the following options, depending on whether your Kubernetes environment supports dynamic provisioning.
- Option 1: If your environment supports dynamic provisioning:
Enable dynamic provisioning by setting
baml_configuration.intelligent_task_prioritization.storage.use_dynamic_provisioningtotrue. The trained model files will useshared_configuration.storage_configuration.sc_fast_file_storage_classnamein the PV and the log file will useshared_configuration.storage_configuration.sc_medium_file_storage_classnamein the PV. - Option 2: If your environment does not support dynamic provisioning:
Disable dynamic provisioning by setting
baml_configuration.intelligent_task_prioritization.storage.use_dynamic_provisioningtofalse. Then, create two PVs and PVCs manually and setbaml_configuration.intelligent_task_prioritization.storage.existing_pvc_for_logstoreto the name of the log PVC andbaml_configuration.intelligent_task_prioritization.storage.existing_pvc_for_trained_pipelinesto the name of the trained pipelines PVC in the custom resource file.
The following example illustrates the Intelligent Task Prioritization PV and PVCs creation procedure that uses NFS. An existing NFS server is required before you create PVs and PVCs.-
Create related folders on an NFS server. You must grant minimal privileges to the NFS server.
Give the least privilege to the mounted directories using the following commands:
mkdir -p <NFS_STORAGE_DIRECTORY>/baml-itp/logstore mkdir -p <NFS_STORAGE_DIRECTORY>/baml-itp/trained-pipelines chown -R :65534 <NFS_STORAGE_DIRECTORY>/baml-itp/logstore chmod -R g+rw <NFS_STORAGE_DIRECTORY>/baml-itp/logstore chown -R :65534 <NFS_STORAGE_DIRECTORY>/baml-itp/trained-pipelines chmod -R g+rw <NFS_STORAGE_DIRECTORY>/baml-itp/trained-pipelines -
Create the PVs required by Intelligent Task Prioritization
by saving the following YAML files on the OpenShift master node and then running the
oc apply -f <YAML_FILE_NAME>command on each of the files in the following order:1. baml-itp-logstore-pv.yaml
whereapiVersion: v1 kind: PersistentVolume metadata: name: baml-itp-logstore-pv spec: storageClassName: baml-itp-logstore-pv accessModes: - ReadWriteMany capacity: storage: 10Gi nfs: path: <NFS_STORAGE_DIRECTORY>/baml-itp/logstore server: <NFS_SERVER_IP> persistentVolumeReclaimPolicy: Recycle<NFS_STORAGE_DIRECTORY>is the storage folder on your NFS server<NFS_SERVER_IP>is the IP address of your NFS server
2. baml-itp-logstore-pvc.yamlapiVersion: v1 kind: PersistentVolumeClaim metadata: name: baml-itp-logstore-pvc spec: accessModes: - ReadWriteMany resources: requests: storage: 10Gi storageClassName: baml-itp-logstore-pv volumeName: baml-itp-logstore-pv status: accessModes: - ReadWriteMany capacity: storage: 10Gi3. baml-itp-trained-pipelines-pv.yaml
whereapiVersion: v1 kind: PersistentVolume metadata: name: baml-itp-trained-pipelines-pv spec: storageClassName: baml-itp-trained-pipelines-pv accessModes: - ReadWriteMany capacity: storage: 10Gi nfs: path: <NFS_STORAGE_DIRECTORY>/baml-itp/trained-pipelines server: <NFS_SERVER_IP> persistentVolumeReclaimPolicy: Recycle<NFS_STORAGE_DIRECTORY>is the storage folder on your NFS server<NFS_SERVER_IP>is the IP address of your NFS server
4. baml-itp-trained-pipelines-pvc.yamlapiVersion: v1 kind: PersistentVolumeClaim metadata: name: baml-itp-trained-pipelines-pvc spec: accessModes: - ReadWriteMany resources: requests: storage: 10Gi storageClassName: baml-itp-trained-pipelines-pv volumeName: baml-itp-trained-pipelines-pv status: accessModes: - ReadWriteMany capacity: storage: 10Gi
- Option 1: If your environment supports dynamic provisioning:
-
New in 20.0.3 Prepare storage for Workforce Insights.
The Workforce Insights feature requires a PV to be created before you can deploy. You have the following options, depending on whether your Kubernetes environment supports dynamic provisioning.
- Option 1: If your environment supports dynamic provisioning:
Enable dynamic provisioning by setting
baml_configuration.workforce_insights.storage.use_dynamic_provisioningtotrue. The log file will useshared_configuration.storage_configuration.sc_medium_file_storage_classnamein the PV. - Option 2: If your environment does not support dynamic provisioning:
Disable dynamic provisioning by setting
baml_configuration.workforce_insights.storage.use_dynamic_provisioningtofalse. Then, create two PVs and PVCs manually and setbaml_configuration.workforce_insights.storage.existing_pvc_for_logstoreto the name of the log PVC in the custom resource file.
The following example illustrates the Workforce Insights PV and PVCs creation procedure that uses NFS. An existing NFS server is required before you create PVs and PVCs.-
Create related folders on an NFS server. You must grant minimal privileges to the NFS server.
Give the least privilege to the mounted directories using the following commands:
mkdir -p <NFS_STORAGE_DIRECTORY>/baml-wfi/logstore chown -R :65534 <NFS_STORAGE_DIRECTORY>/baml-wfi/logstore chmod -R g+rw <NFS_STORAGE_DIRECTORY>/baml-wfi/logstore -
Create the PVs required by Workforce Insights by saving the following YAML files on the OpenShift master node and then running the
oc apply -f <YAML_FILE_NAME>command on each of the files in the following order:1. baml-wfi-logstore-pv.yaml
whereapiVersion: v1 kind: PersistentVolume metadata: name: baml-wfi-logstore-pv spec: storageClassName: baml-wfi-logstore-pv accessModes: - ReadWriteMany capacity: storage: 10Gi nfs: path: <NFS_STORAGE_DIRECTORY>/baml-wfi/logstore server: <NFS_SERVER_IP> persistentVolumeReclaimPolicy: Recycle<NFS_STORAGE_DIRECTORY>is the storage folder on your NFS server<NFS_SERVER_IP>is the IP address of your NFS server
2. baml-wfi-logstore-pvc.yamlapiVersion: v1 kind: PersistentVolumeClaim metadata: name: baml-wfi-logstore-pvc spec: accessModes: - ReadWriteMany resources: requests: storage: 10Gi storageClassName: baml-wfi-logstore-pv volumeName: baml-wfi-logstore-pv status: accessModes: - ReadWriteMany capacity: storage: 10Gi
- Option 1: If your environment supports dynamic provisioning:
-
Prepare storage for the Java Message Service (JMS).
The JMS component requires a PV to be created before you can deploy. You have the following options, depending on whether your Kubernetes environment supports dynamic provisioning.
- Option 1: If your environment supports dynamic provisioning:
Enable dynamic provisioning by setting
baw_configuration[x].jms.storage.use_dynamic_provisioningtotrueand provide the storage class name ofbaw_configuration[x].jms.storage.storage_classin the custom resource file. - Option 2: If your environment does not support dynamic provisioning:
Disable dynamic provisioning by setting
baw_configuration[x].jms.storage.use_dynamic_provisioningtofalse. Then, create a PV manually and setbaw_configuration[x].jms.storage.storage_classin the custom resource file to the value of thestorageClassNameproperty of your PV.
The following example illustrates the JMS PV creation procedure that uses NFS. An existing NFS server is required before you create PVs.-
Create related folders on an NFS server. You must grant minimal privileges to the NFS server.
Give the least privilege to the mounted directories using the following commands:
mkdir -p <NFS_STORAGE_DIRECTORY>/jms chown -R :65534 <NFS_STORAGE_DIRECTORY>/jms chmod -R g+rw <NFS_STORAGE_DIRECTORY>/jms -
Create the PV required by JMS by creating a YAML file called
jms-pv.yamlon the OpenShift master node with the following contents:
whereapiVersion: v1 kind: PersistentVolume metadata: name: jms-pv-baw spec: storageClassName: "jms-storage-class" accessModes: - ReadWriteOnce capacity: storage: 2Gi nfs: path: <NFS_STORAGE_DIRECTORY>/jms server: <NFS_SERVER_IP> persistentVolumeReclaimPolicy: Recycle<NFS_STORAGE_DIRECTORY>is the storage folder on your NFS serveraccessModesis set to the same value as thejms.storage.access_modesproperty in the custom resource configuration file<NFS_SERVER_IP>is the IP address of your NFS server
-
Run the following command:
oc apply -f jms-pv.yaml
- Option 1: If your environment supports dynamic provisioning:
-
Prepare storage for Process Federation Server.
The Process Federation Server component requires a PV to be created before you can deploy. You have the following options, depending on whether your Kubernetes environment supports dynamic provisioning.
- Option 1: If your environment supports dynamic provisioning:
Enable dynamic provisioning by setting
pfs_configuration.logs.storage.use_dynamic_provisioningtotrueand provide the storage class name ofpfs_configuration.logs.storage.storage_classin the custom resource file. - Option 2: If your environment does not support dynamic provisioning:
Disable dynamic provisioning by setting
pfs_configuration.logs.storage.use_dynamic_provisioningtofalse. Then, create a PV manually and setpfs_configuration.logs.storage.storage_classin the custom resource file to the value of thestorageClassNameproperty of your PV.
The following example illustrates the Process Federation Server PV creation procedure that uses NFS. An existing NFS server is required before you create PVs.-
Create related folders on an NFS server. You must grant minimal privileges to the NFS server.
Give the least privilege to the mounted directories using the following commands:
New in 20.0.3
mkdir -p <NFS_STORAGE_DIRECTORY>/pfs-logs chown -R :65534 <NFS_STORAGE_DIRECTORY>/pfs-logs chmod -R g+rw <NFS_STORAGE_DIRECTORY>/pfs-logsFor 20.0.2mkdir -p <NFS_STORAGE_DIRECTORY>/pfs-logs-0 chown -R :65534 <NFS_STORAGE_DIRECTORY>/pfs-logs-0 chmod -R g+rw <NFS_STORAGE_DIRECTORY>/pfs-logs-0 -
Create the PV required by Process Federation Server by
creating a YAML file on the OpenShift master node.
New in 20.0.3 Create the
pfs-pv-pvc-logs.yamfile with the following content:
whereapiVersion: v1 kind: PersistentVolume metadata: name: pfs-logs-pv spec: storageClassName: "pfs-logs" accessModes: - ReadWriteOnce capacity: storage: 5Gi nfs: path: <NFS_STORAGE_DIRECTORY>/pfs-logs server: <NFS_SERVER_IP> persistentVolumeReclaimPolicy: Recycle --- apiVersion: v1 kind: PersistentVolumeClaim metadata: name: pfs-logs-pvc spec: accessModes: - ReadWriteMany resources: requests: storage: 10Gi storageClassName: pfs-logs volumeName: pfs-logs-pv<NFS_STORAGE_DIRECTORY>is the storage folder on your NFS server<NFS_SERVER_IP>is the IP address of your NFS server
For 20.0.2 The number of PVs to be created depends on yourpfs_configuration.replicassetting. Create the same number of PVs as replicas. Create thepfs-pv-pfs-logs-0.yamlfile with the following content:
where--- apiVersion: v1 kind: PersistentVolume metadata: name: pfs-logs-pv spec: storageClassName: "pfs-logs" accessModes: - ReadWriteMany capacity: storage: 10Gi nfs: path: <NFS_STORAGE_DIRECTORY>/pfs-logs-0 server: <NFS_SERVER_IP> persistentVolumeReclaimPolicy: Recycle<NFS_STORAGE_DIRECTORY>is the storage folder on your NFS server<NFS_SERVER_IP>is the IP address of your NFS server
-
Run the following command:
New in 20.0.3
oc apply -f pfs-pv-pvc-logs.yamlFor 20.0.2oc apply -f pfs-pv-pfs-logs-0.yaml
- Option 1: If your environment supports dynamic provisioning:
-
Prepare storage for Elasticsearch.
The Elasticsearch component on Process Federation Server requires a PV to be created before you can deploy. You have the following options, depending on whether your Kubernetes environment supports dynamic provisioning.
- Option 1: If your environment supports dynamic provisioning:
Enable dynamic provisioning by setting
elasticsearch_configuration.storage.use_dynamic_provisioningtotrueand provide the storage class name ofelasticsearch_configuration.storage.storage_classin the custom resource file. - Option 2: If your environment does not support dynamic provisioning:
Disable dynamic provisioning by setting
elasticsearch_configuration.storage.use_dynamic_provisioningtofalse. Then, create a PV manually and setelasticsearch_configuration.storage.storage_classin the custom resource file to the value of thestorageClassNameproperty of your PV.
The following example illustrates the Elasticsearch PV creation procedure that uses NFS. An existing NFS server is required before you create PVs.-
Create related folders on an NFS server. You must grant minimal privileges to the NFS server.
Give the least privilege to the mounted directories using the following commands:
mkdir -p <NFS_STORAGE_DIRECTORY>/pfs-es-0 chown -R :65534 <NFS_STORAGE_DIRECTORY>/pfs-es-0 chmod -R g+rw <NFS_STORAGE_DIRECTORY>/pfs-es-0 -
Create the PV required by Elasticsearch by creating a YAML file called
pfs-pv-pfs-es-0.yamlon the OpenShift master node with the following contents:
whereapiVersion: v1 kind: PersistentVolume metadata: name: pfs-es-0 spec: storageClassName: "pfs-es" accessModes: - ReadWriteOnce capacity: storage: 10Gi nfs: path: <NFS_STORAGE_DIRECTORY>/pfs-es-0 server: <NFS_SERVER_IP> persistentVolumeReclaimPolicy: Recycle<NFS_STORAGE_DIRECTORY>is the storage folder on your NFS server<NFS_SERVER_IP>is the IP address of your NFS server- The numbers of PVs to be created depends on your
elasticsearch_configuration. replicassetting. Create the same number of PVs as replicas.
-
Run the following command:
oc apply -f pfs-pv-pfs-es-0.yaml
- Option 1: If your environment supports dynamic provisioning:
-
Prepare storage for Business Automation Workflow.
The Business Automation Workflow component requires a PV to be created before you can deploy. You have the following options, depending on whether your Kubernetes environment supports dynamic provisioning.
- Option 1: If your environment supports dynamic provisioning:
Enable dynamic provisioning by setting
baw_configuration.storage.use_dynamic_provisioningtotrue. The dump file will useshared_configuration.storage_configuration.sc_slow_file_storage_classnamein the PV and the log file will useshared_configuration.storage_configuration.sc_medium_file_storage_classnamein the PV. - Option 2: If your environment does not support dynamic provisioning:
Disable dynamic provisioning by setting
baw_configuration.storage.use_dynamic_provisioningtofalse. Then, create the required PVs and PVCs manually and setbaw_configuration.storage.existing_pvc_for_logstoreto the name of the log PVC andbaw_configuration.storage.existing_pvc_for_dumpstoreto the name of the dump PVC in the custom resource file. New in 20.0.3 Also setbaw_configuration.storage.existing_pvc_for_filestoreto the name of the file PVC.
The following example illustrates the Business Automation Workflow PV and PVC creation procedure that uses NFS. An existing NFS server is required before you create PVs and PVCs.-
Create related folders on an NFS server. You must grant minimal privileges to the NFS server.
Give the least privilege to the mounted directories using the following commands:
mkdir -p <NFS_STORAGE_DIRECTORY>/baw/logstore mkdir -p <NFS_STORAGE_DIRECTORY>/baw/dumpstore New in 20.0.3 mkdir -p <NFS_STORAGE_DIRECTORY>/baw/filestore chown -R :65534 <NFS_STORAGE_DIRECTORY>/baw/logstore chmod -R g+rw <NFS_STORAGE_DIRECTORY>/baw/logstore chown -R :65534 <NFS_STORAGE_DIRECTORY>/baw/dumpstore chmod -R g+rw <NFS_STORAGE_DIRECTORY>/baw/dumpstore New in 20.0.3 chown -R :65534 <NFS_STORAGE_DIRECTORY>/baw/filestore New in 20.0.3 chmod -R g+rw <NFS_STORAGE_DIRECTORY>/baw/filestore -
Create the Business Automation Workflow required PVs by
saving the following YAML files on the OpenShift master node and then running the
oc apply -f <YAML_FILE_NAME>command on the files in the following order:1. baw-logstore-pv.yaml
whereapiVersion: v1 kind: PersistentVolume metadata: name: baw-logstore-pv spec: storageClassName: baw-logstore-pv accessModes: - ReadWriteMany capacity: storage: 10Gi nfs: path: <NFS_STORAGE_DIRECTORY>/baw/logstore server: <NFS_SERVER_IP> persistentVolumeReclaimPolicy: Recycle<NFS_STORAGE_DIRECTORY>is the storage folder on your NFS server<NFS_SERVER_IP>is the IP address of your NFS server
2. baw-logstore-pvc.yamlapiVersion: v1 kind: PersistentVolumeClaim metadata: name: baw-logstore-pvc spec: accessModes: - ReadWriteMany resources: requests: storage: 10Gi storageClassName: baw-logstore-pv volumeName: baw-logstore-pv status: accessModes: - ReadWriteMany capacity: storage: 10Gi3. baw-dumpstore-pv.yamlapiVersion: v1 kind: PersistentVolume metadata: name: baw-dumpstore-pv spec: storageClassName: baw-dumpstore-pv accessModes: - ReadWriteMany capacity: storage: 10Gi nfs: path: <NFS_STORAGE_DIRECTORY>/baw/dumpstore server: <NFS_SERVER_IP> persistentVolumeReclaimPolicy: Recycle4. baw-dumpstore-pvc.yamlapiVersion: v1 kind: PersistentVolumeClaim metadata: name: baw-dumpstore-pvc spec: accessModes: - ReadWriteMany resources: requests: storage: 10Gi storageClassName: baw-dumpstore-pv volumeName: baw-dumpstore-pv status: accessModes: - ReadWriteMany capacity: storage: 10GiNew in 20.0.3 5. baw-filestore-pv.yamlapiVersion: v1 kind: PersistentVolume metadata: name: baw-filestore-pv spec: storageClassName: baw-filestore-pv accessModes: - ReadWriteMany capacity: storage: 10Gi nfs: path: NFS_storage_directory/baw/filestore server: NFS_server_IP persistentVolumeReclaimPolicy: RecycleNew in 20.0.3 6. baw-filestore-pvc.yamlapiVersion: v1 kind: PersistentVolumeClaim metadata: name: baw-filestore-pvc spec: accessModes: - ReadWriteMany resources: requests: storage: 10Gi storageClassName: baw-filestore-pv volumeName: baw-filestore-pv status: accessModes: - ReadWriteMany capacity: storage: 10Gi
- Option 1: If your environment supports dynamic provisioning: