IBM B2BI/SFG and Global Mailbox integrated values.yaml File

You can refer the default values.yaml file to define your own custom values.yaml file for specifying required values and overriding default configurations while installing the Sterling B2B Integrator application using Certified Container.

The following section provides sample values.yaml file:

Sample values.yaml file for integrated IBM B2BI/SFG and Global Mailbox

# (C) Copyright 2019-2021 Syncsort Incorporated. All rights reserved.

# Default values for b2bi.
# This is a YAML-formatted file.
# Declare variables to be passed into your templates.

global:
  image:
    repository: "cp.icr.io/cp/ibm-b2bi/b2bi"
  # Provide the tag value in double quotes
    tag: "6.2.0.0"
  # If digest is specified, it takes precedence over tag
    digest: 
    pullPolicy: IfNotPresent
    pullSecret: ""
  networkPolicies:
    ingress:
      enabled: true
      customPolicies:
      #- name:
      #  fromSelectors:
      #  - namespaceSelector:
      #      matchLabels:
      #        name: my-source-namespace
      #    podSelector:
      #      matchLabels:
      #        app.kubernetes.io/name: my-consumer-pod
      #  - podSelector:
      #      matchLabels:
      #        role: frontend
      #  - ipBlock:
      #      cidr: <IP Address>/<block size>
      #      except:
      #      - <IP Address>/<block size>
      #  ports:
      #   - protocol: TCP
      #     port: 8443
      #     endPort: 8450  
      
    egress:
      enabled: true
      customPolicies:
      #- name:
      #  toSelectors:
      #  - namespaceSelector:
      #      matchLabels:
      #        name: my-source-namespace
      #    podSelector:
      #      matchLabels:
      #        app.kubernetes.io/name: my-consumer-pod
      #  - podSelector:
      #      matchLabels:
      #        role: frontend
      #  - ipBlock:
      #      cidr: <IP Address>/<block size>
      #      except:
      #      - <IP Address>/<block size>
      #  ports:
      #   - protocol: TCP
      #     port: 8443
      #     endPort: 8450

# Specify architecture (amd64, ppc64le, s390x) and weight to be  used for scheduling as follows : 
# #   0 - Do not use
# #   1 - Least preferred
# #   2 - No Preference
# #   3 - Most preferred
arch:
  amd64: "3 - Most preferred"
  ppc64le: "2 - No Preference"
  s390x: "2 - No Preference"

serviceAccount:
  name: default

resourcesInit:
  enabled: false
  image:
    repository:
    name:
    tag:
    digest:
    pullPolicy: "IfNotPresent"
  command:

persistence:
  enabled: true
  useDynamicProvisioning: false

appResourcesPVC:
  enabled: true
  name: resources
  storageClassName: ""
  selector:
    label: "intent"
    value: "resources"
  accessMode: ReadOnlyMany
  size: 100Mi


appLogsPVC:
  name: logs
  storageClassName: ""
  selector:
    label: "intent"
    value: "logs"
  accessMode: ReadWriteMany
  size: 500Mi
  
appDocumentsPVC:
  enabled: false
  name: documents
  storageClassName: ""
  selector:
    label: "intent"
    value: "documents"
  accessMode: ReadWriteMany
  size: 500Mi

extraPVCs: []
  #- name:
  #  storageClassName:
  #  selector:
  #    label:
  #    value:
  #  accessMode:
  #  size:
  #  mountPath:

security:
  supplementalGroups: [65534]
  fsGroup: 
  runAsUser:
  runAsGroup: 

ingress:
  enabled: true
  controller: "nginx"
  annotations: {}
  port:

dataSetup:
  enabled: true
  upgrade: false
  image:
    repository: "cp.icr.io/cp/ibm-b2bi/b2bi-dbsetup"
    # Provide the tag value in double quotes
    tag: "6.2.0.0"
    pullPolicy: IfNotPresent
    pullSecret: ""


env:
  tz: "UTC"
  license: "accept"
  upgradeCompatibilityVerified: false
  debugMode: false
  extraEnvs: []
    #- name: FOO
    #  valueFrom:
    #    secretKeyRef:
    #      name: secret-name
    #      key: FOO
    #- name: BAR
    #  valueFrom:
    #    configMapKeyRef:
    #      name: configmap-name
    #      key: BAR
    #- name: FOOBAR
    #  value: foobar 
  
logs:

  # true if user wish to redirect the application logs to console else false. If provided value is true , then application logs will reside inside containers. No volume mapping will be used.
  enableAppLogOnConsole: true
      
  # In standalone kubernetes environment, if PodSecurityPolicy is enabled and no default PSPs are present then change the value below to true.      
applyPolicyToKubeSystem: false

integrations:
  seasIntegration:
    isEnabled: false
    seasVersion: "1.0"
  documentService:
    readBufferSize: 32768
    enabled: false
    ssl:
      type: two-way
      shouldVerifyHostname: false
      keyStoreType: PKCS12
      keyStoreSecretName:
      trustStoreType: PKCS12 
      trustStoreSecretName:
      protocolVersion: TLSv1.2
    connect: 
      host: 
      port: 


  #setup.cfg configuration starts here. Property names must follow camelCase format.
setupCfg:
  #Upgrade
  #upgrade: false
  basePort: 50000
  #License - specify values as true/false
  licenseAcceptEnableSfg: true
  licenseAcceptEnableEbics: true
  licenseAcceptEnableFinancialServices: true
  licenseAcceptEnableFileOperation: true

  # Name of system passphrase secret if available
  systemPassphraseSecret: b2b-system-passphrase-secret
  #FIPS compliance mode. specify values as true/false 
  enableFipsMode: false
  # NIST 800-131a compliance mode. Please enter one of these values - strict/transition/"off"
  nistComplianceMode: "off"

  # Provide the DB attributes
  dbVendor: DB2
  dbHost: <DB IP>
  dbPort: 50000
  dbData: mydbdata
  dbDrivers: db2jcc4.jar
  dbCreateSchema: true
  oracleUseServiceName: false
  # Values can be either true or false 
  usessl: false
  
  # Name of DB secret
  dbSecret: b2b-db-secret
  
  # Specify DB truststore file name including it's path relative to the mounted resources volume location, if applicable. Required when usessl is true.
  # When dbTruststoreSecret is mentioned, provide the name of the key holding the certificate data.
  dbTruststore:
  
  # Name of the DB truststore secret containing the certificate, if applicable
  dbTruststoreSecret:
  
  # Specify DB keystore file name including it's path relative to the mounted resources volume location, if applicable
  # When dbKeystoreSecret is mentioned, provide the name of the key holding the certificate data.
  dbKeystore:
  
  # Name of the DB keystore secret containing the certificate, if applicable
  dbKeystoreSecret:
    
  #Provide the admin email address
  adminEmailAddress: test@syncsort.com
  # Provide the SMTP host details  
  smtpHost: localhost

  #Provide the soft stop timeout. Only numeric value is accepted.
  softStopTimeout: 30

  #WMQ
  #JMS properties are optional if jmsVendor is empty
  #To use IBMMQ for communication between ASI & AC, change property to jmsVendor: IBMMQ
  # and provide other connection details
  jmsVendor:
  # Provide the name of connection factory class. 
  jmsConnectionFactory:
  jmsConnectionFactoryInstantiator:
  jmsQueueName:
  jmsHost:
  jmsPort:
  jmsConnectionNameList:
  # Applicable for IBMMQ
  jmsChannel:
  jmsEnableSsl:
  
  # Name of JMS secret if available
  jmsSecret:
  
  # Specify JMS keystore file name including it's path relative to the mounted resources volume location, if applicable.
  # When jmsKeystoreSecret is mentioned, provide the name of the key holding the certificate data.
  jmsKeystorePath:
  
  # Name of the JMS keystore secret containing the certificate, if applicable
  jmsKeystoreSecret:
  
  # Specify JMS truststore file name including it's path relative to the mounted resources volume location, if applicable.
  # When jmsTruststoreSecret is mentioned, provide the name of the key holding the certificate data.
  jmsTruststorePath:
  
  # Name of the JMS truststore secret containing the certificate, if applicable
  jmsTruststoreSecret:

  # Applicable for IBMMQ
  jmsCiphersuite:
  # Applicable for IBMMQ
  jmsProtocol: TLSv1.2

  # Liberty Profile SSL Config. Specify Liberty keystore file name including it's path relative to the mounted resources volume location, if applicable.
  # If libertyKeystoreSecret is mentioned, provide the name of the key holding the certificate data. 
  libertyKeystoreLocation:
  
  # Name of Liberty keystore secret containing the certificate, if applicable
  libertyKeystoreSecret:  
  
  libertyProtocol: TLSv1.2
  
  # Name of Liberty secret if available
  libertySecret:

  #jvm options
  libertyJvmOptions:

  #JCE update parameters
  #Set value true to update JCE
  updateJcePolicyFile: false
  #Name of JCE file. This file should be present in mapped folder
  jcePolicyFile:
  
  # Default document storage option. Can be set to one of the below values
  # DB - Database (default)
  # FS - File System
  # OS - Object Store 
  defaultDocumentStorageType: DB 

asi:
  replicaCount: 3
  
  env:
    jvmOptions:
    #Refer to global env.extraEnvs for sample values
    extraEnvs: []
    
  frontendService:
    type: ClusterIP
    ports:
      http: 
        name: http
        port: 31000
        targetPort: http
        nodePort: 31000
        protocol: TCP
      https: 
        name: https
        port: 31001
        targetPort: https
        nodePort: 31001
        protocol: TCP
      soa: 
        name: soa
        port: 31002
        targetPort: soa
        nodePort: 31002
        protocol: TCP
      soassl: 
        name: soassl
        port: 31003
        targetPort: soassl
        nodePort: 31003
        protocol: TCP
      restHttpAdapter: 
        name: rest-adapter
        port: 31007
        targetPort: rest-adapter
        nodePort: 31007
        protocol: TCP
      gmHttpAdapter: 
        name: gm-adapter
        port: 31008
        targetPort: gm-adapter
        nodePort: 31008
        protocol: TCP        
    extraPorts: []
      #-name: http-1
      # port: 46000
      # targetPort: http
      # nodePort: 30100
      # protocol: TCP
    loadBalancerIP:  
    annotations: {}  
  
  backendService:
    type: NodePort
    ports: []
      #- name: adapter-1
      #  port: 30201
      #  targetPort: 30201
      #  nodePort: 30201
      #  protocol: TCP
    portRanges: 
       - name: adapters
         portRange: 31301-31310
         targetPortRange: 31301-31310
         nodePortRange: 31301-31310
         protocol: TCP
    loadBalancerIP:  
    annotations: {}
      
  livenessProbe:
    initialDelaySeconds: 60
    timeoutSeconds: 30
    periodSeconds: 60
    
  readinessProbe:
    initialDelaySeconds: 120
    timeoutSeconds: 5
    periodSeconds: 60
  
  internalAccess:
    enableHttps: true
    httpsPort:     
      
  externalAccess:
    protocol: http
    address: 
    port:
    
  ingress:
    internal:
      host: "asi.apps.openshift.in.dev"
      tls:
        enabled: true
        secretName: ""
      extraPaths: []
      #  - routePrefix: "hello"
      #    path: "/hello"
      #    servicePort: "my-http"
      #    enableHttps: false
    external:
      host:
      tls:
        enabled: true
        secretName: ""
      extraPaths: []
      #  - routePrefix: "hello"
      #    path: "/hello"
      #    servicePort: "my-http"
      #    enableHttps: false
      #    access: "internal"

  extraPVCs: []
    #- name: 
    #  storageClassName:
    #  selector:
    #    label:
    #    value:
    #  accessMode:
    #  size:
    #  mountPath:

  ## Additional init containers, e. g. for providing custom themes
  extraInitContainers: []
    #- name: wait-for-postgresql
    #  image: "{{ .Values.init.image.repository }}:{{ .Values.init.image.tag }}"
    #  imagePullPolicy: {{ .Values.init.image.pullPolicy }}
    #  command:

  resources: 
    # We usually recommend not to specify default resources and to leave this as a conscious
    # choice for the user. This also increases chances charts run on environments with little
    # resources, such as Minikube. If you do want to specify resources, uncomment the following
    # lines, adjust them as necessary, and remove the curly braces after 'resources:'.
    limits:
      cpu: 4000m
      memory: 8Gi
      ephemeral-storage: "4Gi"
    requests:
      cpu: 2000m
      memory: 4Gi
      ephemeral-storage: "2Gi"

  autoscaling:
    enabled: false
    minReplicas: 1
    maxReplicas: 2
    targetCPUUtilizationPercentage: 60

  defaultPodDisruptionBudget:
    enabled: false
    minAvailable: 1
  
  # for pod Affinity and podAntiAffinity
  extraLabels: {}
    #asiLabel: asiValue
  
  nodeAffinity:
    requiredDuringSchedulingIgnoredDuringExecution: []
    preferredDuringSchedulingIgnoredDuringExecution: []
  podAffinity:
    requiredDuringSchedulingIgnoredDuringExecution: []
    preferredDuringSchedulingIgnoredDuringExecution: []
  podAntiAffinity:
    requiredDuringSchedulingIgnoredDuringExecution: []
    preferredDuringSchedulingIgnoredDuringExecution: []
  
  topologySpreadConstraints: []
    #- maxSkew: 1
    #  topologyKey: topology.kubernetes.io/zone
    #  whenUnsatisfiable: DoNotSchedule
    #- maxSkew: 1
    #  topologyKey: kubernetes.io/hostname
    #  whenUnsatisfiable: ScheduleAnyway
    
  # for Taints and Tolerations  
  tolerations: [] 
  #- key: "key1"
  #  operator: "Equal"
  #  value: "value1"
  #  effect: "NoExecute"
  #  tolerationSeconds: 3600
  #- key: "key2"
  #  operator: "Exists"
  #  effect: "NoSchedule"

  #To provide additional secrets inside application. If mountAsVolume is set to true, secret will be mounted as volume under /ibm/resources/<secretName> directory
  #else it will exposed as environment variable
  extraSecrets: []
    #- mountAsVolume: true
    #  secretName: jms-truststore
    #- mountAsVolume: true
    #  secretName: db-truststore

  #To provide additional configmaps inside application. If mountAsVolume is set to true, configmap will be mounted as volume under /ibm/resources/<configMapName> directory
  #else it will exposed as environment variable
  extraConfigMaps: []
    #- mountAsVolume: true
    #  configMapName: my-configmap-1
    #- mountAsVolume: false
    #  configMapName: my-configmap-2
  
  #If myFG is hosted on HTTP Server adapter on ASI server, provide the internal port/protocol details used while configuring that.
  myFgAccess:
    myFgPort:
    myFgProtocol:

  hostAliases: []
  #- ip: "127.0.0.1"
  #  hostnames:
  #  - "foo.local"
  #  - "bar.local"
  #- ip: "10.1.2.3"
  #  hostnames:
  #  - "foo.remote"
  #  - "bar.remote"
  
 #Configure basic tuning parameters for Performance tuning settings.
 #allocateMemToBI  - Allocate memory for BI Listeners, default is false.
 #allocateMemToSAP - Allocate memory for SAP adapters, default is false.
 #allocateMemToCLA - Allocate memory for CLA adapters, default is false.
 #threadsPerCore   - Number of threads per core which usually helps in calculating Desired Global Threads and Distribution Cache Minimum.
 #override         - To override the suggested value by the system.
  performanceTuning:
    allocateMemToBI: false
    allocateMemToSAP: false
    allocateMemToCLA: false
    threadsPerCore: 4
    override: []
      #- NOAPP.INITIAL_CYCLES_7=53
      #- NOAPP.EXEC_CYCLE_7=53
      #- NOAPP.MIN_POOL_SIZE_7=0
      #- NOAPP.MAX_POOL_SIZE_7=13
      #- NOAPP.RESOURCE_ALLOCATION_7=93
  
  networkPolicies:
    ingress:
      customPolicies:
      #- name:
      #  fromSelectors:
      #  - namespaceSelector:
      #      matchLabels:
      #        name: my-source-namespace
      #    podSelector:
      #      matchLabels:
      #        app.kubernetes.io/name: my-consumer-pod
      #  - podSelector:
      #      matchLabels:
      #        role: frontend
      #  - ipBlock:
      #      cidr: <IP Address>/<block size>
      #      except:
      #      - <IP Address>/<block size>
      #  ports:
      #   - protocol: TCP
      #     port: 8443
      #     endPort: 8450       
    egress:
      customPolicies:
      #- name:
      #  toSelectors:
      #  - namespaceSelector:
      #      matchLabels:
      #        name: my-source-namespace
      #    podSelector:
      #      matchLabels:
      #        app.kubernetes.io/name: my-consumer-pod
      #  - podSelector:
      #      matchLabels:
      #        role: frontend
      #  - ipBlock:
      #      cidr: <IP Address>/<block size>
      #      except:
      #      - <IP Address>/<block size>
      #  ports:
      #   - protocol: TCP
      #     port: 8443
      #     endPort: 8450
      
ac:

  replicaCount: 3

  env:
    jvmOptions:
    #Refer to global env.extraEnvs for sample values
    extraEnvs: []
    
  frontendService:
    type: ClusterIP
    ports:
      http: 
        name: http
        port: 31004
        targetPort: http
        nodePort: 31004
        protocol: TCP
    extraPorts: []
      #-name: http-1
      # port: 37000
      # targetPort: http
      # nodePort: 30200
      # protocol: TCP
    loadBalancerIP:  
    annotations: {}  
      
  backendService:
    type: NodePort
    ports: []
      #- name: adapter-1
      #  port: 30401
      #  targetPort: 30401
      #  nodePort: 30401
      #  protocol: TCP
    portRanges: 
       - name: adapters
         portRange: 31501-31510
         targetPortRange: 31501-31510
         nodePortRange: 31501-31510
         protocol: TCP
    loadBalancerIP:  
    annotations: {} 

  livenessProbe:
    initialDelaySeconds: 60
    timeoutSeconds: 5
    periodSeconds: 60
    
  readinessProbe:
    initialDelaySeconds: 120
    timeoutSeconds: 5
    periodSeconds: 60

  ingress:
    internal:
      host: "ac.apps.openshift.in.dev"
      tls:
        enabled: true
        secretName: ""
      extraPaths: []
      #  - routePrefix: "hello"
      #    path: "/hello"
      #    servicePort: "my-http"
      #    enableHttps: false
    external:
      host:
      tls:
        enabled: true
        secretName: ""
      extraPaths: []
      #  - routePrefix: "hello"
      #    path: "/hello"
      #    servicePort: "my-http"
      #    enableHttps: false
      #    access: "internal"
  
  extraPVCs: []
    #- name: 
    #  storageClassName:
    #  selector:
    #    label:
    #    value:
    #  accessMode:
    #  size:
    #  mountPath:
  
  ## Additional init containers, e. g. for providing custom themes
  extraInitContainers: []
    #- name: wait-for-postgresql
    #  image: "{{ .Values.init.image.repository }}:{{ .Values.init.image.tag }}"
    #  imagePullPolicy: {{ .Values.init.image.pullPolicy }}
    #  command:

  resources: 
    # We usually recommend not to specify default resources and to leave this as a conscious
    # choice for the user. This also increases chances charts run on environments with little
    # resources, such as Minikube. If you do want to specify resources, uncomment the following
    # lines, adjust them as necessary, and remove the curly braces after 'resources:'.
    limits:
      cpu: 4000m
      memory: 8Gi
      ephemeral-storage: "4Gi"
    requests:
      cpu: 2000m
      memory: 3Gi
      ephemeral-storage: "2Gi"

  autoscaling:
    enabled: false
    minReplicas: 1
    maxReplicas: 2
    targetCPUUtilizationPercentage: 60

  defaultPodDisruptionBudget:
    enabled: false
    minAvailable: 1
  
  # for pod Affinity and podAntiAffinity
  extraLabels: {}
    #acLabel: acValue
  
  nodeAffinity:
    requiredDuringSchedulingIgnoredDuringExecution: []
    preferredDuringSchedulingIgnoredDuringExecution: []
  podAffinity:
    requiredDuringSchedulingIgnoredDuringExecution: []
    preferredDuringSchedulingIgnoredDuringExecution: []
  podAntiAffinity:
    requiredDuringSchedulingIgnoredDuringExecution: []
    preferredDuringSchedulingIgnoredDuringExecution: []
  
  topologySpreadConstraints: []
    #- maxSkew: 1
    #  topologyKey: topology.kubernetes.io/zone
    #  whenUnsatisfiable: DoNotSchedule
    #- maxSkew: 1
    #  topologyKey: kubernetes.io/hostname
    #  whenUnsatisfiable: ScheduleAnyway
  
  # for Taints and Tolerations  
  tolerations: [] 
  #- key: "key1"
  #  operator: "Equal"
  #  value: "value1"
  #  effect: "NoExecute"
  #  tolerationSeconds: 3600
  #- key: "key2"
  #  operator: "Exists"
  #  effect: "NoSchedule"  

  #To provide additional secrets inside application. If mountAsVolume is set to true, secret will be mounted as volume under /ibm/resources/<secretName> directory
  #else it will exposed as environment variable
  extraSecrets: []
    #- mountAsVolume: true
    #  secretName: jms-truststore
    #- mountAsVolume: true
    #  secretName: db-truststore

  #To provide additional configmaps inside application. If mountAsVolume is set to true, configmap will be mounted as volume under /ibm/resources/<configMapName> directory
  #else it will exposed as environment variable
  extraConfigMaps: []
    #- mountAsVolume: true
    #  configMapName: my-configmap-1
    #- mountAsVolume: false
    #  configMapName: my-configmap-2

  #If myFG is hosted on HTTP Server adapter on AC server, provide the internal port/protocol details used while configuring that.
  myFgAccess:
    myFgPort:
    myFgProtocol:
  
  hostAliases: []
  #- ip: "127.0.0.1"
  #  hostnames:
  #  - "foo.local"
  #  - "bar.local"
  #- ip: "10.1.2.3"
  #  hostnames:
  #  - "foo.remote"
  #  - "bar.remote"
 
 #Configure basic tuning parameters for Performance tuning settings.
  #allocateMemToSAP - Allocate memory for SAP adapters, default is false.
  performanceTuning:
    allocateMemToSAP: false
    
  networkPolicies:
    ingress:
      customPolicies:
      #- name:
      #  fromSelectors:
      #  - namespaceSelector:
      #      matchLabels:
      #        name: my-source-namespace
      #    podSelector:
      #      matchLabels:
      #        app.kubernetes.io/name: my-consumer-pod
      #  - podSelector:
      #      matchLabels:
      #        role: frontend
      #  - ipBlock:
      #      cidr: <IP Address>/<block size>
      #      except:
      #      - <IP Address>/<block size>
      #  ports:
      #   - protocol: TCP
      #     port: 8443
      #     endPort: 8450        
    egress:
      customPolicies:
      #- name:
      #  toSelectors:
      #  - namespaceSelector:
      #      matchLabels:
      #        name: my-source-namespace
      #    podSelector:
      #      matchLabels:
      #        app.kubernetes.io/name: my-consumer-pod
      #  - podSelector:
      #      matchLabels:
      #        role: frontend
      #  - ipBlock:
      #      cidr: <IP Address>/<block size>
      #      except:
      #      - <IP Address>/<block size>
      #  ports:
      #   - protocol: TCP
      #     port: 8443
      #     endPort: 8450
    
api:

  replicaCount: 1

  env:
    jvmOptions:
    #Refer to global env.extraEnvs for sample values
    extraEnvs: []
    
  frontendService:
    type: ClusterIP
    ports:
      http:
        name: http
        port: 31005
        targetPort: http
        nodePort: 31005
        protocol: TCP
      https:
        name: https
        port: 31006
        targetPort: https
        nodePort: 31006
        protocol: TCP
    extraPorts: []
      #-name: http-1
      # port: 35000
      # targetPort: http
      # nodePort: 30300
      # protocol: TCP
    loadBalancerIP:  
    annotations: {}  
  
  livenessProbe:
    initialDelaySeconds: 120
    timeoutSeconds: 5
    periodSeconds: 60
    
  readinessProbe:
    initialDelaySeconds: 120
    timeoutSeconds: 5
    periodSeconds: 60
    
  internalAccess:
    enableHttps: true

  externalAccess:
    protocol: http
    address: 
    port: 

  ingress:
    internal:
      host: "api.apps.gmopenshift.in.dev"
      tls:
        enabled: true
        secretName: ""

  extraPVCs: []
    #- name: 
    #  storageClassName:
    #  selector:
    #    label:
    #    value:
    #  accessMode:
    #  size:
    #  mountPath:

  ## Additional init containers, e. g. for providing custom themes
  extraInitContainers: []
    #- name: wait-for-postgresql
    #  image: "{{ .Values.init.image.repository }}:{{ .Values.init.image.tag }}"
    #  imagePullPolicy: {{ .Values.init.image.pullPolicy }}
    #  command:

  resources: 
    # We usually recommend not to specify default resources and to leave this as a conscious
    # choice for the user. This also increases chances charts run on environments with little
    # resources, such as Minikube. If you do want to specify resources, uncomment the following
    # lines, adjust them as necessary, and remove the curly braces after 'resources:'.
    limits:
      cpu: 4000m
      memory: 4Gi
      ephemeral-storage: "4Gi"
    requests:
      cpu: 2000m
      memory: 2Gi
      ephemeral-storage: "2Gi"

  defaultPodDisruptionBudget:
    enabled: false
    minAvailable: 1
  
  # for pod Affinity and podAntiAffinity
  extraLabels: {}
    #apiLabel: apiValue
  
  nodeAffinity:
    requiredDuringSchedulingIgnoredDuringExecution: []
    preferredDuringSchedulingIgnoredDuringExecution: []
  podAffinity:
    requiredDuringSchedulingIgnoredDuringExecution: []
    preferredDuringSchedulingIgnoredDuringExecution: []
  podAntiAffinity:
    requiredDuringSchedulingIgnoredDuringExecution: []
    preferredDuringSchedulingIgnoredDuringExecution: []
  
  topologySpreadConstraints: []
    #- maxSkew: 1
    #  topologyKey: topology.kubernetes.io/zone
    #  whenUnsatisfiable: DoNotSchedule
    #- maxSkew: 1
    #  topologyKey: kubernetes.io/hostname
    #  whenUnsatisfiable: ScheduleAnyway
    
  # for Taints and Tolerations  
  tolerations: [] 
  #- key: "key1"
  #  operator: "Equal"
  #  value: "value1"
  #  effect: "NoExecute"
  #  tolerationSeconds: 3600
  #- key: "key2"
  #  operator: "Exists"
  #  effect: "NoSchedule"  

  #To provide additional secrets inside application. If mountAsVolume is set to true, secret will be mounted as volume under /ibm/resources/<secretName> directory
  #else it will exposed as environment variables
  extraSecrets: []
    #- mountAsVolume: true
    #  secretName: jms-truststore
    #- mountAsVolume: true
    #  secretName: db-truststore

  #To provide additional configmaps inside application. If mountAsVolume is set to true, configmap will be mounted as volume under /ibm/resources/<configMapName> directory
  #else it will exposed as environment variables
  extraConfigMaps: []
    #- mountAsVolume: true
    #  configMapName: my-configmap-1
    #- mountAsVolume: false
    #  configMapName: my-configmap-2
  
  hostAliases: []
  #- ip: "127.0.0.1"
  #  hostnames:
  #  - "foo.local"
  #  - "bar.local"
  #- ip: "10.1.2.3"
  #  hostnames:
  #  - "foo.remote"
  #  - "bar.remote"
  
  networkPolicies:
    ingress:
      customPolicies:
      #- name:
      #  fromSelectors:
      #  - namespaceSelector:
      #      matchLabels:
      #        name: my-source-namespace
      #    podSelector:
      #      matchLabels:
      #        app.kubernetes.io/name: my-consumer-pod
      #  - podSelector:
      #      matchLabels:
      #        role: frontend
      #  - ipBlock:
      #      cidr: <IP Address>/<block size>
      #      except:
      #      - <IP Address>/<block size>
      #  ports:
      #   - protocol: TCP
      #     port: 8443
      #     endPort: 8450       
    egress:
      customPolicies:
      #- name:
      #  toSelectors:
      #  - namespaceSelector:
      #      matchLabels:
      #        name: my-source-namespace
      #    podSelector:
      #      matchLabels:
      #        app.kubernetes.io/name: my-consumer-pod
      #  - podSelector:
      #      matchLabels:
      #        role: frontend
      #  - ipBlock:
      #      cidr: <IP Address>/<block size>
      #      except:
      #      - <IP Address>/<block size>
      #  ports:
      #   - protocol: TCP
      #     port: 8443
      #     endPort: 8450

nameOverride: ""

fullnameOverride: ""

# Test container
test:
  image:
    repository: 'cp.icr.io/cp'
    name: 'opencontent-common-utils'
    tag: '1.1.4'
    digest: sha256:45fbb199f046eb939ebfaf08fa6fb29da1583ac18f92c97333b3940eb236e005
    pullPolicy: 'IfNotPresent'

purge:
  enabled: false
  image:
    repository: "cp.icr.io/cp/ibm-b2bi/b2bi-purge"
  # Provide the tag value in double quotes
    tag: "6.1.1"
    digest: sha256:b513a8533d6deab9d5cf6e9968c81a873dd947b0e31f514b6967954626e9bd36
    pullPolicy: IfNotPresent
    pullSecret: ""
  # Provide a schedule for the purge job as a cron expression. For example "0 0 * * *" will run the purge job at 00:00 every day
  schedule:
  startingDeadlineSeconds: 60
  activeDeadlineSeconds: 3600
  concurrencyPolicy: Forbid
  suspend: false
  successfulJobsHistoryLimit: 3
  failedJobsHistoryLimit: 1
  env:
    jvmOptions:
    #Refer to global env.extraEnvs for sample values
    extraEnvs: []

  resources: 
    # We usually recommend not to specify default resources and to leave this as a conscious
    # choice for the user. This also increases chances charts run on environments with little
    # resources, such as Minikube. If you do want to specify resources, uncomment the following
    # lines, adjust them as necessary, and remove the curly braces after 'resources:'.
    limits:
      cpu: 500m
      memory: 1Gi
      ephemeral-storage: "1Gi"
    requests:
      cpu: 100m
      memory: 500Mi 
      ephemeral-storage: "500Mi"
  nodeAffinity:
    requiredDuringSchedulingIgnoredDuringExecution: []
    preferredDuringSchedulingIgnoredDuringExecution: []

# globalmailbox values.yaml file

globalMailbox:

  enabled: true
  gmHost: <gm host if ingress is disabled else blank>
  gmPort: <gm port> 
  
  serviceAccounts:
    namespaceAdministration: ibm-gm-sa
    #Cluster service account is needed just for Replication Job to fetch the worker nodes list.  
    clusterAdministration: default-ibm-gm-cluster-sa  
  
  security:
    supplementalGroups: [65534]
    fsGroup: 
    runAsUser:
    runAsGroup:
  
  env:
    license: "accept"
    licLang: "en"
    
  jobs:
  
    #By default Jobs are deleted after successful completion. Setting keepJobs to true will not delete the job once they are completed and can be used to check their console output later.
    keepJobs: false
    #Schema setup job. Run once for the entire application, i.e. just once for all DCs 
    dataSetup:
      #Flag to enable the data setup job. Set it to false, when once DB setup is sucessfully completed.
      enabled: true
      upgrade: false
      version: 6.1.2.0
      image:
        repository: "cp.icr.io/cp/ibm-gm/gm-db-setup"
        # Provide the tag value in double quotes
        tag: "6.2.0.0"
        digest: ""
        pullPolicy: IfNotPresent
        pullSecret: my-secret
  
    #Masterpassphrase setup job. Run once for the entire application, i.e. just once for all DCs 
    masterPassphraseSetup:
      #A flag to enable the MasterPassphrase job.Set it to false when the MasterPassphrase job is sucessfully completed.
      enabled: true
      #Specify master passphrase secret name.
      masterPassphrase: gm-master-passphrase-secret
  
    #Set it to true to run the storage configuration utility when installing a DC. Must be set to false once configured.
    storageSetup:
      enabled: true
      #Specify storage passphrase secret name.
      storagePassphrase: gm-storage-passphrase-secret
    
    #Set it to true to run dcConfigUtility when installing a DC. Must be set to false once configured.
    dcConfigSetup:
      enabled: true
  
    #Set it to true to run dcConfigUtility to configure MQ when installing a DC. Must be set to false unless it is required to change MQ configuration
    mqConfigSetup:
      enabled: true
      
    #Set it to true to run replicationSetup utility when installing a new DC. This leads to creation of NP service per GM replica. 
    #This utility should re-run when any one of below criteria is met.
    #To be on safer side, specify a initialSvcPort which is no where in use by B2B/SFG services.
    #1. Any change in existing worker nodes IP
    #2. Addition/deletion of wokernodes.
    #3. If user needs to change the initialSvcPort
    #4. Any change in replicaCount
    replicationSetup:
      enabled: true
      initialSvcPort: 31880
  
    #Set it to true to run appConfigUtility to register B2Bi application when installing a DC. Must be set to false once configured.
    appRegisterSetup:
      enabled: true
      
  #GM Admin node image details
  image:
      repository: "cp.icr.io/cp/ibm-gm/gm"
      tag: "6.2.0.0"
      digest: ""
      pullPolicy: IfNotPresent
      pullSecret: testmm
  
  replicaCount: 2
    
  logs:
     # set to true if you wish to redirect the application logs to console. If provided value is true , then application logs will reside inside containers. No volume mapping will be used.
    enableAppLogOnConsole: false
  
  config:
    
    internal:
        
       #set to "true" for 1st DC setup and "false" for other DCs. Setting it to false will not execute dataSetup and masterPassphraseSetup jobs on other DCs.
       initialDC: true
       #set the admin password for the first run but if password has been modified later through GM UI, you must update or provide the password secret.
       adminPassword: gm-admin-password-secret
       global:
           replicationType: ASYNCHRONOUS
           ccExternalSystems: false
           ccHeartbeats: false
           ccMbxActivities: false
           ccHeartbeatsMinutes: 5
           ccEventBatchSize: 100
           ccEventMaxPostInterval: 10
           maxAllowedInlineStorageLimit: 10240
           replicationSegmentSize: 100 
           extraProperties: []
              #- com.ibm.mailbox.database.zookeeper.session.timeout=60
  
       dataCenter:
           name: DC1
           extraProperties: []
              #- com.ibm.mailbox.replication.hang.threshold=3000
     
       mailboxUI:
          #Provide semi-colon separated JVM arguments. Example: -Xms2048m;-Xmx4096m
          jvmOptions:
          logConfig:
          tlsProtocol: TLSv1.2
          keyStoreName:
          secrets:
            certificate: 
            credentials:
   
    external:
       mq:
         endpoints: 
           - host: "<Hostname or IP of MQ>"
             port: "1250"
         channelName: SYSTEM.DEF.SVRCONN
         queueManagerName: AUTO179_DC1
         queueName: QUEUE6
         useSSL: false
         keyStoreName:
         trustStoreName:
         secrets:
           certificate:          
           credentials: gm-mq-credentials-secret
          
       cassandra: 
          #comma separated host list
          hostList: "<Comma separated hostnames or IPs of Cassandra>"
          port: 9042
          useSSL: false
          sslProtocol:
          sslCiphers:
          ssltrustAny:
          sslTrustoreType:
          keyStoreName:
          trustStoreName:
          secrets:
            certificate:           
            credentials:  
       zookeeper:
          endPoints: 
            - host: "zookeeper-host1"
              port: "2181"
            - host: "zookeeper-host2"
              port: "2181"
          useSSL: false
          keyStoreName:
          trustStoreName:
          secrets:
            certificate:           
            credentials:
       controlCenter:
          host: <Control Center host>
          port: 58082
          protocol: http
          secret:
             credentials: gm-cc-credentials-secret
  
       #This was required to pass the asi details for REST calls from GM to ASI as sub-chart cannot access the parent chart fields.
       asi:
        restHttpAdapterPort: <port on ASI backend service to access the rest http server adapter>
        gmHttpAdapterPort: <port on ASI backend service to access the gm http server adapter>
         
  #Service to serve the mailbox UI
  frontendService:
    type: ClusterIP
    ports:
      https:
        name: https
        port: 31196
        targetPort: https
        nodePort: 31196
        protocol: TCP
    #Provide a static IP to Loadbalancer. Set it when service.type is Loadbalancer
    loadBalancerIP:  
    #Extra annotations of Loadbalancer. Helpful in cloud deployments to specify characteristic of a LB like a private vs public LB 
    annotations: {}  
  
  livenessProbe:
    initialDelaySeconds: 60
    timeoutSeconds: 5
    periodSeconds: 60
    
  readinessProbe:
    initialDelaySeconds: 30
    timeoutSeconds: 5
    periodSeconds: 10
  
  ingress:
    #Setting it to true, creates the routes on OCP and ingress on non-OCP kubernetes cluster over HTTPS
    enabled: true
    controller: "nginx"
    annotations: {}
    host: "gm.apps.openshift.in.dev"
    tls:
     secretName: ""
  
  #PVC for application logs
  appLogsPVC:
    name: logs
    storageClassName: "thin"
    useDynamicProvisioning: false
    selector:
      label: "intent"
      value: "gm-logs"
    accessMode: ReadWriteMany
    size: 500Mi
  
  #PVC for payload
  appDocumentsPVC:
    enabled: true
    name: documents
    useDynamicProvisioning: false
    storageClassName: "thin"
    selector:
      label: "intent"
      value: "gm-documents"
    accessMode: ReadWriteMany
    size: 500Mi
  
  stagingPVC:
    enabled: true
    name: staging
    useDynamicProvisioning: false
    storageClassName: "thin"
    selector:
      label: "intent"
      value: "gm-staging"
    accessMode: ReadWriteMany
    size: 500Mi
  
  resources:
    # We usually recommend not to specify default resources and to leave this as a conscious
    # choice for the user. This also increases chances charts run on environments with little
    # resources, such as Minikube. If you do want to specify resources, uncomment the following
    # lines, adjust them as necessary, and remove the curly braces after 'resources:'.
    limits:
      cpu: 4000m
      memory: 2Gi
      ephemeral-storage: 1000Mi
    requests:
      cpu: 2000m
      memory: 1Gi
      ephemeral-storage: 100Mi
  
  defaultPodDisruptionBudget:
    enabled: false
    minAvailable: 1
  
  #Specify extra lables on mailboxui pod for pod Affinity and podAntiAffinity.
  extraLabels: {}
    #newLabel: newValue
   
  nodeAffinity:
    requiredDuringSchedulingIgnoredDuringExecution: []
    preferredDuringSchedulingIgnoredDuringExecution: []
  podAffinity:
    requiredDuringSchedulingIgnoredDuringExecution: []
    preferredDuringSchedulingIgnoredDuringExecution: []
  podAntiAffinity:
    requiredDuringSchedulingIgnoredDuringExecution: []
    preferredDuringSchedulingIgnoredDuringExecution: []
  
  topologySpreadConstraints: []
    #- maxSkew: 1
    #  topologyKey: topology.kubernetes.io/zone
    #  whenUnsatisfiable: DoNotSchedule
    #- maxSkew: 1
    #  topologyKey: kubernetes.io/hostname
    #  whenUnsatisfiable: ScheduleAnyway
  
  # for Taints and Tolerations  
  tolerations: [] 
  #- key: "key1"
  #  operator: "Equal"
  #  value: "value1"
  #  effect: "NoExecute"
  #  tolerationSeconds: 3600
  #- key: "key2"
  #  operator: "Exists"
  #  effect: "NoSchedule"
  
  networkPolicies:
    ingress:
      enabled: true
      customPolicies:
      #- name:
      #  fromSelectors:
      #  - namespaceSelector:
      #      matchLabels:
      #        name: my-source-namespace
      #    podSelector:
      #      matchLabels:
      #        app.kubernetes.io/name: my-consumer-pod
      #  - podSelector:
      #      matchLabels:
      #        role: frontend
      #  - ipBlock:
      #      cidr: <IP Address>/<block size>
      #      except:
      #      - <IP Address>/<block size>
      #  ports:
      #   - protocol: TCP
      #     port: 8443
      #     endPort: 8450       
    egress:
      enabled: true
      customPolicies:
      #- name:
      #  toSelectors:
      #  - namespaceSelector:
      #      matchLabels:
      #        name: my-source-namespace
      #    podSelector:
      #      matchLabels:
      #        app.kubernetes.io/name: my-consumer-pod
      #  - podSelector:
      #      matchLabels:
      #        role: frontend
      #  - ipBlock:
      #      cidr: <IP Address>/<block size>
      #      except:
      #      - <IP Address>/<block size>
      #  ports:
      #   - protocol: TCP
      #     port: 8443
      #     endPort: 8450
  
  # Test container
  test:
    image:
      repository: 'cp.icr.io/cp'
      name: 'opencontent-common-utils'
      tag: '1.1.4'
      pullPolicy: 'IfNotPresent'
      digest: sha256:45fbb199f046eb939ebfaf08fa6fb29da1583ac18f92c97333b3940eb236e005