diff --git a/reportportal/Chart.yaml b/reportportal/Chart.yaml index ff0f2cb6..f1ab2588 100644 --- a/reportportal/Chart.yaml +++ b/reportportal/Chart.yaml @@ -2,7 +2,7 @@ apiVersion: v2 appVersion: "24.1" description: ReportPortal.io AI-powered Test Automation Dashboard name: reportportal -version: 24.1.2 +version: 24.1.3 sources: - https://github.com/reportportal/kubernetes keywords: @@ -19,7 +19,7 @@ dependencies: # If you update version, please update also rabbitmq.image.tag in values.yaml - name: rabbitmq - version: 14.1.5 + version: 14.4.4 repository: https://charts.bitnami.com/bitnami condition: rabbitmq.install diff --git a/reportportal/README.md b/reportportal/README.md index 1872d4a2..9b3600dc 100644 --- a/reportportal/README.md +++ b/reportportal/README.md @@ -57,7 +57,7 @@ These dependencies are integrated into the distribution by default. To deactivat ```bash helm install my-release \ - --set postgresql.install=fasle \ + --set postgresql.install=false \ --set database.endpoint=my-postgresql.host.local \ --set database.port=5432 \ --set database.user=my-user \ diff --git a/reportportal/templates/_helpers.tpl b/reportportal/templates/_helpers.tpl index 0ee23394..8b6d82f8 100644 --- a/reportportal/templates/_helpers.tpl +++ b/reportportal/templates/_helpers.tpl @@ -3,7 +3,7 @@ Expand the name of the chart. */}} {{- define "reportportal.name" -}} -{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}} +{{- default .Chart.Name .Values.global.nameOverride | trunc 63 | trimSuffix "-" -}} {{- end -}} {{/* @@ -13,9 +13,9 @@ If release name contains chart name it will be used as a full name. */}} {{- define "reportportal.fullname" -}} {{- if .Values.fullnameOverride -}} -{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" -}} +{{- .Values.global.fullnameOverride | trunc 63 | trimSuffix "-" -}} {{- else -}} -{{- $name := default .Chart.Name .Values.nameOverride -}} +{{- $name := default .Chart.Name .Values.global.nameOverride -}} {{- if contains $name .Release.Name -}} {{- .Release.Name | trunc 63 | trimSuffix "-" -}} {{- else -}} @@ -51,3 +51,21 @@ Create the name of the service account to use {{ default "default" .Values.serviceAccount.name }} {{- end -}} {{- end -}} + +{{/* +Create image name +*/}} +{{- define "reportportal.image" -}} +{{- $service := .service -}} +{{- $globalRegistry := .Values.global.imageRegistry -}} +{{- $imageRepository := index .Values $service "image" "repository" -}} +{{- $imageTag := index .Values $service "image" "tag" -}} +{{- if $globalRegistry }} +{{- printf "%s/%s:%s" $globalRegistry $imageRepository $imageTag -}} +{{- else -}} +{{- printf "%s:%s" $imageRepository $imageTag -}} +{{- end -}} +{{- end -}} + + + diff --git a/reportportal/templates/authorization/role.yaml b/reportportal/templates/authorization/role.yaml index c499d04d..610a4c00 100644 --- a/reportportal/templates/authorization/role.yaml +++ b/reportportal/templates/authorization/role.yaml @@ -2,10 +2,19 @@ apiVersion: rbac.authorization.k8s.io/v1 kind: Role metadata: - name: {{ include "reportportal.fullname" . }}-service-reader - namespace: {{ .Release.Namespace }} + name: {{ include "reportportal.fullname" . }}-service-manager + namespace: {{ .Release.Namespace }} rules: - - apiGroups: ["", "batch"] - resources: ["pods","services", "jobs"] - verbs: ["get", "list", "watch"] + {{- if .Values.rbac.rules }} + {{- toYaml .Values.rbac.rules | nindent 4 }} + {{- else }} + # Allow the service account to get and list pods, services, and jobs + - apiGroups: ["", "batch"] + resources: ["pods","services", "jobs"] + verbs: ["get", "list", "watch"] + # Allow the service account to delete jobs + - apiGroups: ["batch"] + resources: ["jobs"] + verbs: ["delete"] + {{- end}} {{- end }} \ No newline at end of file diff --git a/reportportal/templates/authorization/rolebinding.yaml b/reportportal/templates/authorization/rolebinding.yaml index fd215f9c..99d96588 100644 --- a/reportportal/templates/authorization/rolebinding.yaml +++ b/reportportal/templates/authorization/rolebinding.yaml @@ -2,14 +2,14 @@ apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata: - name: {{ include "reportportal.fullname" . }}-user-binding - namespace: {{ .Release.Namespace }} + name: {{ include "reportportal.fullname" . }}-user-binding + namespace: {{ .Release.Namespace }} roleRef: - apiGroup: rbac.authorization.k8s.io - kind: Role - name: {{ include "reportportal.fullname" . }}-service-reader + apiGroup: rbac.authorization.k8s.io + kind: Role + name: {{ include "reportportal.fullname" . }}-service-manager subjects: - - kind: ServiceAccount - name: {{ template "reportportal.serviceAccountName" . }} - namespace: {{ .Release.Namespace }} + - kind: ServiceAccount + name: {{ template "reportportal.serviceAccountName" . }} + namespace: {{ .Release.Namespace }} {{- end }} \ No newline at end of file diff --git a/reportportal/templates/hooks/pre-upgrade-hook.yaml b/reportportal/templates/hooks/pre-upgrade-hook.yaml new file mode 100644 index 00000000..cb97ab55 --- /dev/null +++ b/reportportal/templates/hooks/pre-upgrade-hook.yaml @@ -0,0 +1,28 @@ +apiVersion: batch/v1 +kind: Job +metadata: + name: {{ include "reportportal.fullname" . }}-pre-upgrade-delete-job + labels: + {{ include "labels" . | indent 4 }} + annotations: + "helm.sh/hook": pre-upgrade + "helm.sh/hook-delete-policy": hook-succeeded +spec: + template: + metadata: + labels: + {{- range $key, $value := .Values.migrations.podLabels }} + {{ $key }}: {{ $value | quote }} + {{- end }} + component: {{ include "reportportal.fullname" . }}-pre-upgrade-delete-job + spec: + serviceAccountName: {{ template "reportportal.serviceAccountName" . }} + restartPolicy: OnFailure + containers: + - name: delete-job + image: bitnami/kubectl:latest + command: + - /bin/sh + - -c + - | + kubectl delete job {{ include "reportportal.fullname" . }}-migrations --ignore-not-found=true \ No newline at end of file diff --git a/reportportal/templates/service-api/api-deployment.yaml b/reportportal/templates/service-api/api-deployment.yaml index 201456aa..99647acc 100644 --- a/reportportal/templates/service-api/api-deployment.yaml +++ b/reportportal/templates/service-api/api-deployment.yaml @@ -31,13 +31,13 @@ spec: {{- end }} {{- end }} {{- end }} - {{- with .Values.imagePullSecrets }} + {{- with .Values.global.imagePullSecrets }} imagePullSecrets: {{- toYaml . | nindent 8 }} {{- end }} initContainers: - name: migrations-waiting-init - image: "{{ .Values.k8sWaitFor.image.repository }}:{{ .Values.k8sWaitFor.image.tag }}" + image: "{{ include "reportportal.image" (dict "Values" .Values "service" "k8sWaitFor") }}" imagePullPolicy: IfNotPresent args: - "job-wr" @@ -54,7 +54,7 @@ spec: {{- end }} containers: - name: "{{ $.Values.serviceapi.name | default "api" }}" - image: "{{ .Values.serviceapi.image.repository }}:{{ .Values.serviceapi.image.tag }}" + image: "{{ include "reportportal.image" (dict "Values" .Values "service" "serviceapi") }}" imagePullPolicy: "{{ .Values.serviceapi.pullPolicy }}" ports: - containerPort: 8585 @@ -96,10 +96,8 @@ spec: value: "{{ .Values.serviceapi.jvmArgs }}" {{- end }} # AMQP settings - - name: RP_AMQP_QUEUES - value: {{ .Values.serviceapi.queues.totalNumber | default "10" | quote }} - - name: RP_AMQP_QUEUESPERPOD - value: {{ .Values.serviceapi.queues.perPodNumber | default "10" | quote }} + - name: REPORTING_QUEUES_COUNT + value: "{{ .Values.serviceapi.queues }}" - name: RP_AMQP_ANALYZER-VHOST value: "{{ .Values.msgbroker.vhost }}" - name: RP_AMQP_PASS @@ -133,7 +131,7 @@ spec: valueFrom: secretKeyRef: name: "{{ .Values.database.secretName }}" - key: "postgresql-password" + key: "{{ .Values.database.passwordKeyName }}" {{- else }} value: "{{ .Values.database.password }}" {{- end }} @@ -220,7 +218,7 @@ spec: {{- end }} {{- if .Values.serviceapi.auditLogs.enable }} - name: auditlogstreamer - image: "{{ .Values.serviceapi.auditLogs.sidecar.image.repository }}:{{ .Values.serviceapi.auditLogs.sidecar.image.tag }}" + image: "{{ if .Values.global.imageRegistry }}{{ .Values.global.imageRegistry }}/{{ .Values.serviceapi.auditLogs.sidecar.image.repository }}:{{ .Values.serviceapi.auditLogs.sidecar.image.tag }}{{ else }}{{ .Values.serviceapi.auditLogs.sidecar.image.repository }}:{{ .Values.serviceapi.auditLogs.sidecar.image.tag }}{{ end }}" command: - /bin/sh args: diff --git a/reportportal/templates/service-authorization/uat-deployment.yaml b/reportportal/templates/service-authorization/uat-deployment.yaml index 4f80f434..e943c5a0 100644 --- a/reportportal/templates/service-authorization/uat-deployment.yaml +++ b/reportportal/templates/service-authorization/uat-deployment.yaml @@ -32,13 +32,13 @@ spec: {{- end }} {{- end }} {{- end }} - {{- with .Values.imagePullSecrets }} + {{- with .Values.global.imagePullSecrets }} imagePullSecrets: {{- toYaml . | nindent 8 }} {{- end }} initContainers: - name: migrations-waiting-init - image: "{{ .Values.k8sWaitFor.image.repository }}:{{ .Values.k8sWaitFor.image.tag }}" + image: "{{ include "reportportal.image" (dict "Values" .Values "service" "k8sWaitFor") }}" imagePullPolicy: IfNotPresent args: - "job-wr" @@ -55,7 +55,7 @@ spec: {{- end }} containers: - name: "{{ $.Values.uat.name | default "uat" }}" - image: "{{ .Values.uat.image.repository }}:{{ .Values.uat.image.tag }}" + image: "{{ include "reportportal.image" (dict "Values" .Values "service" "uat") }}" imagePullPolicy: "{{ .Values.uat.pullPolicy }}" ports: - containerPort: 9999 @@ -115,7 +115,7 @@ spec: valueFrom: secretKeyRef: name: "{{ .Values.database.secretName }}" - key: "postgresql-password" + key: "{{ .Values.database.passwordKeyName }}" {{- else }} value: "{{ .Values.database.password }}" {{- end }} diff --git a/reportportal/templates/service-index/index-deployment.yaml b/reportportal/templates/service-index/index-deployment.yaml index c406de17..33647f71 100644 --- a/reportportal/templates/service-index/index-deployment.yaml +++ b/reportportal/templates/service-index/index-deployment.yaml @@ -22,7 +22,7 @@ spec: {{ $key }}: {{ $value | quote }} {{- end }} spec: - {{- with .Values.imagePullSecrets }} + {{- with .Values.global.imagePullSecrets }} imagePullSecrets: {{- toYaml . | nindent 8 }} {{- end }} @@ -33,7 +33,7 @@ spec: serviceAccountName: {{ .Values.serviceindex.serviceAccountName | default (include "reportportal.serviceAccountName" .) }} containers: - name: {{ $.Values.serviceindex.name | default "index" }} - image: "{{ .Values.serviceindex.image.repository }}:{{ .Values.serviceindex.image.tag }}" + image: "{{ include "reportportal.image" (dict "Values" .Values "service" "serviceindex") }}" imagePullPolicy: "{{ .Values.serviceindex.pullPolicy }}" env: - name: K8S_MODE diff --git a/reportportal/templates/service-jobs/jobs-deployment.yaml b/reportportal/templates/service-jobs/jobs-deployment.yaml index 1fc3ea5e..43857dc8 100644 --- a/reportportal/templates/service-jobs/jobs-deployment.yaml +++ b/reportportal/templates/service-jobs/jobs-deployment.yaml @@ -20,13 +20,13 @@ spec: {{ $key }}: {{ $value | quote }} {{- end }} spec: - {{- with .Values.imagePullSecrets }} + {{- with .Values.global.imagePullSecrets }} imagePullSecrets: {{- toYaml . | nindent 8 }} {{- end }} initContainers: - name: migrations-waiting-init - image: "{{ .Values.k8sWaitFor.image.repository }}:{{ .Values.k8sWaitFor.image.tag }}" + image: "{{ include "reportportal.image" (dict "Values" .Values "service" "k8sWaitFor") }}" imagePullPolicy: IfNotPresent args: - "job-wr" @@ -43,7 +43,7 @@ spec: {{- end }} containers: - name: "{{ $.Values.servicejobs.name | default "jobs" }}" - image: "{{ .Values.servicejobs.image.repository }}:{{ .Values.servicejobs.image.tag }}" + image: "{{ include "reportportal.image" (dict "Values" .Values "service" "servicejobs") }}" imagePullPolicy: "{{ .Values.servicejobs.pullPolicy }}" ports: - containerPort: 8686 @@ -136,7 +136,7 @@ spec: valueFrom: secretKeyRef: name: "{{ .Values.database.secretName }}" - key: "postgresql-password" + key: "{{ .Values.database.passwordKeyName }}" {{- else }} value: "{{ .Values.database.password }}" {{- end }} diff --git a/reportportal/templates/service-migrations/migrations-job.yaml b/reportportal/templates/service-migrations/migrations-job.yaml index 8a926834..76f167af 100644 --- a/reportportal/templates/service-migrations/migrations-job.yaml +++ b/reportportal/templates/service-migrations/migrations-job.yaml @@ -17,7 +17,7 @@ spec: {{- end }} spec: restartPolicy: OnFailure - {{- with .Values.imagePullSecrets }} + {{- with .Values.global.imagePullSecrets }} imagePullSecrets: {{- toYaml . | nindent 8 }} {{- end }} @@ -38,7 +38,7 @@ spec: valueFrom: secretKeyRef: name: "{{ .Values.database.secretName }}" - key: "postgresql-password" + key: "{{ .Values.database.passwordKeyName }}" {{ else }} value: "{{ .Values.database.password }}" {{ end }} @@ -65,7 +65,7 @@ spec: - name: OS_PASSWORD value: "{{ .Values.searchengine.password }}" {{- end }} - image: "{{ .Values.migrations.image.repository }}:{{ .Values.migrations.image.tag }}" + image: "{{ include "reportportal.image" (dict "Values" .Values "service" "migrations") }}" imagePullPolicy: "{{ .Values.migrations.pullPolicy }}" name: migrations resources: diff --git a/reportportal/templates/service-ui/ui-deployment.yaml b/reportportal/templates/service-ui/ui-deployment.yaml index 586f3ff7..b215d89a 100644 --- a/reportportal/templates/service-ui/ui-deployment.yaml +++ b/reportportal/templates/service-ui/ui-deployment.yaml @@ -20,7 +20,7 @@ spec: {{ $key }}: {{ $value | quote }} {{- end }} spec: - {{- with .Values.imagePullSecrets }} + {{- with .Values.global.imagePullSecrets }} imagePullSecrets: {{- toYaml . | nindent 8 }} {{- end }} @@ -30,7 +30,7 @@ spec: {{- end }} containers: - name: {{ $.Values.serviceui.name | default "ui" }} - image: "{{ .Values.serviceui.image.repository }}:{{ .Values.serviceui.image.tag }}" + image: "{{ include "reportportal.image" (dict "Values" .Values "service" "serviceui") }}" imagePullPolicy: "{{ .Values.serviceui.pullPolicy }}" env: - name: RP_SERVER_PORT diff --git a/reportportal/templates/statefullset-auto-analyzer/analyzer-statefulset.yaml b/reportportal/templates/statefullset-auto-analyzer/analyzer-statefulset.yaml index ccf4e3c5..fb2ca8d8 100644 --- a/reportportal/templates/statefullset-auto-analyzer/analyzer-statefulset.yaml +++ b/reportportal/templates/statefullset-auto-analyzer/analyzer-statefulset.yaml @@ -21,13 +21,13 @@ spec: {{ $key }}: {{ $value | quote }} {{- end }} spec: - {{- with .Values.imagePullSecrets }} + {{- with .Values.global.imagePullSecrets }} imagePullSecrets: {{- toYaml . | nindent 8 }} {{- end }} initContainers: - name: migrations-waiting-init - image: "{{ .Values.k8sWaitFor.image.repository }}:{{ .Values.k8sWaitFor.image.tag }}" + image: "{{ include "reportportal.image" (dict "Values" .Values "service" "k8sWaitFor") }}" imagePullPolicy: IfNotPresent args: - "pod-wr" @@ -44,7 +44,7 @@ spec: {{- end }} containers: - name: "{{ $.Values.serviceanalyzer.name | default "analyzer" }}" - image: "{{ .Values.serviceanalyzer.image.repository }}:{{ .Values.serviceanalyzer.image.tag }}" + image: "{{ include "reportportal.image" (dict "Values" .Values "service" "serviceanalyzer") }}" imagePullPolicy: "{{ .Values.serviceanalyzer.pullPolicy }}" ports: - containerPort: 5001 diff --git a/reportportal/templates/statefullset-auto-analyzer/analyzertrain-statefulset.yaml b/reportportal/templates/statefullset-auto-analyzer/analyzertrain-statefulset.yaml index 30721116..7a9dc8d0 100644 --- a/reportportal/templates/statefullset-auto-analyzer/analyzertrain-statefulset.yaml +++ b/reportportal/templates/statefullset-auto-analyzer/analyzertrain-statefulset.yaml @@ -21,13 +21,13 @@ spec: {{ $key }}: {{ $value | quote }} {{- end }} spec: - {{- with .Values.imagePullSecrets }} + {{- with .Values.global.imagePullSecrets }} imagePullSecrets: {{- toYaml . | nindent 8 }} {{- end }} initContainers: - name: migrations-waiting-init - image: "{{ .Values.k8sWaitFor.image.repository }}:{{ .Values.k8sWaitFor.image.tag }}" + image: "{{ include "reportportal.image" (dict "Values" .Values "service" "k8sWaitFor") }}" imagePullPolicy: IfNotPresent args: - "pod-wr" @@ -44,7 +44,7 @@ spec: {{- end }} containers: - name: "{{ $.Values.serviceanalyzertrain.name | default "analyzer-train" }}" - image: "{{ .Values.serviceanalyzer.image.repository }}:{{ .Values.serviceanalyzer.image.tag }}" + image: "{{ include "reportportal.image" (dict "Values" .Values "service" "serviceanalyzer") }}" imagePullPolicy: "{{ .Values.serviceanalyzertrain.pullPolicy }}" ports: - containerPort: 5001 diff --git a/reportportal/templates/statefullset-auto-analyzer/metrics-gatherer-deployment.yaml b/reportportal/templates/statefullset-auto-analyzer/metrics-gatherer-deployment.yaml index 1a5c8c5c..31596a08 100644 --- a/reportportal/templates/statefullset-auto-analyzer/metrics-gatherer-deployment.yaml +++ b/reportportal/templates/statefullset-auto-analyzer/metrics-gatherer-deployment.yaml @@ -20,13 +20,13 @@ spec: {{ $key }}: {{ $value | quote }} {{- end }} spec: - {{- with .Values.imagePullSecrets }} + {{- with .Values.global.imagePullSecrets }} imagePullSecrets: {{- toYaml . | nindent 8 }} {{- end }} initContainers: - name: migrations-waiting-init - image: "{{ .Values.k8sWaitFor.image.repository }}:{{ .Values.k8sWaitFor.image.tag }}" + image: "{{ include "reportportal.image" (dict "Values" .Values "service" "k8sWaitFor") }}" imagePullPolicy: IfNotPresent args: - "pod-wr" @@ -43,7 +43,7 @@ spec: {{- end }} containers: - name: metrics-gatherer - image: "{{ .Values.metricsgatherer.image.repository }}:{{ .Values.metricsgatherer.image.tag }}" + image: "{{ include "reportportal.image" (dict "Values" .Values "service" "metricsgatherer") }}" imagePullPolicy: "{{ .Values.metricsgatherer.pullPolicy }}" ports: - containerPort: 5000 @@ -106,7 +106,7 @@ spec: valueFrom: secretKeyRef: name: "{{ .Values.database.secretName }}" - key: "postgresql-password" + key: "{{ .Values.database.passwordKeyName }}" {{- else }} value: "{{ .Values.database.password }}" {{- end }} diff --git a/reportportal/values.yaml b/reportportal/values.yaml index fd63bb19..6966dd04 100644 --- a/reportportal/values.yaml +++ b/reportportal/values.yaml @@ -1,10 +1,22 @@ ## ReportPortal.io AI-powered Test Automation Dashboard +## -## @param nameOverride expand the name of the chart -## @param fullnameOverride expand the fully qualified app name -nameOverride: "" -fullnameOverride: "" +## @section Global configuration +## +## @param global.imageRegistry Global image registry +## @param global.imagePullSecrets Global registry secret names as an array +## @param global.nameOverride expand the name of the chart +## @param global.fullnameOverride expand the fully qualified app name +## +global: + imageRegistry: "" + imagePullSecrets: [] + nameOverride: "" + fullnameOverride: "" + +## @param serviceindex Core ReportPortal service for the indexing +## serviceindex: name: index image: @@ -27,6 +39,7 @@ serviceindex: ## Use cloud.google.com/compute-class: "COMPUTE_CLASS" for specific GKE Autopilot compute class. ## Use kubernetes.io/arch: "ARCHITECTURE" for specific GKE Autopilot CPU architecture. ## Use disktype: "ssd" for specific disk type. + ## nodeSelector: {} service: type: "" @@ -35,6 +48,8 @@ serviceindex: extraPorts: [] annotations: {} +## @param serviceui Core ReportPortal service +## serviceui: name: ui image: @@ -55,6 +70,7 @@ serviceui: ## You can choose compute classes for GKE Autopilot Pods https://cloud.google.com/kubernetes-engine/docs/concepts/autopilot-compute-classes ## Use cloud.google.com/compute-class: "COMPUTE_CLASS" for specific GKE Autopilot compute class. ## Use kubernetes.io/arch: "ARCHITECTURE" for specific GKE Autopilot CPU architecture. + ## nodeSelector: {} serviceAccountName: "" service: @@ -64,6 +80,8 @@ serviceui: extraPorts: [] annotations: {} +## @param serviceapi Core ReportPortal +## serviceapi: name: api image: @@ -91,14 +109,15 @@ serviceapi: cpu: 1000m memory: 2Gi - ## Configure Audit logs to be written to the API container's directory /var/log/reportportal/audit.log + ## @param serviceapi.auditLogs.enable enable sidecar container logs to write audit logs in the core container /var/log/reportportal/audit.log. + ## @param serviceapi.auditLogs.loglevel define log level + ## auditLogs: - ## Enable or disable the sidecar log streamer container enable: false - ## Set the log level for audit logs (info, debug, etc.) loglevel: info - # Configure sidecar container settings for Audit logs + ## @param serviceapi.auditLogs.sidecar define sidecar container configuration + ## sidecar: image: repository: busybox @@ -110,43 +129,45 @@ serviceapi: limits: cpu: 100m memory: 100Mi - - ## "Delete Account" button in UI - allowDeleteAccount: true ## set `false` to disable feature - - ## CRON Jobs + + ## @param serviceapi.allowDeleteAccount enable or disable "Delete Account" button in UI + ## + allowDeleteAccount: true + + ## @param serviceapi.cronJobs define the configuration for the cron jobs + ## cronJobs: - ## ISO 8601 duration format - interruptBrockenLaunches: PT1H + interruptBrockenLaunches: PT1H ## ISO8601 duration format - ## Pattern Analysis and Immediate IA configuration + ## @param serviceapi.patternAnalysis define the configuration for the pattern analysis and Immediate IA + ## @paran serviceapi.patternAnalysis.batchSize define the number of logs to be processed in one batch + ## @param serviceapi.patternAnalysis.prefetchCount define of the prefetch count for 'analysis.pattern.string' and 'analysis.pattern.regex' queues. + ## @param serviceapi.patternAnalysis.consumersCount define of the 'analysis.pattern.string' and 'analysis.pattern.regex' queues. Consumers count per each queue + ## patternAnalysis: batchSize: 100 - ## @param patternAnalysis.prefetchCount define of the prefetch count for 'analysis.pattern.string' and 'analysis.pattern.regex' queues. prefetchCount: 1 - ## @param patternAnalysis.consumersCount define of the 'analysis.pattern.string' and 'analysis.pattern.regex' queues. Consumers count per each queue consumersCount: 1 - ## JAVA_OPTS - ## If you need to use a custom java keystore you can use it through jvmArgs (e.g. jvmArgs: -Djavax.net.ssl.trustStore=/etc/secret-volume/custom-pki.jks) - + ## @param serviceapi.javaArgs define the configuration for the JVM. + ## For custom java keystore add parameter: -Djavax.net.ssl.trustStore=/etc/secret-volume/custom-pki.jks + ## jvmArgs: "-Djava.security.egd=file:/dev/./urandom -XX:+UseG1GC -XX:MinRAMPercentage=60.0 -XX:InitiatingHeapOccupancyPercent=70 -XX:MaxRAMPercentage=90.0 -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/tmp" + + ## @param serviceapi.queues define the number for the queues ## - ## Number of queues - ## Where "totalNumber" is the total number of queues. Сalculation formula: perPodNumber = totalNumber / serviceapi.replicaCount + queues: 10 + + ## @param serviceapi.extraEnvs define the extra environment variables ## - queues: - totalNumber: 10 - perPodNumber: 10 - ## Extra environment variables extraEnvs: [] - ## - name: EXTRA_ENV - ## value: "TRUE" - ## - name: EXTRA_ENV_SECRET - ## valueFrom: - ## secretKeyRef: - ## name: "additional-credentials" - ## key: username + # - name: EXTRA_ENV + # value: "TRUE" + # - name: EXTRA_ENV_SECRET + # valueFrom: + # secretKeyRef: + # name: "additional-credentials" + # key: username podLabels: {} podAnnotations: {} securityContext: {} @@ -155,6 +176,7 @@ serviceapi: ## You can choose compute classes for GKE Autopilot Pods https://cloud.google.com/kubernetes-engine/docs/concepts/autopilot-compute-classes ## Use cloud.google.com/compute-class: COMPUTE_CLASS for specific GKE Autopilot compute class. ## Use kubernetes.io/arch: ARCHITECTURE for specific GKE Autopilot CPU architecture. + ## nodeSelector: {} serviceAccountName: "" service: @@ -164,32 +186,35 @@ serviceapi: extraPorts: [] annotations: {} - ## Provide a secret containing sensitives data + ## @param serviceapi.secret define the secret configuration ## e.g. provide a custom java keystore used in jvmArgs: ## keytool -genkeypair -storetype jks -alias todelete -keypass changeit -storepass changeit -keystore custom-pki.jks -dname "CN=Developer, OU=Department, O=Company, L=City, ST=State, C=CA" ## keytool -delete -alias todelete -storepass changeit -keystore custom-pki.jks ## keytool -list -keystore custom-pki.jks -storepass changeit ## Generate base64 data and paste it in your values.yaml: ## cat custom-pki.jks | base64 -w + ## secret: enabled: false mountPath: /etc/secret-volume readOnly: true data: {} - ## custom-pki.jks: + # custom-pki.jks: ## @param serviceapi.hostAliases define the hosts and IP addresses for the Pod's /etc/hosts file. + ## hostAliases: [] - # - ip: "127.0.0.1" - # hostnames: - # - "foo.local" - # - "bar.local" - # - ip: "10.1.2.3" - # hostnames: - # - "foo.remote" - # - "bar.remote" - - + # - ip: "127.0.0.1" + # hostnames: + # - "foo.local" + # - "bar.local" + # - ip: "10.1.2.3" + # hostnames: + # - "foo.remote" + # - "bar.remote" + +## @param serviceapi Core ReportPortal service for the authorization +## uat: name: uat image: @@ -218,52 +243,55 @@ uat: sessionLiveTime: 86400 samlSessionLiveTime: 4320 - ## RP_INITIAL_ADMIN_PASSWORD - the initial password of the superadmin user for the first launch. This value can't change the password on redeployments. - ## Create a K8S Secret and set the name to @param superadminInitPasswd.secretName for future redeplyments or upgrades. - + ## @param uat.superadminInitPasswd define the initial password of the superadmin user for the first launch. This value can't change the password on redeployments + ## @param uat.superadminInitPasswd.secretName define the secret name for the superadmin password + ## superadminInitPasswd: secretName: "" passwordKeyName: "superadmin-password" password: "" - podLabels: {} - podAnnotations: {} - - ## JAVA_OPTS - ## If you need to use a custom java keystore you can use it through jvmArgs (e.g. jvmArgs: -Djavax.net.ssl.trustStore=/etc/secret-volume/custom-pki.jks) + ## @param serviceapi.javaArgs define the configuration for the JVM. + ## For custom java keystore add parameter: -Djavax.net.ssl.trustStore=/etc/secret-volume/custom-pki.jks + ## jvmArgs: "-Djava.security.egd=file:/dev/./urandom -XX:MinRAMPercentage=60.0 -XX:MaxRAMPercentage=90.0" - ## Extra environment variables + + ## @param uat.extraEnvs define the extra environment variables + ## extraEnvs: [] - ## - name: EXTRA_ENV - ## value: "TRUE" - ## - name: EXTRA_ENV_SECRET - ## valueFrom: - ## secretKeyRef: - ## name: "additional-credentials" - ## key: username + # - name: EXTRA_ENV + # value: "TRUE" + # - name: EXTRA_ENV_SECRET + # valueFrom: + # secretKeyRef: + # name: "additional-credentials" + # key: username + podLabels: {} + podAnnotations: {} securityContext: {} - ## @param uat.nodeSelector define which Nodes the Pods are scheduled on. + ## @param uat.nodeSelector define which Nodes the Pods are scheduled on ## You can choose compute classes for GKE Autopilot Pods https://cloud.google.com/kubernetes-engine/docs/concepts/autopilot-compute-classes ## Use cloud.google.com/compute-class: "COMPUTE_CLASS" for specific GKE Autopilot compute class. ## Use kubernetes.io/arch: "ARCHITECTURE" for specific GKE Autopilot CPU architecture. + ## nodeSelector: {} serviceAccountName: "" - ## Provide a secret containing sensitives data + ## @param uat.secret define the secret configuration ## e.g. provide a custom java keystore used in jvmArgs: ## keytool -genkeypair -storetype jks -alias todelete -keypass changeit -storepass changeit -keystore custom-pki.jks -dname "CN=Developer, OU=Department, O=Company, L=City, ST=State, C=CA" ## keytool -delete -alias todelete -storepass changeit -keystore custom-pki.jks ## keytool -list -keystore custom-pki.jks -storepass changeit ## Generate base64 data and paste it in your values.yaml: ## cat custom-pki.jks | base64 -w - + ## secret: enabled: false mountPath: /etc/secret-volume readOnly: true data: {} - ## custom-pki.jks: + # custom-pki.jks: service: type: "" portName: "" @@ -272,16 +300,19 @@ uat: annotations: {} ## @param uat.hostAliases define the hosts and IP addresses for the Pod's /etc/hosts file. + ## hostAliases: [] - # - ip: "127.0.0.1" - # hostnames: - # - "foo.local" - # - "bar.local" - # - ip: "10.1.2.3" - # hostnames: - # - "foo.remote" - # - "bar.remote" - + # - ip: "127.0.0.1" + # hostnames: + # - "foo.local" + # - "bar.local" + # - ip: "10.1.2.3" + # hostnames: + # - "foo.remote" + # - "bar.remote" + +## @param serviceapi Core ReportPortal service for the CRON jobs to clean the database and storage +## servicejobs: name: jobs image: @@ -300,6 +331,17 @@ servicejobs: periodSeconds: 40 timeoutSeconds: 5 failureThreshold: 10 + + ## @param servicejobs.coreJobs define the configuration for the core jobs that clean the database and storage + ## @param servicejobs.cleanEventsRetention define the number of days to keep events in the database + ## @param servicejobs.cleanEventsCron define the cron expression for the clean events job + ## @param servicejobs.cleanAttachmentCron define the cron expression for the clean attachments job from database + ## @param servicejobs.cleanLogCron define the cron expression for the clean logs job + ## @param servicejobs.cleanLaunchCron define the cron expression for the clean launches job + ## @param servicejobs.cleanStorageCron define the cron expression for the clean storage job the binary storage + ## @param servicejobs.storageProjectCron define the cron expression for the calculating average project attachments storage job + ## @param servicejobs.chunksize define the number of binaries to be removed from binary storage by servicejobs.storageProjectCron within one job execution + ## coreJobs: cleanEventsRetention: 365 cleanEventsCron: 0 0 */24 * * * @@ -310,8 +352,9 @@ servicejobs: storageProjectCron: 0 */5 * * * * chunksize: 200000 - ## Double Entry purposes. The Jobs service processes logs at a rate of one log per millisecond. - ## Ref: https://reportportal.io/blog/double-entry-in-5.7.2 + ## @param servicejobs.logProcessing define the configuration for the log processing (a rate of one log per millisecond) + ## Use the double entry to move test logs from PostgreSQL to Elastic-type engines. Ref: https://reportportal.io/blog/double-entry-in-5.7.2 + ## logProcessing: maxBatchSize: 2000 maxBatchTimeout: 6000 @@ -324,24 +367,28 @@ servicejobs: memory: 512Mi jvmArgs: "-Djava.security.egd=file:/dev/./urandom -XX:+UseG1GC -XX:+UseStringDeduplication -XX:G1ReservePercent=20 -XX:InitiatingHeapOccupancyPercent=60 -XX:MaxRAMPercentage=70.0 -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/tmp" - ## Extra environment variables + ## @param servicejobs.extraEnvs define the extra environment variables + ## extraEnvs: [] - ## - name: EXTRA_ENV - ## value: "TRUE" - ## - name: EXTRA_ENV_SECRET - ## valueFrom: - ## secretKeyRef: - ## name: "additional-credentials" - ## key: username + # - name: EXTRA_ENV + # value: "TRUE" + # - name: EXTRA_ENV_SECRET + # valueFrom: + # secretKeyRef: + # name: "additional-credentials" + # key: username podLabels: {} podAnnotations: {} securityContext: {} + ## @param servicejobs.nodeSelector define which Nodes the Pods are scheduled on. ## You can choose compute classes for GKE Autopilot Pods https://cloud.google.com/kubernetes-engine/docs/concepts/autopilot-compute-classes ## Use cloud.google.com/compute-class: COMPUTE_CLASS for specific GKE Autopilot compute class. ## Use kubernetes.io/arch: ARCHITECTURE for specific GKE Autopilot CPU architecture. + ## nodeSelector: {} serviceAccountName: "" + service: type: "" portName: "" @@ -349,11 +396,13 @@ servicejobs: extraPorts: [] annotations: {} +## @param serviceanalyzer Core ReportPortal service for the analysis of test results +## serviceanalyzer: name: analyzer image: repository: reportportal/service-auto-analyzer - tag: 5.11.0 + tag: 5.11.0-r2 pullPolicy: Always uwsgiWorkers: 2 resources: @@ -366,19 +415,23 @@ serviceanalyzer: podLabels: {} podAnnotations: {} securityContext: {} - ## Extra environment variables + + ## @param serviceanalyzer.extraEnvs define the extra environment variables + ## extraEnvs: [] - ## - name: EXTRA_ENV - ## value: "TRUE" - ## - name: EXTRA_ENV_SECRET - ## valueFrom: - ## secretKeyRef: - ## name: "additional-credentials" - ## key: username + # - name: EXTRA_ENV + # value: "TRUE" + # - name: EXTRA_ENV_SECRET + # valueFrom: + # secretKeyRef: + # name: "additional-credentials" + # key: username + ## @param serviceanalyzer.nodeSelector define which Nodes the Pods are scheduled on. ## You can choose compute classes for GKE Autopilot Pods https://cloud.google.com/kubernetes-engine/docs/concepts/autopilot-compute-classes ## Use cloud.google.com/compute-class: "COMPUTE_CLASS" for specific GKE Autopilot compute class. ## Use kubernetes.io/arch: "ARCHITECTURE" for specific GKE Autopilot CPU architecture. + ## nodeSelector: {} serviceAccountName: "" service: @@ -388,6 +441,8 @@ serviceanalyzer: extraPorts: [] annotations: {} +## @param serviceanalyzertrain Core ReportPortal service for the training of the analysis of test results +## serviceanalyzertrain: name: analyzer-train pullPolicy: Always @@ -402,19 +457,22 @@ serviceanalyzertrain: podLabels: {} podAnnotations: {} securityContext: {} - ## Extra environment variables + + ## @param serviceanalyzertrain.extraEnvs define the extra environment variables extraEnvs: [] - ## - name: EXTRA_ENV - ## value: "TRUE" - ## - name: EXTRA_ENV_SECRET - ## valueFrom: - ## secretKeyRef: - ## name: "additional-credentials" - ## key: username + # - name: EXTRA_ENV + # value: "TRUE" + # - name: EXTRA_ENV_SECRET + # valueFrom: + # secretKeyRef: + # name: "additional-credentials" + # key: username + ## @param serviceanalyzertrain.nodeSelector define which Nodes the Pods are scheduled on. ## You can choose compute classes for GKE Autopilot Pods https://cloud.google.com/kubernetes-engine/docs/concepts/autopilot-compute-classes ## Use cloud.google.com/compute-class: "COMPUTE_CLASS" for specific GKE Autopilot compute class. ## Use kubernetes.io/arch: "ARCHITECTURE" for specific GKE Autopilot CPU architecture. + ## nodeSelector: {} serviceAccountName: "" service: @@ -424,11 +482,13 @@ serviceanalyzertrain: extraPorts: [] annotations: {} +## @param serviceanalyzerpredict Core ReportPortal service for the prediction of the analysis of test results +## metricsgatherer: name: metrics-gatherer image: repository: reportportal/service-metrics-gatherer - tag: 5.11.0 + tag: 5.11.0-r2 pullPolicy: Always loggingLevel: debug timeManagement: @@ -446,19 +506,22 @@ metricsgatherer: podLabels: {} podAnnotations: {} securityContext: {} - ## Extra environment variables + + ## @param metricsgatherer.extraEnvs define the extra environment variables extraEnvs: [] - ## - name: EXTRA_ENV - ## value: "TRUE" - ## - name: EXTRA_ENV_SECRET - ## valueFrom: - ## secretKeyRef: - ## name: "additional-credentials" - ## key: username + # - name: EXTRA_ENV + # value: "TRUE" + # - name: EXTRA_ENV_SECRET + # valueFrom: + # secretKeyRef: + # name: "additional-credentials" + # key: username + ## @param metricsgatherer.nodeSelector define which Nodes the Pods are scheduled on. ## You can choose compute classes for GKE Autopilot Pods https://cloud.google.com/kubernetes-engine/docs/concepts/autopilot-compute-classes ## Use cloud.google.com/compute-class: "COMPUTE_CLASS" for specific GKE Autopilot compute class. ## Use kubernetes.io/arch: "ARCHITECTURE" for specific GKE Autopilot CPU architecture. + ## nodeSelector: {} serviceAccountName: "" service: @@ -483,35 +546,49 @@ migrations: podLabels: {} podAnnotations: {} securityContext: {} + ## @param migrations.nodeSelector define which Nodes the Pods are scheduled on. ## You can choose compute classes for GKE Autopilot Pods https://cloud.google.com/kubernetes-engine/docs/concepts/autopilot-compute-classes ## Use cloud.google.com/compute-class: COMPUTE_CLASS for specific GKE Autopilot compute class. ## Use kubernetes.io/arch: ARCHITECTURE for specific GKE Autopilot CPU architecture. + ## nodeSelector: {} serviceAccountName: "" + ## @section Infrastructure configuration database: secretName: "" - ## @param database.endpoint by default {{ .Release.Name }}-postgresql.{{ .Release.Namespace }}.svc.cluster.local + passwordKeyName: "postgresql-password" + ## @param database.endpoint by default "{{ .Release.Name }}-postgresql.{{ .Release.Namespace }}.svc.cluster.local" + ## endpoint: port: &dbport 5432 user: &dbuser postgres dbName: &dbname reportportal - ssl: disable ## set @param database.endpoint.ssl to `require` if database connection use SSL + ## @param database.endpoint.ssl configure SSL connection to the database + ## Incoming parameters: require, disable + ## + ssl: disable password: &dbpassword rppassword - ## Number of database connections + ## @param database.connections define the number of connections to the database + ## connections: &dbconnections "" msgbroker: secretName: "" - ## Virtual hosts provide logical grouping and separation of resources. Ref: https://www.rabbitmq.com/vhosts.html + ## @param msgbroker.vhost Virtual hosts provide logical grouping and separation of resources + ## Ref: https://www.rabbitmq.com/vhosts.html + ## vhost: analyzer analyzerExchangeName: analyzer-default - ## @param msgbroker.ssl set to `true` if you want to use HTTPS and AMQPS + ## @param msgbroker.ssl configure SSL connection to the message broker + ## Incoming parameters: true (HTTPS and AMQPS), false (HTTP and AMQP) + ## ssl: false - ## @param msgbroker.endpoint by default {{ .Release.Name }}-rabbitmq.{{ .Release.Namespace }}.svc.cluster.local + ## @param msgbroker.endpoint by default "{{ .Release.Name }}-rabbitmq.{{ .Release.Namespace }}.svc.cluster.local" + ## endpoint: port: &msgbrokerPort 5672 user: &msgbrokerUser rabbitmq @@ -521,33 +598,40 @@ msgbroker: searchengine: secretName: "" - ## - ## Double entry moves test logs from PostgreSQL to Elastic-type engines. Ref: https://reportportal.io/blog/double-entry-in-5.7.2 - ## ElasticSearch Performance tuning - ## Ref: https://reportportal.io/docs/installation-steps/OptimalPerformanceHardwareSetup/#7-elasticsearch-performance-tuning + ## @param searchengine.doubleEntry enable double entry moves test logs from PostgreSQL to Elastic-type engines + ## Ref: https://reportportal.io/blog/double-entry-in-5.7.2 ## doubleEntry: enable: false ## @param searchengine.endpoint URL without protocol and port. By default opensearch-cluster-master.{{ .Release.Namespace }}.svc.cluster.local + ## endpoint: - ## ref. to @param searchengine.protocol - ssl: false ## set to `true` if use HTTPS + ## @param searchengine.ssl configure SSL connection to the search engine + ## Incoming parameters: true (HTTPS), false (HTTP) + ## + ssl: false port: &searchenginePort 9200 user: password: storage: ## @param storage.type Possible storage types: minio, s3, filesystem + ## type: minio secretName: "" ## @param storage.accesskeyName and @param storage.secretkeyName pass to the env[].valueFrom.secretKeyRef.key + ## accesskeyName: "access-key" secretkeyName: "secret-key" accesskey: &storageAccessKey rpuser secretkey: &storageSecretKey miniopassword ## @param storage.endpoint URL without protocol and port + ## endpoint: - ssl: false ## set to `true` if use HTTPS + ## @param storage.ssl configure SSL connection to the storage + ## Incoming parameters: true (HTTPS), false (HTTP) + ## + ssl: false port: 9000 region: "" bucket: @@ -555,55 +639,67 @@ storage: ## If you are upgrading an already installed Report Portal, a migration is required. ## Ref: https://github.com/reportportal/migrations-complex/tree/master/charts ## - type: multi - ## type: multi / single - ## + ## Incoming parameters: single, multi ## When @param storage.bucket.type=multi @param storage.bucket.bucketDefaultName defines plugins bucket ## When @param storage.bucket.type=single @param storage.bucket.bucketDefaultName' defines default single bucket name ## + type: multi bucketDefaultName: "rp-bucket" - ## Multi-bucket values + ## Use when @param storage.bucket.type=multi + ## bucketMultiPrefix: "prj-" bucketMultiPostfix: "" ## @param storage.bucket.bucketMultiSaltName storing auth keystore + ## bucketMultiSaltName: "keystore" - ## @param storage.volume defines the persistent volume claim properties - ## for the filesystem storage type. + ## @param storage.volume defines the persistent volume claim properties for the filesystem storage type + ## volume: - ## @param storage.volume.capacity defines the size of the storage. + ## @param storage.volume.capacity defines the size of the storage + ## capacity: 5Gi - ## @param storage.volume.storageClassName defines the storage class name. + ## @param storage.volume.storageClassName defines the storage class name + ## storageClassName: "standard" - ## @param storage.volume.annotations defines the common annotations. + ## @param storage.volume.annotations defines the common annotations + ## annotations: {} - ## @param storage.volume.volumeConfig contains configuration for creating - ## a persistent volume. + ## @param storage.volume.volumeConfig contains configuration for creating a persistent volume + ## volumeConfig: - ## @param storage.volume.volumeConfig.type defines the Persistent Volume type. - ## Possible values: hostPath, local, csi. If empty, PV is not created. + ## @param storage.volume.volumeConfig.type defines the Persistent Volume type + ## Incoming parameters: hostPath, local, csi. If empty, PV is not created + ## type: "" hostPath: {} local: nodeSelectorNames: [] ## @param storage.volume.volumeConfig.csi defines - ## the Container Storage Interface (CSI) properties. + ## the Container Storage Interface (CSI) properties + ## csi: ## @param storage.volume.volumeConfig.csi.driver defines - ## the CSI driver name. + ## the CSI driver name + ## driver: "" ## @param storage.volume.volumeConfig.csi.volumeHandle defines - ## the volume handle. + ## the volume handle + ## volumeHandle: "" ## @param storage.volume.volumeConfig.csi.fsType defines - ## the filesystem type. Provide ext4, xfs, etc. + ## the filesystem type. Provide ext4, xfs, etc + ## fsType: "" ## @param storage.volume.volumeConfig.csi.readOnly defines if - ## the volume is read-only. Provide true or false. + ## the volume is read-only. Provide true or false + ## readOnly: "" ## @param storage.volume.volumeConfig.csi.volumeAttributes defines - ## additional volume attributes. + ## additional volume attributes + ## volumeAttributes: {} + ## @section Ingress configuration ## If you have installed ingress controller and want to expose application - set @param ingress.enable to `true` @@ -625,10 +721,12 @@ storage: ## @param ingress.tls.certificate.privateKey provide a base64-encoded private key for TLS. ## @param ingress.tls.certificate.certificate provide a base64-encoded certificate for TLS. ## @param ingress.tls.certificate.gcpManaged set to `true` if you want to use Google Managed Certificate instead of providing your own certificate. +## ingress: enable: true - ## @param ingress.hosts can be a list or a single string. + ## @param ingress.hosts can be a list or a single string + ## hosts: null path: null class: nginx @@ -651,48 +749,79 @@ ingress: privateKey: null certificate: null + + ## @section Additional configuration +## -## tolerations for all components, if any (requires Kubernetes >= 1.6) +## @param tolerations for all components, if any (requires Kubernetes >= 1.6) ## Ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/ +## tolerations: [] - ## - key: "key" - ## operator: "Equal|Exists" - ## value: "value" - ## effect: "NoSchedule|PreferNoSchedule|NoExecute" + # - key: "key" + # operator: "Equal|Exists" + # value: "value" + # effect: "NoSchedule|PreferNoSchedule|NoExecute" serviceAccount: create: true name: reportportal ## @param serviceAccount.annotations For AWS IAM role association use the following annotations ## See: https://docs.aws.amazon.com/eks/latest/userguide/specify-service-account-role.html + ## annotations: {} - -## RBAC is required for service-index in order to collect status/info over all services +## Role Based Access +## ref: https://kubernetes.io/docs/admin/authorization/rbac/ +## rbac: + ## @param rbac is required for service-index in order to collect status/info over all services + ## create: true + ## @param rbac.rules define the rules for ReportPortal + ## + rules: [] + # - apiGroups: ["", "batch"] + # resources: ["pods","services", "jobs"] + # verbs: ["get", "list", "watch"] -imagePullSecrets: [] +## @param k8sWaitFor External k8s-wait-for Helm Chart as dependency +## +k8sWaitFor: + image: + repository: reportportal/k8s-wait-for + tag: latest -## Extra init containers (e.g. wait for minio) +## Networking between pods +## Set @param k8s.networking.ssl to `true` if SSL enabled between pods inside Kubernetes cluster +## +k8s: + networking: + ssl: false + +## @param extraInitContainers init containers (e.g. wait for minio) +## extraInitContainers: {} - ## - name: "wait-for-minio" - ## image: "busybox" - ## imagePullPolicy: "IfNotPresent" - ## command: - ## - sh - ## - "-c" - ## - "for i in `seq 1 300`; do sleep 1; if wget http://-minio.default.svc.cluster.local:9000/minio/health/live -q -O /dev/null ; then exit 0; fi; done; exit 1" + # - name: "wait-for-minio" + # image: "busybox" + # imagePullPolicy: "IfNotPresent" + # command: + # - sh + # - "-c" + # - "for i in `seq 1 300`; do sleep 1; if wget http://-minio.default.svc.cluster.local:9000/minio/health/live -q -O /dev/null ; then exit 0; fi; done; exit 1" + + ## @section External dependencies installation configuration +## ## @param postgresql External PostgreSQL Helm Chart as dependency +## postgresql: - ## set to `false` if using a Cloud/On-Premise managed database. + ## set to `false` if using a Cloud/On-Premise managed database + ## install: true image: - registry: docker.io repository: bitnami/postgresql tag: 16.3.0 auth: @@ -706,31 +835,41 @@ postgresql: postgresql: *dbport ## @param rabbitmq External RabbitMQ Helm Chart as dependency +## Set @param rabbitmq.install to `false` if using a Cloud/On-Premise managed RabbitMQ +## rabbitmq: - install: true ## set to `false` if using a Cloud/On-Premise managed RabbitMQ. + install: true image: - registry: docker.io repository: bitnami/rabbitmq - tag: 3.13.2 + tag: 3.13.3-debian-12-r0 auth: username: *msgbrokerUser password: *msgbrokerPass containerPorts: amqp: *msgbrokerPort manager: *msgbrokerApiPort - ## @param rabbitmq.extraPlugins define additional RabbitMQ plugins to be enabled. - ## Consistent Hash Exchange is required for the ReportPortal. - extraPlugins: "rabbitmq_auth_backend_ldap rabbitmq_consistent_hash_exchange" + ## @param rabbitmq.extraPlugins define additional RabbitMQ plugins to be enabled + ## Required for the ReportPortal to work + ## + extraPlugins: > + rabbitmq_auth_backend_ldap + rabbitmq_consistent_hash_exchange + rabbitmq_shovel + rabbitmq_shovel_management ## @param opensearch External OpenSearch Helm Chart as dependency +## Set @param opensearch.install to `false` if using a Cloud/On-Premise managed OpenSearch +## opensearch: - install: true ## set to `false` if using a Cloud/On-Premise managed OpenSearch. + install: true image: repository: opensearchproject/opensearch tag: 2.14.0 ## @param opensearch.singleNode If "true", replicas will be forced from 3 to 1 + ## singleNode: true ## @param opensearch.httpPort Port for OpenSearch endpoint + ## httpPort: *searchenginePort startupProbe: initialDelaySeconds: 30 @@ -741,25 +880,16 @@ opensearch: value: "true" ## @param minio External MinIO Helm Chart +## Set @param minio.install to `false` if using a Cloud/On-Premise managed binary storage +## minio: install: true image: repository: bitnami/minio - registry: docker.io tag: 2024.6.26-debian-12-r0 auth: rootUser: *storageAccessKey rootPassword: *storageSecretKey persistence: annotations: - "helm.sh/resource-policy": "keep" - -k8sWaitFor: - image: - repository: reportportal/k8s-wait-for - tag: latest - -## Networking between pods -k8s: - networking: - ssl: false # set to `true` if SSL enabled between pods inside Kubernetes cluster + "helm.sh/resource-policy": "keep" \ No newline at end of file