Installing Fabric Containers using Helm Charts

Follow these steps to Install Quantum Fabric on MS Azure using Helm Charts

  • fabric: This artifact is used to deploy Quantum Fabric

  • fabric-dbinit: This artifact is used to create a database and insert tables to the Fabric database server

1. Creating Database and Tables

Create the database and insert tables in it as follows:

Syntax:

helm install [NAME] [CHART] [flags]

Sample command:

helm install fabricdbinit fabric-dbinit --wait --timeout 12m

2. Updating Fabric-dbinit/values.yaml File:

Update the following values in the fabric-dbinit/values.yaml file before installing.

# fabric: This artifact is used to deploy Quantum Fabric
# fabric-dbinit: This artifact is used to create a database and insert tables to the Fabric database server

# The command for creating database and insert tables:
# helm install fabricdbinit fabric-dbinit --wait --timeout 12m

global:
  env_name: "Installation environment name- dev,qa, prod and so on."

  image:
		tag: "This should correspond to the Fabric Docker image version you are planning to install/upgrade."
		registry: "give the registry name where the images are stored"
		pullsecret: "create a secret for the registry and give the secret name"
pass_secret: "database password"
repository: "repository where the images are available"
environment: "Provide the deployment environment. Possible values are: aks for azure, eks for AWS, openshift for openshift, kubernetes for Kubernetes"


fabric:
  buildVer: "The build version of Fabric that you want to install."
  buildType: "The type of Fabric environment that must be created. For production environments, the value must be PRODUCTION. For dev, QA, or other non-production environments, the value must be NON-PRODUCTION."
  workspaceBaseUrl: "Path for workspace URL. Default value is workspace."
  domainName: "The Domain Name for Quantum Fabric. This value should be the hostname of the LoadBalancer. For example: abc.companyname (DNS name)."
  serverPort: "Port for Quantum Fabric"
  dockerPort: "Port used by the container"
  comProtocol: "The communication protocol for Quantum Fabric. This value can be either http or https."
  logLocation: "If writing logs to file, location for the logs within the pod"
  logOption: "console to redirect logs to pod logs, file to write to a file in the log location"
  logLevel: "To set the log level. DEBUG, INFO, ERROR, etc."

  db:
  	host: "This is the Database Server hostname used to connect to the Database Server."
  	type: "This is the Database type you want to use for hosting Quantum Fabric. The possible values are: MYSQL for MYSQL DB SERVER, MSSQL for MSSQL DB SERVER, sqlserversingledb for MSSQL single db, postgresql for Postgresql DB SERVER, oracle for Oracle DB SERVER"
  	port: "This is the Port Number used to connect to the Database Server."
  	prefix: "This is the Database server prefix for Quantum Fabric Schemas/Databases."
  	suffix: "This is the Database server suffix for Quantum Fabric Schemas/Databases."
  	user: "This is the Database Username used to connect to the Database Server."
  	pass: "This is the database password"
  	dataTableSpace: "Database Data tablespace name (if db.type is oracle)."
  	dataIndexSpace: "Database Index tablespace name (if db.type is oracle)."
  	dataLobSpace: "Database LOB tablespace name (if db.type is oracle)."
  	service: "Database service name (if db.type is oracle)."
  	dialect: "This is the dialect for the database. Possible values are: org.hibernate.dialect.MySQLDialect for MYSQL, org.hibernate.dialect.SQLServerDialect for MSSQL, org.hibernate.dialect.PostgreSQL95Dialect for Postgresql, org.hibernate.dialect.Oracle10gDialect for Oracle"
  	driver: "This is the driver for the database. Possible values are: com.mysql.cj.jdbc.Driver for MYSQL, com.microsoft.sqlserver.jdbc.SQLServerDriver for MSSQL, org.postgresql.Driver for Postgresql, oracle.jdbc.driver.OracleDriver for Oracle"
  	collation: "Collation to be used for the database. Possible values are: com.mysql.cj.jdbc.Driver for MYSQL, com.microsoft.sqlserver.jdbc.SQLServerDriver for MSSQL, org.postgresql.Driver for Postgresql, oracle.jdbc.driver.OracleDriver for Oracle"
  	connect_options: "Parameters to be used for database connection. Possible values are: ?relaxAutoCommit=true&autoReconnect=true&useSSL=true&enabledTLSProtocols=TLSv1.2&characterEncoding=utf8 for MYSQL, sendStringParametersAsUnicode=true for MSSQL, autoReconnect=true&useSSL=false for Postgresql, Provide empty value for Oracle"
  	isMysqlCluster: "If using Mysql cluster then set this to true else false."
  	AWS_JDBC_WRAPPER_ENABLED: "Set to true only for AWS Postgres configured with IAM, else false."
  	AWS_RDS_REGION: "Set this value only for AWS Postgres configured with IAM. Provide the region of the postgres db."
  timezone: "The Time Zone of the Database used for Quantum Fabric installation."

  tomcat:
  	mgrpass_secret: "Password for Tomcat manager"

identity:
  master_key: "To provide Guid for identity"

console:
  master_key: "To provide Guid for console"

akv:
  enabled: "Make it true using this feature. Else leave it empty."
  name: "Name of the Key Vault."
  tenantID: "Provide the Azure tenant ID."
  aksIdentityID: "client id of the cluster"

cacert:
  enabled: "Set it to true when using a custom certificate."

NOTE: DB pod execution should be completed before installing Fabric.

The command for deploying the Fabric component pods.

helm install fabric fabric

3. Updating Fabric/values.yaml File:

Update the following values in the fabric/values.yaml file before installing.


global:
  env_name: "Installation environment name- dev,qa, prod and so on."

  image:
  	tag: "This should correspond to the Fabric Docker image version you are planning to install/upgrade."
  	registry: "give the registry name where the images are stored"
  	pullsecret: "create a secret for the registry and give the secret name"
pass_secret: "database password"
repository: "repository where the images are available"
environment: "Provide the deployment environment. Possible values are: aks for azure, eks for AWS, openshift for openshift, kubernetes for Kubernetes"

serviceAccount:
  enabled: "To use a specific service account, make it true"
  name: "The name of the service account to use. If not set then a service account fabric-sa will be created"

networkpolicy:
  enabled: "If true then a network policy will be applied"

reports:
  dbpass: "This is the reports database password"

newrelic:
  javaOpts: "Java options used for configuring the New Relic Java agent."


networkpolicy:
        enabled - If true then a network policy will be applied
fabric:
  buildVer - The build version of Fabric that you want to install.
  buildType - The type of Fabric environment that must be created. For production environments, the value must be PRODUCTION. For dev, QA, or other non-production environments, the value must be NON-PRODUCTION.
  workspaceBaseUrl - Path for workspace URL. Default value is workspace.
  domainName - The Domain Name for Quantum Fabric. This value should be the hostname of the LoadBalancer. For example: abc.companyname (DNS name).
  serverPort - Port for Quantum Fabric
  gatewayPrivateIP - IP address of the load balancer. If not using a load balancer leave it empty.
  dockerPort - Port used by the container
  comProtocol - The communication protocol for Quantum Fabric. This value can be either http or https.
  TOMCAT_SAMESITE_COOKIES - Cookie Processor Configuration
	                        The possible values are:
			                       To not set same site cookie attribute, use Unset
			                       To always send cookie in cross-site requests, use None
			                       To send cookie in same-site requests and cross-site top level GET requests, use Lax
			                       To prevent sending the cookie in any cross-site request, use Strict
  HTTP_COMPRESSION - HTTP Compression Configuration; to enable http compression set to on and to disable set to off. Default is on.
  logLocation - If writing logs to file, location for the logs within the pod
  logOption - console to redirect logs to pod logs, file to write to a file in the log location
  logLevel - To set the log level. DEBUG, INFO, ERROR, etc.
  enableHeapDump - To enable heap dump make it true

  db:
		host - This is the Database Server hostname used to connect to the Database Server.
		pass - This is the database password
		type - This is the Database type you want to use for hosting Quantum Fabric. 
			    The possible values are:
 				        "MYSQL" for MYSQL DB SERVER
 				        "MSSQL" for MSSQL DB SERVER
 				        "sqlserversingledb" for MSSQL single db
 				        "postgresql" for Postgresql DB SERVER
 				        "oracle" for Oracle DB 
		If db.type is set as oracle, the following String values need to be provided:
		    dataTableSpace: Database Data tablespace name.
		    dataIndexSpace: Database Index tablespace name.
		    dataLobSpace: Database LOB tablespace name.
		    service: Database service name.

		port - This is the Port Number used to connect to the Database Server.
		prefix - This is the Database server prefix for Quantum Fabric Schemas/Databases.
		suffix - This is the Database server suffix for Quantum Fabric Schemas/Databases.
		user - This is the Database Username used to connect to the Database Server.
		dialect - This is the dialect for the database.
		          The possible values are:		
			            org.hibernate.dialect.MySQLDialect for MYSQL
			            org.hibernate.dialect.SQLServerDialect for MSSQL
			            org.hibernate.dialect.PostgreSQL95Dialect for Postgresql
			            org.hibernate.dialect.Oracle10gDialect for Oracle
		driver - This is the driver for the database.
		         The possible values are :
			            com.mysql.cj.jdbc.Driver for MYSQL
			            com.microsoft.sqlserver.jdbc.SQLServerDriver for MSSQL
			            org.postgresql.Driver for Postgresql
			            oracle.jdbc.driver.OracleDriver for Oracle
		collation - Collation to be used for the database. 
		            The possible values are:
			            com.mysql.cj.jdbc.Driver for MYSQL
			            com.microsoft.sqlserver.jdbc.SQLServerDriver for MSSQL
			            org.postgresql.Driver for Postgresql
			            oracle.jdbc.driver.OracleDriver for Oracle
		connect_options - Parameters to be used for database connection.
		                  The possible values are:
			                      ?relaxAutoCommit=true&autoReconnect=true&useSSL=true&enabledTLSProtocols=TLSv1.2&characterEncoding=utf8 for MYSQL
			                      sendStringParametersAsUnicode=true for MSSQL
			                      autoReconnect=true&useSSL=false for Postgresql
			                      Provide empty value for Oracle
		isMysqlCluster - If using Mysql cluster then set this to true else false.
		AWS_JDBC_WRAPPER_ENABLED - Set to true only for AWS Postgres configured with IAM, else false.
		AWS_RDS_REGION - Set this value only for AWS Postgres configured with IAM. Provide the region of the postgres db.
   
  timezone - The Time Zone used for Quantum Fabric installation. 
  tomcat:
          mgrpass_secret - Password for Tomcat manager
  reports:
          dbpass - This is the reports database password
  newrelic:
          javaOpts - Java options used for configuring the New Relic Java agent.

-------------------------------------------------------------------------------------

identity:
            replicaCount - Desired number of replicas of the identity pod.
            maxSurge - It specifies the maximum number of additional pods that can be created above the desired number of pods during a rolling update.
            maxUnavailable - It specifies the maximum number of pods that can be unavailable during a rolling update.
            Image:
               repository - Repository of the identity image
            readinessInitDelay -  It specifies the number of seconds Kubernetes should wait after the container starts before beginning to check its readiness.
            livenessInitDelay - It specifies the number of seconds Kubernetes should wait after the container starts before beginning to check its liveness.
            resources:
               memoryLimit - It defines the maximum amount of memory that a container can use.
               memoryRequest - It defines the minimum amount of memory required for the container to run.
               cpuRequest - It defines the minimum amount of CPU resources required for the container to run.
            minRam - The minimum amount of memory that the JVM within a container should use.
            maxRam - The maximum amount of memory that the JVM within a container is allowed to use.
            autoscaling - To automatically adjust the number of instances based on metrics.
                 enabled - Set it to true to enable it.
                 minReplicas - It specifies the minimum number of replicas that should be maintained, regardless of the observed metrics.
                 maxReplicas - It specifies the maxmium number of replicas it can scale upto.
                 targetCPUUtilizationPercentage - It specifies the desired level of CPU utilization to maintain
            customJavaOpts - Custom java options for identity pod. 
            redis- Set these values when using Redis for caching purpose
               host - Host of the Redis cache
               port - Port of the Redis server
               password - Password to connect to the Redis server
            db:
               dataSource - Possible values are
                  com.mysql.cj.jdbc.MysqlDataSource for MYSQL
                  com.microsoft.sqlserver.jdbc.SQLServerDataSource for MSSQL
                  org.postgresql.ds.PGSimpleDataSource for Postgres
                  oracle.jdbc.pool.OracleDataSource for Oracle
               dialect - Possible values are
                  org.hibernate.dialect.MySQLDialect for MYSQL
                  org.hibernate.dialect.SQLServerDialect for MSSQL
                  org.hibernate.dialect.PostgreSQL95Dialect for Postgres
                  org.hibernate.dialect.Oracle10gDialect for Oracle
            master_key - To provide Guid for identity
            master_key_id - A guid needs to be provided. master_key and master_key_id needs to different.
            enableRedisSsl - It indicates whether SSL/TLS encryption should be enabled for connections to a Redis.

----------------------------------------------------------------------------------------------

console:
        replicaCount - Desired number of replicas of the console pod.
        maxSurge - It specifies the maximum number of additional pods that can be created above the desired number of pods during a rolling update.
        maxUnavailable - It specifies the maximum number of pods that can be unavailable during a rolling update.
        image:
           repository - Repository of the console image
        readinessInitDelay -  It specifies the number of seconds Kubernetes should wait after the container starts before beginning to check its readiness.
        livenessInitDelay - It specifies the number of seconds Kubernetes should wait after the container starts before beginning to check its liveness.
        resources:
           memoryLimit - It defines the maximum amount of memory that a container can use.
           memoryRequest - It defines the minimum amount of memory required for the container to run.
           cpuRequest - It defines the minimum amount of CPU resources required for the container to run.
         minRam - The minimum amount of memory that the JVM within a container should use.
         maxRam - The maximum amount of memory that the JVM within a container is allowed to use.
         autoscaling - To automatically adjust the number of instances based on metrics.
           enabled - Set it to true to enable it.
           minReplicas - It specifies the minimum number of replicas that should be maintained, regardless of the observed metrics.
           maxReplicas - It specifies the maxmium number of replicas it can scale upto.
           targetCPUUtilizationPercentage - It specifies the desired level of CPU utilization to maintain
         customJavaOpts - Custom java options for console pod. 
         master_key - To provide Guid for console
         master_key_id - A guid needs to be provided. master_key and master_key_id needs to different.

-------------------------------------------------------------------------------

apiportal:
      replicaCount - Desired number of replicas of the apiportal pod.
      maxSurge - It specifies the maximum number of additional pods that can be created above the desired number of pods during a rolling update.
      maxUnavailable - It specifies the maximum number of pods that can be unavailable during a rolling update.
      image:
         repository - Repository of the apiportal image
      readinessInitDelay -  It specifies the number of seconds Kubernetes should wait after the container starts before beginning to check its readiness.
      livenessInitDelay - It specifies the number of seconds Kubernetes should wait after the container starts before beginning to check its liveness.
      resources:
         memoryLimit - It defines the maximum amount of memory that a container can use.
         memoryRequest - It defines the minimum amount of memory required for the container to run.
         cpuRequest - It defines the minimum amount of CPU resources required for the container to run.
      minRam - The minimum amount of memory that the JVM within a container should use.
      maxRam - The maximum amount of memory that the JVM within a container is allowed to use.
      autoscaling - To automatically adjust the number of instances based on metrics.
         enabled - Set it to true to enable it.
         minReplicas - It specifies the minimum number of replicas that should be maintained, regardless of the observed metrics.
         maxReplicas - It specifies the maxmium number of replicas it can scale upto.
         targetCPUUtilizationPercentage - It specifies the desired level of CPU utilization to maintain
      customJavaOpts - Custom java options for apiportal pod. 

-------------------------------------------------------------------------------

integration:
       replicaCount - Desired number of replicas of the integration pod.
       maxSurge - It specifies the maximum number of additional pods that can be created above the desired number of pods during a rolling update.
       maxUnavailable - It specifies the maximum number of pods that can be unavailable during a rolling update.
       image:
           repository - Repository of the integration image
       readinessInitDelay -  It specifies the number of seconds Kubernetes should wait after the container starts before beginning to check its readiness.
       livenessInitDelay - It specifies the number of seconds Kubernetes should wait after the container starts before beginning to check its liveness.
       resources:
           memoryLimit - It defines the maximum amount of memory that a container can use.
           memoryRequest - It defines the minimum amount of memory required for the container to run.
           cpuRequest - It defines the minimum amount of CPU resources required for the container to run.
       minRam - The minimum amount of memory that the JVM within a container should use.
       maxRam - The maximum amount of memory that the JVM within a container is allowed to use.
       autoscaling - To automatically adjust the number of instances based on metrics.
           enabled - Set it to true to enable it.
           minReplicas - It specifies the minimum number of replicas that should be maintained, regardless of the observed metrics.
           maxReplicas - It specifies the maxmium number of replicas it can scale upto.
           targetCPUUtilizationPercentage - It specifies the desired level of CPU utilization to maintain.
       enableRedisSsl - It indicates whether SSL/TLS encryption should be enabled for connections to a Redis.
       redis: Set these values when using Redis for caching purpose
              host - Host of the Redis cache
              port - Port of the Redis server
       advancedProps - advanced properties to customize redis
              REDIS_PASSWORD - Password to connect to the redis server
       customJavaOpts - Custom java options for integration pod. 

------------------------------------------------------------------------

engagement:
        replicaCount - Desired number of replicas of the engagement pod.
        maxSurge - It specifies the maximum number of additional pods that can be created above the desired number of pods during a rolling update.
        maxUnavailable - It specifies the maximum number of pods that can be unavailable during a rolling update.
        image:
             repository - Repository of the engagement image
        readinessInitDelay -  It specifies the number of seconds Kubernetes should wait after the container starts before beginning to check its readiness.
        livenessInitDelay - It specifies the number of seconds Kubernetes should wait after the container starts before beginning to check its liveness.
        resources:
             memoryLimit - It defines the maximum amount of memory that a container can use.
             memoryRequest - It defines the minimum amount of memory required for the container to run.
             cpuRequest - It defines the minimum amount of CPU resources required for the container to run.
        db:
       	     delegateClass - Possible values are
                org.quartz.impl.jdbcjobstore.StdJDBCDelegate for MYSQL
                org.quartz.impl.jdbcjobstore.PostgreSQLDelegate for postgresql
                org.quartz.impl.jdbcjobstore.MSSQLDelegate for MSSQL
                org.quartz.impl.jdbcjobstore.StdJDBCDelegate for Oracle

        minRam - The minimum amount of memory that the JVM within a container should use.
        maxRam - The maximum amount of memory that the JVM within a container is allowed to use.
        autoscaling - To automatically adjust the number of instances based on metrics.
             enabled - Set it to true to enable it.
             minReplicas - It specifies the minimum number of replicas that should be maintained, regardless of the observed metrics.
             maxReplicas - It specifies the maxmium number of replicas it can scale upto.
             targetCPUUtilizationPercentage - It specifies the desired level of CPU utilization to maintain
             targetCPUUtilizationPercentage - It specifies the desired level of CPU utilization to maintain
        customJavaOpts - Custom java options for engagement pod. 

-------------------------------------------------------------------------------------------------

Controller: - To provide controller information
              spec:
                host - Domain name to access the services
                loadBalancerID - IP address of the load balancer. If not using a load balancer leave it empty.

Ingress: - For Specifying the ingress controller information
              deployController - Enable deployment of the Nginx Ingress Controller by setting this to true
              host - Domain name to access the services
              sslName – Provide the Application gateway SSL certificate name for secure HTTPS traffic when the application is hosted behind a gateway. The certificate needs to be available in the Key Vault.
              usePrivateIp - Set to true when using a private address

akv: - To be used when using Azure Key Vault.
        enabled - Make it true when using this feature. Else leave it empty.
        name - Name of the Key Vault.	
        tenantID - Provide the Azure tenant ID.
        aksIdentityID – It refers to the client id of the cluster. It needs to be enabled explicitly using the following command:
                           az aks update --resource-group <resource-group-name> --name <aks-cluster-name> --enable-managed-identity
                           It can be retrieved with this command:
                           az aks show -g <resource-group-name> -n <aks-cluster-name> --query identityProfile.kubeletidentity.clientId -o tsv

cacert: - Set these values when using a custom CA certificate
            enabled - Set to true to enable custom CA certificate
            path - Provide the relative path to the cacerts file within the helm directory, to set up custom truststore in the pods. The cacerts file should be present within the fabric Helm chart directory.