kind: Template
apiVersion: v1
metadata:
  annotations:
    iconClass: icon-jboss
    tags: rhpam,processserver,jboss,kieserver,externaldb
    version: "7.11"
    openshift.io/display-name: Red Hat Process Automation Manager 7.11 managed KIE Server with an external database
    openshift.io/provider-display-name: Red Hat, Inc.
    description: Application template for a managed KIE Server with an external database, for Red Hat Process Automation Manager 7.11 - Deprecated
    template.openshift.io/long-description: This template defines resources needed to execute Rules and Processes on Red Hat Process Automation Manager KIE Server 7.11, including application deployment configuration, secure and insecure http communication, using a external database. Template for Red Hat OpenShift Container Platform version 3.11. Deprecated since Red Hat Process Automation Manager version 7.5; consider using the Red Hat Business Automation Operator.
    template.openshift.io/documentation-url: https://access.redhat.com/documentation/en-us/red_hat_process_automation_manager/7.11/html/deploying_a_red_hat_process_automation_manager_7.11_managed_server_environment_on_red_hat_openshift_container_platform/
    template.openshift.io/support-url: https://access.redhat.com
    template.openshift.io/bindable: "false"
  name: rhpam711-kieserver-externaldb
labels:
  template: rhpam711-kieserver-externaldb
  rhpam: "7.11"
message: |-
  A new Process Automation Manager KIE Server application have been created in your project.
  The username/password needed for accessing the application are stored in "${CREDENTIALS_SECRET}" secret as
  KIE_ADMIN_USER and KIE_ADMIN_PWD

  You must create the secret named "${CREDENTIALS_SECRET}" containing the KIE_ADMIN_USER and KIE_ADMIN_PWD values and the secret named "${KIE_SERVER_HTTPS_SECRET}" containing the ${KIE_SERVER_HTTPS_KEYSTORE} file used for serving secure content.
parameters:
  - displayName: Application Name
    description: The name for the application.
    name: APPLICATION_NAME
    value: myapp
    required: true
  - displayName: Maven mirror URL
    description: Maven mirror that the KIE Server must use. If you configure a mirror, this mirror must contain all artifacts that are required for deploying your services.
    name: MAVEN_MIRROR_URL
    required: false
  - displayName: Maven mirror of
    description: Maven mirror configuration for KIE Server.
    name: MAVEN_MIRROR_OF
    value: "external:*"
    required: false
  - displayName: Maven repository ID
    description: "The id to use for the maven repository. If set, it can be excluded from the optionally configured mirror by adding it to MAVEN_MIRROR_OF. For example: external:*,!repo-rhpamcentr,!repo-custom. If MAVEN_MIRROR_URL is set but MAVEN_MIRROR_ID is not set, an id will be generated randomly, but won't be usable in MAVEN_MIRROR_OF."
    name: MAVEN_REPO_ID
    value: repo-custom
    required: false
  - displayName: Maven repository URL
    description: Fully qualified URL to a Maven repository or service.
    name: MAVEN_REPO_URL
    example: http://nexus.nexus-project.svc.cluster.local:8081/nexus/content/groups/public/
    required: false
  - displayName: Maven repository user name
    description: User name for accessing the Maven repository, if required.
    name: MAVEN_REPO_USERNAME
    required: false
  - displayName: Maven repository password
    description: Password to access the Maven repository, if required.
    name: MAVEN_REPO_PASSWORD
    required: false
  - displayName: Name of the Business Central service
    description: The Service name for the optional Business Central, where it can be reached, to allow service lookups (for example,  maven repo usage), if required.
    name: BUSINESS_CENTRAL_SERVICE
    example: "myapp-rhpamcentr"
    required: false
  - displayName: Credentials secret
    description: Secret containing the KIE_ADMIN_USER and KIE_ADMIN_PWD values
    name: CREDENTIALS_SECRET
    example: rhpam-credentials
    required: true
  - displayName: ImageStream Namespace
    description: Namespace in which the ImageStreams for Red Hat Process Automation Manager images are installed. These ImageStreams are normally installed in the openshift namespace. You need to modify this parameter only if you installed the ImageStream in a different namespace/project. Default is "openshift".
    name: IMAGE_STREAM_NAMESPACE
    value: openshift
    required: true
  - displayName: KIE Server ImageStream Name
    description: The name of the image stream to use for KIE Server. Default is "rhpam-kieserver-rhel8".
    name: KIE_SERVER_IMAGE_STREAM_NAME
    value: "rhpam-kieserver-rhel8"
    required: true
  - displayName: ImageStream Tag
    description: A named pointer to an image in an image stream. Default is "7.11.1".
    name: IMAGE_STREAM_TAG
    value: "7.11.1"
    required: true
## External database parameters BEGIN
  - displayName: KIE Server Persistence Schema
    description: Hibernate persistence schema.
    name: KIE_SERVER_PERSISTENCE_SCHEMA
    example: bd.schema
    required: false
  - displayName: KIE Server External Database Dialect
    description: KIE Server external database Hibernate dialect.
    name: KIE_SERVER_EXTERNALDB_DIALECT
    example: "org.hibernate.dialect.MySQL57Dialect"
    required: true
  - displayName: Datasource Service Host
    description: Sets the datasource service host. Use this if you want to use the predefined mysql or postgresql datasource properties. Leave blank if the KIE_SERVER_EXTERNALDB_URL parameter is set.
    name: KIE_SERVER_EXTERNALDB_SERVICE_HOST
    example: 10.10.10.1
    required: false
  - displayName: Database service Port
    description: Sets the datasource service port. Use this if you want to use the predefined mysql or postgresql datasource properties. Leave blank if the KIE_SERVER_EXTERNALDB_URL parameter is set.
    name: KIE_SERVER_EXTERNALDB_SERVICE_PORT
    example: 4321
    required: false
  - displayName: Non XA datasource
    description: Sets the datasources type. It can be XA or NONXA. For non XA set it to true. Default value is true.
    name: KIE_SERVER_EXTERNALDB_NONXA
    example: true
    required: false
  - displayName: KIE Server External Database URL
    description: Sets the datasource jdbc connection url. Note that, if you are using PostgreSQL do not use this field, use the SERVICE_HOST and PORT. If using SERVICE_PORT and HOST there is no need to fill this parameter.
    name: KIE_SERVER_EXTERNALDB_URL
    example: "jdbc:mysql://127.0.0.1:3306/rhpam"
    required: false
  - displayName: KIE Server External Database Driver
    description: The predefined driver name, available values are mysql, postgresql or the preferred name for the external driver.
    name: KIE_SERVER_EXTERNALDB_DRIVER
    example: "mariadb"
    required: true
  - displayName: Database JNDI Name
    description: Database JNDI name used by application to resolve the datasource, e.g. java:/jboss/datasources/ExampleDS.
    name: KIE_SERVER_EXTERNALDB_JNDI
    value: java:jboss/datasources/jbpmDS
    required: true
  - displayName: KIE Server External Database name
    description: KIE Server external database name. Leave blank if the KIE_SERVER_EXTERNALDB_URL is set.
    name: KIE_SERVER_EXTERNALDB_DB
    example: rhpam
    required: false
  - displayName: KIE Server External Database User
    description: KIE Server external database user name.
    name: KIE_SERVER_EXTERNALDB_USER
    example: rhpam
    required: true
  - displayName: KIE Server External Database Password
    description: KIE Server external database password.
    name: KIE_SERVER_EXTERNALDB_PWD
    required: true
  - displayName: Datasource Minimum Pool Size
    description: Sets xa-pool/min-pool-size for the configured datasource.
    name: KIE_SERVER_EXTERNALDB_MIN_POOL_SIZE
    required: false
  - displayName: Datasource Maximum Pool Size
    description: Sets xa-pool/max-pool-size for the configured datasource.
    name: KIE_SERVER_EXTERNALDB_MAX_POOL_SIZE
    required: false
  - displayName: JDBC Connection Checker class
    description: An org.jboss.jca.adapters.jdbc.ValidConnectionChecker that provides a SQLException isValidConnection(Connection e) method to validate if a connection is valid.
    name: KIE_SERVER_EXTERNALDB_CONNECTION_CHECKER
    example: "org.jboss.jca.adapters.jdbc.extensions.mysql.MySQLValidConnectionChecker"
    required: false
  - displayName: JDBC Exception Sorter class
    description: An org.jboss.jca.adapters.jdbc.ExceptionSorter that provides a boolean isExceptionFatal(SQLException e) method to validate if an exception should be broadcast to all javax.resource.spi.ConnectionEventListener as a connectionErrorOccurred.
    name: KIE_SERVER_EXTERNALDB_EXCEPTION_SORTER
    example: "org.jboss.jca.adapters.jdbc.extensions.mysql.MySQLExceptionSorter"
    required: false
  - displayName: JDBC background validation
    description: Sets the sql validation method to background-validation, if set to false the validate-on-match method will be used.
    name: KIE_SERVER_EXTERNALDB_BACKGROUND_VALIDATION
    example: "true"
    required: false
  - displayName: JDBC Background Validation Millis
    description: Defines the interval for the background-validation check for the jdbc connections.
    name: KIE_SERVER_EXTERNALDB_BACKGROUND_VALIDATION_MILLIS
    example: "10000"
    required: false
  - displayName: KIE Server External Database Driver Type
    description: KIE Server external database driver type, applicable only for DB2, possible values are 4 (default) or 2.
    name: KIE_SERVER_EXTERNALDB_DRIVER_TYPE
    example: "4"
    required: false
## Extension image configuration BEGIN
  - displayName: Drivers Extension Image
    description: ImageStreamTag definition for the image containing the drivers and configuration. For example, custom-driver-image:7.11.1.
    name: EXTENSIONS_IMAGE
    value: custom-driver-extension:7.11.1
    required: true
  - displayName: Drivers ImageStream Namespace
    description: Namespace within which the ImageStream definition for the image containing the drivers and configuration is located.
    name: EXTENSIONS_IMAGE_NAMESPACE
    value: openshift
    required: true
  - displayName: Drivers Image Install Directory
    description: Full path to the directory within the extensions image where the extensions are located (e.g. install.sh, modules/, etc.).
    name: EXTENSIONS_INSTALL_DIR
    value: "/extensions"
    required: true
## Extension image configuration END
## External database parameters END
  - displayName: KIE Server Mode
    description: "The KIE Server mode. Valid values are 'DEVELOPMENT' or 'PRODUCTION'. In production mode, you can not deploy SNAPSHOT versions of artifacts on the KIE Server and can not change the version of an artifact in an existing container. (Sets the org.kie.server.mode system property)."
    name: KIE_SERVER_MODE
    value: "PRODUCTION"
    required: false
  - displayName: KIE MBeans
    description: KIE Server mbeans enabled/disabled (Sets the kie.mbeans and kie.scanner.mbeans system properties).
    name: KIE_MBEANS
    value: enabled
    required: false
  - displayName: Drools Server Filter Classes
    description: KIE Server class filtering (Sets the org.drools.server.filter.classes system property).
    name: DROOLS_SERVER_FILTER_CLASSES
    value: 'true'
    required: false
  - displayName: Prometheus Server Extension Disabled
    description: If set to false, the prometheus server extension will be enabled. (Sets the org.kie.prometheus.server.ext.disabled system property)
    name: PROMETHEUS_SERVER_EXT_DISABLED
    example: 'false'
    required: false
  - displayName: KIE Server Custom http Route Hostname
    description: 'Custom hostname for http service route. Leave blank for default hostname, e.g.: insecure-<application-name>-kieserver-<project>.<default-domain-suffix>'
    name: KIE_SERVER_HOSTNAME_HTTP
    value: ''
    required: false
  - displayName: KIE Server Custom https Route Hostname
    description: 'Custom hostname for https service route.  Leave blank for default hostname, e.g.: <application-name>-kieserver-<project>.<default-domain-suffix>'
    name: KIE_SERVER_HOSTNAME_HTTPS
    value: ''
    required: false
  - displayName: KIE Server Keystore Secret Name
    description: The name of the secret containing the keystore file.
    name: KIE_SERVER_HTTPS_SECRET
    example: kieserver-app-secret
    required: true
  - displayName: KIE Server Keystore Filename
    description: The name of the keystore file within the secret.
    name: KIE_SERVER_HTTPS_KEYSTORE
    value: keystore.jks
    required: false
  - displayName: KIE Server Certificate Name
    description: The name associated with the server certificate.
    name: KIE_SERVER_HTTPS_NAME
    value: jboss
    required: false
  - displayName: KIE Server Keystore Password
    description: The password for the keystore and certificate.
    name: KIE_SERVER_HTTPS_PASSWORD
    value: mykeystorepass
    required: false
  - displayName: KIE Server Bypass Auth User
    description: Allows the KIE Server to bypass the authenticated user for task-related operations, for example, queries. (Sets the org.kie.server.bypass.auth.user system property)
    name: KIE_SERVER_BYPASS_AUTH_USER
    value: 'false'
    required: false
  - displayName: "Timer service data store refresh interval (in milliseconds)"
    description: "Sets refresh-interval for the EJB timer database data-store service."
    name: TIMER_SERVICE_DATA_STORE_REFRESH_INTERVAL
    value: '30000'
    required: false
  - displayName: KIE Server Container Memory Limit
    description: KIE Server Container memory limit.
    name: KIE_SERVER_MEMORY_LIMIT
    value: 2Gi
    required: true
  - displayName: KIE Server Container Memory Request
    description: KIE Server Container memory request.
    name: KIE_SERVER_MEMORY_REQUEST
    value: 1536Mi
    required: true
  - displayName: KIE Server Container CPU Limit
    description: KIE Server Container CPU limit.
    name: KIE_SERVER_CPU_LIMIT
    value: '1'
    required: true
  - displayName: KIE Server Container CPU Request
    description: KIE Server Container CPU request.
    name: KIE_SERVER_CPU_REQUEST
    value: '750m'
    required: true
  - displayName: KIE Server Container Deployment
    description: 'KIE Server Container deployment configuration with optional alias. Format: containerId=groupId:artifactId:version|c2(alias2)=g2:a2:v2'
    name: KIE_SERVER_CONTAINER_DEPLOYMENT
    example: rhpam-kieserver-library=org.openshift.quickstarts:rhpam-kieserver-library:1.6.0-SNAPSHOT
    required: false
  - displayName: Disable KIE Server Management
    description: "Disable management api and don't allow KIE containers to be deployed/undeployed or started/stopped. Sets the property org.kie.server.mgmt.api.disabled to true and org.kie.server.startup.strategy to LocalContainersStartupStrategy."
    name: KIE_SERVER_MGMT_DISABLED
    example: "true"
    required: false
  - displayName: RH-SSO URL
    description: RH-SSO URL.
    name: SSO_URL
    example: https://rh-sso.example.com/auth
    required: false
  - displayName: RH-SSO Realm name
    description: RH-SSO Realm name.
    name: SSO_REALM
    required: false
  - displayName: KIE Server RH-SSO Client name
    description: KIE Server RH-SSO Client name.
    name: KIE_SERVER_SSO_CLIENT
    required: false
  - displayName: KIE Server RH-SSO Client Secret
    description: KIE Server RH-SSO Client Secret.
    name: KIE_SERVER_SSO_SECRET
    example: "252793ed-7118-4ca8-8dab-5622fa97d892"
    required: false
  - displayName: RH-SSO Realm admin user name
    description: RH-SSO Realm admin user name for creating the Client if it doesn't exist.
    name: SSO_USERNAME
    required: false
  - displayName: RH-SSO Realm Admin Password
    description: RH-SSO Realm Admin Password used to create the Client.
    name: SSO_PASSWORD
    required: false
  - displayName: RH-SSO Disable SSL Certificate Validation
    description: RH-SSO Disable SSL Certificate Validation.
    name: SSO_DISABLE_SSL_CERTIFICATE_VALIDATION
    value: "false"
    required: false
  - displayName: RH-SSO Principal Attribute
    description: RH-SSO Principal Attribute to use as user name.
    name: SSO_PRINCIPAL_ATTRIBUTE
    value: preferred_username
    required: false
  - displayName: LDAP Endpoint
    description: LDAP endpoint to connect for authentication. For failover, set two or more LDAP endpoints separated by space.
    name: AUTH_LDAP_URL
    example: "ldap://myldap.example.com:389"
    required: false
  - displayName: LDAP Bind DN
    description: Bind DN used for authentication.
    name: AUTH_LDAP_BIND_DN
    example: "uid=admin,ou=users,ou=example,ou=com"
    required: false
  - displayName: LDAP Bind Credentials
    description: LDAP Credentials used for authentication.
    name: AUTH_LDAP_BIND_CREDENTIAL
    example: "Password"
    required: false
  - displayName: LDAP Flag Login Module
    name: AUTH_LDAP_LOGIN_MODULE
    description: "A flag to set login module to optional. The default value is required"
    required: false
    example: "optional"
  - displayName: LDAP JAAS Security Domain
    description: The JMX ObjectName of the JaasSecurityDomain used to decrypt the password.
    name: AUTH_LDAP_JAAS_SECURITY_DOMAIN
    required: false
  - displayName: LDAP Base DN
    description: LDAP Base DN of the top-level context to begin the user search.
    name: AUTH_LDAP_BASE_CTX_DN
    example: "ou=users,ou=example,ou=com"
    required: false
  - displayName: LDAP Base Search filter
    description: LDAP search filter used to locate the context of the user to authenticate. The input username or userDN obtained from the login module callback is substituted into the filter anywhere a {0} expression is used. A common example for the search filter is (uid={0}).
    name: AUTH_LDAP_BASE_FILTER
    example: "(uid={0})"
    required: false
  - displayName: LDAP Search scope
    description: The search scope to use.
    name: AUTH_LDAP_SEARCH_SCOPE
    example: "SUBTREE_SCOPE"
    required: false
  - displayName: LDAP Search time limit
    description: The timeout in milliseconds for user or role searches.
    name: AUTH_LDAP_SEARCH_TIME_LIMIT
    example: "10000"
    required: false
  - displayName: LDAP DN attribute
    description: The name of the attribute in the user entry that contains the DN of the user. This may be necessary if the DN of the user itself contains special characters, backslash for example, that prevent correct user mapping. If the attribute does not exist, the entry’s DN is used.
    name: AUTH_LDAP_DISTINGUISHED_NAME_ATTRIBUTE
    example: "distinguishedName"
    required: false
  - displayName: LDAP Parse username
    description: A flag indicating if the DN is to be parsed for the user name. If set to true, the DN is parsed for the user name. If set to false the DN is not parsed for the user name. This option is used together with usernameBeginString and usernameEndString.
    name: AUTH_LDAP_PARSE_USERNAME
    example: "true"
    required: false
  - displayName: LDAP Username begin string
    description: Defines the String which is to be removed from the start of the DN to reveal the user name. This option is used together with usernameEndString and only taken into account if parseUsername is set to true.
    name: AUTH_LDAP_USERNAME_BEGIN_STRING
    required: false
  - displayName: LDAP Username end string
    description: Defines the String which is to be removed from the end of the DN to reveal the user name. This option is used together with usernameEndString and only taken into account if parseUsername is set to true.
    name: AUTH_LDAP_USERNAME_END_STRING
    required: false
  - displayName: LDAP Role attributeID
    description: Name of the attribute containing the user roles.
    name: AUTH_LDAP_ROLE_ATTRIBUTE_ID
    example: memberOf
    required: false
  - displayName: LDAP Roles Search DN
    description: The fixed DN of the context to search for user roles. This is not the DN where the actual roles are, but the DN where the objects containing the user roles are. For example, in a Microsoft Active Directory server, this is the DN where the user account is.
    name: AUTH_LDAP_ROLES_CTX_DN
    example: "ou=groups,ou=example,ou=com"
    required: false
  - displayName: LDAP Role search filter
    description: A search filter used to locate the roles associated with the authenticated user. The input username or userDN obtained from the login module callback is substituted into the filter anywhere a {0} expression is used. The authenticated userDN is substituted into the filter anywhere a {1} is used. An example search filter that matches on the input username is (member={0}). An alternative that matches on the authenticated userDN is (member={1}).
    name: AUTH_LDAP_ROLE_FILTER
    example: "(memberOf={1})"
    required: false
  - displayName: LDAP Role recursion
    description: The number of levels of recursion the role search will go below a matching context. Disable recursion by setting this to 0.
    name: AUTH_LDAP_ROLE_RECURSION
    example: "1"
    required: false
  - displayName: LDAP Default role
    description: A role included for all authenticated users.
    name: AUTH_LDAP_DEFAULT_ROLE
    example: "user"
    required: false
  - displayName: LDAP Role name attribute ID
    description: Name of the attribute within the roleCtxDN context which contains the role name. If the roleAttributeIsDN property is set to true, this property is used to find the role object’s name attribute.
    name: AUTH_LDAP_ROLE_NAME_ATTRIBUTE_ID
    example: "name"
    required: false
  - displayName: LDAP Role DN contains roleNameAttributeID
    description: A flag indicating if the DN returned by a query contains the roleNameAttributeID. If set to true, the DN is checked for the roleNameAttributeID. If set to false, the DN is not checked for the roleNameAttributeID. This flag can improve the performance of LDAP queries.
    name: AUTH_LDAP_PARSE_ROLE_NAME_FROM_DN
    example: "false"
    required: false
  - displayName: LDAP Role Attribute ID is DN
    description: Whether or not the roleAttributeID contains the fully-qualified DN of a role object. If false, the role name is taken from the value of the roleNameAttributeId attribute of the context name. Certain directory schemas, such as Microsoft Active Directory, require this attribute to be set to true.
    name: AUTH_LDAP_ROLE_ATTRIBUTE_IS_DN
    example: "false"
    required: false
  - displayName: LDAP Referral user attribute ID
    description: If you are not using referrals, you can ignore this option. When using referrals, this option denotes the attribute name which contains users defined for a certain role, for example member, if the role object is inside the referral. Users are checked against the content of this attribute name. If this option is not set, the check will always fail, so role objects cannot be stored in a referral tree.
    name: AUTH_LDAP_REFERRAL_USER_ATTRIBUTE_ID_TO_CHECK
    required: false
  - displayName: RoleMapping rolesProperties file path
    description: When present, the RoleMapping Login Module will be configured to use the provided file. This property defines the fully-qualified file path and name of a properties file or resource which maps roles to replacement roles. The format is original_role=role1,role2,role3
    name: AUTH_ROLE_MAPPER_ROLES_PROPERTIES
    required: false
  - displayName: RoleMapping replaceRole property
    description: Whether to add to the current roles, or replace the current roles with the mapped ones. Replaces if set to true.
    name: AUTH_ROLE_MAPPER_REPLACE_ROLE
    required: false
objects:
  - kind: ServiceAccount
    apiVersion: v1
    metadata:
      name: "${APPLICATION_NAME}-kieserver"
      labels:
        application: "${APPLICATION_NAME}"
  - kind: RoleBinding
    apiVersion: v1
    metadata:
      name: "${APPLICATION_NAME}-kieserver-edit"
      labels:
        application: "${APPLICATION_NAME}"
    subjects:
      - kind: ServiceAccount
        name: "${APPLICATION_NAME}-kieserver"
    roleRef:
      name: edit
  - kind: Service
    apiVersion: v1
    spec:
      ports:
        - name: http
          port: 8080
          targetPort: 8080
        - name: https
          port: 8443
          targetPort: 8443
      selector:
        deploymentConfig: "${APPLICATION_NAME}-kieserver"
      sessionAffinity: ClientIP
      sessionAffinityConfig:
        clientIP:
          timeoutSeconds: 3600
    metadata:
      name: "${APPLICATION_NAME}-kieserver"
      labels:
        application: "${APPLICATION_NAME}"
        service: "${APPLICATION_NAME}-kieserver"
      annotations:
        description: All the KIE Server web server's ports.
  - kind: Route
    apiVersion: v1
    id: "insecure-${APPLICATION_NAME}-kieserver-http"
    metadata:
      name: "insecure-${APPLICATION_NAME}-kieserver"
      labels:
        application: "${APPLICATION_NAME}"
        service: "${APPLICATION_NAME}-kieserver"
      annotations:
        description: Route for KIE Server's http service.
        haproxy.router.openshift.io/balance: source
    spec:
      host: "${KIE_SERVER_HOSTNAME_HTTP}"
      to:
        name: "${APPLICATION_NAME}-kieserver"
      port:
        targetPort: http
  - kind: Route
    apiVersion: v1
    id: "${APPLICATION_NAME}-kieserver-https"
    metadata:
      name: "${APPLICATION_NAME}-kieserver"
      labels:
        application: "${APPLICATION_NAME}"
        service: "${APPLICATION_NAME}-kieserver"
      annotations:
        description: Route for KIE Server's https service.
    spec:
      host: "${KIE_SERVER_HOSTNAME_HTTPS}"
      to:
        name: "${APPLICATION_NAME}-kieserver"
      port:
        targetPort: https
      tls:
        termination: passthrough
  - kind: ImageStream
    apiVersion: v1
    metadata:
      name: "${APPLICATION_NAME}-kieserver"
      labels:
        application: "${APPLICATION_NAME}"
        service: "${APPLICATION_NAME}-kieserver"
  - kind: BuildConfig
    apiVersion: v1
    metadata:
      name: "${APPLICATION_NAME}-kieserver"
      labels:
        application: "${APPLICATION_NAME}"
        service: "${APPLICATION_NAME}-kieserver"
      annotations:
        template.alpha.openshift.io/wait-for-ready: "true"
    spec:
      source:
        images:
          - from:
              kind: ImageStreamTag
              namespace: "${EXTENSIONS_IMAGE_NAMESPACE}"
              name: "${EXTENSIONS_IMAGE}"
            paths:
              - destinationDir: "./extensions/extras"
                sourcePath: "${EXTENSIONS_INSTALL_DIR}/."
      strategy:
        type: Source
        sourceStrategy:
          env:
            - name: CUSTOM_INSTALL_DIRECTORIES
              value: "extensions/*"
          forcePull: true
          from:
            kind: ImageStreamTag
            namespace: "${IMAGE_STREAM_NAMESPACE}"
            name: "${KIE_SERVER_IMAGE_STREAM_NAME}:${IMAGE_STREAM_TAG}"
      output:
        to:
          kind: ImageStreamTag
          name: "${APPLICATION_NAME}-kieserver:latest"
      triggers:
        - type: ImageChange
          imageChange: {}
        - type: ImageChange
          imageChange:
            from:
              kind: ImageStreamTag
              namespace: "${EXTENSIONS_IMAGE_NAMESPACE}"
              name: "${EXTENSIONS_IMAGE}"
        - type: ConfigChange
  - kind: DeploymentConfig
    apiVersion: v1
    metadata:
      name: "${APPLICATION_NAME}-kieserver"
      labels:
        application: "${APPLICATION_NAME}"
        service: "${APPLICATION_NAME}-kieserver"
        services.server.kie.org/kie-server-id: "${APPLICATION_NAME}-kieserver"
      annotations:
        template.alpha.openshift.io/wait-for-ready: "true"
    spec:
      revisionHistoryLimit: 10
      strategy:
        rollingParams:
          maxSurge: 100%
          maxUnavailable: 0
        type: Rolling
      triggers:
        - type: ImageChange
          imageChangeParams:
            automatic: true
            containerNames:
              - "${APPLICATION_NAME}-kieserver"
            from:
              kind: ImageStreamTag
              name: "${APPLICATION_NAME}-kieserver:latest"
        - type: ConfigChange
      replicas: 1
      selector:
        deploymentConfig: "${APPLICATION_NAME}-kieserver"
      template:
        metadata:
          name: "${APPLICATION_NAME}-kieserver"
          labels:
            deploymentConfig: "${APPLICATION_NAME}-kieserver"
            application: "${APPLICATION_NAME}"
            service: "${APPLICATION_NAME}-kieserver"
            services.server.kie.org/kie-server-id: "${APPLICATION_NAME}-kieserver"
            cluster: "jgrp.k8s.${APPLICATION_NAME}.kieserver"
        spec:
          serviceAccountName: "${APPLICATION_NAME}-kieserver"
          terminationGracePeriodSeconds: 90
          containers:
            - name: "${APPLICATION_NAME}-kieserver"
              image: "${KIE_SERVER_IMAGE_STREAM_NAME}"
              imagePullPolicy: Always
              lifecycle:
                postStart:
                  exec:
                    command:
                      - /bin/sh
                      - /opt/eap/bin/launch/jboss-kie-kieserver-hooks.sh
                preStop:
                  exec:
                    command:
                      - /bin/sh
                      - /opt/eap/bin/launch/jboss-kie-kieserver-hooks.sh
              resources:
                limits:
                  memory: "${KIE_SERVER_MEMORY_LIMIT}"
                  cpu: "${KIE_SERVER_CPU_LIMIT}"
                requests:
                  memory: "${KIE_SERVER_MEMORY_REQUEST}"
                  cpu: "${KIE_SERVER_CPU_REQUEST}"
              volumeMounts:
                - name: kieserver-keystore-volume
                  mountPath: "/etc/kieserver-secret-volume"
                  readOnly: true
              livenessProbe:
                httpGet:
                  path: /services/rest/server/healthcheck
                  port: 8080
                  scheme: HTTP
                initialDelaySeconds: 180
                timeoutSeconds: 2
                periodSeconds: 15
                failureThreshold: 3
              readinessProbe:
                httpGet:
                  path: /services/rest/server/readycheck
                  port: 8080
                  scheme: HTTP
                initialDelaySeconds: 30
                timeoutSeconds: 2
                periodSeconds: 5
                failureThreshold: 36
              ports:
                - name: jolokia
                  containerPort: 8778
                  protocol: TCP
                - name: http
                  containerPort: 8080
                  protocol: TCP
                - name: https
                  containerPort: 8443
                  protocol: TCP
              env:
                - name: WORKBENCH_SERVICE_NAME
                  value: "${BUSINESS_CENTRAL_SERVICE}"
                - name: KIE_ADMIN_USER
                  valueFrom:
                    secretKeyRef:
                      name: "${CREDENTIALS_SECRET}"
                      key: KIE_ADMIN_USER
                - name: KIE_ADMIN_PWD
                  valueFrom:
                    secretKeyRef:
                      name: "${CREDENTIALS_SECRET}"
                      key: KIE_ADMIN_PWD
                - name: KIE_SERVER_MODE
                  value: "${KIE_SERVER_MODE}"
                - name: KIE_MBEANS
                  value: "${KIE_MBEANS}"
                - name: DROOLS_SERVER_FILTER_CLASSES
                  value: "${DROOLS_SERVER_FILTER_CLASSES}"
                - name: PROMETHEUS_SERVER_EXT_DISABLED
                  value: "${PROMETHEUS_SERVER_EXT_DISABLED}"
                - name: KIE_SERVER_BYPASS_AUTH_USER
                  value: "${KIE_SERVER_BYPASS_AUTH_USER}"
                - name: KIE_SERVER_ID
                  valueFrom:
                    fieldRef:
                      fieldPath: metadata.labels['services.server.kie.org/kie-server-id']
                - name: KIE_SERVER_ROUTE_NAME
                  value: "${APPLICATION_NAME}-kieserver"
                - name: KIE_SERVER_CONTAINER_DEPLOYMENT
                  value: "${KIE_SERVER_CONTAINER_DEPLOYMENT}"
                - name: MAVEN_MIRROR_URL
                  value: "${MAVEN_MIRROR_URL}"
                - name: MAVEN_MIRROR_OF
                  value: "${MAVEN_MIRROR_OF}"
                - name: MAVEN_REPOS
                  value: "RHPAMCENTR,EXTERNAL"
                - name: RHPAMCENTR_MAVEN_REPO_ID
                  value: "repo-rhpamcentr"
                - name: RHPAMCENTR_MAVEN_REPO_SERVICE
                  value: "${BUSINESS_CENTRAL_SERVICE}"
                - name: RHPAMCENTR_MAVEN_REPO_PATH
                  value: "/maven2/"
                - name: RHPAMCENTR_MAVEN_REPO_USERNAME
                  valueFrom:
                    secretKeyRef:
                      name: "${CREDENTIALS_SECRET}"
                      key: KIE_ADMIN_USER
                - name: RHPAMCENTR_MAVEN_REPO_PASSWORD
                  valueFrom:
                    secretKeyRef:
                      name: "${CREDENTIALS_SECRET}"
                      key: KIE_ADMIN_PWD
                - name: EXTERNAL_MAVEN_REPO_ID
                  value: "${MAVEN_REPO_ID}"
                - name: EXTERNAL_MAVEN_REPO_URL
                  value: "${MAVEN_REPO_URL}"
                - name: EXTERNAL_MAVEN_REPO_USERNAME
                  value: "${MAVEN_REPO_USERNAME}"
                - name: EXTERNAL_MAVEN_REPO_PASSWORD
                  value: "${MAVEN_REPO_PASSWORD}"
                - name: KIE_SERVER_MGMT_DISABLED
                  value: "${KIE_SERVER_MGMT_DISABLED}"
                - name: KIE_SERVER_STARTUP_STRATEGY
                  value: "OpenShiftStartupStrategy"
                - name: KIE_SERVER_PERSISTENCE_DS
                  value: "${KIE_SERVER_EXTERNALDB_JNDI}"
                - name: KIE_SERVER_PERSISTENCE_SCHEMA
                  value: "${KIE_SERVER_PERSISTENCE_SCHEMA}"
                - name: KIE_SERVER_PERSISTENCE_DIALECT
                  value: "${KIE_SERVER_EXTERNALDB_DIALECT}"
## External database settings BEGIN
                - name: DATASOURCES
                  value: "RHPAM"
                - name: RHPAM_DATABASE
                  value: "${KIE_SERVER_EXTERNALDB_DB}"
                - name: RHPAM_SERVICE_HOST
                  value: "${KIE_SERVER_EXTERNALDB_SERVICE_HOST}"
                - name: RHPAM_SERVICE_PORT
                  value: "${KIE_SERVER_EXTERNALDB_SERVICE_PORT}"
                - name: RHPAM_JNDI
                  value: "${KIE_SERVER_EXTERNALDB_JNDI}"
                - name: RHPAM_DRIVER
                  value: "${KIE_SERVER_EXTERNALDB_DRIVER}"
                - name: RHPAM_USERNAME
                  value: "${KIE_SERVER_EXTERNALDB_USER}"
                - name: RHPAM_PASSWORD
                  value: "${KIE_SERVER_EXTERNALDB_PWD}"
                - name: RHPAM_NONXA
                  value: "${KIE_SERVER_EXTERNALDB_NONXA}"
                - name: RHPAM_URL
                  value: "${KIE_SERVER_EXTERNALDB_URL}"
                - name: RHPAM_XA_CONNECTION_PROPERTY_URL
                  value: "${KIE_SERVER_EXTERNALDB_URL}"
                - name: RHPAM_MIN_POOL_SIZE
                  value: "${KIE_SERVER_EXTERNALDB_MIN_POOL_SIZE}"
                - name: RHPAM_MAX_POOL_SIZE
                  value: "${KIE_SERVER_EXTERNALDB_MAX_POOL_SIZE}"
                - name: RHPAM_CONNECTION_CHECKER
                  value: "${KIE_SERVER_EXTERNALDB_CONNECTION_CHECKER}"
                - name: RHPAM_EXCEPTION_SORTER
                  value: "${KIE_SERVER_EXTERNALDB_EXCEPTION_SORTER}"
                - name: RHPAM_BACKGROUND_VALIDATION
                  value: "${KIE_SERVER_EXTERNALDB_BACKGROUND_VALIDATION}"
                - name: RHPAM_VALIDATION_MILLIS
                  value: "${KIE_SERVER_EXTERNALDB_BACKGROUND_VALIDATION_MILLIS}"
                - name: RHPAM_DRIVER_TYPE
                  value: "${KIE_SERVER_EXTERNALDB_DRIVER_TYPE}"
                - name: RHPAM_JTA
                  value: "true"
## External database settings END
                - name: TIMER_SERVICE_DATA_STORE_REFRESH_INTERVAL
                  value: "${TIMER_SERVICE_DATA_STORE_REFRESH_INTERVAL}"
                - name: HTTPS_KEYSTORE_DIR
                  value: "/etc/kieserver-secret-volume"
                - name: HTTPS_KEYSTORE
                  value: "${KIE_SERVER_HTTPS_KEYSTORE}"
                - name: HTTPS_NAME
                  value: "${KIE_SERVER_HTTPS_NAME}"
                - name: HTTPS_PASSWORD
                  value: "${KIE_SERVER_HTTPS_PASSWORD}"
                - name: JGROUPS_PING_PROTOCOL
                  value: "kubernetes.KUBE_PING"
                - name: KUBERNETES_NAMESPACE
                  valueFrom:
                    fieldRef:
                      fieldPath: metadata.namespace
                - name: KUBERNETES_LABELS
                  value: "cluster=jgrp.k8s.${APPLICATION_NAME}.kieserver"
                - name: SSO_URL
                  value: "${SSO_URL}"
                - name: SSO_OPENIDCONNECT_DEPLOYMENTS
                  value: "ROOT.war"
                - name: SSO_REALM
                  value: "${SSO_REALM}"
                - name: SSO_SECRET
                  value: "${KIE_SERVER_SSO_SECRET}"
                - name: SSO_CLIENT
                  value: "${KIE_SERVER_SSO_CLIENT}"
                - name: SSO_USERNAME
                  value: "${SSO_USERNAME}"
                - name: SSO_PASSWORD
                  value: "${SSO_PASSWORD}"
                - name: SSO_DISABLE_SSL_CERTIFICATE_VALIDATION
                  value: "${SSO_DISABLE_SSL_CERTIFICATE_VALIDATION}"
                - name: SSO_PRINCIPAL_ATTRIBUTE
                  value: "${SSO_PRINCIPAL_ATTRIBUTE}"
                - name: HOSTNAME_HTTP
                  value: "${KIE_SERVER_HOSTNAME_HTTP}"
                - name: HOSTNAME_HTTPS
                  value: "${KIE_SERVER_HOSTNAME_HTTPS}"
                - name: AUTH_LDAP_URL
                  value: "${AUTH_LDAP_URL}"
                - name: AUTH_LDAP_BIND_DN
                  value: "${AUTH_LDAP_BIND_DN}"
                - name: AUTH_LDAP_BIND_CREDENTIAL
                  value: "${AUTH_LDAP_BIND_CREDENTIAL}"
                - name: AUTH_LDAP_LOGIN_MODULE
                  value: "${AUTH_LDAP_LOGIN_MODULE}"
                - name: AUTH_LDAP_JAAS_SECURITY_DOMAIN
                  value: "${AUTH_LDAP_JAAS_SECURITY_DOMAIN}"
                - name: AUTH_LDAP_BASE_CTX_DN
                  value: "${AUTH_LDAP_BASE_CTX_DN}"
                - name: AUTH_LDAP_BASE_FILTER
                  value: "${AUTH_LDAP_BASE_FILTER}"
                - name: AUTH_LDAP_SEARCH_SCOPE
                  value: "${AUTH_LDAP_SEARCH_SCOPE}"
                - name: AUTH_LDAP_SEARCH_TIME_LIMIT
                  value: "${AUTH_LDAP_SEARCH_TIME_LIMIT}"
                - name: AUTH_LDAP_DISTINGUISHED_NAME_ATTRIBUTE
                  value: "${AUTH_LDAP_DISTINGUISHED_NAME_ATTRIBUTE}"
                - name: AUTH_LDAP_PARSE_USERNAME
                  value: "${AUTH_LDAP_PARSE_USERNAME}"
                - name: AUTH_LDAP_USERNAME_BEGIN_STRING
                  value: "${AUTH_LDAP_USERNAME_BEGIN_STRING}"
                - name: AUTH_LDAP_USERNAME_END_STRING
                  value: "${AUTH_LDAP_USERNAME_END_STRING}"
                - name: AUTH_LDAP_ROLE_ATTRIBUTE_ID
                  value: "${AUTH_LDAP_ROLE_ATTRIBUTE_ID}"
                - name: AUTH_LDAP_ROLES_CTX_DN
                  value: "${AUTH_LDAP_ROLES_CTX_DN}"
                - name: AUTH_LDAP_ROLE_FILTER
                  value: "${AUTH_LDAP_ROLE_FILTER}"
                - name: AUTH_LDAP_ROLE_RECURSION
                  value: "${AUTH_LDAP_ROLE_RECURSION}"
                - name: AUTH_LDAP_DEFAULT_ROLE
                  value: "${AUTH_LDAP_DEFAULT_ROLE}"
                - name: AUTH_LDAP_ROLE_NAME_ATTRIBUTE_ID
                  value: "${AUTH_LDAP_ROLE_NAME_ATTRIBUTE_ID}"
                - name: AUTH_LDAP_PARSE_ROLE_NAME_FROM_DN
                  value: "${AUTH_LDAP_PARSE_ROLE_NAME_FROM_DN}"
                - name: AUTH_LDAP_ROLE_ATTRIBUTE_IS_DN
                  value: "${AUTH_LDAP_ROLE_ATTRIBUTE_IS_DN}"
                - name: AUTH_LDAP_REFERRAL_USER_ATTRIBUTE_ID_TO_CHECK
                  value: "${AUTH_LDAP_REFERRAL_USER_ATTRIBUTE_ID_TO_CHECK}"
                - name: AUTH_ROLE_MAPPER_ROLES_PROPERTIES
                  value: "${AUTH_ROLE_MAPPER_ROLES_PROPERTIES}"
                - name: AUTH_ROLE_MAPPER_REPLACE_ROLE
                  value: "${AUTH_ROLE_MAPPER_REPLACE_ROLE}"
          volumes:
            - name: kieserver-keystore-volume
              secret:
                secretName: "${KIE_SERVER_HTTPS_SECRET}"
