Install ReportPortal
Inspect the prerequisites and the main steps to perform for installing ReportPortal.
Prerequisites​
- Kubectl version 1.29.0+ is installed. Please refer to the Kubernetes official website for details.
- Helm version 3.14.0+ is installed. Please refer to the Helm page on GitHub for details.
Please refer to the ReportPortal Helm Chart section for details.
MinIO Installation​
To install MinIO, follow the steps below:
-
Check that
edp
namespace is created. If not, run the following command to create it:kubectl create namespace edp
For the OpenShift usersWhen using the OpenShift platform, install the
SecurityContextConstraints
resources.
In case of using a custom namespace for thereportportal
, change the namespace in theusers
section.View: report-portal-third-party-resources-scc.yaml
apiVersion: security.openshift.io/v1
kind: SecurityContextConstraints
metadata:
annotations:
"helm.sh/hook": "pre-install"
name: report-portal-minio-rabbitmq-postgresql
allowHostDirVolumePlugin: false
allowHostIPC: false
allowHostNetwork: false
allowHostPID: false
allowHostPorts: false
allowPrivilegeEscalation: true
allowPrivilegedContainer: false
allowedCapabilities: null
allowedFlexVolumes: []
defaultAddCapabilities: []
fsGroup:
type: MustRunAs
ranges:
- min: 999
max: 65543
groups: []
priority: 1
readOnlyRootFilesystem: false
requiredDropCapabilities:
- KILL
- MKNOD
- SETUID
- SETGID
runAsUser:
type: MustRunAsRange
uidRangeMin: 1
uidRangeMax: 65543
seLinuxContext:
type: MustRunAs
supplementalGroups:
type: RunAsAny
users:
- system:serviceaccount:report-portal:minio
- system:serviceaccount:report-portal:rabbitmq
- system:serviceaccount:report-portal:postgresql
volumes:
- configMap
- downwardAPI
- emptyDir
- persistentVolumeClaim
- projected
- secretView: report-portal-elasticsearch-scc.yaml
apiVersion: security.openshift.io/v1
kind: SecurityContextConstraints
metadata:
annotations:
"helm.sh/hook": "pre-install"
name: report-portal-elasticsearch
allowHostDirVolumePlugin: false
allowHostIPC: false
allowHostNetwork: false
allowHostPID: false
allowHostPorts: false
allowPrivilegedContainer: true
allowedCapabilities: []
allowedFlexVolumes: []
defaultAddCapabilities: []
fsGroup:
type: MustRunAs
ranges:
- max: 1000
min: 1000
groups: []
priority: 0
readOnlyRootFilesystem: false
requiredDropCapabilities: []
runAsUser:
type: MustRunAsRange
uidRangeMax: 1000
uidRangeMin: 0
seLinuxContext:
type: MustRunAs
supplementalGroups:
type: RunAsAny
users:
- system:serviceaccount:report-portal:elasticsearch-master
volumes:
- configMap
- downwardAPI
- emptyDir
- persistentVolumeClaim
- projected
- secret -
Add a chart repository:
helm repo add bitnami https://charts.bitnami.com/bitnami
helm repo update -
Create MinIO admin secret:
kubectl -n edp create secret generic reportportal-minio-creds \
--from-literal=root-password=<root_password> \
--from-literal=root-user=<root_user> -
Install MinIO v.11.10.3 using bitnami/minio Helm chart v.11.10.3:
helm install minio bitnami/minio \
--version 11.10.3 \
--values values.yaml \
--namespace edpCheck out the values.yaml file sample of the MinIO customization:
View: values.yaml
auth:
existingSecret: reportportal-minio-creds
persistence:
size: 1Gi
RabbitMQ Installation​
To install RabbitMQ, follow the steps below:
-
Use
edp
namespace from the MinIO installation. -
Use
bitnami
chart repository from the MinIO installation. -
Create RabbitMQ admin secret:
kubectl -n edp create secret generic reportportal-rabbitmq-creds \
--from-literal=rabbitmq-password=<rabbitmq_password> \
--from-literal=rabbitmq-erlang-cookie=<rabbitmq_erlang_cookie>warningThe
rabbitmq_password
password must be 10 characters long.
Therabbitmq_erlang_cookie
password must be 32 characters long. -
Install RabbitMQ v.10.3.8 using bitnami/rabbitmq Helm chart v.10.3.8:
helm install rabbitmq bitnami/rabbitmq \
--version 10.3.8 \
--values values.yaml \
--namespace edpCheck out the values.yaml file sample of the RabbitMQ customization:
View: values.yaml
auth:
existingPasswordSecret: reportportal-rabbitmq-creds
existingErlangSecret: reportportal-rabbitmq-creds
persistence:
size: 1Gi -
After the rabbitmq pod gets the status Running, you need to configure the RabbitMQ memory threshold
kubectl -n edp exec -it rabbitmq-0 -- rabbitmqctl set_vm_memory_high_watermark 0.8
Elasticsearch Installation​
To install Elasticsearch, follow the steps below:
-
Use
edp
namespace from the MinIO installation. -
Add a chart repository:
helm repo add elastic https://helm.elastic.co
helm repo update -
Install Elasticsearch v.7.17.3 using elastic/elasticsearch Helm chart v.7.17.3:
helm install elasticsearch elastic/elasticsearch \
--version 7.17.3 \
--values values.yaml \
--namespace edpCheck out the values.yaml file sample of the Elasticsearch customization:
View: values.yaml
replicas: 1
extraEnvs:
- name: discovery.type
value: single-node
- name: cluster.initial_master_nodes
value: ""
rbac:
create: true
resources:
requests:
cpu: "100m"
memory: "2Gi"
volumeClaimTemplate:
resources:
requests:
storage: 3Gi
PostgreSQL Installation​
To install PostgreSQL, follow the steps below:
-
Use
edp
namespace from the MinIO installation. -
Add a chart repository:
helm repo add bitnami-archive https://raw.githubusercontent.com/bitnami/charts/archive-full-index/bitnami
helm repo update -
Create PostgreSQL admin secret:
kubectl -n edp create secret generic reportportal-postgresql-creds \
--from-literal=postgresql-password=<postgresql_password> \
--from-literal=postgresql-postgres-password=<postgresql_postgres_password>warningThe
postgresql_password
andpostgresql_postgres_password
passwords must be 16 characters long. -
Install PostgreSQL v.10.9.4 using Helm chart v.10.9.4:
helm install postgresql bitnami-archive/postgresql \
--version 10.9.4 \
--values values.yaml \
--namespace edpCheck out the values.yaml file sample of the PostgreSQL customization:
View: values.yaml
persistence:
size: 1Gi
resources:
requests:
cpu: "100m"
serviceAccount:
enabled: true
postgresqlUsername: "rpuser"
postgresqlDatabase: "reportportal"
existingSecret: "reportportal-postgresql-creds"
initdbScripts:
init_postgres.sh: |
#!/bin/sh
/opt/bitnami/postgresql/bin/psql -U postgres -d ${POSTGRES_DB} -c 'CREATE EXTENSION IF NOT EXISTS ltree; CREATE EXTENSION IF NOT EXISTS pgcrypto; CREATE EXTENSION IF NOT EXISTS pg_trgm;'
ReportPortal Installation​
To install ReportPortal, follow the steps below:
-
Use
edp
namespace from the MinIO installation.For the OpenShift usersWhen using the OpenShift platform, install the
SecurityContextConstraints
resource.
In case of using a custom namespace for thereportportal
, change the namespace in theusers
section.View: report-portal-reportportal-scc.yaml
apiVersion: security.openshift.io/v1
kind: SecurityContextConstraints
metadata:
annotations:
"helm.sh/hook": "pre-install"
name: report-portal
allowHostDirVolumePlugin: false
allowHostIPC: false
allowHostNetwork: false
allowHostPID: false
allowHostPorts: false
allowPrivilegedContainer: true
allowedCapabilities: []
allowedFlexVolumes: []
defaultAddCapabilities: []
fsGroup:
type: MustRunAs
ranges:
- max: 1000
min: 1000
groups: []
priority: 0
readOnlyRootFilesystem: false
requiredDropCapabilities: []
runAsUser:
type: MustRunAsRange
uidRangeMax: 1000
uidRangeMin: 0
seLinuxContext:
type: MustRunAs
supplementalGroups:
type: RunAsAny
users:
- system:serviceaccount:report-portal:reportportal
volumes:
- configMap
- downwardAPI
- emptyDir
- persistentVolumeClaim
- projected
- secret -
Add a chart repository:
helm repo add report-portal "https://reportportal.github.io/kubernetes"
helm repo update -
Install ReportPortal v.5.8.0 using Helm chart v.5.8.0:
helm install report-portal report-portal/reportportal \
--values values.yaml \
--namespace edpCheck out the values.yaml file sample of the ReportPortal customization:
View: values.yaml
serviceindex:
resources:
requests:
cpu: 50m
uat:
resources:
requests:
cpu: 50m
serviceui:
resources:
requests:
cpu: 50m
serviceAccountName: "reportportal"
securityContext:
runAsUser: 0
serviceapi:
resources:
requests:
cpu: 50m
serviceanalyzer:
resources:
requests:
cpu: 50m
serviceanalyzertrain:
resources:
requests:
cpu: 50m
rabbitmq:
SecretName: "reportportal-rabbitmq-creds"
endpoint:
address: rabbitmq.<EDP_PROJECT>.svc.cluster.local
user: user
apiuser: user
postgresql:
SecretName: "reportportal-postgresql-creds"
endpoint:
address: postgresql.<EDP_PROJECT>.svc.cluster.local
elasticsearch:
endpoint: http://elasticsearch-master.<EDP_PROJECT>.svc.cluster.local:9200
minio:
secretName: "reportportal-minio-creds"
endpoint: http://minio.<EDP_PROJECT>.svc.cluster.local:9000
endpointshort: minio.<EDP_PROJECT>.svc.cluster.local:9000
accesskeyName: "root-user"
secretkeyName: "root-password"
ingress:
# IF YOU HAVE SOME DOMAIN NAME SET INGRESS.USEDOMAINNAME to true
usedomainname: true
hosts:
- report-portal-<EDP_PROJECT>.<ROOT_DOMAIN> -
For the OpenShift platform, install a Gateway with Route:
View: gateway-config-cm.yaml
kind: ConfigMap
metadata:
name: gateway-config
namespace: report-portal
apiVersion: v1
data:
traefik-dynamic-config.yml: |
http:
middlewares:
strip-ui:
stripPrefix:
prefixes:
- "/ui"
forceSlash: false
strip-api:
stripPrefix:
prefixes:
- "/api"
forceSlash: false
strip-uat:
stripPrefix:
prefixes:
- "/uat"
forceSlash: false
routers:
index-router:
rule: "Path(`/`)"
service: "index"
ui-router:
rule: "PathPrefix(`/ui`)"
middlewares:
- strip-ui
service: "ui"
uat-router:
rule: "PathPrefix(`/uat`)"
middlewares:
- strip-uat
service: "uat"
api-router:
rule: "PathPrefix(`/api`)"
middlewares:
- strip-api
service: "api"
services:
uat:
loadBalancer:
servers:
- url: "http://report-portal-reportportal-uat:9999/"
index:
loadBalancer:
servers:
- url: "http://report-portal-reportportal-index:8080/"
api:
loadBalancer:
servers:
- url: "http://report-portal-reportportal-api:8585/"
ui:
loadBalancer:
servers:
- url: "http://report-portal-reportportal-ui:8080/"
traefik.yml: |
entryPoints:
http:
address: ":8081"
metrics:
address: ":8082"
metrics:
prometheus:
entryPoint: metrics
addEntryPointsLabels: true
addServicesLabels: true
buckets:
- 0.1
- 0.3
- 1.2
- 5.0
providers:
file:
filename: /etc/traefik/traefik-dynamic-config.ymlView: gateway-deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app: reportportal
name: gateway
namespace: report-portal
spec:
replicas: 1
selector:
matchLabels:
component: gateway
template:
metadata:
labels:
component: gateway
spec:
containers:
- image: quay.io/waynesun09/traefik:2.3.6
name: traefik
ports:
- containerPort: 8080
protocol: TCP
resources: {}
volumeMounts:
- mountPath: /etc/traefik/
name: config
readOnly: true
volumes:
- name: config
configMap:
defaultMode: 420
name: gateway-configView: gateway-route.yaml
kind: Route
apiVersion: route.openshift.io/v1
metadata:
labels:
app: reportportal
name: reportportal
namespace: report-portal
spec:
host: report-portal.<CLUSTER_DOMAIN>
port:
targetPort: http
tls:
insecureEdgeTerminationPolicy: Redirect
termination: edge
to:
kind: Service
name: gateway
weight: 100
wildcardPolicy: NoneView: gateway-service.yaml
apiVersion: v1
kind: Service
metadata:
labels:
app: reportportal
component: gateway
name: gateway
namespace: report-portal
spec:
ports:
# use 8081 to allow for usage of the dashboard which is on port 8080
- name: http
port: 8081
protocol: TCP
targetPort: 8081
selector:
component: gateway
sessionAffinity: None
type: ClusterIP
For user access: default/1q2w3e
For admin access: superadmin/erebus
Please refer to the ReportPortal.io page for details.
It is also possible to install ReportPortal via cluster add-ons. For details, please refer to the Install via Add-Ons page.