OptimizerServiceGroup custom resource parameters

Set up your own OptimizerServiceGroup custom resource by configuring the parameters in a YAML, as required. It is not mandatory to configure OptimizerServiceGroup to install Sterling Intelligent Promising and the installation can proceed without Optimization service.

The following tables explain the metadata, specifications for OptimizerServiceGroup:
Note: By default, the image specifications that are defined under OptimizerServiceGroup takes precedence over the global image specifications that are defined in the SIPEnvironment. The image parameters appear by default, hence, to override the default image parameters, update the parameters as required.
Table 1. OptimizerServiceGroup metadata
Property Default value Value type Required Description
name   string Yes Specify the environment to which you want to deploy your service group. You can deploy service groups in the following three modes:
Development mode
In this mode, all services can be deployed into one deployment. To deploy a service group in a development environment, set value of name to dev.
Production mode
In this mode, each of the required service can be deployed into a single deployment. To deploy a service group in a production environment, set value of name to production.
Flexible mode
In this mode, you can regroup or delete any services that you do not wish to run. To deploy a service group in a flexible mode, specify name to any value other than dev or production. In this mode, production environment is populated by default.
namespace   string Yes Specify the namespace where the OptimizerServiceGroup will be created.
Table 2. OptimizerServiceGroup specifications
Property Default value Value type Required Description
active false boolean Yes Specify the active property to true to activate the service group for Optimization and create resources and deployments in the cluster.
Important: You can create multiple service groups but can activate only one at a time in the namespace. Deactivate the active service group to activate a new service group. For more information, see Deactivating an active service group.
logLevel   string No Specify the logging level for the Optimization service group. Available options are OFF, FATAL, ERROR, WARN, INFO, DEBUG,TRACE, ALL.
pod.podAnnotations   object No Specify any additional annotations for pod or deployment as a key-value pair.
pod.podLabels   object No Specify any additional labels for pod or deployment as a key-value pair.
Remember: Do not override the following three labels, as they are internally used by the Operator.
  • app
  • type
  • internal.sip.ibm.com/apps
defaultReplicas 1 integer Yes Specify the number of replicas for the OptimizerServiceGroup.
defaultresources For dev:
Limits:
CPU= 1
Memory= 1536Mi
Requests:
CPU= 100m
Memory= 1Gi
Memory= 1Gi
For production, specify limits and requests for CPU and memory, based on your cluster configuration.
object Yes Specify the CPU and memory resource requests and limits for the OptimizerServiceGroup.
image   object No Specifying image properties are optional. For more information, see list of OptimizerServiceGroup image properties.
image.imagePullSecrets   array No References to secrets in the same namespace for pulling the images. It can be referred as name-value pair.
kpiProcessorService   object No Specify the KPI processor service properties as explained in the Properties specific to Optimizaion service.
optimizationService   object No Specify the order optimization service properties as explained in the Properties specific to Optimizaion service.
configurationService   object No Specify the configuration service properties as explained in the Properties specific to Optimizaion service.
requestOrganizerService   object No Specify the request organizer service properties as explained in the Properties specific to Optimizaion service.
dataCaptureService   object No Specify the data capture service properties as explained in the Properties specific to Optimizaion service.
elasticSearchDataProcessor   object No Specify the Elasticsearch data processor service properties as explained in the Properties specific to Optimizaion service.
errorProcessorService   object No Specify the error processor service properties as explained in the Properties specific to Optimizaion service.
jobs <List of auto-populated jobs> object   A list of jobs that gets populated in the service group custom resource. For Optimizer, the jobs property is available only for elasticSearchDataProcessor. For a list of common properties for jobs, see Properties specific to jobs.
topology array No Specify the names of the Topology Spread Constraints that are to be used for the server. For example, topology: [constraint1, constraint2].

The topology defined in the servers or in the jobs takes precedence over the one defined in the individual service groups.

For more information, see Examples to call Topology Spread Constraints from servers.

Properties specific to Optimizaion service

The value of <service_name> for the properties that are listed in the following table depends on the service that you are using.

The application servers are automatically populated for select Optimization services. For application servers, replicas, and resources, the value of <service_name> can be either one from the values- optimizationService, and configurationService.

The backend servers are automatically populated for select Optimization services and the value of <service_name> can be either one from the values- optimizationService, kpiProcessorService, requestOrganizerService, dataCaptureService, elasticSearchDataProcessor, and errorProcessorService.

Table 3. Optimization service properties
Type of server Property Default value Value type Required Description
Application servers <service_name>.appServers.active true boolean No This flag is set to true by default to activate a server or a group of servers. To deactivate, set it to false.
<service_name>.appServers.affinityAndTolerations   string No Use the name of the affinityAndTolerations that is defined in the SIPEnvironment.
<service_name>.appServers.horizontalPodAutoscaler   string No Specify the name of the pre-defined Horizontal Pod Autoscaler that is to be used. For more information, see horizontalPodAutoscalers parameter.
<service_name>.appServers.groupName Group name is pre-defined for each application server. string   It is the group name of the application servers that are automatically populated by the service. You can modify the group name as required.

In Kubernetes, the character limit of label values is 63, which often cause deployment errors with long resource names. To avoid errors, you can use group name to identify deployments, allowing flexible and organized deployment management. For more information, see Using group names to avoid errors with long resource names.

<service_name>.appServers.pod.podAnnotations   object No Specify any additional annotations for pod or deployment as a key-value pair.
<service_name>.appServers.pod.podLabels   object No Specify any additional labels for pod or deployment as a key-value pair.
Remember: Do not override the following three labels, as they are internally used by the Operator.
  • app
  • type
  • internal.sip.ibm.com/apps
<service_name>.appServers.names <List of pre-populated servers> array   A list of app servers is automatically populated based on the environment (dev or production) that you have specified in your custom resource.
<service_name>.appServers.replicaCount 1 integer Yes Specify the number of replicas for the service.
<service_name>.appServers.resources For dev:
Limits:
CPU= 1
Memory= 1536Mi
Requests:
CPU= 100m
Memory= 1Gi
Memory= 1Gi
For production, specify limits and requests for CPU and memory, based on your cluster configuration.
object Yes Specify the CPU and memory resource requests and limits for the service.
<service_name>.appServers.property.envVars string No Use the name of envVars from attribute serverProperties.envVars[].groupName or serverProperties.envVars[].derivatives[].groupName.
<service_name>.appServers.property.jvmArgs string No Use the name of jvmArgs from attribute serverProperties.jvmArgs[].groupName or serverProperties.jvmArgs[].derivatives[].groupName.
<service_name>.appServers.image.tag   string No Specify this property to define the image tag for the individual server. If it is not set, the tag that is defined in the service group or global configuration in SIPEnvironment is used. This enables precise control over the image version that is used by each server instance.
<service_name>.appServers.image.pullPolicy   string No Specify this property to define the image pull policy for the individual server. If it is not set, the policy defined in the service group or global configuration in SIPEnvironment is used. This controls the image pull behavior for the server instance.
<service_name>.appServers.topology   array No  
Replicas and resources <service_name>.defaultReplicas 1 integer Yes Specify the number of replicas for the service.
<service_name>.affinityAndTolerations   string No Use the name of the affinityAndTolerations that is defined in the SIPEnvironment.
<service_name>.horizontalPodAutoscaler   string No Specify the name of the pre-defined Horizontal Pod Autoscaler that is to be used. For more information, see horizontalPodAutoscalers parameter.
<service_name>.defaultresources For dev:
Limits:
CPU= 1
Memory= 1536Mi
Requests:
CPU= 100m
Memory= 1Gi
object Yes Specify the CPU and memory resource requests and limits for the service.
<service_name>.property.envVars string No Use the name of envVars from attribute serverProperties.envVars[].groupName or serverProperties.envVars[].derivatives[].groupName.
<service_name>.property.jvmArgs   string No Use the name of jvmArgs from attribute serverProperties.jvmArgs[].groupName or serverProperties.jvmArgs[].derivatives[].groupName.
Backend servers <service_name>.backendServers.active true boolean No This flag is set to true by default to activate a server or a group of servers. To deactivate, set it to false.
<service_name>.backendServers.affinityAndTolerations   string No Use the name of the affinityAndTolerations that is defined in the SIPEnvironment.
<service_name>.backendServers.horizontalPodAutoscaler   string No Specify the name of the pre-defined Horizontal Pod Autoscaler that is to be used. For more information, see horizontalPodAutoscalers parameter.
<service_name>.backendServers.groupName Group name is pre-defined for each application server. string   It is the group name of the backend servers that are automatically populated by the service. You can modify the group name as required.

In Kubernetes, the character limit of label values is 63, which often cause deployment errors with long resource names. To avoid errors, you can use group name to identify deployments, allowing flexible and organized deployment management. For more information, see Using group names to avoid errors with long resource names.

<service_name>.backendServers.replica 1 integer Yes Specify the number of replicas for the service.
<service_name>.backendServers.pod.podAnnotations   object No Specify any additional annotations for pod or deployment as a key-value pair.
<service_name>.backendServers.pod.podLabels   object No Specify any additional labels for pod or deployment as a key-value pair.
Remember: Do not override the following three labels, as they are internally used by the Operator.
  • app
  • type
  • internal.sip.ibm.com/apps
<service_name>.backendServers.resources For dev:
Limits:
CPU= 1
Memory= 1536Mi
Requests:
CPU= 100m
Memory= 1Gi
Memory= 1Gi
For production, specify limits and requests for CPU and memory, based on your cluster configuration.
object Yes Specify the CPU and memory resource requests and limits for the service.
<service_name>.backendServers.property.envVars string No Use the name of envVars from attribute serverProperties.envVars[].groupName or serverProperties.envVars[].derivatives[].groupName.
<service_name>.backendServers.property.jvmArgs string No Use the name of jvmArgs from attribute serverProperties.jvmArgs[].groupName or serverProperties.jvmArgs[].derivatives[].groupName.
<service_name>.backendServers.image.tag   string No Specify this property to define the image tag for the individual server. If it is not set, the tag that is defined in the service group or global configuration in SIPEnvironment is used. This enables precise control over the image version that is used by each server instance.
<service_name>.backendServers.image.pullPolicy   string No Specify this property to define the image pull policy for the individual server. If it is not set, the policy defined in the service group or global configuration in SIPEnvironment is used. This controls the image pull behavior for the server instance.
<service_name>.appServers.topology   array No  

Properties specific to jobs

Property Default value Value type Required Description
name   array Yes It is the list of names of the jobs that are included in the service.
affinityAndTolerations string No Use the name of the affinityAndTolerations that is defined in the SIPEnvironment. By default, the affinityAndTolerations defined in the server takes precedence over the affinityAndTolerations that is defined in the individual service group.
horizontalPodAutoscaler   string No Specify the name of the pre-defined Horizontal Pod Autoscaler that is to be used. For more information, see horizontalPodAutoscalers parameter.
logLevel INFO integer No Specify this property to override the log level at the individual server level. Available options are OFF, FATAL, ERROR, WARN, INFO, DEBUG, TRACE, ALL. If not set at the individual server level, the log level that is defined at the service group level is used. If the service group log level is also not defined, then the global configuration in SIPEnvironment is used. If none of these is set, the default log level is INFO. This allows customized control of logging for each server instance.
jobBackoffLimit 4 integer No Specify the number of retries before marking the job as failed after consecutive pod failures.
pod.podAnnotations   object No Specify any additional annotations for pod or deployment as a key-value pair.
pod.podLabels   object No Specify any additional labels for pod or deployment as a key-value pair.
Remember: Do not override the following three labels, as they are internally used by the Operator.
  • app
  • type
  • internal.sip.ibm.com/apps
resources For dev:
Limits:
CPU= 1
Memory= 1536Mi
Requests:
CPU= 100m
Memory= 1Gi
For production, specify limits and requests for CPU and memory, based on your cluster configuration.
  No Specify the CPU and memory resource requests and limits for servers.
topology array No Specify the names of the Topology Spread Constraints that are to be used for the server. For example, topology: [constraint1, constraint2].

The topology defined in the servers or in the jobs takes precedence over the one defined in the individual service groups.

For more information, see Examples to call Topology Spread Constraints from servers.

Deactivating an active service group

Deactivating an active service group means deleting it in the manner that it was created. For example,
  • If a service group is created outside of SIPEnvironment, you can only delete it from outside of SIPEnvironment. In this case, set the active property to false to deactivate the service group.
  • If a service group is created inside the SIPEnvironment, you can only delete it from the SIPEnvironment. In this case, do any of the following actions:
    • Remove the service group from SIPEnvironment.
    • Update the service group to a different mode (dev or production) as needed, to automatically deactivate the existing service group.

Using group names to avoid errors with long resource names

Instead of directly using long deployment names in labels or selectors, for example, metadata.labels, spec.selector.matchLabels, which may exceed the 63-character limit, assign a concise group name to represent the deployment. This approach enables simpler label management and organizes specific deployment configurations within the group.

Example:
optimizerServiceGroup:
  - active: true
    groupName: <deployment-name>
    names:
      - "iv-supply-breakup-snapshot-source-stream-flatten:4"
    replicaCount: 4

Onboarding instructions for Optimizer users

Once you are onboarded to Optimizer, configure the following businessSettings properties with values appropriate to your business use case. This configuration ensures that the Optimizer operates with correct localization, unit measurement, and business rules. For more information, see Onboarding instructions for Optimizer users.