Prerequisites
IMPORTANT!
Note the following considerations before deployment of Reporting Services.
For Kubernetes Cluster
Single Zone k8s Cluster
In order to deploy the Reporting pod/container, you will need a dedicated node, that is, you must label one of the Kubernetes cluster nodes so that the Reporting pod/container is deployed on that node only.
Multi-zone k8s Cluster
For any multi-zone's k8s deployment, you will need to label an extra node in the first zone that is provided in the manifest. For example, in manifest "k8s_{aws|gcp|azure}_zones": ["us-east-1a","us-east-1c"], two zones are provided for deploying the cluster. You are required to add a label to the node in first zone of the provided zones, that is "us-east-1a"
kubectl label nodes <nodename> node-name=reportingThis command labels <nodename> with "node-name=reporting".
The labeling of the node also ensures that none of the other TML cluster components are deployed on that node. There are a few changes that are added to the deployment scripts.
For Reporting Pod/Container
affinity: nodeAffinity: requiredDuringSchedulingIgnoredDuringExecution: nodeSelectorTerms: - matchExpressions: - key: node-name operator: In values: - reporting
For Other Pods/Containers
affinity: nodeAffinity: requiredDuringSchedulingIgnoredDuringExecution: nodeSelectorTerms: - matchExpressions: - key: node-name operator: NotIn values: - reportingAs viewed from the above affinity and anti-affinity rules, the deployment scripts make sure that the Reporting pod/container is deployed on a single node labeled as "node-name=reporting".
For Swarm Cluster
1. docker node ls 2. export REPORTING_HOST_NAME=<node_name>It is required to make modifications in the pod yml files so that only Reporting Services is deployed on the specified dedicated node.
a. The below placement rule needs to be added in tmgc-reporting.yml file. deploy: placement: constraints: - node.hostname == ${REPORTING_HOST_NAME} b. The following files need to be modified to add below placement constraint along with other constraints such that these containers do not run on reporting node. 1. tmgc-nosql.yml 2. tmgc-nosql-ring.yml 3. tmgc-sql.yml 4. tmgc-cache.yml 5. tmgc-log.yml 6. tmgc-tm.yml 7. tmgc-cm.yml deploy: placement: constraints: - node.hostname != ${REPORTING_HOST_NAME} e.g In tmgc-nosql.yml, tmgc-nosql-ring.yml, tmgc-sql.yml, tmgc-cache.yml, tmgc-log.yml after adding above constraint deploy section would look like as below: deploy: placement: constraints: - node.hostname == ${HOST_NAME} - node.hostname != ${REPORTING_HOST_NAME} and in tmgc-tm.yml and tmgc-cm.yml after adding new constraint, deploy section would like as below: deploy: placement: constraints: - node.hostname != ${REPORTING_HOST_NAME}