pega-helm-charts icon indicating copy to clipboard operation
pega-helm-charts copied to clipboard

Pega helm chart v2.2.0 is NOT WORKING on GKE

Open alemax22 opened this issue 2 years ago • 8 comments

Describe the bug Pega helm chart v2.2.0 is not working on GKE. The all the pods start well and once Pega is up and running, Pega shuts down... This process repeats indefinitely without reaching a stable state... To make it work I needed to rollback my charts to the v2.1.1.

To Reproduce In a GKE deployment run the following command helm install pega/pega --namespace= --values=

Expected behavior Clean cluster initialization with Pods reaching a "stable" state

Chart version v2.2.0 with no customizations

Server (if applicable, please complete the following information):

  • Environment: Google Cloud - GKE
  • Database: Google Cloud Managed PostgreSQL 12

Additional context

alemax22 avatar Jun 18 '22 13:06 alemax22

Hi @alemax22, can you please share the values.yaml file used for deployment

smootherbug avatar Jul 04 '22 05:07 smootherbug

Yes, sure. I have removed the confidential data

---
global:
  # This values.yaml file is an example.  For more information about
  # each configuration option, see the project readme.
  custom: &custom
    volumes:
    - name: pega-shared-storage
      persistentVolumeClaim:
        claimName: shared-claim
    volumeMounts:
    - name: pega-shared-storage
      mountPath: /shared
    prlog4j2: |-
      <?xml version="1.0" encoding="UTF-8"?>
      <Configuration status="warn">
      <Appenders>
          <Console name="CONSOLE" target="SYSTEM_OUT">
              <LogStashJSONLayoutPega/>
          </Console>
          <RollingRandomAccessFile  name="PEGA" fileName="/shared/logs/${env:HOSTNAME}/PegaRULES.log" filePattern="/shared/logs/${env:HOSTNAME}/PegaRULES-%d{MM-dd-yyyy}-%i.log.gz">
              <PatternLayout>
                  <Pattern>%d [%20.20t] [%10.10X{pegathread}] [%20.20X{tenantid}] [%20.20X{app}] (%30.30c{3}) %-5p %X{stack} %X{RequestorId} %X{userid} - %m%n</Pattern>
              </PatternLayout>
              <Filters>
                  <!--Deny message logged under ALERT log level-->
                  <ThresholdFilter level="ALERT" onMatch="DENY" onMismatch="NEUTRAL"/>
              </Filters>
              <Policies>
                  <TimeBasedTriggeringPolicy />
                  <SizeBasedTriggeringPolicy size="250 MB"/>
              </Policies>
              <DefaultRolloverStrategy max="20"/>
          </RollingRandomAccessFile>
          <!-- RollingFile Appender for pegarules PERFORMANCE Alert logs -->
          <RollingRandomAccessFile  name="ALERT" fileName="/shared/logs/${env:HOSTNAME}/PegaRULES-ALERT.log" filePattern="/shared/logs/${env:HOSTNAME}/PegaRULES-ALERT-%d{MM-dd-yyyy}-%i.log.gz">
              <PatternLayout>
                  <Pattern>%m%n</Pattern>
              </PatternLayout>
              <ThreadContextMapFilter onMatch="DENY" onMismatch="NEUTRAL" operator="or">
                  <KeyValuePair key="alertType" value="security"/>
              </ThreadContextMapFilter>
              <Policies>
                  <TimeBasedTriggeringPolicy />
                  <SizeBasedTriggeringPolicy size="250 MB"/>
              </Policies>
          </RollingRandomAccessFile>
          <!-- RollingFile Appender for PegaRULES-ALERTSECURITY logs -->
          <RollingRandomAccessFile name="ALERTSECURITY" fileName="/shared/logs/${env:HOSTNAME}/PegaRULES-ALERTSECURITY.log" filePattern="/shared/logs/${env:HOSTNAME}/PegaRULES-ALERTSECURITY-%d{MM-dd-yyyy}-%i.log.gz">
              <PatternLayout>
                  <Pattern>%m%n</Pattern>
              </PatternLayout>
              <ThreadContextMapFilter onMatch="ACCEPT" onMismatch="DENY" operator="or">
                  <KeyValuePair key="alertType" value="security"/>
              </ThreadContextMapFilter>
              <Policies>
                  <TimeBasedTriggeringPolicy />
                  <SizeBasedTriggeringPolicy size="250 MB"/>
              </Policies>
          </RollingRandomAccessFile>
          <!-- RollingFile Appender for PegaBIX logs -->
          <RollingRandomAccessFile  name="BIX" fileName="/shared/logs/${env:HOSTNAME}/PegaBIX.log" filePattern="/shared/logs/${env:HOSTNAME}/PegaBIX-%d{MM-dd-yyyy}-%i.log.gz">
              <PatternLayout>
                  <Pattern>%d [%20.20t] [%20.20X{tenantid}] [%20.20X{app}] (%30.30c{3}) %-5p %X{stack} %X{userid} - %m%n</Pattern>
              </PatternLayout>
              <Policies>
                  <TimeBasedTriggeringPolicy />
                  <SizeBasedTriggeringPolicy size="250 MB"/>
              </Policies>
          </RollingRandomAccessFile>
          <!-- RollingFile Appender for PegaRULES-SecurityEvent logs -->
          <RollingRandomAccessFile  name="SECURITYEVENT" fileName="/shared/logs/${env:HOSTNAME}/PegaRULES-SecurityEvent.log" filePattern="/shared/logs/${env:HOSTNAME}/PegaRULES-SecurityEvent-%d{MM-dd-yyyy}-%i.log.gz">
              <PatternLayout>
                  <Pattern>%m%n</Pattern>
              </PatternLayout>
              <Policies>
                  <TimeBasedTriggeringPolicy />
                  <SizeBasedTriggeringPolicy size="250 MB"/>
              </Policies>
          </RollingRandomAccessFile>
          <!-- RollingFile Appender for PegaCLUSTER logs -->
          <RollingRandomAccessFile  name="CLUSTER" fileName="/shared/logs/${env:HOSTNAME}/PegaCLUSTER.log" filePattern="/shared/logs/${env:HOSTNAME}/PegaCLUSTER-%d{MM-dd-yyyy}-%i.log.gz">
              <PatternLayout>
                  <Pattern>%d [%20.20t] [%20.20X{tenantid}] [%20.20X{app}] (%30.30c{3}) %-5p %X{stack} %X{RequestorId} %X{userid} - %m%n</Pattern>
              </PatternLayout>
              <Policies>
                  <TimeBasedTriggeringPolicy />
                  <SizeBasedTriggeringPolicy size="50 MB"/>
              </Policies>
          </RollingRandomAccessFile>
      
          <!-- RollingFile Appender for PegaDATAFLOW logs -->
          <RollingRandomAccessFile  name="DATAFLOW" fileName="/shared/logs/${env:HOSTNAME}/PegaDATAFLOW.log" filePattern="/shared/logs/${env:HOSTNAME}/PegaDATAFLOW-%d{MM-dd-yyyy}-%i.log.gz">
              <PatternLayout>
                  <Pattern>%d (%30.30c{3}) %-5p - %m%n</Pattern>
              </PatternLayout>
              <Policies>
                  <TimeBasedTriggeringPolicy />
                  <SizeBasedTriggeringPolicy size="50 MB"/>
              </Policies>
          </RollingRandomAccessFile>
      
          <!-- RollingFile Appender for PegaMOBILE logs -->
          <RollingRandomAccessFile name="MOBILE" fileName="/shared/logs/${env:HOSTNAME}/PegaMOBILE.log" filePattern="/shared/logs/${env:HOSTNAME}/PegaMOBILE-%d{MM-dd-yyyy}-%i.log.gz">
              <PatternLayout>
                  <Pattern>%m%n</Pattern>
              </PatternLayout>
              <Policies>
                  <TimeBasedTriggeringPolicy />
                  <SizeBasedTriggeringPolicy size="250 MB"/>
              </Policies>
          </RollingRandomAccessFile>
      
          <!-- RollingFile Appender for PegaMOBILEBUILD logs -->
          <RollingRandomAccessFile name="MOBILEBUILD" fileName="/shared/logs/${env:HOSTNAME}/PegaMOBILEBUILD.log" filePattern="/shared/logs/${env:HOSTNAME}/PegaMOBILEBUILD-%d{MM-dd-yyyy}-%i.log.gz">
              <PatternLayout>
                  <Pattern>%m%n</Pattern>
              </PatternLayout>
              <Policies>
                  <TimeBasedTriggeringPolicy />
                  <SizeBasedTriggeringPolicy size="250 MB"/>
              </Policies>
          </RollingRandomAccessFile>
      
          <!-- RollingFile Appender for USAGEMETRICS logs -->
          <!-- Added for Usage Metrics -->
          <RollingRandomAccessFile  name="USAGEMETRICS" fileName="/shared/logs/${env:HOSTNAME}/PegaUSAGE.json.log" filePattern="/shared/logs/${env:HOSTNAME}/PegaUSAGE-%d{MM-dd-yyyy}-%i.log.gz">
              <PatternLayout>
                  <Pattern>%m%n</Pattern>
              </PatternLayout>
              <Policies>
                  <TimeBasedTriggeringPolicy />
                  <SizeBasedTriggeringPolicy size="250 MB"/>
              </Policies>
              <DefaultRolloverStrategy max="1"/>
          </RollingRandomAccessFile>
      </Appenders>
      <Loggers>
          <asyncRoot>
              <AppenderRef ref="CONSOLE"/>
              <AppenderRef ref="PEGA"/>
              <AppenderRef ref="JSONAppender" />
              <AppenderRef ref="ALERT" level="ALERT"/>
              <AppenderRef ref="ALERTSECURITY" level="ALERT"/>
          </asyncRoot>
          <Logger name="com.pega.pegarules.session.internal.mgmt.SecurityEventLogger" additivity="false" level="info">
              <AppenderRef ref="SECURITYEVENT"/>
          </Logger>
          <Logger name="com.pega.pegarules.data.internal.access.ExtractImpl" additivity="false" level="info">
              <AppenderRef ref="BIX"/>
          </Logger>
          <Logger name="com.pega.pegarules.data.internal.access.ExtractParameters" additivity="false" level="info">
              <AppenderRef ref="BIX"/>
          </Logger>
          <Logger name="com.pega.pegarules.data.internal.access.DatabaseUtilsCommonImpl" additivity="false" level="info">
              <AppenderRef ref="BIX"/>
          </Logger>
          <Logger name="com.hazelcast" additivity="false" level="info">
              <AppenderRef ref="CLUSTER"/>
          </Logger>
          <Logger name="com.pega.hazelcast" additivity="false" level="info">
              <AppenderRef ref="CLUSTER"/>
          </Logger>
          <Logger name="org.apache.ignite" additivity="false" level="info">
              <AppenderRef ref="CLUSTER"/>
          </Logger>
          <Logger name="com.pega.MobileLogger" additivity="false" level="info">
              <AppenderRef ref="MOBILE"/>
          </Logger>
          <Logger name="com.pega.MobileBuildLogger" additivity="false" level="info">
              <AppenderRef ref="MOBILEBUILD"/>
          </Logger>
          <Logger name="com.pega.dsm.dnode.impl.dataflow.service.DataFlowDiagnosticsFileLogger" additivity="false" level="info">
              <AppenderRef ref="DATAFLOW"/>
          </Logger>
          <!-- Added for Usage Metrics -->
          <AsyncLogger name="com.pega.pegarules.session.internal.usagemetrics" additivity="false" level="USAGE">
              <AppenderRef ref="USAGEMETRICS"/>
          </AsyncLogger>
      </Loggers>
      </Configuration>
    contextXML: |-
        <?xml version='1.0' encoding='utf-8'?>
            <Context>
              <WatchedResource>WEB-INF/web.xml</WatchedResource>
              <Manager pathname="" />
                <Resource name="jdbc/PegaRULES"
                auth="Container"
                type="javax.sql.DataSource"
                driverClassName="{{ .Env.JDBC_CLASS }}"
                url="{{ .Env.JDBC_URL }}"
                username="{{ .Env.SECRET_DB_USERNAME }}"
                password="{{ .Env.SECRET_DB_PASSWORD }}"
                maxTotal="{{ .Env.JDBC_MAX_ACTIVE }}"
                minIdle="{{ .Env.JDBC_MIN_IDLE }}"
                maxIdle="{{ .Env.JDBC_MAX_IDLE }}"
                maxWaitMillis="{{ .Env.JDBC_MAX_WAIT }}"
                initialSize="{{ .Env.JDBC_INITIAL_SIZE }}"
                connectionProperties="{{ .Env.JDBC_CONNECTION_PROPERTIES }}"
                timeBetweenEvictionRunsMillis="30000"
                minEvictableIdleTimeMillis="60000"
                />
                <Resource name="jdbc/db2DataSource"
                auth="Container"
                type="javax.sql.DataSource"
                driverClassName="com.ibm.db2.jcc.DB2Driver"
                url="jdbc:db2://databasehostURL"
                username="Username"
                password="Password"
                maxTotal="100"
                maxIdle="30"
                maxWaitMillis="10000"
                />
                <Environment name="prconfig/database/databases/PegaInternalDB2/dataSourceAdmin" value="java:comp/env/jdbc/db2DataSource" type="java.lang.String"/>
                <Environment name="prconfig/database/databases/PegaInternalDB2/defaultSchema" value="SchemaName" type="java.lang.String"/>
              {{ if and .Env.DB_RW_USERNAME .Env.JDBC_RW_URL }}
                <Resource name="jdbc/PegaRULESLongRW"
                auth="Container"
                type="javax.sql.DataSource"
                driverClassName="{{ .Env.JDBC_CLASS }}"
                url="{{ .Env.JDBC_RW_URL }}"
                username="{{ .Env.DB_RW_USERNAME }}"
                password=""
                maxTotal="{{ .Env.JDBC_MAX_ACTIVE }}"
                minIdle="{{ default .Env.JDBC_RO_MIN_IDLE .Env.JDBC_MIN_IDLE }}"
                maxIdle="{{ .Env.JDBC_MAX_IDLE }}"
                maxWaitMillis="{{ .Env.JDBC_MAX_WAIT }}"
                initialSize="{{ default .Env.JDBC_RO_INITIAL_SIZE .Env.JDBC_INITIAL_SIZE }}"
                connectionProperties="socketTimeout=1200;statement_timeout=1200500;idle_in_transaction_session_timeout=1200500;"
                timeBetweenEvictionRunsMillis="30000"
                minEvictableIdleTimeMillis="60000"
                />
              {{ end }}
              {{ if and .Env.JDBC_RO_URL .Env.DB_RO_USERNAME .Env.DB_RO_PASSWORD }}
                <Resource name="jdbc/PegaRULESReadOnly"
                auth="Container"
                type="javax.sql.DataSource"
                driverClassName="{{ .Env.JDBC_CLASS }}"
                url="{{ .Env.JDBC_RO_URL }}"
                username="{{ .Env.DB_RO_USERNAME }}"
                password="{{ .Env.DB_RO_PASSWORD }}"
                maxTotal="{{ .Env.JDBC_MAX_ACTIVE }}"
                minIdle="{{ default .Env.JDBC_RO_MIN_IDLE .Env.JDBC_MIN_IDLE }}"
                maxIdle="{{ .Env.JDBC_MAX_IDLE }}"
                maxWaitMillis="{{ .Env.JDBC_MAX_WAIT }}"
                initialSize="{{ default .Env.JDBC_RO_INITIAL_SIZE .Env.JDBC_INITIAL_SIZE }}"
                connectionProperties="{{ .Env.JDBC_CONNECTION_PROPERTIES }}"
                timeBetweenEvictionRunsMillis="30000"
                minEvictableIdleTimeMillis="60000"
                />
              <Environment name="prconfig/database/databases/PegaRULES/dataSourceReadOnly" value="java:comp/env/jdbc/PegaRULESReadOnly" type="java.lang.String" />
              <Environment name="prconfig/database/databases/PegaDATA/dataSourceReadOnly" value="java:comp/env/jdbc/PegaRULESReadOnly" type="java.lang.String" />
              {{ if .Env.CUSTOMERDATA_SCHEMA }}
              <Environment name="prconfig/database/databases/CustomerData/dataSourceReadOnly" value="java:comp/env/jdbc/PegaRULESReadOnly" type="java.lang.String" />
              {{ end }}
              {{ end }}
              <Environment name="url/initialization/explicittempdir" value="path" type="java.lang.String"/>
              <Environment name="prconfig/database/databases/PegaRULES/defaultSchema" value="{{ .Env.RULES_SCHEMA }}" type="java.lang.String" />
              <Environment name="prconfig/database/databases/PegaDATA/defaultSchema"  value="{{ .Env.DATA_SCHEMA }}"  type="java.lang.String" />
              {{ if .Env.CUSTOMERDATA_SCHEMA }}
              <Environment name="prconfig/database/databases/CustomerData/defaultSchema" value="{{ .Env.CUSTOMERDATA_SCHEMA }}" type="java.lang.String" />
              {{ else }}
              <Environment name="prconfig/database/databases/CustomerData/defaultSchema" value="{{ .Env.DATA_SCHEMA }}" type="java.lang.String" />
              {{ end }}
              {{ if .Env.REQUESTOR_PASSIVATION_TIMEOUT }}
              <Environment name="prconfig/timeout/browser" value="{{ .Env.REQUESTOR_PASSIVATION_TIMEOUT }}" type="java.lang.String" />
              {{ end }}
              {{ if .Env.CONTEXT_XML_SNIPPET }}
              {{ .Env.CONTEXT_XML_SNIPPET }}
              {{ end }}
            </Context>
    prconfig: |- 
        <?xml version="1.0" encoding="UTF-8"?>
            <pegarules>
                    <!-- This is a minimum format prconfig.xml file.  Only the settings which are required to access settings in the database are included.
                    All other settings which were formerly located only in this file are now Data-Admin-System-Settings.      -->
                    <env name="initialization/settingsource" value="merged" />
                    <env name="database/databases/PegaRULES/dataSource" value="java:comp/env/jdbc/PegaRULES"/>
                    <env name="database/databases/PegaDATA/dataSource" value="java:comp/env/jdbc/PegaRULES"/>
                    <env name="database/databases/PegaInternalDB2/dataSource" value="java:comp/env/jdbc/db2DataSource"/>
                    <env name="security/urlaccesslog" value="NORMAL" />
                    <env name="security/urlaccessmode" value="WARN" />
                    <!-- Most nodes have a 'default' classification and for these nodes, no additional changes need to be made to this file.  However,
                    if this is node has a non-general purpose, for example: 'Agent', then the node classification setting should be added to this file. -->
                    <!--env name="initialization/nodeclassification" value="Agent" /  -->
                    <!-- Settings can still be put in this file.  If they are, then the value in this file will override the value in the database
                    for this node.  This is useful for settings which are specific to this node and should not be shared by multiple nodes on this
                    system. -->
                    <!-- Flag to notify that hazelcast version 4 is enabled -->
                    <env name="cluster/hazelcast/v4/enabled" value="true" type="java.lang.String"/>
                    <env name="services/stream/name/pattern" value="pegadev01-{stream.name}"/>
            </pegarules>
        
  # Enter your Kubernetes provider.
  provider: "gke"

  deployment:
    # The name specified will be used to prefix all of the Pega pods (replacing "pega" with something like "app1-dev").
    name: "pega"

  # Deploy Pega nodes
  actions:
    execute: "deploy"

  # Provide JDBC connection information to the Pega relational database
  #   If you are installing or upgrading on IBM DB2, update the udb.conf file in the /charts/pega/charts/installer/config/udb directory with any additional connection properties.
  jdbc:
    #   url Valid values are:
    #
    #   Oracle              jdbc:oracle:thin:@//localhost:1521/dbName
    #   IBM DB/2 z / OS     jdbc:db2://localhost:50000/dbName
    #   IBM DB/2            jdbc:db2://localhost:50000/dbName:fullyMaterializeLobData=true;fullyMaterializeInputStreams=true;
    #                       progressiveStreaming=2;useJDBC4ColumnNameAndLabelSemantics=2;
    #   SQL Server          jdbc:sqlserver://localhost:1433;databaseName=dbName;selectMethod=cursor;sendStringParametersAsUnicode=false
    #   PostgreSQL          jdbc:postgresql://localhost:5432/dbName
    url: "jdbc:postgresql://10.150.15.3:5432/pegadev01"
    #   driverClass     -- jdbc class.  Valid values are:
    #
    #   Oracle              oracle.jdbc.OracleDriver
    #   IBM DB/2            com.ibm.db2.jcc.DB2Driver
    #   SQL Server          com.microsoft.sqlserver.jdbc.SQLServerDriver
    #   PostgreSQL          org.postgresql.Driver
    driverClass: "org.postgresql.Driver"
    #   pega.database.type  Valid values are: mssql, oracledate, udb, db2zos, postgres
    dbType: "postgres"
    #   For databases that use multiple JDBC driver files (such as DB2), specify comma separated values for 'driverUri'
    driverUri: "https://jdbc.postgresql.org/download/postgresql-42.2.23.jar, https://download.oracle.com/otn-pub/otn_software/jdbc/215/ojdbc11.jar, https://repo1.maven.org/maven2/com/ibm/mq/com.ibm.mq.allclient/9.1.0.0/com.ibm.mq.allclient-9.1.0.0.jar"
    username: "UsernamePostgres"
    password: "PasswordDatabasePostgres"
    # CUSTOM CONNECTION PROPERTIES
    # Add a list of ; delimited connections properties. The list must end with ;
    # For example: connectionProperties=user=usr;password=pwd;
    connectionProperties: ""
    rulesSchema: "pegarules871"
    dataSchema: "pegadata"
    customerDataSchema: "customerdata"

  # If using a custom Docker registry, supply the credentials here to pull Docker images.
  docker:
    registry:
      url: "repository.host.name/pocpega/pocpega/"
      #username: "YOUR_DOCKER_REGISTRY_USERNAME"
      #password: "YOUR_DOCKER_REGISTRY_PASSWORD"
      # Docker image information for the Pega docker image, containing the application server.
    pega:
      image: "repository.host.name/pocpega/pocpega/my-pega:8.7.1"
  utilityImages:
    busybox:
      image: busybox:1.31.0
      imagePullPolicy: IfNotPresent
    k8s_wait_for:
      image: dcasavant/k8s-wait-for
      imagePullPolicy: "IfNotPresent"                                                 

  # Upgrade specific properties
  upgrade:
    # Configure only for aks/pks
    # Run "kubectl cluster-info" command to get the service host and https service port of kubernetes api server.
    # Example - Kubernetes master is running at https://<service_host>:<https_service_port>
    kube-apiserver:
      serviceHost: "API_SERVICE_ADDRESS"
      httpsServicePort: "SERVICE_PORT_HTTPS"

  # Specify the Pega tiers to deploy
  tier:
    - name: "web"
      # Create a an interactive tier for web users.  This tier uses
      # the WebUser node type and will be exposed via a service to
      # the load balancer.
      nodeType: "WebUser"

      custom: *custom

      # Pega requestor specific properties
      requestor:
        # Inactivity time after which requestor is passivated
        passivationTimeSec: 900

      service:
        # For help configuring the service block, see the Helm chart documentation
        # https://github.com/pegasystems/pega-helm-charts/blob/master/charts/pega/README.md#service
        port: 80
        targetPort: 8080

      ingress:
        # For help configuring the ingress block including TLS, see the Helm chart documentation
        # https://github.com/pegasystems/pega-helm-charts/blob/master/charts/pega/README.md#ingress

        # Enter the domain name to access web nodes via a load balancer.
        #  e.g. web.mypega.example.com
        domain: "pegadev01.mydomani.com"
        tls:
          # Enable TLS encryption
          enabled: true
          # secretName:
          useManagedCertificate: false
          ssl_annotation:
            ingress.gcp.kubernetes.io/pre-shared-cert: pegadev01-ssl-ingress
            kubernetes.io/ingress.global-static-ip-name: pegadev01-web
        annotations:
          kubernetes.io/ingress.class: "gce-internal"


      replicas: 1
      javaOpts: ""
      pegaDiagnosticUser: ""
      pegaDiagnosticPassword: ""

      deploymentStrategy:
        rollingUpdate:
          maxSurge: 1
          maxUnavailable: 0
        type: RollingUpdate

      livenessProbe:
        port: 8081

      # Optionally overridde default resource specifications
      # cpuRequest: 2
      # memRequest: "12Gi"
      # cpuLimit: 4
      # memLimit: "12Gi"
      # initialHeap: "4096m"
      # maxHeap: "8192m"

      # To configure an alternative user for custom image, set value for runAsUser.
      # See, https://github.com/pegasystems/pega-helm-charts/blob/master/charts/pega/README.md#security-context
      # securityContext:
      #   runAsUser: 9001

      hpa:
        enabled: true
        minReplicas: 1
        maxReplicas: 4

      # Set enabled to true to include a Pod Disruption Budget for this tier.
      # To enable this budget, specifiy either a pdb.minAvailable or pdb.maxUnavailable
      # value and comment out the other parameter.
      pdb:
        enabled: false
        minAvailable: 1
        # maxUnavailable: "50%"

    - name: "batch"
      # Create a background tier for batch processing.  This tier uses
      # a collection of background node types and will not be exposed to
      # the load balancer.
      nodeType: "BackgroundProcessing,Search,Batch,RealTime,Custom1,Custom2,Custom3,Custom4,Custom5,BIX"

      custom: *custom
      
      replicas: 1
      javaOpts: ""

      pegaDiagnosticUser: ""
      pegaDiagnosticPassword: ""

      deploymentStrategy:
        rollingUpdate:
          maxSurge: 1
          maxUnavailable: 0
        type: RollingUpdate

      livenessProbe:
        port: 8081

      # To configure an alternative user for your custom image, set value for runAsUser
      # See, https://github.com/pegasystems/pega-helm-charts/blob/master/charts/pega/README.md#security-context
      # securityContext:
      #   runAsUser: 9001

      hpa:
        enabled: true
        minReplicas: 1
        maxReplicas: 3

      # Set enabled to true to include a Pod Disruption Budget for this tier.
      # To enable this budget, specifiy either a pdb.minAvailable or pdb.maxUnavailable
      # value and comment out the other parameter.
      pdb:
        enabled: false
        minAvailable: 1
        # maxUnavailable: "50%"

    - name: "stream"
      # Create a stream tier for queue processing.  This tier deploys
      # as a stateful set to ensure durability of queued data. It may
      # be optionally exposed to the load balancer.
      nodeType: "Stream"

      custom: *custom
      
      # Pega requestor specific properties
      requestor:
        # Inactivity time after which requestor is passivated
        passivationTimeSec: 900

      service:
        port: 7003
        targetPort: 7003

      # If a nodeSelector is required for this or any tier, it may be specified here:
      # nodeSelector:
      #  disktype: ssd

      ingress:
        # Enter the domain name to access web nodes via a load balancer.
        #  e.g. web.mypega.example.com
        domain: "streamdev01.mydomani.com"
        tls:
          # Enable TLS encryption
          enabled: true
          # secretName:
          useManagedCertificate: false
          ssl_annotation:
            ingress.gcp.kubernetes.io/pre-shared-cert: streamdev01-ssl-ingress
            kubernetes.io/ingress.global-static-ip-name: streamdev01-stream
        annotations:
          kubernetes.io/ingress.class: "gce-internal"


      livenessProbe:
        port: 8081

      # To configure an alternative user for your custom image, set value for runAsUser
      # See, https://github.com/pegasystems/pega-helm-charts/blob/master/charts/pega/README.md#security-context
      # securityContext:
      #   runAsUser: 9001

      replicas: 2

      volumeClaimTemplate:
        resources:
          requests:
            storage: 30Gi

      # Set enabled to true to include a Pod Disruption Budget for this tier.
      # To enable this budget, specifiy either a pdb.minAvailable or pdb.maxUnavailable
      # value and comment out the other parameter.
      pdb:
        enabled: false
        minAvailable: 1
        # maxUnavailable: "50%"

# External services

# Cassandra automatic deployment settings.
cassandra:
  enabled: false
  persistence:
    enabled: true
  resources:
    requests:
      memory: "4Gi"
      cpu: 2
    limits:
      memory: "8Gi"
      cpu: 4

# DDS (external Cassandra) connection settings.
# These settings should only be modified if you are using a custom Cassandra deployment.
dds:
  externalNodes: ""
  port: "9042"
  username: "dnode_ext"
  password: "dnode_ext"
  clientEncryption: false
  trustStore: ""
  trustStorePassword: ""
  keyStore: ""
  keyStorePassword: ""

# Elasticsearch deployment settings.
# Note: This Elasticsearch deployment is used for Pega search, and is not the same Elasticsearch deployment used by the EFK stack.
# These search nodes will be deployed regardless of the Elasticsearch configuration above.
# Refer to README document to configure `Search and Reporting Service` as a search functionality provider under this section.
pegasearch:
  image: "repository.host.name/pocpega/pocpega/my-pega-search:8.7.1"
  memLimit: "10Gi"
  replicas: 1

# Pega Installer settings.
installer:
  image: "repository.host.name/pocpega/pocpega/my-pega-installer:8.7.1"
  # Set the initial [email protected] password for your installation.  This will need to be changed at first login.  # The adminPassword value cannot start with "@".
  adminPassword: "adminPassword"
  # Upgrade specific properties
  upgrade:
    # Type of upgrade
    # Valid upgradeType values are 'in-place' , 'zero-downtime' , 'custom' , 'out-of-place-rules' , 'out-of-place-data' .
    upgradeType: "zero-downtime"
    # Specify a name for a target rules schema that the upgrade process creates for patches and upgrades.
    targetRulesSchema: "pegarules871"
    # Specify a name for a target data schema that the upgrade process creates for patches and upgrades.
    # For postgres databases that you are upgrading from Pega Infinity version 8.4.0 and later
    # And for Oracle databases that you are upgrading from Pega Infinity version 8.4.3 and later.
    targetDataSchema: "pegadatatemp"

# Hazelcast settings (applicable from Pega 8.6)
hazelcast:
  image: "YOUR_HAZELCAST_IMAGE:TAG"
  # Setting below to true will deploy the infinity in client server hazelcast mode
  enabled: false             
  # No. of initial members to join
  replicas: 3
  # UserName to be used in client server hazelcast mode for authentication
  username: ""
  # Password to be used in client server hazelcast mode for authentication
  password: ""

alemax22 avatar Jul 04 '22 10:07 alemax22

hi @alemax22 can you please share the pega-web pod logs?

pega-sagas1 avatar Jul 19 '22 09:07 pega-sagas1

hi @alemax22 , is the issue resolved? if not can you please share us the logs?

pega-sagas1 avatar Jul 25 '22 07:07 pega-sagas1

Hi @pega-sagas1, we still having the problem, I will share the logs with you as soon as I can. If I try to upgrade the deployment right now I will stop the work of all our developers...

alemax22 avatar Jul 25 '22 08:07 alemax22

@alemax22 We are trying to reproduce this scenario. We would like to know what storage class being used for persistent volumes, if possible please provide the configuration files for PV and PVC.

PEGA-NarasimhaRao-Meda avatar Jul 27 '22 08:07 PEGA-NarasimhaRao-Meda

Yes sure: Filestore-StorageClass.yaml

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: filestore-standard
  annotations:
    components.gke.io/component-name: filestorecsi
    components.gke.io/component-version: 0.4.18
    components.gke.io/layer: addon
provisioner: filestore.csi.storage.gke.io
parameters:
  tier: standard
  network: "projects/pocpega/global/networks/vpc-pocpega"
  reserved-ip-range: net-pocpega
allowVolumeExpansion: true
reclaimPolicy: Delete
volumeBindingMode: Immediate

SharedVolumeClaim.yaml

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: shared-claim
  labels:
    app: pega-shared
spec:
  accessModes:
    - ReadWriteMany
  volumeMode: Filesystem
  resources:
    requests:
      storage: 100Gi
  storageClassName: filestore-standard

alemax22 avatar Jul 27 '22 08:07 alemax22

@alemax22 Can you try with the latest images from pegasystems/pega?

PEGA-NarasimhaRao-Meda avatar Jul 27 '22 15:07 PEGA-NarasimhaRao-Meda

@alemax22 Please update the latest docker image from pegasystems/pega and try again. If issue still persists please reopen the issue.

pega-sagas1 avatar Oct 21 '22 12:10 pega-sagas1