OMEnvironment custom resource manifest

Configure the OMEnvironment custom resource by setting up the parameters as needed.

See the following examples to configure your OMEnvironment as required.

Remember: The commented parameters are optional for creating OMEnvironment. The values in the following examples are provided for demonstration purpose only and must me modified as required.

Example 1: OMEnvironment with sample values for quick setup

apiVersion: apps.oms.ibm.com/v1beta1
kind: OMEnvironment

metadata:

  # Name of the OMEnvironment deployment
  name: oms-sample

  # Annotations: 
  # For more information, see https://www.ibm.com/docs/en/order-management-sw/10.0?topic=cocr-annotations-used-in-sterling-order-management-software-operator
  annotations:
    apps.oms.ibm.com/dbvendor-auto-transform: "true"
    apps.oms.ibm.com/dbvendor-install-driver: "true"
    apps.oms.ibm.com/installed-fixpack: "2306.1"

spec:

  # Licenses: 
  # For more information, see https://www.ibm.com/docs/en/order-management-sw/10.0?topic=resource-configuring-omenvironment-custom
  license:
    accept: true
    acceptCallCenterStore: true

  # Service account: 
  # For more information, see https://www.ibm.com/docs/en/order-management-sw/10.0?topic=resource-configuring-omenvironment-custom
  serviceAccount: <service account>

  # Secret: 
  # For more information, see https://www.ibm.com/docs/en/order-management-sw/10.0?topic=operator-creating-secret
  secret: oms-secret

  # Database parameters: 
  # For more information, see https://www.ibm.com/docs/en/order-management-sw/10.0?topic=resource-configuring-database-parameter
  database:
    db2|oracle|postgresql:
      url: <database url>
      host: <database host>
      name: <database name>
      port: <databse port>
      user: <database user>
      schema: <schema>
      secure: <true|false>

  # JMS parameters: 
  # For more information, see https://www.ibm.com/docs/en/order-management-sw/10.0?topic=resource-configuring-jms-parameter
  jms:
    mq:
      bindingConfigName: oms-mq-bindings-configMap

  # Network policy: 
  # For more information, see https://www.ibm.com/docs/en/order-management-sw/10.0?topic=resource-configuring-networkpolicy-parameter
  networkPolicy:
    ingress: []
    podSelector:
      matchLabels:
        release: oms
        role: appserver
    policyTypes:
      - Ingress

  # Storage configurations are used to configure the persistent volume for shared storage.
  # `storage.name` is the name of the persistent volume claim. 
  # For more information, see https://www.ibm.com/docs/en/order-management-sw/10.0?topic=resource-configuring-storage-parameter
  storage:
    name: oms-pvc-xvdc1

  # Additional mounts: 
  # For more information, see https://www.ibm.com/docs/en/order-management-sw/10.0?topic=resource-configuring-additionalmounts-parameter
  additionalMounts:
    configMaps:
      - name: log4j2-custom
        mountPath: /opt/ssfs/runtime/properties/log4j2_extra.xml
        subPath: log4j2.custom.xml
      - name: log4j2-custom
        mountPath: /config/dropins/smcfs.ear/properties.jar/log4j2_extra.xml
        subPath: log4j2.custom.xml
    storages:
      - name: oms-pvc-xvdc1-extn
        mountPath: /opt/ssfs/runtime/extensions

  # Data Management parameters: 
  # For more information, see https://www.ibm.com/docs/en/order-management-sw/10.0?topic=resource-configuring-datamanagement-parameter
  dataManagement:
    mode: <create|upgrade>
    property:
      customerOverrides: AgentProperties
      envVars: EnvironmentVariables
    
  # Image configurations: 
  # For more information, see https://www.ibm.com/docs/en/order-management-sw/10.0?topic=resource-configuring-image-parameter
  # The tag used in the following image is a sample value and you must replace the tag with one that is supported at the current point in time.
  image: 
    pullPolicy: <Always|IfNotPresent|Never>
    repository: cp.icr.io/cp/ibm-oms-enterprise
    imagePullSecrets:
    - name: cp.icr.io
    - name: us.cp.icr.io
    oms:
      repository: us.cp.icr.io/cp/test
      tag: 10.0.2306.2-amd64
    orderService:
      repository: cp.icr.io/cp/ibm-oms-enterprise
      tag: 10.0.2306.2-amd64
    orderHub:
      base:
        repository: cp.icr.io/cp/ibm-oms-enterprise
        tag: 10.0.2306.2-amd64
      extn:
        repository: cp.icr.io/cp/ibm-oms-enterprise
        tag: 10.0.2306.2-amd64
    callCenter:
      base:
        repository: cp.icr.io/cp/ibm-oms-enterprise
        tag: 10.0.2306.2-amd64
      extn:
        repository: cp.icr.io/cp/ibm-oms-enterprise
        tag: 10.0.2306.2-amd64
           

  # Common parameters: 
  # For more information, see https://www.ibm.com/docs/en/order-management-sw/10.0?topic=resource-configuring-common-parameter
  common:
    ingress:
      host: <cluster host name>

  # Server profiles
  # Using Server profiles you can define common configurations for CPU and memory requirements that can be applied to a set of workloads like appserver, agent or integration servers, and more.
  # The deployments can use the server profile group name to define the CPU and memory requirements for its workloads. 
  # For more information, see https://www.ibm.com/docs/en/order-management-sw/10.0?topic=resource-configuring-serverprofiles-parameter
  serverProfiles:
    - name: ProfileSmall
      resources:
        requests:
          cpu: 200m
          memory: 512Mi
        limits:
          cpu: 1000m
          memory: 1Gi
    - name: ProfileMedium
      resources:
        requests:
          cpu: 500m
          memory: 1Gi
        limits:
          cpu: 2000m
          memory: 2Gi
    - name: ProfileLarge
      resources:
        requests:
          cpu: 500m
          memory: 2Gi
        limits:
          cpu: 4000m
          memory: 4Gi
    - name: ProfileHuge
      resources:
        requests:
          cpu: 500m
          memory: 4Gi
        limits:
          cpu: 4000m
          memory: 8Gi
    - name: ProfileColossal
      resources:
        requests:
          cpu: 500m
          memory: 4Gi
        limits:
          cpu: 4000m
          memory: 16Gi

  # Server properties are used to define server property definitions, which includes customer overrides (customerOverrides), environment variables (envVars), and JVM arguments (jvmArgs).
  # The OMServer can use the server property group name to define the customer overrides, environment variables, and JVM arguments it wants to use. 
  # For more information, see https://www.ibm.com/docs/en/order-management-sw/10.0?topic=resource-configuring-serverproperties-parameter
  serverProperties:

    customerOverrides:
      - groupName: BaseProperties
        propertyList:
          yfs.yfs.logall: N
          yfs.yfs.searchIndex.rootDirectory: /shared
        derivatives:
          - groupName: AgentProperties
            propertyList:
              yfs.yfs.ItemProperties.cache.disable: Y
              yfs.yfs.YFS_AUDIT.batchsize: 100
              yfs.yfs.batchsize: 100
          - groupName: AppServerProperties
            propertyList:
              yfs.api.security.enabled: N
              yfs.interopservlet.security.enabled: false
              yfs.userauthfilter.enabled: false

    envVars:
      - groupName: EnvironmentVariables
        propertyList:
          JVM: ${OM_POD_NAME}
          LOG_DIR: /shared/logs/${OM_POD_NAME}
          LIBERTY_LOG_DIR: /shared/logs/${OM_POD_NAME}
          MESSAGE_FILE_NAME: ${LOG_DIR}/${OM_POD_NAME}_message.log
          TRACE_FILE_NAME: ${LOG_DIR}/${OM_POD_NAME}_trace.log
          TZ: America/New_York

    jvmArgs:
      - groupName: JVMArguments
        propertyList:
          - -DJVM=${OM_POD_NAME}
          - -DLOG_DIR=${LOG_DIR}
          - -XX:HeapDumpPath=${LOG_DIR}
          - -Xdump:heap+java:events=user
          - -Xgcpolicy:gencon
          - -Xverbosegclog:${LOG_DIR}/${OM_POD_NAME}_verbosegc_%Y%m%d.%H%M%S.%pid.txt
          - -Dyfs.logall=N
          - -Dhttps.protocols=TLSv1.2
          - -Dcom.ibm.jsse2.overrideDefaultTLS=true

  # Health Monitor: 
  # For more information, see https://www.ibm.com/docs/en/order-management-sw/10.0?topic=resource-configuring-healthmonitor-parameter
  healthMonitor:
    profile: ProfileLarge # Server profile group name. This `ProfileLarge` profile name is defined in the `serverProfiles[x].name` section.
    replicaCount: 1
    property:
      customerOverrides: AgentProperties
      envVars: EnvironmentVariables
      jvmArgs: JVMArguments

  # REST service: 
  # For more information, see https://www.ibm.com/docs/en/order-management-sw/10.0?topic=resource-configuring-restservice-parameter
  restService:
    profile: ProfileLarge # Server profile group name. This `ProfileLarge` profile name is defined in the `serverProfiles[x].name` section
    replicaCount: 1
    image:
      variant: sbc-sma-smcfs
    property:
      customerOverrides: AppServerProperties
      envVars: EnvironmentVariables
      jvmArgs: JVMArguments
    appServer:
      dataSource:
        minPoolSize: 10
        maxPoolSize: 100
      threads:
        min: 20
        max: 200
      vendor: websphere

  # CallCenter: 
  # For more information, see https://www.ibm.com/docs/en/order-management-sw/10.0?topic=resource-configuring-callcenter-parameter and https://www.ibm.com/docs/en/order-management-sw/10.0?topic=crd-call-center-callcenter-custom-resource
  callCenter:
    bindingAppServerName: icc
    base:
      replicaCount: 1
      profile: ProfileMedium
      envVars: EnvironmentVariables
    extn:
      replicaCount: 1
      profile: ProfileMedium
      envVars: EnvironmentVariables

  # OrderHub: 
  # For more information, see https://www.ibm.com/docs/en/order-management-sw/10.0?topic=resource-configuring-orderhub-parameter 
  # and https://www.ibm.com/docs/en/order-management-sw/10.0?topic=crd-order-hub-orderhub-custom-resource
  orderHub:
    bindingAppServerName: smcfs
    base:
      replicaCount: 1
      profile: ProfileMedium
      envVars: EnvironmentVariables
    extn:
      replicaCount: 1
      profile: ProfileMedium
      envVars: EnvironmentVariables

  # OrderService: 
  # For more information, see https://www.ibm.com/docs/en/order-management-sw/10.0?topic=resource-configuring-orderservice-parameter 
  # and https://www.ibm.com/docs/en/order-management-sw/10.0?topic=crd-order-service-orderservice-custom-resource
  orderService:
    cassandra:
      keyspace: orderservice
      createDevInstance:
        profile: ProfileColossal
    elasticsearch:
      createDevInstance:
        profile: ProfileMedium
    replicaCount: 1
    configuration:
      jwt_ignore_expiration: false

  # devInstances:
      profile: ProfileColossal
      postgresql:
        repository: docker.io
        tag: '<tag>'
        name: postgres
        user: postgres
        password: postgres
        database: postgres
        schema: default_schema
        wipeData: false
        # storage:
        #   name: <omsenvironment-operator-pv-oms-test>
        profile: ProfileColossal
        # timezone: <Timezone>

      activemq:
        repository: docker.io
        tag: 6.1.0
        name: apache/activemq-classic
        # storage:
        #   name: <omsenvironment-operator-pv-oms-test>
        profile: ProfileColossal
        # timezone: <Timezone>

      cassandra:
        repository: docker.io
        tag: latest
        profile: huge
        # storage:
        #   name: <pvc_name>
        keyspace: oserv

      elasticsearch:
        repository: docker.elastic.co
        tag: '8.14.3'
        profile: massive
        storage:
          name: <pvc_name>

  # OMServer: 
  # For more information, see https://www.ibm.com/docs/en/order-management-sw/10.0?topic=resource-configuring-omserver-custom 
  # and https://www.ibm.com/docs/en/order-management-sw/10.0?topic=crd-order-management-server-omserver-custom-resource
  servers:

    - appServer:
        dataSource:
          maxPoolSize: 25
          minPoolSize: 10
        ingress:
          contextRoots: [smcfs, sbc, sma, isccs, wsc, isf, icc]
        threads:
          max: 25
          min: 10
        vendor: websphere
      name: smcfs
      podLabels:
        role: app
      profile: ProfileHuge # Server profile group name. This `ProfileHuge` profile name is defined in the `serverProfiles[x].name` section.
      property:
        customerOverrides: AppServerProperties # Customer overrides group name. This `AppServerProperties` group name is defined in the `serverProperties.customerOverrides[x].groupName` section.
        envVars: EnvironmentVariables # Environment variables group name. This `EnvironmentVariables` group name is defined in the `serverProperties.envVars[x].groupName` section.
        jvmArgs: BaseJVMArgs # JVM arguments group name. This `BaseJVMArgs` group name is defined in the `serverProperties.jvmArgs[x].groupName` section.
      replicaCount: 1
​
    - name: defaultserver
      profile: ProfileLarge # Server profile group name. This `ProfileLarge` profile name is defined in the `serverProfiles[x].name` section.
      property:
        customerOverrides: AgentProperties # Customer overrides group name. This `AgentProperties` group name is defined in the `serverProperties.customerOverrides[x].groupName` section.
        envVars: EnvironmentVariables # Environment variables group name. This `Pacific` group name is defined in the `serverProperties.envVars[x].groupName` section.
        jvmArgs: BaseJVMArgs # JVM arguments group name. This `BaseJVMArgs` group name is defined in the `serverProperties.jvmArgs[x].groupName` section.
      replicaCount: 1
      agentServer:
        names: [DefaultServer]    

Example 2: OMEnvironment with all the supported parameters and default values

apiVersion: apps.oms.ibm.com/v1beta1
kind: OMEnvironment
metadata:
  name: ""
  annotations: ""
spec:
  license:
    accept: false
    acceptCallCenterStore: false
  secret: ""
  # serviceAccount: default
  # upgradeStrategy: RollingUpdate
​
  storage:
    name: ""
    # accessMode: ReadWriteMany
    # capacity: 10Gi
    # storageClassName: default
    # securityContext:
      # fsGroup: 
      # supplementalGroups: []
​
  image:
    # repository: ""
    # pullPolicy: IfNotPresent
    # imagePullSecrets:
    # - name: ""
    oms:
      tag: ""
      # repository: ""
      # pullPolicy: IfNotPresent
      # agentDefaultName: om-agent
      # appDefaultName: om-app
    # orderHub:
      # base:
        # tag: ""
        # repository: ""
        # pullPolicy: IfNotPresent
        # imageName: om-orderhub-base
      # extn:
        # tag: ""
        # repository: ""
        # pullPolicy: IfNotPresent
        # imageName: om-orderhub-ext
    # orderService:
      # tag: ""
      # repository: ""
      # pullPolicy: IfNotPresent
      # imageName: orderservice
​
  database:
    # db2:
      # host: ""
      # port: 
      # url: ""
      # name: ""
      # schema: ""
      # user: ""
      # secure: false
      # dataSourceName: jdbc/OMDS
    # oracle:
      # host: ""
      # port: 
      # url: "" 
      # name: ""
      # schema: ""
      # user: ""
      # secure: false
      # dataSourceName: jdbc/OMDS
    # postgresql:
      # host: ""
      # port: 
      # url: ""
      # name: ""
      # schema: ""
      # user: ""
      # secure: false
      # dataSourceName: jdbc/OMDS
​
  common:
    ingress:
      host: ""
      # annotations: {}
      # labels: {}
      # className: ""
      # ssl:
        # enabled: false
        # identitySecretName: ""
     jwt:
       alias: custom_name     
       algorithm: RS512
       audience: service
       issuer: oms
    # service:
      # annotations: {}
      # labels: {}
    # appServer:
      # ports:
        # http: 9080
        # https: 9443
    # pod:
      # podLabels: {}
      # podAnnotations: {}


  networkPolicy:
    <kubernetes-network-policy-spec>
​
  # jms:
    # mq:
      # bindingConfigName: ""
      # bindingMountPath: /opt/ssfs/.bindings
​
  # security:
    # ssl:
      # trust:
        # storeLocation: ""
        # storeType: PKCS12
        # trustJavaCACerts: true
        # trustedCertDir: ""
​
  # dataManagement:
    # mode: <create/upgrade>
    # podLabels: {}
    # profile: ""
    # property:
      # customerOverrides: ""
      # envVars: ""
​
  # serverProfiles:
  # - name: ""
    # resources:
      # limits:
        # cpu: 
        # memory: 
      # requests:
        # cpu: 
        # memory: 
​
  # serverProperties:
    # customerOverrides:
    # - groupName: ""
      # propertyList: ""
      # propertyRef:
      # - name: ""
        # valueFrom:
          # configMapKeyRef:
            # key: ""
            # name: ""
            # optional: 
          # fieldRef:
            # apiVersion: ""
            # fieldPath: ""
          # resourceFieldRef:
            # containerName: ""
            # divisor: "1"
            # resource: ""
          # secretKeyRef:
            # key: ""
            # name: ""
            # optional: 
      # derivatives: []
    # envVars:
    # - groupName: ""
      # propertyList: ""
      # propertyRef:
      # - name: ""
        # valueFrom:
          # configMapKeyRef:
            # key: ""
            # name: ""
            # optional: 
          # fieldRef:
            # apiVersion: ""
            # fieldPath: ""
          # resourceFieldRef:
            # containerName: ""
            # divisor: "1"
            # resource: ""
          # secretKeyRef:
            # key: ""
            # name: ""
            # optional: 
      # derivatives: []
    # jvmArgs:
    # - groupName: ""
      # propertyList: ""
      # propertyRef:
      # - name: ""
        # valueFrom:
          # configMapKeyRef:
            # key: ""
            # name: ""
            # optional: 
          # fieldRef:
            # apiVersion: ""
            # fieldPath: ""
          # resourceFieldRef:
            # containerName: ""
            # divisor: "1"
            # resource: ""
          # secretKeyRef:
            # key: ""
            # name: ""
            # optional: 
      # derivatives: []
​
  # servers:
  # - name: ""
    # servers[].upgradeStrategy
    # replicaCount: 1
    # podLabels: {}
    # profile: balanced
    # property:
      # customerOverrides: ""
      # envVars: ""
      # jvmArgs: ""
    # image:
      # name: ""
      # variant: ""
    # appServer:
      # serverName: DefaultAppServer
      # dataSource:
        # minPoolSize: 10
        # maxPoolSize: 50
      # threads:
        # min: 20
        # max: 100
      # libertyServerXml: default-server-xml
      # livenessCheckBeginAfterSeconds: 900
      # livenessFailRestartAfterMinutes: 10
      # terminationGracePeriodSeconds: 60
      # ingress:
        # contextRoots: [smcfs, sbc, sma, isccs, wsc, adminCenter]
        # customDomains:
        # - host: ""
          # className: ""
          # annotations: ""
          # labels: ""
          # ssl:
            # enabled: ""
            # identitySecretName: ""
        # annotations: {}
        # labels: {}
      # service:
        # annotations: {}
        # labels: {}
      # vendor: websphere
      # vendorFile: servers.properties
    # agentServer:
      # names: []
      # allowTermination
        # schedule
      # readinessFailRestartAfterMinutes: 10
      # terminationGracePeriodSeconds: 60
    # integration:
      # names: []
      # allowTermination
        # schedule
      # readinessFailRestartAfterMinutes: 10 
      # terminationGracePeriodSeconds: 60
    # affinityAndTolerations: ""
​
  # healthMonitor:
    # podLabels: {}
    # podAnnotations: {}
    # profile: balanced
    # property:
      # customerOverrides: ""
      # envVars: ""
      # jvmArgs: ""
    # replicaCount: 1
    # upgradeStrategy: ""
    # affinityAndTolerations: ""
 
  # restService:
    # replicaCount: 
    # affinityAndTolerations: ""
    # authstyle: 
    # userid: ""
    # podLabels: {}
    # profile: balanced
    # property:
      # customerOverrides: ""
      # envVars: ""
      # jvmArgs: ""
    # appServer:
      # serverName: DefaultAppServer
      # dataSource:
        # minPoolSize: 10
        # maxPoolSize: 50
      # threads:
        # min: 20
        # max: 100
      # libertyServerXml: default-server-xml
      # livenessCheckBeginAfterSeconds: 900
      # livenessFailRestartAfterMinutes: 10
      # terminationGracePeriodSeconds: 60
      # ingress:
        # contextRoots: [smcfs]
        # customDomains:
        # - host: ""
          # className: ""
          # annotations: ""
          # labels: ""
          # ssl:
            # enabled: ""
            # identitySecretName: ""
        # annotations: {}
        # labels: {}
      # service:
        # annotations: {}
        # labels: {}
      # vendor: websphere
      # vendorFile: servers.properties
      # upgradeStrategy: "" 
​
  # orderHub:
    # bindingAppServerName: ""
    # - host: ""
      # className: ""
      # annotations: ""
      # labels: ""
      # ssl:
        # enabled: ""
        # identitySecretName: ""
    # base:
      # replicaCount: 1
      # profile: balanced
      # envVars: ""
      # podLabels: {}
      # service:
        # annotations: {}
        # labels: {}
      # livenessCheckBeginAfterSeconds: 900
      # livenessFailRestartAfterMinutes: 10
      # terminationGracePeriodSeconds: 60
      # affinityAndTolerations: ""
    # extn:
      # replicaCount: 1
      # profile: balanced
      # envVars: ""
      # podLabels: {}
      # service:
        # annotations: {}
        # labels: {}
      # livenessCheckBeginAfterSeconds: 900
      # livenessFailRestartAfterMinutes: 10
      # terminationGracePeriodSeconds: 60
      # affinityAndTolerations: ""
    # ingress:
       # annotations: {}
       # labels: {}
       # customDomains:
        # - host: ""
          # className: ""
          # annotations: ""
          # labels: ""
          # ssl:
            # enabled: ""
            # identitySecretName: ""       
    # horizontalPodAutoscaler: HPA1

​
  # orderService:
    # replicaCount: 1
    # profile: balanced
    # orderServiceVersion: ""
    # podLabels: {}
    # podAnnotations: {}
    # configuration:
      # jwt_ignore_expiration:
      # additionalConfig: {}
    # cassandra:
      # keyspace: ""
      # contactPoints: ""
      # createDevInstance:
        # profile: balanced
        # storage:
          # name: ""
          # accessMode: ""
          # capacity: 
          # storageClassName: ""
    # elasticsearch:
      # contactPoints: ""
      # createDevInstance:
        # profile: balanced
        # storage:
          # name: ""
          # accessMode: ""
          # capacity: 
          # storageClassName: ""
    # ingress:
       # annotations: {}
       # labels: {}
   # horizontalPodAutoscaler: HPA1
​
  # additionalMounts:
    # configMaps:
    # - name: ""
      # mountPath: ""
      # subPath: ""
      # subPathExpr: ""
      # readOnly: false
      # mountPropagation: ""
      # matchLabels: {}
    # secrets:
    # - name: ""
      # mountPath: ""
      # subPath: ""
      # subPathExpr: ""
      # readOnly: false
      # mountPropagation: ""
      # matchLabels: {}
    # storages:
    # - name: ""
      # mountPath: ""
      # storageClassName: ""
      # accessMode: ""
      # capacity: 
      # matchLabels: {}
​
  # affinityAndTolerations:
  # - name: ""
  #   affinity:
  #     <kubernetes-affinity-spec>
  #   tolerations:
  #   - <kubernetes-toleration-spec>

  # horizontalPodAutoscalers:
  #  - name: Hpa1
  #    maxReplicas: 1
  #    minReplicas: 1
  #    metrics:
  #      - resource:
  #          name: cpu
  #          target:
  #            averageUtilization: 1
  #            type: Utilization
  #        type: Resource
  #  - name: Hpa2
  #    maxReplicas: 5
  #    minReplicas: 2
  #    metrics:
  #      - resource:
  #          name: cpu
  #          target:
  #            averageUtilization: 5
  #            type: Utilization
  #        type: Resource  

  #  devInstances:
  #   profile: ProfileColossal
  #   postgresql:
  #     repository: docker.io
  #     tag: '<tag>'
  #     name: postgres
  #     user: postgres
  #     password: postgres
  #     database: postgres
  #     schema: default_schema
  #     wipeData: false
  #     storage:
  #       name: <omsenvironment-operator-pv-oms-test>
  #     profile: ProfileColossal
  #     timezone: <Timezone>
  #   cassandra:
  #     repository: docker.io
  #     tag: latest
  #     profile: huge
  #     storage:
  #       name: <pvc_name>
  #     keyspace: oserv

  #   elasticsearch:
  #     repository: docker.elastic.co
  #     tag: '8.14.3'
  #     profile: massive
  #     storage:
  #       name: <pvc_name>

  #   activemq:
  #     repository: docker.io
  #     tag: 6.1.0
  #     name: apache/activemq-classic
  #     storage:
  #       name: <omsenvironment-operator-pv-oms-test>
  #     profile: ProfileColossal
  #     timezone: <Timezone>   

  
  # probeConfigs:
  #   - name: test1               # Define the probeConfig
  #     liveness:
  #       initialDelaySeconds: 30
  #       periodSeconds: 30
  #       timeoutSeconds: 1
  #       failureThreshold: 3
  #     readiness:
  #       initialDelaySeconds: 40
  #       periodSeconds: 50
  #       timeoutSeconds: 1
  #       successThreshold: 2
  #       failureThreshold: 3
  #     startup:
  #       initialDelaySeconds: 30
  #       periodSeconds: 40
  #       timeoutSeconds: 1
  #       failureThreshold: 3

Example 3: OMEnvironment sample for a performance environment

apiVersion: apps.oms.ibm.com/v1beta1
kind: OMEnvironment
metadata:
  name: oms
  annotations:
    # apps.oms.ibm.com/installed-fixpack: '29'
    apps.oms.ibm.com/installed-fixpack: '2206.0'
spec:
  license:
    accept: false
    acceptCallCenterStore: false
  secret: oms-secrets 
​
  storage:
    name: oms-pvc-name 

​# The tag used in the following image is a sample value.
# You must replace the tag with one that is supported at the current point in time.
  image:
    repository: cp.icr.io/cp/ibm-oms-<edition>
    imagePullSecrets:
    - name: ibm-entitlement-key
    - name: my-private-registry-key1 
    - name: my-private-registry-key2 
    oms:
      tag: 10.0.2209.0-amd64
    orderHub:
      base:
        tag: 10.0.2209.0-amd64
      extn:
        tag: 10.0.2209.0-amd64
    orderService:
      tag: 1.0.2209.0-amd64
​
  database:
    db2:
      host: dbhost.domain.com 
      port: 50000 
      name: omdb 
      schema: schema1 
      user: mydbuser 
      secure: true
      # dataSourceName: jdbc/OMDS
      # url: "" 
​
  common:
    ingress:
      host: public-domain.mycluster.com  
      className: ""
      ssl:
        enabled: true
​    jwt:
      alias: jwtName       
      algorithm: RS512
      audience: service
      issuer: oms

  # This networkPolicy is most open and hence least secure. You have been warned!
  networkPolicy:
    podSelector:
      matchLabels:
        none: none
    policyTypes:
      - Ingress
    ingress: []
​
  jms:
    mq:
      bindingConfigName: oms-mq-bindings-configmap
​
  security:
    ssl:
      trust:
        trustJavaCACerts: true
        trustedCertDir: /var/trustedCerts 
​
  # dataManagement:
  #   mode: upgrade
​  
  serverProfiles:
    - name: medium
      resources:
        requests:
          cpu: 500m
          memory: 1Gi
        limits:
          cpu: 2000m
          memory: 2Gi
    - name: large
      resources:
        requests:
          cpu: 500m
          memory: 2Gi
        limits:
          cpu: 4000m
          memory: 4Gi 
​
  serverProperties:
​    
    customerOverrides:
      - groupName: BaseProperties
        propertyList:
          yfs.yfs.searchIndex.rootDirectory: /shared
          yfs.colonymap.cache.maxsize: 310000
          yfs.yfs.unset.dbhk.fields.YFS_RESOURCE: false
          dbclassCache.YFS_ASSET.enabled: false
          dbclassCache.YFS_REGION.count.size: 31000
          yfs.oms_provider_url: file:/opt/ssfs
          yfs.oms_qcf: omsqcf
          yfs.yfs.hotsku.useHotSKUFeature: Y
          yfs.yfs.hotsku.assumeUnavailableOnLockTimeout: Y
        derivatives:
        - groupName: AppServerProperties
          propertyList:
            yfs.yfs.ItemProperties.cache.disable: N
            yfs.yfs.promotionrules.cache.maxsize.toload: 60000
          derivatives:
          - groupName: AppServerProperties-Custom1
            propertyList:
              yfs.yfs.ItemProperties.cache.disable: Y
              dbclassCache.YFS_ASSET.enabled: true
              yfs.yfs.YFS_ORDER_LINE_SCHEDULE.batchsize: 50
          - groupName: AppServerProperties-Debug
            propertyList:
              yfs.yfs.logall: Y
        - groupName: AgentProperties
          propertyList:
            yfs.yfs.batchsize: 100
            yfs.yfs.YFS_AUDIT.batchsize: 100
            yfs.yfs.pricelistheader.cache.disabled: Y
          propertyRef:
            name: yfs.api.security.token.enabled
            valueFrom:
              configMapKeyRef:
                name: global-security-configmap
                key: enabled
​    
    envVars:
    - groupName: CommonEnvVars
      propertyList:
        LOG_DIR: /shared/logs/${OM_POD_NAME}
        LIBERTY_LOG_DIR: /shared/logs/${OM_POD_NAME}
      derivatives:
      - groupName: LibertyTracing
        propertyList:
          MESSAGE_FILE_NAME: ${LOG_DIR}/${OM_POD_NAME}_message.log
          TRACE_FILE_NAME: ${LOG_DIR}/${OM_POD_NAME}_trace.log
        derivatives:
        - groupName: Liberty
          propertyList:
            WLP_OUTPUT_DIR: ${LOG_DIR}
        - groupName: Liberty-Debug
          propertyList:
            WLP_DEBUG_ADDRESS: 5555
​   
    jvmArgs:
    - groupName: BaseJVMArgs
      propertyList:
      - -DJVM=${OM_POD_NAME}
      - -DLOG_DIR=${LOG_DIR}
      derivatives:
      - groupName: BaseJVMArgs-GC
        propertyList:
        - -XX:HeapDumpPath=${LOG_DIR}
        - -Xdump:heap+java:events=user
        - -Xgcpolicy:gencon
        - -Xverbosegclog:${LOG_DIR}/${OM_POD_NAME}_verbosegc_%Y%m%d.%H%M%S.%pid.txt
        derivatives:
        - groupName: BaseJVMArgs-Debug
          propertyList:
          - -Xgcpolicy:balanced
          - -Djavax.net.debug=ssl,handshake
​ 
  servers:
  - name: smcfs
    replicaCount: 1
    profile: medium
    property:
      customerOverrides: AppServerProperties
      envVars: Liberty
      jvmArgs: BaseJVMArgs
    appServer:
      ingress:
        contextRoots: [smcfs, sbc, sma]
        customDomains:
        - host: ""
          className: ""
          annotations: 
            ingress.kubernetes.io/affinity: "cookie"
          labels: {}
          ssl:
            enabled: ""
            identitySecretName: mydomain_secret
​
  - name: isccs
    replicaCount: 1
    upgradeStrategy: RollingUpdate
    image:
      variant: isccs
    profile: large
    property:
      customerOverrides: AppServerProperties-Custom1
      envVars: Liberty
      jvmArgs: BaseJVMArgs
    appServer:
      ingress:
        contextRoots: [isccs]

  - name: agents-orderservice
    profile: medium
    property:
      customerOverrides: AgentProperties
      envVars: CommonEnvVars
      jvmArgs: BaseJVMArgs
    replicaCount: 1
    agentServer:
      names: [OrderArchiveServer, SSIDelayedSyncOSServer, PurgeSalesOrderDefaultSmartServer]
​
  - name: agents-job
    profile: medium
    property:
      customerOverrides: AgentProperties
      envVars: CommonEnvVars
      jvmArgs: BaseJVMArgs
    replicaCount: 1
    agentServer:
      names: [JobResource]
      allowTermination:
        schedule: 'none'    # A Job will be created.
​
  - name: agents-cronjob
    profile: medium
    property:
      customerOverrides: AgentProperties
      envVars: CommonEnvVars
      jvmArgs: BaseJVMArgs
    replicaCount: 1
    agentServer:
      names: [OrderPurge, ShipmentPurge]
      allowTermination:
        schedule: '*/5 * * * *'  # A CronJob will be created.

  healthMonitor:
    profile: balanced
    replicaCount: 1
​
  restService:
    profile: medium
    replicaCount: 1
    property:
      customerOverrides: AppServerProperties
      envVars: CommonEnvVars
      jvmArgs: BaseJVMArgs
​
  orderHub:
    bindingAppServerName: smcfs
    base:
      replicaCount: 1
      profile: medium
      envVars: CommonEnvVars
    extn:
      replicaCount: 1
      profile: medium
      envVars: CommonEnvVars    
    ingress:
      annotations: 
        ingress.kubernetes.io/affinity: "cookie"
      labels: {}
      ssl:
        enabled: ""
        identitySecretName: mydomain_secret
​
  orderService:
    cassandra:
      createDevInstance:
        profile: large
        storage:
          name: oserv-services
          capacity: 40Gi
          storageClassName: dynamic-pv
      keyspace: oserv
    elasticsearch:
      createDevInstance:
        profile: balanced
        storage:
          name: oserv-services
          capacity: 40Gi
          storageClassName: dynamic-pv
    orderServiceVersion: "1.0"
    replicaCount: 1
    configuration:
      jwt_ignore_expiration: false
      additionalConfig:
        enable_graphql_introspection: "true"
        ssl_vertx_disable: "false"
    ingress:
      annotations: 
        ingress.kubernetes.io/affinity: "cookie"
      labels: {}
      ssl:
        enabled: ""
        identitySecretName: mydomain_secret
​
  additionalMounts:
    configMaps:
    - name: env-certificates 
      mountPath: /var/trustedCerts/db2.crt  
      subPath: db2.crt
    - name: env-certificates 
      mountPath: /var/trustedCerts/integ.crt 
      subPath: integ.crt
    storages:
      - name: oms-pvc-extn 
        mountPath: /opt/ssfs/runtime/extensions

  horizontalPodAutoscalers:
    - name: Hpa1
      maxReplicas: 1
      minReplicas: 1
      metrics:
        - resource:
            name: cpu
            target:
              averageUtilization: 1
              type: Utilization
          type: Resource
    - name: Hpa2
      maxReplicas: 5
      minReplicas: 2
      metrics:
        - resource:
            name: cpu
            target:
              averageUtilization: 5
              type: Utilization
          type: Resource

# You can also use additionalMounts to pass customer overrides through a configMap to the pods, as shown in the following example.
   # - 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