---
kind: Template
apiVersion: v1
metadata:
  annotations:
    description: Application template for a router and monitoring console in a production environment, for Red Hat Process Automation Manager 7.0
    iconClass: icon-jboss
    tags: rhpam,jboss,xpaas
    version: 1.4.0
    openshift.io/display-name: Red Hat Process Automation Manager 7.0 production monitoring environment
  name: rhpam70-prod-immutable-monitor
labels:
  template: rhpam70-prod-immutable-monitor
  xpaas: 1.4.0
message: A new environment has been set up for Red Hat Process Automation Manager 7. To create a new KIE server and connect to this monitoring console/router, enter
  oc new-app -f rhpam70-prod-immutable-kieserver.yaml -p KIE_ADMIN_PWD=${KIE_ADMIN_PWD} -p KIE_SERVER_PWD=${KIE_SERVER_PWD} -p KIE_SERVER_MONITOR_PWD=${KIE_SERVER_MONITOR_PWD} -p KIE_SERVER_MONITOR_SERVICE=${APPLICATION_NAME}-rhpamcentrmon -p KIE_SERVER_ROUTER_SERVICE=${APPLICATION_NAME}-smartrouter -p SOURCE_REPOSITORY_URL=https://example.com/xxxx.git -p CONTEXT_DIR=rootDir -p KIE_SERVER_CONTAINER_DEPLOYMENT=containerId=G:A:V
parameters:
- displayName: Application Name
  description: The name for the application.
  name: APPLICATION_NAME
  value: myapp
  required: true
- 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 username
  description: Username to access 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: EAP Admin User
  description: EAP administrator username
  name: ADMIN_USERNAME
  value: eapadmin
  required: false
- displayName: EAP Admin Password
  description: EAP administrator password
  name: ADMIN_PASSWORD
  from: "[a-zA-Z]{6}[0-9]{1}!"
  generate: expression
  required: false
- displayName: KIE Admin User
  description: KIE administrator username
  name: KIE_ADMIN_USER
  value: adminUser
  required: false
- displayName: KIE Admin Password
  description: KIE administrator password
  name: KIE_ADMIN_PWD
  from: "[a-zA-Z]{6}[0-9]{1}!"
  generate: expression
  required: false
- displayName: KIE Server User
  description: KIE execution server username (Sets the org.kie.server.user system property)
  name: KIE_SERVER_USER
  value: executionUser
  required: false
- displayName: KIE Server Password
  description: KIE execution server password, used to connect to KIE servers. Generated value can be a suggestion to use for thew s2i various (Sets the org.kie.server.pwd system property)
  name: KIE_SERVER_PWD
  from: "[a-zA-Z]{6}[0-9]{1}!"
  generate: expression
  required: false
- displayName: ImageStream Namespace
  description: Namespace in which the ImageStreams for Red Hat Middleware images are
    installed. These ImageStreams are normally installed in the openshift namespace.
    You should only need to modify this if you've installed the ImageStreams in a
    different namespace/project.
  name: IMAGE_STREAM_NAMESPACE
  value: openshift
  required: true
- displayName: ImageStream Tag
  description: A named pointer to an image in an image stream. Default is "1.0".
  name: IMAGE_STREAM_TAG
  value: "1.0"
  required: false
- displayName: Smart Router Custom http Route Hostname
  description: Custom hostname for http service route.  Leave blank for default hostname, e.g. <application-name>-smartrouter-<project>.<default-domain-suffix>'
  name: SMART_ROUTER_HOSTNAME_HTTP
  value: ''
  required: false
- displayName: Smart Router ID
  description: Router ID used when connecting to the controller (router property org.kie.server.router.id)
  name: KIE_SERVER_ROUTER_ID
  value: kie-server-router
- displayName: Smart Router listening port
  description: Port in which the smart router server listens (router property org.kie.server.router.port)
  name: KIE_SERVER_ROUTER_PORT
  example: "9000"
  required: false
- displayName: Smart Router protocol
  description: KIE server router protocol (Used to build the org.kie.server.router.url.external property)
  name: KIE_SERVER_ROUTER_PROTOCOL
  example: "http"
  required: false
- displayName: Smart Router external URL
  description: Public URL where the router can be found. Format http://<host>:<port>  (router property org.kie.server.router.url.external)
  name: KIE_SERVER_ROUTER_URL_EXTERNAL
- displayName: Smart Router name
  description: Router name used when connecting to the controller (router property org.kie.server.router.name)
  name: KIE_SERVER_ROUTER_NAME
  value: KIE Server Router
- displayName: KIE Server Monitor User
  description: KIE server monitor username (Sets the org.kie.server.controller.user system property)
  name: KIE_SERVER_MONITOR_USER
  value: monitorUser
  required: false
- displayName: KIE Server Monitor Password
  description: KIE server monitor password (Sets the org.kie.server.controller.pwd system property)
  name: KIE_SERVER_MONITOR_PWD
  from: "[a-zA-Z]{6}[0-9]{1}!"
  generate: expression
  required: false
- displayName: JGroups Cluster Password
  description: JGroups Cluster Password, used to establish an EAP cluster on OpenShift
  name: JGROUPS_CLUSTER_PASSWORD
  from: "[a-zA-Z]{6}[0-9]{1}!"
  generate: expression
  required: true
- displayName: KIE MBeans
  description: KIE mbeans enabled/disabled (Sets the kie.mbeans and kie.scanner.mbeans system properties)
  name: KIE_MBEANS
  value: enabled
  required: false
- displayName: Business Central Custom http Route Hostname
  description: 'Custom hostname for http service route.  Leave blank for default hostname,
    e.g.: <application-name>-rhpamcentrmon-<project>.<default-domain-suffix>'
  name: BUSINESS_CENTRAL_HOSTNAME_HTTP
  value: ''
  required: false
- displayName: Business Central Custom https Route Hostname
  description: 'Custom hostname for https service route.  Leave blank for default
    hostname, e.g.: secure-<application-name>-rhpamcentrmon-<project>.<default-domain-suffix>'
  name: BUSINESS_CENTRAL_HOSTNAME_HTTPS
  value: ''
  required: false
- displayName: Business Central Server Keystore Secret Name
  description: The name of the secret containing the keystore file
  name: BUSINESS_CENTRAL_HTTPS_SECRET
  example: businesscentral-app-secret
  required: true
- displayName: Business Central Server Keystore Filename
  description: The name of the keystore file within the secret
  name: BUSINESS_CENTRAL_HTTPS_KEYSTORE
  value: keystore.jks
  required: false
- displayName: Business Central Server Certificate Name
  description: The name associated with the server certificate
  name: BUSINESS_CENTRAL_HTTPS_NAME
  value: jboss
  required: false
- displayName: Business Central Server Keystore Password
  description: The password for the keystore and certificate
  name: BUSINESS_CENTRAL_HTTPS_PASSWORD
  value: mykeystorepass
  required: false
- displayName: Smart Router Custom http Route Hostname
  description: 'Custom hostname for http service route.  Leave blank for default hostname,
    e.g.: <application-name>-rhpamcentrmon-<project>.<default-domain-suffix>'
  name: SMART_ROUTER_HOSTNAME_HTTP
  value: ''
  required: false
- displayName: Business Central Container Memory Limit
  description: Business Central Container memory limit
  name: BUSINESS_CENTRAL_MEMORY_LIMIT
  value: 2Gi
  required: false
- displayName: Smart Router Container Memory Limit
  description: Smart Router Container memory limit
  name: SMART_ROUTER_MEMORY_LIMIT
  value: 512Mi
  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: Business Central Monitoring RH-SSO Client name
  description: Business Central Monitoring RH-SSO Client name
  name: BUSINESS_CENTRAL_SSO_CLIENT
  required: false
- displayName: Business Central Monitoring RH-SSO Client Secret
  description: Business Central Monitoring RH-SSO Client Secret
  name: BUSINESS_CENTRAL_SSO_SECRET
  example: "252793ed-7118-4ca8-8dab-5622fa97d892"
  required: false
- displayName: RH-SSO Realm Admin Username
  description: RH-SSO Realm Admin Username used to create 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
objects:
- kind: Service
  apiVersion: v1
  spec:
    ports:
    - name: http
      port: 8080
      targetPort: 8080
    - name: https
      port: 8443
      targetPort: 8443
    selector:
      deploymentConfig: "${APPLICATION_NAME}-rhpamcentrmon"
  metadata:
    name: "${APPLICATION_NAME}-rhpamcentrmon"
    labels:
      application: "${APPLICATION_NAME}"
      service: "${APPLICATION_NAME}-rhpamcentrmon"
    annotations:
      description: All the Business Central Monitoring web server's ports.
- kind: Service
  apiVersion: v1
  spec:
    clusterIP: "None"
    ports:
    - name: "ping"
      port: 8888
    selector:
      deploymentConfig: "${APPLICATION_NAME}-rhpamcentrmon"
  metadata:
    name: "${APPLICATION_NAME}-rhpamcentrmon-ping"
    labels:
      application: "${APPLICATION_NAME}"
      service: "${APPLICATION_NAME}-rhpamcentrmon"
    annotations:
      service.alpha.kubernetes.io/tolerate-unready-endpoints: "true"
      description: "The JGroups ping port for clustering."
- kind: Service
  apiVersion: v1
  spec:
    ports:
    - port: 9000
      targetPort: 9000
    selector:
      deploymentConfig: "${APPLICATION_NAME}-smartrouter"
  metadata:
    name: "${APPLICATION_NAME}-smartrouter"
    labels:
      application: "${APPLICATION_NAME}"
      service: "${APPLICATION_NAME}-smartrouter"
    annotations:
      description: The smart router server http port.
- kind: Route
  apiVersion: v1
  id: "${APPLICATION_NAME}-rhpamcentrmon-http"
  metadata:
    name: "${APPLICATION_NAME}-rhpamcentrmon"
    labels:
      application: "${APPLICATION_NAME}"
      service: "${APPLICATION_NAME}-rhpamcentrmon"
    annotations:
      description: Route for Business Central Monitoring's http service.
      haproxy.router.openshift.io/timeout: 60s
  spec:
    host: "${BUSINESS_CENTRAL_HOSTNAME_HTTP}"
    to:
      name: "${APPLICATION_NAME}-rhpamcentrmon"
    port:
      targetPort: http
- kind: Route
  apiVersion: v1
  id: "${APPLICATION_NAME}-rhpamcentrmon-https"
  metadata:
    name: "secure-${APPLICATION_NAME}-rhpamcentrmon"
    labels:
      application: "${APPLICATION_NAME}"
      service: "${APPLICATION_NAME}-rhpamcentrmon"
    annotations:
      description: Route for Business Central Monitoring's https service.
      haproxy.router.openshift.io/timeout: 60s
  spec:
    host: "${BUSINESS_CENTRAL_HOSTNAME_HTTPS}"
    to:
      name: "${APPLICATION_NAME}-rhpamcentrmon"
    port:
      targetPort: https
    tls:
      termination: passthrough
- kind: Route
  apiVersion: v1
  id: "${APPLICATION_NAME}-smartrouter-http"
  metadata:
    name: "${APPLICATION_NAME}-smartrouter"
    labels:
      application: "${APPLICATION_NAME}"
      service: "${APPLICATION_NAME}-smartrouter"
    annotations:
      description: Route for Smart Router's http service.
  spec:
    host: "${SMART_ROUTER_HOSTNAME_HTTP}"
    to:
      name: "${APPLICATION_NAME}-smartrouter"
- kind: DeploymentConfig
  apiVersion: v1
  metadata:
    name: "${APPLICATION_NAME}-rhpamcentrmon"
    labels:
      application: "${APPLICATION_NAME}"
      service: "${APPLICATION_NAME}-rhpamcentrmon"
  spec:
    strategy:
      type: Recreate
    triggers:
    - type: ImageChange
      imageChangeParams:
        automatic: true
        containerNames:
        - "${APPLICATION_NAME}-rhpamcentrmon"
        from:
          kind: ImageStreamTag
          namespace: "${IMAGE_STREAM_NAMESPACE}"
          name: "rhpam70-businesscentral-monitoring-openshift:${IMAGE_STREAM_TAG}"
    - type: ConfigChange
    replicas: 1
    selector:
      deploymentConfig: "${APPLICATION_NAME}-rhpamcentrmon"
    template:
      metadata:
        name: "${APPLICATION_NAME}-rhpamcentrmon"
        labels:
          deploymentConfig: "${APPLICATION_NAME}-rhpamcentrmon"
          application: "${APPLICATION_NAME}"
          service: "${APPLICATION_NAME}-rhpamcentrmon"
      spec:
        terminationGracePeriodSeconds: 60
        containers:
        - name: "${APPLICATION_NAME}-rhpamcentrmon"
          image: rhpam70-businesscentral-monitoring-openshift
          imagePullPolicy: Always
          resources:
            limits:
              memory: "${BUSINESS_CENTRAL_MEMORY_LIMIT}"
          volumeMounts:
          - name: businesscentral-keystore-volume
            mountPath: "/etc/businesscentral-secret-volume"
            readOnly: true
          - name: "${APPLICATION_NAME}-rhpamcentr-pvol"
            mountPath: "/opt/eap/standalone/data/bpmsuite"
          livenessProbe:
            exec:
              command:
              - "/bin/bash"
              - "-c"
              - "curl --fail --silent -u '${KIE_ADMIN_USER}:${KIE_ADMIN_PWD}' http://localhost:8080/kie-wb.jsp"
            initialDelaySeconds: 180
            timeoutSeconds: 2
            periodSeconds: 15
          readinessProbe:
            exec:
              command:
              - "/bin/bash"
              - "-c"
              - "curl --fail --silent -u '${KIE_ADMIN_USER}:${KIE_ADMIN_PWD}' http://localhost:8080/kie-wb.jsp"
            initialDelaySeconds: 60
            timeoutSeconds: 2
            periodSeconds: 30
            failureThreshold: 6
          ports:
          - name: jolokia
            containerPort: 8778
            protocol: TCP
          - name: http
            containerPort: 8080
            protocol: TCP
          - name: https
            containerPort: 8443
            protocol: TCP
          - name: ping
            containerPort: 8888
            protocol: TCP
          env:
          - name: KIE_ADMIN_PWD
            value: "${KIE_ADMIN_PWD}"
          - name: KIE_ADMIN_USER
            value: "${KIE_ADMIN_USER}"
          - name: KIE_SERVER_PWD
            value: "${KIE_SERVER_PWD}"
          - name: KIE_SERVER_USER
            value: "${KIE_SERVER_USER}"
          - name: MAVEN_REPO_URL
            value: "${MAVEN_REPO_URL}"
          - name: MAVEN_REPO_USERNAME
            value: "${MAVEN_REPO_USERNAME}"
          - name: MAVEN_REPO_PASSWORD
            value: "${MAVEN_REPO_PASSWORD}"
          - name: ADMIN_USERNAME
            value: "${ADMIN_USERNAME}"
          - name: ADMIN_PASSWORD
            value: "${ADMIN_PASSWORD}"
          - name: KIE_SERVER_CONTROLLER_USER
            value: "${KIE_SERVER_MONITOR_USER}"
          - name: KIE_SERVER_CONTROLLER_PWD
            value: "${KIE_SERVER_MONITOR_PWD}"
          - name: PROBE_IMPL
            value: probe.eap.jolokia.EapProbe
          - name: PROBE_DISABLE_BOOT_ERRORS_CHECK
            value: 'true'
          - name: HTTPS_KEYSTORE_DIR
            value: "/etc/businesscentral-secret-volume"
          - name: HTTPS_KEYSTORE
            value: "${BUSINESS_CENTRAL_HTTPS_KEYSTORE}"
          - name: HTTPS_NAME
            value: "${BUSINESS_CENTRAL_HTTPS_NAME}"
          - name: HTTPS_PASSWORD
            value: "${BUSINESS_CENTRAL_HTTPS_PASSWORD}"
          - name: JGROUPS_PING_PROTOCOL
            value: "openshift.DNS_PING"
          - name: OPENSHIFT_DNS_PING_SERVICE_NAME
            value: "${APPLICATION_NAME}-rhpamcentrmon-ping"
          - name: OPENSHIFT_DNS_PING_SERVICE_PORT
            value: "8888"
          - name: SSO_URL
            value: "${SSO_URL}"
          - name: SSO_OPENIDCONNECT_DEPLOYMENTS
            value: "ROOT.war"
          - name: SSO_REALM
            value: "${SSO_REALM}"
          - name: SSO_SECRET
            value: "${BUSINESS_CENTRAL_SSO_SECRET}"
          - name: SSO_CLIENT
            value: "${BUSINESS_CENTRAL_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: HOSTNAME_HTTP
            value: "${BUSINESS_CENTRAL_HOSTNAME_HTTP}"
          - name: HOSTNAME_HTTPS
            value: "${BUSINESS_CENTRAL_HOSTNAME_HTTPS}"
        volumes:
        - name: businesscentral-keystore-volume
          secret:
            secretName: "${BUSINESS_CENTRAL_HTTPS_SECRET}"
        - name: "${APPLICATION_NAME}-rhpamcentr-pvol"
          persistentVolumeClaim:
            claimName: "${APPLICATION_NAME}-rhpamcentr-claim"
- kind: DeploymentConfig
  apiVersion: v1
  metadata:
    name: ${APPLICATION_NAME}-smartrouter
    labels:
      application: "${APPLICATION_NAME}"
      service: "${APPLICATION_NAME}-smartrouter"
  spec:
    strategy:
      type: Recreate
    triggers:
    - type: ImageChange
      imageChangeParams:
        automatic: true
        containerNames:
        - "${APPLICATION_NAME}-smartrouter"
        from:
          kind: ImageStreamTag
          namespace: "${IMAGE_STREAM_NAMESPACE}"
          name: "rhpam70-smartrouter-openshift:${IMAGE_STREAM_TAG}"
    - type: ConfigChange
    replicas: 2
    selector:
      deploymentConfig: "${APPLICATION_NAME}-smartrouter"
    template:
      metadata:
        name: "${APPLICATION_NAME}-smartrouter"
        labels:
          deploymentConfig: "${APPLICATION_NAME}-smartrouter"
          application: "${APPLICATION_NAME}"
          service: "${APPLICATION_NAME}-smartrouter"
      spec:
        terminationGracePeriodSeconds: 60
        containers:
        - name: "${APPLICATION_NAME}-smartrouter"
          image: rhpam70-smartrouter-openshift
          imagePullPolicy: Always
          resources:
            limits:
              memory: "${SMART_ROUTER_MEMORY_LIMIT}"
          ports:
          - name: http
            containerPort: 9000
            protocol: TCP
          env:
          - name: KIE_SERVER_ROUTER_HOST
            valueFrom:
              fieldRef:
                fieldPath: status.podIP
          - name: KIE_SERVER_ROUTER_PORT
            value: "${KIE_SERVER_ROUTER_PORT}"
          - name: KIE_SERVER_ROUTER_URL_EXTERNAL
            value: "${KIE_SERVER_ROUTER_URL_EXTERNAL}"
          - name: KIE_SERVER_ROUTER_ID
            value: "${KIE_SERVER_ROUTER_ID}"
          - name: KIE_SERVER_ROUTER_NAME
            value: "${KIE_SERVER_ROUTER_NAME}"
          - name: KIE_SERVER_ROUTER_PROTOCOL
            value: "${KIE_SERVER_ROUTER_PROTOCOL}"
          - name: KIE_SERVER_CONTROLLER_USER
            value: "${KIE_SERVER_MONITOR_USER}"
          - name: KIE_SERVER_CONTROLLER_PWD
            value: "${KIE_SERVER_MONITOR_PWD}"
          - name: KIE_SERVER_CONTROLLER_SERVICE
            value: "${APPLICATION_NAME}-rhpamcentrmon"
          - name: KIE_SERVER_ROUTER_REPO
            value: "/opt/rhpam-smartrouter/data"
          - name: KIE_SERVER_ROUTER_CONFIG_WATCHER_ENABLED
            value: "true"
          volumeMounts:
          - name: "${APPLICATION_NAME}-smartrouter"
            mountPath: "/opt/rhpam-smartrouter/data"
        volumes:
        - name: "${APPLICATION_NAME}-smartrouter"
          persistentVolumeClaim:
            claimName: "${APPLICATION_NAME}-smartrouter-claim"
- apiVersion: v1
  kind: PersistentVolumeClaim
  metadata:
    name: "${APPLICATION_NAME}-smartrouter-claim"
    labels:
      application: "${APPLICATION_NAME}"
      service: "${APPLICATION_NAME}-smartrouter"
  spec:
    accessModes:
    - ReadWriteMany
    resources:
      requests:
        storage: "64Mi"
- apiVersion: v1
  kind: PersistentVolumeClaim
  metadata:
    name: "${APPLICATION_NAME}-rhpamcentr-claim"
    labels:
      application: "${APPLICATION_NAME}"
      service: "${APPLICATION_NAME}-rhpamcentrmon"
  spec:
    accessModes:
    - ReadWriteMany
    resources:
      requests:
        storage: "64Mi"
