OptimizerServiceGroup custom resource manifest

Use OptimizerServiceGroup to manage number of deployments, replica counts, thread counts and more, for Optimization service resources.
To create an OptimizerServiceGroup, you can use any of the following methods:
  • Method 1: Specify the name property, which is the environment to which you want to deploy your service group. The service properties such as appServers, backendServers, and other properties, are automatically populated when the service group is created. You can customize it by configuring as needed. For more information, see Configuring OptimizerServiceGroup custom resource (independent mode).
  • Method 2: Copy and paste an already tested OptimizerServiceGroup schema from one environment to another. This method saves you time from creating a service group from scratch.
You can run the following YAML to populate the spec based on the kind and name of the environment. The value of <name> can be dev, production, or any value for the flexible mode.
apiVersion: apps.sip.ibm.com/v1beta1
kind: OptimizerServiceGroup
metadata:
  name: <name>
  namespace: <sip_installation_namespace>
spec: {}

The following examples illustrates schemas for OptimizerServiceGroup custom resource in a development and production modes.

Figure 1. Development mode
apiVersion: apps.sip.ibm.com/v1beta1
kind: OptimizerServiceGroup
metadata:
  name: dev
spec:
  active: false
  kpiProcessorService:
    affinityAndTolerations: ""
    topology: {}
    horizontalPodAutoscaler: ""
    pod:
      podAnnotations: {}
      podLabesl: {} 
    backendServers:
      - active: true
        names:
          - 'kpi-processor:1'
        replicaCount: 1
        affinityAndTolerations: ""
        topology: {}
        horizontalPodAutoscaler: ""
        pod:
          podAnnotations: {}
          podLabesl: {} 
          image:
            tag: <release_tag>
            pullPolicy: IfNotPresent          
    defaultresources:
      limits:
        cpu: '1'
        memory: 1536Mi
      requests:
        cpu: 100m
        memory: 1Gi
  optimizationService:
    affinityAndTolerations: ""
    topology: {}
    horizontalPodAutoscaler: ""
    pod:
      podAnnotations: {}
      podLabesl: {} 
    appServers:
      - active: true
        names:
          - order-optimization
        replicaCount: 1
        affinityAndTolerations: ""
        topology: {}
        horizontalPodAutoscaler: ""
        pod:
          podAnnotations: {}
          podLabesl: {} 
          image:
            tag: <release_tag>
            pullPolicy: IfNotPresent          
    backendServers:
      - active: true
        names:
          - 'shadow-order-optimization:1'
        replicaCount
        affinityAndTolerations: ""
        topology: {}
        horizontalPodAutoscaler: ""
        pod:
          podAnnotations: {}
          podLabesl: {} 
          image:
            tag: <release_tag>
            pullPolicy: IfNotPresent          
    defaultresources:
      limits:
        cpu: '1'
        memory: 1536Mi
      requests:
        cpu: 100m
        memory: 1Gi        
  elasticSearchDataProcessor:
    affinityAndTolerations: ""
    topology: {}
    horizontalPodAutoscaler: ""
    pod:
      podAnnotations: {}
      podLabesl: {} 
    backendServers:
      - active: true
        names:
          - 'elastic-search-data-processor:1'
        replicaCount: 1
        affinityAndTolerations: ""
        topology: {}
        horizontalPodAutoscaler: ""
        pod:
          podAnnotations: {}
          podLabesl: {} 
          image:
            tag: <release_tag>
            pullPolicy: IfNotPresent        
    defaultresources:
      limits:
        cpu: '1'
        memory: 1536Mi
      requests:
        cpu: 100m
        memory: 1Gi
    jobs:
      - name: otmz-elastic-search-db-setup-job
        pod:
          podAnnotations: {}
          podLabels: {}
        affinityAndTolerations: "" 
        horizontalPodAutoscaler: ""   
        topology: {}   
        logLevel: INFO
        jobBackoffLimit: ""
        image:
          tag: <release_tag>
          pullPolicy: IfNotPresent         
  errorProcessorService:
    affinityAndTolerations: ""
    topology: {}
    horizontalPodAutoscaler: ""
    pod:
      podAnnotations: {}
      podLabesl: {} 
    backendServers:
      - active: true
        names:
          - 'error-processor:1'
        replicaCount: 1
        affinityAndTolerations: ""
        topology: {}
        horizontalPodAutoscaler: ""
        pod:
          podAnnotations: {}
          podLabesl: {} 
          image:
            tag: <release_tag>
            pullPolicy: IfNotPresent        
    defaultresources:
      limits:
        cpu: '1'
        memory: 1536Mi
      requests:
        cpu: 100m
        memory: 1Gi
  requestOrganizerService:
    affinityAndTolerations: ""
    topology: {}
    horizontalPodAutoscaler: ""
    pod:
      podAnnotations: {}
      podLabesl: {} 
    backendServers:
      - active: true
        names:
          - 'request-organizer:1'
        replicaCount: 1
        affinityAndTolerations: ""
        topology: {}
        horizontalPodAutoscaler: ""
        pod:
          podAnnotations: {}
          podLabesl: {} 
         image:
           tag: <release_tag>
           pullPolicy: IfNotPresent        
    defaultresources:
      limits:
        cpu: '1'
        memory: 1536Mi
      requests:
        cpu: 100m
        memory: 1Gi
  dataCaptureService:
    affinityAndTolerations: ""
    topology: {}
    horizontalPodAutoscaler: ""
    pod:
      podAnnotations: {}
      podLabesl: {} 
    backendServers:
      - active: true
        names:
          - 'data-capture:1'
        replicaCount: 1
        affinityAndTolerations: ""
        topology: {}
        horizontalPodAutoscaler: ""
        pod:
          podAnnotations: {}
          podLabesl: {} 
          image:
           tag: <release_tag>
           pullPolicy: IfNotPresent        
    defaultresources:
      limits:
        cpu: '1'
        memory: 1536Mi
      requests:
        cpu: 100m
        memory: 1Gi 
  configurationService:
    affinityAndTolerations: ""
    topology: {}
    horizontalPodAutoscaler: ""
    pod:
      podAnnotations: {}
      podLabesl: {} 
    appServers:
      - active: true
        names:
          - configuration
        replicaCount: 1
        affinityAndTolerations: ""
        topology: {}
        horizontalPodAutoscaler: ""
        pod:
          podAnnotations: {}
          podLabesl: {} 
    defaultresources:
      limits:
        cpu: '1'
        memory: 1536Mi
      requests:
        cpu: 100m
        memory: 1Gi
Figure 2. Production mode:
apiVersion: apps.sip.ibm.com/v1beta1
kind: OptimizerServiceGroup
metadata:
  name: production
spec:
  active: false
  kpiProcessorService:
    affinityAndTolerations: ""
    topology: {}
    horizontalPodAutoscaler: ""
    pod:
      podAnnotations: {}
      podLabesl: {} 
    backendServers:
      - active: true
        names:
          - 'kpi-processor:5'
        replicaCount: 2
        affinityAndTolerations: ""
        topology: {}
        horizontalPodAutoscaler: ""
        pod:
          podAnnotations: {}
          podLabesl: {}    
        image:
          tag: <release_tag>
          pullPolicy: IfNotPresent
    defaultresources:
      limits:
        cpu: '1'
        memory: 1536Mi
      requests:
        cpu: 100m
        memory: 1Gi
  optimizationService:
    affinityAndTolerations: ""
    topology: {}
    horizontalPodAutoscaler: ""
    pod:
      podAnnotations: {}
      podLabesl: {}   
    appServers:
      - active: true
        names:
          - order-optimization
        replicaCount: 2
        affinityAndTolerations: ""
        topology: {}
        horizontalPodAutoscaler: ""
        pod:
          podAnnotations: {}
          podLabesl: {}    
        image:
          tag: <release_tag>
          pullPolicy: IfNotPresent        
    backendServers:
      - active: true
        names:
          - 'shadow-order-optimization:5'
        replicaCount: 2
        affinityAndTolerations: ""
        topology: {}
        horizontalPodAutoscaler: ""
        pod:
          podAnnotations: {}
          podLabesl: {}    
        image:
          tag: <release_tag>
          pullPolicy: IfNotPresent       
    defaultresources:
      limits:
        cpu: '1'
        memory: 1536Mi
      requests:
        cpu: 100m
        memory: 1Gi           
  elasticSearchDataProcessor:
    affinityAndTolerations: ""
    topology: {}
    horizontalPodAutoscaler: ""
    pod:
      podAnnotations: {}
      podLabesl: {}   
    backendServers:
      - active: true
        names:
          - 'elastic-search-data-processor:5'
        replicaCount: 2
        affinityAndTolerations: ""
        topology: {}
        horizontalPodAutoscaler: ""
        pod:
          podAnnotations: {}
          podLabesl: {}    
        image:
          tag: <release_tag>
          pullPolicy: IfNotPresent       
    defaultresources:
      limits:
        cpu: '1'
        memory: 1536Mi
      requests:
        cpu: 100m
        memory: 1Gi
    jobs:
      - name: otmz-elastic-search-db-setup-job
        affinityAndTolerations: ""
        horizontalPodAutoscaler: ""
        topology: {} 
        jobBackoffLimit: ""
        pod:
          podAnnotations: {}
          podLabesl: {}      
        logLevel: INFO  
        resources:
          limits:
            cpu: '1'
            memory: 1536Mi
          requests:
            cpu: 250m
            memory: 512Mi        
  errorProcessorService:
    affinityAndTolerations: ""
    topology: {}
    horizontalPodAutoscaler: ""
    pod:
      podAnnotations: {}
      podLabesl: {}   
    backendServers:
      - active: true
        names:
          - 'error-processor:5'
        replicaCount: 2
        affinityAndTolerations: ""
        topology: {}
        horizontalPodAutoscaler: ""
        pod:
          podAnnotations: {}
          podLabesl: {}    
        image:
          tag: <release_tag>
          pullPolicy: IfNotPresent      
    defaultresources:
      limits:
        cpu: '1'
        memory: 1536Mi
      requests:
        cpu: 100m
        memory: 1Gi
  requestOrganizerService:
    affinityAndTolerations: ""
    topology: {}
    horizontalPodAutoscaler: ""
    pod:
      podAnnotations: {}
      podLabesl: {}   
    backendServers:
      - active: true
        names:
          - 'request-organizer:5'
        replicaCount: 2
        affinityAndTolerations: ""
        topology: {}
        horizontalPodAutoscaler: ""
        pod:
          podAnnotations: {}
          podLabesl: {}    
        image:
          tag: <release_tag>
          pullPolicy: IfNotPresent       
    defaultresources:
      limits:
        cpu: '1'
        memory: 1536Mi
      requests:
        cpu: 100m
        memory: 1Gi
  dataCaptureService:
    affinityAndTolerations: ""
    topology: {}
    horizontalPodAutoscaler: ""
    pod:
      podAnnotations: {}
      podLabesl: {}   
    backendServers:
      - active: true
        names:
          - 'data-capture:5'
        replicaCount: 2
        affinityAndTolerations: ""
        topology: {}
        horizontalPodAutoscaler: ""
        pod:
          podAnnotations: {}
          podLabesl: {}    
        image:
          tag: <release_tag>
          pullPolicy: IfNotPresent        
    defaultresources:
      limits:
        cpu: '1'
        memory: 1536Mi
      requests:
        cpu: 100m
        memory: 1Gi
  configurationService:
    affinityAndTolerations: ""
    topology: {}
    horizontalPodAutoscaler: ""
    pod:
      podAnnotations: {}
      podLabesl: {}   
    appServers:
      - active: true
        names:
          - configuration
        replicaCount: 2
        affinityAndTolerations: ""
        topology: {}
        horizontalPodAutoscaler: ""
        pod:
          podAnnotations: {}
          podLabesl: {}   
        image:
          tag: <release_tag>
          pullPolicy: IfNotPresent       
    defaultresources:
      limits:
        cpu: '1'
        memory: 1536Mi
      requests:
        cpu: 100m
        memory: 1Gi