Difference between revisions of "Draft: PEC-REP/Current/RAAPEGuide/Planning"

From Genesys Documentation
Jump to: navigation, search
m (undefined (Saved using "Save and continue" button in form))
(undefined (Saved using "Save and continue" button in form))
Line 1: Line 1:
 
{{PEPrerequisites
 
{{PEPrerequisites
 
|DisplayName=Before you begin
 
|DisplayName=Before you begin
|Context=Find out what to do before deploying <service_name>.
+
|Context=Find out what to do before deploying Reporting and Analytics Aggregates (RAA).
 
|LimitationsText=RAA container works with the Genesys Info Mart database. The Genesys Info Mart database scheme must correspond to a compatible Genesys Info Mart version. Execute the following command to discover the required Genesys Info Mart release:
 
|LimitationsText=RAA container works with the Genesys Info Mart database. The Genesys Info Mart database scheme must correspond to a compatible Genesys Info Mart version. Execute the following command to discover the required Genesys Info Mart release:
 
  docker run -it --entrypoint /bin/java gcxi/raa:<IMAGE_VERSION> -jar GIMAgg.jar -version
 
  docker run -it --entrypoint /bin/java gcxi/raa:<IMAGE_VERSION> -jar GIMAgg.jar -version
Line 18: Line 18:
 
|Notes=Some notes about Redis for this deployment.
 
|Notes=Some notes about Redis for this deployment.
 
}}
 
}}
|StorageText=<div style="background-color: aliceblue; font-style: italic;">Describe storage requirements, including:
+
|StorageText==== GIM secret volume ===
 +
RAA mounts as volume secret with GIM connections details when <code class="yml variable">raa.env.GCXI_GIM_DB__JSON</code> is not specified. GIM database connection details can be declared as k8s secret:
  
*Size
+
'''gimsecret.yaml'''
*Type (HDD, SDD, NVMe)
+
{{{!}} class="wikitable" border="0" cellpadding="0" cellspacing="0"
*IOPS
+
{{!}} class="code" {{!}}<code class="yml variable">apiVersion:</code> <code class="yml plain">v1</code>
*Latency sensitive (local vs netapp disk)
 
*Specific requirements for third-party services, including HA setup, connectivity, expected sizing and scaling models
 
*List which data/PVC storage are critical and need to be backed up for redundancy and data protection.
 
</div>
 
|NetworkText=<div style="background-color: aliceblue; font-style: italic;">Describe network requirements, including:
 
  
*Required properties for ingress, such as:
+
<code class="yml variable">kind:</code> <code class="yml plain">Secret</code>
**Cookies usage
+
 
**Header requirements (client IP and redirect, passthrough)
+
<code class="yml variable">metadata:</code>
**Session stickiness
+
 
**Allowlisting (optional)
+
<code class="yml spaces"> </code><code class="yml variable">namespace:</code> <code class="yml plain">gcxi</code>
**TLS (optional)
+
 
*Cross-region bandwidth
+
<code class="yml spaces"> </code><code class="yml variable">name:</code> <code class="yml plain">gim-secret</code>
*External connections from the Kubernetes cluster to other systems. This includes connecting to Genesys Cloud for hybrid services (such as AI, WEM) as well as "mixed" environments where some components are still deployed as VMs. Note that mixed environments are mainly for transition periods when customers migrate from a classic premise environment to Genesys Engage cloud private edition.
+
 
*WAF Rules (specific only for services handling internet traffic)
+
<code class="yml variable">type:</code> <code class="yml plain">kubernetes.io/service-account-token</code>
*Pod Security Policy
+
 
*TLS/SSL Certificate configurations
+
<code class="yml variable">data:</code>
</div>
+
 
 +
<code class="yml spaces"> </code><code class="yml variable">json_credentials:</code> <code class="yml plain">eyJqZGJjX3VybCI6ImpkYmM6cG9zdGdyZXNxbDovLzxob3N0Pjo1NDMyLzxnaW1fZGF0YWJhc2U+IiwgImRiX3VzZXJuYW1lIjoiPHVzZXI+IiwgImRiX3Bhc3N3b3JkIjoiPHBhc3N3b3JkPiJ9Cg==</code>
 +
{{!}}}
 +
and reference in values.yaml
 +
 
 +
'''myvalues.yaml'''
 +
{{{!}} class="wikitable" border="0" cellpadding="0" cellspacing="0"
 +
{{!}} class="code" {{!}}<code class="yml plain">raa</code>
 +
 
 +
<code class="yml spaces"> </code><code class="yml plain">...</code>
 +
 
 +
<code class="yml spaces"> </code><code class="yml variable">volumes:</code>
 +
 
 +
<code class="yml spaces">   </code><code class="yml plain">...</code>
 +
 
 +
<code class="yml spaces">   </code><code class="yml variable">gimSecret:</code>
 +
 
 +
<code class="yml spaces">     </code><code class="yml variable">name:</code> <code class="yml string">"gim-secret-volume"</code>
 +
 
 +
<code class="yml spaces">     </code><code class="yml variable">secretName:</code> <code class="yml string">"gim-secret"</code>
 +
 
 +
<code class="yml spaces">     </code><code class="yml variable">jsonFile:</code> <code class="yml string">"json_credentials"</code>
 +
 
 +
<code class="yml spaces"> </code> <code class="yml plain">...</code>
 +
{{!}}}
 +
CSI secret can be mounted via secretProviderClass alternatively
 +
 
 +
'''myvalues.yaml'''
 +
{{{!}} class="wikitable" border="0" cellpadding="0" cellspacing="0"
 +
{{!}} class="code" {{!}}<code class="yml plain">raa</code>
 +
 
 +
<code class="yml spaces"> </code><code class="yml plain">...</code>
 +
 
 +
<code class="yml spaces"> </code><code class="yml variable">volumes:</code>
 +
 
 +
<code class="yml spaces">   </code><code class="yml plain">...</code>
 +
 
 +
<code class="yml spaces">   </code><code class="yml variable">gimSecret:</code>
 +
 
 +
<code class="yml spaces">     </code><code class="yml variable">name:</code> <code class="yml string">"gim-secret-volume"</code>
 +
 
 +
<code class="yml spaces">     </code><code class="yml variable">secretProviderClass:</code> <code class="yml string">"gim-secret-class"</code>
 +
 
 +
<code class="yml spaces">     </code><code class="yml variable">jsonFile:</code> <code class="yml string">"json_credentials"</code>
 +
 
 +
<code class="yml spaces"> </code> <code class="yml plain">...</code>
 +
{{!}}}
 +
 
 +
=== Config volume ===
 +
RAA mounts a config volume as /genesys/raa_config folder inside container. The folder is considered as a work dir and used by RAA for reading of the following files at startup:
 +
 
 +
*    '''conf.xml''' contains configuration of application level config settings (see [https://intranet.genesys.com/display/RP/RAA+configuration+in+Azure RAA configuration in Azure] discovers the details of conf.xml)
 +
*    custom '''*.ss''' files (see [https://docs.genesys.com/Documentation/RAA/8.5.0/UG/CustomAgg How Do I Customize Queries and Hierarchies?] for details)
 +
*    JDBC driver from lib/jdbc_driver_<RDBMS> (see [https://docs.genesys.com/Documentation/RAA/9.0.0/Dep/PostInstall#JDBCDriverForRAA Procedure: Configuring the JDBC Driver for RAA] for details)
 +
 
 +
Usually RAA does not create any files here at runtime so the volume does not requires a superfast storage class.
 +
 
 +
Size limit is set to 50M by default. The storage class and size limit can be specified in values:
 +
 
 +
'''myvalues.yaml'''
 +
{{{!}} class="wikitable" border="0" cellpadding="0" cellspacing="0"
 +
{{!}} class="code" {{!}}<code class="yml plain">raa</code>
 +
 
 +
<code class="yml spaces"> </code><code class="yml plain">...</code>
 +
 
 +
<code class="yml spaces"> </code><code class="yml variable">volumes:</code>
 +
 
 +
<code class="yml spaces">   </code><code class="yml plain">...</code>
 +
 
 +
<code class="yml spaces">   </code><code class="yml variable">config:</code>
 +
 
 +
<code class="yml spaces">     </code><code class="yml variable">capacity:</code> <code class="yml plain">50Mi</code>
 +
 
 +
<code class="yml spaces">     </code><code class="yml variable">storageClassName:</code> <code class="yml string">"<vendor storage class>"</code>
 +
 
 +
<code class="yml spaces">   </code><code class="yml plain">...</code>
 +
{{!}}}
 +
RAA helm chart creates Persistent Volume Claim. It can also optionally create a Persistent Volume (when <code class="yml variable">raa.volumes.config.pv</code> is specified). See how Persistent Volume declared in helm chart:
 +
 
 +
'''raa-config-volume.yaml'''
 +
{{{!}} class="wikitable" border="0" cellpadding="0" cellspacing="0"
 +
{{!}} class="code" {{!}}<code class="yml constants"><nowiki>{{</nowiki></code><code class="yml plain">- with .Values.raa.volumes.config.pv</code> <code class="yml constants"><nowiki>}}</nowiki></code>
 +
 
 +
<code class="yml variable">apiVersion:</code> <code class="yml plain">v1</code>
 +
 
 +
<code class="yml variable">kind:</code> <code class="yml plain">PersistentVolume</code>
 +
 
 +
<code class="yml variable">metadata:</code>
 +
 
 +
<code class="yml spaces"> </code><code class="yml variable">name:</code> <code class="yml string">"<nowiki>{{ tpl .name $ }}</nowiki>"</code>
 +
 
 +
<code class="yml spaces"> </code><code class="yml constants"><nowiki>{{</nowiki></code><code class="yml plain">- if or ($.Values.raa.labels) (.labels)</code> <code class="yml constants"><nowiki>}}</nowiki></code>
 +
 
 +
<code class="yml spaces"> </code><code class="yml variable">labels:</code>
 +
 
 +
<code class="yml spaces"> </code> <code class="yml constants"><nowiki>{{</nowiki></code><code class="yml plain">- with $.Values.raa.labels</code> <code class="yml constants"><nowiki>}}</nowiki></code>
 +
 
 +
<code class="yml spaces">   </code><code class="yml constants"><nowiki>{{</nowiki></code><code class="yml plain">- range $key</code><code class="yml constants">,</code> <code class="yml plain">$value</code> <code class="yml constants">:</code><code class="yml plain">= .</code> <code class="yml constants"><nowiki>}}</nowiki></code>
 +
 
 +
<code class="yml spaces">   </code><code class="yml constants"><nowiki>{{</nowiki></code> <code class="yml plain">$key</code> <code class="yml constants"><nowiki>}}:</nowiki></code> <code class="yml string">"<nowiki>{{ tpl $value $ }}</nowiki>"</code>
 +
 
 +
<code class="yml spaces">   </code><code class="yml constants"><nowiki>{{</nowiki></code><code class="yml plain">- end</code> <code class="yml constants"><nowiki>}}</nowiki></code>
 +
 
 +
<code class="yml spaces"> </code> <code class="yml constants"><nowiki>{{</nowiki></code><code class="yml plain">- end</code> <code class="yml constants"><nowiki>}}</nowiki></code>
 +
 
 +
<code class="yml spaces"> </code> <code class="yml constants"><nowiki>{{</nowiki></code><code class="yml plain">- with .labels</code> <code class="yml constants"><nowiki>}}</nowiki></code>
 +
 
 +
<code class="yml spaces">   </code><code class="yml constants"><nowiki>{{</nowiki></code><code class="yml plain">- range $key</code><code class="yml constants">,</code> <code class="yml plain">$value</code> <code class="yml constants">:</code><code class="yml plain">= .</code> <code class="yml constants"><nowiki>}}</nowiki></code>
 +
 
 +
<code class="yml spaces">   </code><code class="yml constants"><nowiki>{{</nowiki></code> <code class="yml plain">$key</code> <code class="yml constants"><nowiki>}}:</nowiki></code> <code class="yml string">"<nowiki>{{ tpl $value $ }}</nowiki>"</code>
 +
 
 +
<code class="yml spaces">   </code><code class="yml constants"><nowiki>{{</nowiki></code><code class="yml plain">- end</code> <code class="yml constants"><nowiki>}}</nowiki></code>
 +
 
 +
<code class="yml spaces"> </code> <code class="yml constants"><nowiki>{{</nowiki></code><code class="yml plain">- end</code> <code class="yml constants"><nowiki>}}</nowiki></code>
 +
 
 +
<code class="yml spaces"> </code><code class="yml constants"><nowiki>{{</nowiki></code><code class="yml plain">- end</code> <code class="yml constants"><nowiki>}}</nowiki></code>
 +
 
 +
 
 +
<code class="yml spaces"> </code><code class="yml constants"><nowiki>{{</nowiki></code><code class="yml plain">- if or ($.Values.raa.annotations) (.annotations)</code> <code class="yml constants"><nowiki>}}</nowiki></code>
 +
 
 +
<code class="yml spaces"> </code><code class="yml variable">annotations:</code>
 +
 
 +
<code class="yml spaces"> </code> <code class="yml constants"><nowiki>{{</nowiki></code><code class="yml plain">- with $.Values.raa.annotations</code> <code class="yml constants"><nowiki>}}</nowiki></code>
 +
 
 +
<code class="yml spaces">   </code><code class="yml constants"><nowiki>{{</nowiki></code><code class="yml plain">- range $key</code><code class="yml constants">,</code> <code class="yml plain">$value</code> <code class="yml constants">:</code><code class="yml plain">= .</code> <code class="yml constants"><nowiki>}}</nowiki></code>
 +
 
 +
<code class="yml spaces">   </code><code class="yml constants"><nowiki>{{</nowiki></code> <code class="yml plain">$key</code> <code class="yml constants"><nowiki>}}:</nowiki></code> <code class="yml string">"<nowiki>{{ tpl $value $ }}</nowiki>"</code>
 +
 
 +
<code class="yml spaces">   </code><code class="yml constants"><nowiki>{{</nowiki></code><code class="yml plain">- end</code> <code class="yml constants"><nowiki>}}</nowiki></code>
 +
 
 +
<code class="yml spaces"> </code> <code class="yml constants"><nowiki>{{</nowiki></code><code class="yml plain">- end</code> <code class="yml constants"><nowiki>}}</nowiki></code>
 +
 
 +
<code class="yml spaces"> </code> <code class="yml constants"><nowiki>{{</nowiki></code><code class="yml plain">- with .annotations</code> <code class="yml constants"><nowiki>}}</nowiki></code>
 +
 
 +
<code class="yml spaces">   </code><code class="yml constants"><nowiki>{{</nowiki></code><code class="yml plain">- range $key</code><code class="yml constants">,</code> <code class="yml plain">$value</code> <code class="yml constants">:</code><code class="yml plain">= .</code> <code class="yml constants"><nowiki>}}</nowiki></code>
 +
 
 +
<code class="yml spaces">   </code><code class="yml constants"><nowiki>{{</nowiki></code> <code class="yml plain">$key</code> <code class="yml constants"><nowiki>}}:</nowiki></code> <code class="yml string">"<nowiki>{{ tpl $value $ }}</nowiki>"</code>
 +
 
 +
<code class="yml spaces">   </code><code class="yml constants"><nowiki>{{</nowiki></code><code class="yml plain">- end</code> <code class="yml constants"><nowiki>}}</nowiki></code>
 +
 
 +
<code class="yml spaces"> </code> <code class="yml constants"><nowiki>{{</nowiki></code><code class="yml plain">- end</code> <code class="yml constants"><nowiki>}}</nowiki></code>
 +
 
 +
<code class="yml spaces"> </code><code class="yml constants"><nowiki>{{</nowiki></code><code class="yml plain">- end</code> <code class="yml constants"><nowiki>}}</nowiki></code>
 +
 
 +
 
 +
<code class="yml variable">spec:</code>
 +
 
 +
<code class="yml spaces"> </code><code class="yml variable">accessModes:</code>
 +
 
 +
<code class="yml spaces">   </code><code class="yml string bold">-</code> <code class="yml plain">ReadWriteMany</code>
 +
 
 +
<code class="yml spaces"> </code><code class="yml constants"><nowiki>{{</nowiki></code><code class="yml plain">- with $.Values.raa.volumes.config</code> <code class="yml constants"><nowiki>}}</nowiki></code>
 +
 
 +
<code class="yml spaces"> </code><code class="yml variable">capacity:</code>
 +
 
 +
<code class="yml spaces">   </code><code class="yml variable">storage:</code> <code class="yml string">"<nowiki>{{ .capacity }}</nowiki>"</code>
 +
 
 +
<code class="yml spaces">   </code><code class="yml constants"><nowiki>{{</nowiki></code><code class="yml plain">- with .storageClassName</code> <code class="yml constants"><nowiki>}}</nowiki></code>
 +
 
 +
<code class="yml spaces"> </code><code class="yml variable">storageClassName:</code> <code class="yml string">"<nowiki>{{ . }}</nowiki>"</code>
 +
 
 +
<code class="yml spaces">   </code><code class="yml constants"><nowiki>{{</nowiki></code><code class="yml plain">- end</code> <code class="yml constants"><nowiki>}}</nowiki></code>
 +
 
 +
<code class="yml spaces">   </code><code class="yml constants"><nowiki>{{</nowiki></code><code class="yml plain">- with .pv.vendorSpec</code><code class="yml constants"><nowiki>}}</nowiki></code>
 +
 
 +
<code class="yml spaces"> </code><code class="yml constants"><nowiki>{{</nowiki></code><code class="yml plain">- toYaml . | nindent 2</code> <code class="yml constants"><nowiki>}}</nowiki></code>
 +
 
 +
<code class="yml spaces">   </code><code class="yml constants"><nowiki>{{</nowiki></code><code class="yml plain">- end</code><code class="yml constants"><nowiki>}}</nowiki></code>
 +
 
 +
<code class="yml spaces"> </code><code class="yml constants"><nowiki>{{</nowiki></code><code class="yml plain">- end</code> <code class="yml constants"><nowiki>}}</nowiki></code>
 +
 
 +
<code class="yml constants"><nowiki>{{</nowiki></code><code class="yml plain">- end</code> <code class="yml constants"><nowiki>}}</nowiki></code>
 +
{{!}}}
 +
It is enough to define <code class="yml variable">Values.raa.volumes.config.storageClassName</code> and a vendor specific part of Persistent Volume (<code class="yml variable">raa.volumes.config.pv.vendorSpec)</code> in values file:
 +
 
 +
'''myvalues.yaml'''
 +
{{{!}} class="wikitable" border="0" cellpadding="0" cellspacing="0"
 +
{{!}} class="code" {{!}}<code class="yml plain">raa</code>
 +
 
 +
<code class="yml spaces"> </code><code class="yml plain">...</code>
 +
 
 +
<code class="yml spaces"> </code><code class="yml variable">volumes:</code>
 +
 
 +
<code class="yml spaces">   </code><code class="yml plain">...</code>
 +
 
 +
<code class="yml spaces">   </code><code class="yml variable">config:</code>
 +
 
 +
<code class="yml spaces">     </code><code class="yml variable">storageClassName:</code> <code class="yml string">"hostpath"</code>
 +
 
 +
<code class="yml spaces">     </code><code class="yml variable">pv:</code>
 +
 
 +
<code class="yml spaces">       </code><code class="yml variable">vendorSpec:</code>
 +
 
 +
<code class="yml spaces">         </code><code class="yml variable">hostPath:</code>
 +
 
 +
<code class="yml spaces">           </code><code class="yml variable">type:</code> <code class="yml plain">Directory</code>
 +
 
 +
<code class="yml spaces">           </code><code class="yml comments"># path for conf.xml, *.ss files and JDBC driver when default is not suitable</code>
 +
 
 +
<code class="yml spaces">           </code><code class="yml variable">path:</code> <code class="yml string">"/usr/local/genesys/RAA/config/"</code>    
 +
 
 +
<code class="yml spaces">     </code><code class="yml plain">...</code>
 +
{{!}}}
 +
Alternatively Persistent Volume can be defined separately. Its name should be specified in values.yaml via <code class="yml variable">raa.volumes.config.pvc.volumeName</code> for binding to Persistent Volume Claim:
 +
 
 +
'''myvalues.yaml'''
 +
{{{!}} class="wikitable" border="0" cellpadding="0" cellspacing="0"
 +
{{!}} class="code" {{!}}<code class="yml plain">raa</code>
 +
 
 +
<code class="yml spaces"> </code><code class="yml plain">...</code>
 +
 
 +
<code class="yml spaces"> </code><code class="yml variable">volumes:</code>
 +
 
 +
<code class="yml spaces">   </code><code class="yml plain">...</code>
 +
 
 +
<code class="yml spaces">   </code><code class="yml variable">config:</code>
 +
 
 +
<code class="yml spaces">     </code><code class="yml variable">pv:</code> <code class="yml constants">{}</code>
 +
 
 +
<code class="yml spaces">     </code><code class="yml variable">pvc:</code>
 +
 
 +
<code class="yml spaces">       </code><code class="yml variable">volumeName:</code> <code class="yml string">"my_raa_config_volume"</code>
 +
 
 +
<code class="yml spaces">   </code><code class="yml plain">...</code>
 +
{{!}}}
 +
An ephemeral storage could be also mapped.  
 +
 
 +
=== Health volume ===
 +
RAA uses health volume for the following purposes:
 +
 
 +
* placing actual health files (see [https://docs.genesys.com/Documentation/RAA/latest/UG/AggProc#Checking_the_health_of_the_aggregate_process Checking the health of the aggregate process] for details)
 +
* place for prometheus file containing metrics for 2-3 scrape intervals behind
 +
* results of recent '''testRun''' init container execution
 +
 
 +
Size limit is set to 50MB by default. All the purposes assumes periodic interaction with the volume at runtime. Therefore it is not recommended to choose very slow storage class for this volume.
 +
 
 +
'''myvalues.yaml'''
 +
{{{!}} class="wikitable" border="0" cellpadding="0" cellspacing="0"
 +
{{!}} class="code" {{!}}<code class="yml plain">raa</code>
 +
 
 +
<code class="yml spaces"> </code><code class="yml plain">...</code>
 +
 
 +
<code class="yml spaces"> </code><code class="yml variable">volumes:</code>
 +
 
 +
<code class="yml spaces">   </code><code class="yml plain">...</code>
 +
 
 +
<code class="yml spaces">   </code><code class="yml variable">health:</code>
 +
 
 +
<code class="yml spaces">     </code><code class="yml variable">capacity:</code> <code class="yml plain">50Mi</code>
 +
 
 +
<code class="yml spaces">     </code><code class="yml variable">storageClassName:</code> <code class="yml string">"<vendor storage class>"</code>
 +
 
 +
<code class="yml spaces"> </code> <code class="yml plain">...</code>
 +
{{!}}}
 +
RAA helm chart creates Persistent Volume Claim. It can also optionally create a Persistent Volume (when <code class="yml variable">raa.volumes.health.pv</code> is specified). See how Persistent Volume declared in helm chart:
 +
 
 +
'''raa-config-volume.yaml'''
 +
{{{!}} class="wikitable" border="0" cellpadding="0" cellspacing="0"
 +
{{!}} class="code" {{!}}<code class="yml constants"><nowiki>{{</nowiki></code><code class="yml plain">- with .Values.raa.volumes.health.pv</code> <code class="yml constants"><nowiki>}}</nowiki></code>
 +
 
 +
<code class="yml variable">apiVersion:</code> <code class="yml plain">v1</code>
 +
 
 +
<code class="yml variable">kind:</code> <code class="yml plain">PersistentVolume</code>
 +
 
 +
<code class="yml variable">metadata:</code>
 +
 
 +
<code class="yml spaces"> </code><code class="yml variable">name:</code> <code class="yml string">"<nowiki>{{ tpl .name $ }}</nowiki>"</code>
 +
 
 +
<code class="yml spaces"> </code><code class="yml constants"><nowiki>{{</nowiki></code><code class="yml plain">- if or ($.Values.raa.labels) (.labels)</code> <code class="yml constants"><nowiki>}}</nowiki></code>
 +
 
 +
<code class="yml spaces"> </code><code class="yml variable">labels:</code>
 +
 
 +
<code class="yml spaces"> </code> <code class="yml constants"><nowiki>{{</nowiki></code><code class="yml plain">- with $.Values.raa.labels</code> <code class="yml constants"><nowiki>}}</nowiki></code>
 +
 
 +
<code class="yml spaces">   </code><code class="yml constants"><nowiki>{{</nowiki></code><code class="yml plain">- range $key</code><code class="yml constants">,</code> <code class="yml plain">$value</code> <code class="yml constants">:</code><code class="yml plain">= .</code> <code class="yml constants"><nowiki>}}</nowiki></code>
 +
 
 +
<code class="yml spaces">   </code><code class="yml constants"><nowiki>{{</nowiki></code> <code class="yml plain">$key</code> <code class="yml constants"><nowiki>}}:</nowiki></code> <code class="yml string">"<nowiki>{{ tpl $value $ }}</nowiki>"</code>
 +
 
 +
<code class="yml spaces">   </code><code class="yml constants"><nowiki>{{</nowiki></code><code class="yml plain">- end</code> <code class="yml constants"><nowiki>}}</nowiki></code>
 +
 
 +
<code class="yml spaces"> </code> <code class="yml constants"><nowiki>{{</nowiki></code><code class="yml plain">- end</code> <code class="yml constants"><nowiki>}}</nowiki></code>
 +
 
 +
<code class="yml spaces"> </code> <code class="yml constants"><nowiki>{{</nowiki></code><code class="yml plain">- with .labels</code> <code class="yml constants"><nowiki>}}</nowiki></code>
 +
 
 +
<code class="yml spaces">   </code><code class="yml constants"><nowiki>{{</nowiki></code><code class="yml plain">- range $key</code><code class="yml constants">,</code> <code class="yml plain">$value</code> <code class="yml constants">:</code><code class="yml plain">= .</code> <code class="yml constants"><nowiki>}}</nowiki></code>
 +
 
 +
<code class="yml spaces">   </code><code class="yml constants"><nowiki>{{</nowiki></code> <code class="yml plain">$key</code> <code class="yml constants"><nowiki>}}:</nowiki></code> <code class="yml string">"<nowiki>{{ tpl $value $ }}</nowiki>"</code>
 +
 
 +
<code class="yml spaces">   </code><code class="yml constants"><nowiki>{{</nowiki></code><code class="yml plain">- end</code> <code class="yml constants"><nowiki>}}</nowiki></code>
 +
 
 +
<code class="yml spaces"> </code> <code class="yml constants"><nowiki>{{</nowiki></code><code class="yml plain">- end</code> <code class="yml constants"><nowiki>}}</nowiki></code>
 +
 
 +
<code class="yml spaces"> </code><code class="yml constants"><nowiki>{{</nowiki></code><code class="yml plain">- end</code> <code class="yml constants"><nowiki>}}</nowiki></code>
 +
 
 +
 
 +
<code class="yml spaces"> </code><code class="yml constants"><nowiki>{{</nowiki></code><code class="yml plain">- if or ($.Values.raa.annotations) (.annotations)</code> <code class="yml constants"><nowiki>}}</nowiki></code>
 +
 
 +
<code class="yml spaces"> </code><code class="yml variable">annotations:</code>
 +
 
 +
<code class="yml spaces"> </code> <code class="yml constants"><nowiki>{{</nowiki></code><code class="yml plain">- with $.Values.raa.annotations</code> <code class="yml constants"><nowiki>}}</nowiki></code>
 +
 
 +
<code class="yml spaces">   </code><code class="yml constants"><nowiki>{{</nowiki></code><code class="yml plain">- range $key</code><code class="yml constants">,</code> <code class="yml plain">$value</code> <code class="yml constants">:</code><code class="yml plain">= .</code> <code class="yml constants"><nowiki>}}</nowiki></code>
 +
 
 +
<code class="yml spaces">   </code><code class="yml constants"><nowiki>{{</nowiki></code> <code class="yml plain">$key</code> <code class="yml constants"><nowiki>}}:</nowiki></code> <code class="yml string">"<nowiki>{{ tpl $value $ }}</nowiki>"</code>
 +
 
 +
<code class="yml spaces">   </code><code class="yml constants"><nowiki>{{</nowiki></code><code class="yml plain">- end</code> <code class="yml constants"><nowiki>}}</nowiki></code>
 +
 
 +
<code class="yml spaces"> </code> <code class="yml constants"><nowiki>{{</nowiki></code><code class="yml plain">- end</code> <code class="yml constants"><nowiki>}}</nowiki></code>
 +
 
 +
<code class="yml spaces"> </code> <code class="yml constants"><nowiki>{{</nowiki></code><code class="yml plain">- with .annotations</code> <code class="yml constants"><nowiki>}}</nowiki></code>
 +
 
 +
<code class="yml spaces">   </code><code class="yml constants"><nowiki>{{</nowiki></code><code class="yml plain">- range $key</code><code class="yml constants">,</code> <code class="yml plain">$value</code> <code class="yml constants">:</code><code class="yml plain">= .</code> <code class="yml constants"><nowiki>}}</nowiki></code>
 +
 
 +
<code class="yml spaces">   </code><code class="yml constants"><nowiki>{{</nowiki></code> <code class="yml plain">$key</code> <code class="yml constants"><nowiki>}}:</nowiki></code> <code class="yml string">"<nowiki>{{ tpl $value $ }}</nowiki>"</code>
 +
 
 +
<code class="yml spaces">   </code><code class="yml constants"><nowiki>{{</nowiki></code><code class="yml plain">- end</code> <code class="yml constants"><nowiki>}}</nowiki></code>
 +
 
 +
<code class="yml spaces"> </code> <code class="yml constants"><nowiki>{{</nowiki></code><code class="yml plain">- end</code> <code class="yml constants"><nowiki>}}</nowiki></code>
 +
 
 +
<code class="yml spaces"> </code><code class="yml constants"><nowiki>{{</nowiki></code><code class="yml plain">- end</code> <code class="yml constants"><nowiki>}}</nowiki></code>
 +
 
 +
 
 +
<code class="yml variable">spec:</code>
 +
 
 +
<code class="yml spaces"> </code><code class="yml variable">accessModes:</code>
 +
 
 +
<code class="yml spaces">   </code><code class="yml string bold">-</code> <code class="yml plain">ReadWriteMany</code>
 +
 
 +
<code class="yml spaces"> </code><code class="yml constants"><nowiki>{{</nowiki></code><code class="yml plain">- with $.Values.raa.volumes.health</code> <code class="yml constants"><nowiki>}}</nowiki></code>
 +
 
 +
<code class="yml spaces"> </code><code class="yml variable">capacity:</code>
 +
 
 +
<code class="yml spaces">   </code><code class="yml variable">storage:</code> <code class="yml string">"<nowiki>{{ .capacity }}</nowiki>"</code>
 +
 
 +
<code class="yml spaces">   </code><code class="yml constants"><nowiki>{{</nowiki></code><code class="yml plain">- with .storageClassName</code> <code class="yml constants"><nowiki>}}</nowiki></code>
 +
 
 +
<code class="yml spaces"> </code><code class="yml variable">storageClassName:</code> <code class="yml string">"<nowiki>{{ . }}</nowiki>"</code>
 +
 
 +
<code class="yml spaces">   </code><code class="yml constants"><nowiki>{{</nowiki></code><code class="yml plain">- end</code> <code class="yml constants"><nowiki>}}</nowiki></code>
 +
 
 +
<code class="yml spaces">   </code><code class="yml constants"><nowiki>{{</nowiki></code><code class="yml plain">- with .pv.vendorSpec</code><code class="yml constants"><nowiki>}}</nowiki></code>
 +
 
 +
<code class="yml spaces"> </code><code class="yml constants"><nowiki>{{</nowiki></code><code class="yml plain">- toYaml . | nindent 2</code> <code class="yml constants"><nowiki>}}</nowiki></code>
 +
 
 +
<code class="yml spaces">   </code><code class="yml constants"><nowiki>{{</nowiki></code><code class="yml plain">- end</code><code class="yml constants"><nowiki>}}</nowiki></code>
 +
 
 +
<code class="yml spaces"> </code><code class="yml constants"><nowiki>{{</nowiki></code><code class="yml plain">- end</code> <code class="yml constants"><nowiki>}}</nowiki></code>
 +
 
 +
<code class="yml constants"><nowiki>{{</nowiki></code><code class="yml plain">- end</code> <code class="yml constants"><nowiki>}}</nowiki></code>
 +
{{!}}}
 +
It is enough to define <code class="yml variable">Values.raa.volumes.health.storageClassName</code> and a vendor specific part of Persistent Volume (<code class="yml variable">raa.volumes.health.pv.vendorSpec)</code> in values file:
 +
 
 +
'''myvalues.yaml'''
 +
{{{!}} class="wikitable" border="0" cellpadding="0" cellspacing="0"
 +
{{!}} class="code" {{!}}<code class="yml plain">raa</code>
 +
 
 +
<code class="yml spaces"> </code><code class="yml plain">...</code>
 +
 
 +
<code class="yml spaces"> </code><code class="yml variable">volumes:</code>
 +
 
 +
<code class="yml spaces">   </code><code class="yml plain">...</code>
 +
 
 +
<code class="yml spaces">   </code><code class="yml variable">health:</code>
 +
 
 +
<code class="yml spaces">     </code><code class="yml variable">storageClassName:</code> <code class="yml string">"hostpath"</code>
 +
 
 +
<code class="yml spaces">     </code><code class="yml variable">pv:</code>
 +
 
 +
<code class="yml spaces">       </code><code class="yml variable">vendorSpec:</code>
 +
 
 +
<code class="yml spaces">         </code><code class="yml variable">hostPath:</code>
 +
 
 +
<code class="yml spaces">           </code><code class="yml variable">type:</code> <code class="yml plain">Directory</code>
 +
 
 +
<code class="yml spaces">           </code><code class="yml variable">path:</code> <code class="yml string">"/usr/local/genesys/RAA/health/"</code>    
 +
 
 +
<code class="yml spaces">     </code><code class="yml plain">...</code>
 +
{{!}}}
 +
Alternatively Persistent Volume can be defined separately. Its name should be specified in values.yaml via <code class="yml variable">raa.volumes.health.pvc.volumeName</code> for binding to Persistent Volume Claim:
 +
 
 +
'''myvalues.yaml'''
 +
{{{!}} class="wikitable" border="0" cellpadding="0" cellspacing="0"
 +
{{!}} class="code" {{!}}<code class="yml plain">raa</code>
 +
 
 +
<code class="yml spaces"> </code><code class="yml plain">...</code>
 +
 
 +
<code class="yml spaces"> </code><code class="yml variable">volumes:</code>
 +
 
 +
<code class="yml spaces">   </code><code class="yml plain">...</code>
 +
 
 +
<code class="yml spaces">   </code><code class="yml variable">config:</code>
 +
 
 +
<code class="yml spaces">     </code><code class="yml variable">pv:</code> <code class="yml constants">{}</code>
 +
 
 +
<code class="yml spaces">     </code><code class="yml variable">pvc:</code>
 +
 
 +
<code class="yml spaces">       </code><code class="yml variable">volumeName:</code> <code class="yml string">"my_raa_helath_volume"</code>
 +
 
 +
<code class="yml spaces">   </code><code class="yml plain">...</code>
 +
{{!}}}
 +
An ephemeral storage could be also mapped.  
 +
|NetworkText=RAA interacts with GIM database only. Additionally it can expose prometheus metrics via netcat.
 +
 
 +
Aggregation pod has own IP address. The pod can run up to two running containers as described above.
 +
 
 +
Additional IP address is needed for running test pods one by one (via helm test). Each test pod runs one container.
 +
 
 +
It is recommended to have RAA located in the same region with GIM database since RAA works mostly with this database.
 
|BrowserText=<div style="background-color: aliceblue; font-style: italic;">List supported browsers/versions for the UI, if applicable.</div>
 
|BrowserText=<div style="background-color: aliceblue; font-style: italic;">List supported browsers/versions for the UI, if applicable.</div>
|SectionBrowser={{SectionBrowser
+
|DependenciesText=RAA interacts with Genesys Info Mart database only.
|Browser=a1c5ae9e-3ec5-450a-8518-2ee52f956d3f
 
|Notes=test
 
}}
 
|DependenciesText=<div style="background-color: aliceblue; font-style: italic;">Describe any dependencies <service_name> has on other Genesys services. Include a link to the "suite-level" documentation for the order in which services must be deployed. For example, the Auth and GWS services must be deployed and running before deploying the WWE service. {{SuiteLevelLink|deployorder}}</div>
 
 
|GDPRText=<div style="background-color: aliceblue; font-style: italic;">Provide information about GDPR support. Include a link to the "suite-level" documentation. {{SuiteLevelLink|gdpr}}</div>
 
|GDPRText=<div style="background-color: aliceblue; font-style: italic;">Provide information about GDPR support. Include a link to the "suite-level" documentation. {{SuiteLevelLink|gdpr}}</div>
 
|PEPageType=bf21dc7c-597d-4bbe-8df2-a2a64bd3f167
 
|PEPageType=bf21dc7c-597d-4bbe-8df2-a2a64bd3f167
 
}}
 
}}

Revision as of 14:22, June 10, 2021

This is a draft page; it has not yet been published.


Find out what to do before deploying Reporting and Analytics Aggregates (RAA).

Related documentation: