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.