From fc374e2996f1a4f9651449ac6332750f70533508 Mon Sep 17 00:00:00 2001 From: CapgeminiSBotha Date: Thu, 6 Apr 2023 12:15:28 +0200 Subject: [PATCH] Add Elastic APM to templates initial commit --- .../templates/deployment-activemq.yaml | 36 ++++++++++++++++ .../alfresco-search/templates/deployment.yaml | 39 ++++++++++++++++++ .../templates/deployment-filestore.yaml | 37 +++++++++++++++++ .../templates/deployment-imagemagick.yaml | 38 +++++++++++++++++ .../templates/deployment-libreoffice.yaml | 38 +++++++++++++++++ .../templates/deployment-pdfrenderer.yaml | 38 +++++++++++++++++ .../templates/deployment-repository.yaml | 37 +++++++++++++++++ .../templates/deployment-share.yaml | 41 ++++++++++++++++++- .../templates/deployment-tika.yaml | 38 +++++++++++++++++ .../templates/deployment-transform-misc.yaml | 38 +++++++++++++++++ .../deployment-transform-router.yaml | 40 +++++++++++++++++- helm/alfresco-content-services/values.yaml | 21 ++++++++++ 12 files changed, 437 insertions(+), 4 deletions(-) diff --git a/helm/alfresco-content-services/charts/activemq/templates/deployment-activemq.yaml b/helm/alfresco-content-services/charts/activemq/templates/deployment-activemq.yaml index 8c9271082..3033e2408 100755 --- a/helm/alfresco-content-services/charts/activemq/templates/deployment-activemq.yaml +++ b/helm/alfresco-content-services/charts/activemq/templates/deployment-activemq.yaml @@ -50,6 +50,25 @@ spec: secretKeyRef: name: {{ default (printf "%s-brokersecret" (include "content-services.shortname" $)) $.Values.adminUser.existingSecretName }} key: BROKER_PASSWORD + {{- if and (.Values.global.elasticAPM) (.Values.global.elasticAPM.enabled) }} + - name: ELASTIC_APM_SERVER_URLS + value: {{ .Values.global.elasticAPM.containers.env.serverUrls }} + - name: ELASTIC_APM_SERVICE_NAME + value: "activemq" + - name: ELASTIC_APM_APPLICATION_PACKAGES + value: com.alfresco,org.alfresco,nl.amsterdam,org.apache,org.fusesource,org.jasypt,org.slf4j,org.springframework,com.sun + - name: ELASTIC_APM_ENVIRONMENT + value: {{ .Values.global.elasticAPM.containers.env.environment }} + - name: ELASTIC_APM_LOG_LEVEL + value: {{ .Values.global.elasticAPM.containers.env.logLevel }} + - name: ELASTIC_APM_SECRET_TOKEN + valueFrom: + secretKeyRef: + name: {{ .Values.global.elasticAPM.containers.env.secretToken.name }} + key: {{ .Values.global.elasticAPM.containers.env.secretToken.key }} + - name: JAVA_TOOL_OPTIONS + value: {{ .Values.global.elasticAPM.containers.env.javaToolOptions }} + {{- end }} ports: - name: stomp containerPort: {{ .Values.services.broker.ports.internal.stomp | default 61613 }} @@ -78,6 +97,23 @@ spec: - name: data mountPath: {{ .Values.persistence.data.mountPath }} subPath: {{ .Values.persistence.data.subPath }} + {{- if and (.Values.global.elasticAPM) (.Values.global.elasticAPM.enabled) }} + - name: {{ .Values.global.elasticAPM.containers.volumeMounts.name }} + mountPath: {{ .Values.global.elasticAPM.containers.volumeMounts.mountPath }} + {{- end }} + {{- if and (.Values.global.elasticAPM) (.Values.global.elasticAPM.enabled) }} + initContainers: + - name: elastic-java-agent + image: {{ .Values.global.elasticAPM.initContainers.image }} + volumeMounts: + - mountPath: {{ .Values.global.elasticAPM.initContainers.volumeMounts.mountPath }} + name: {{ .Values.global.elasticAPM.initContainers.volumeMounts.name }} + command: ['cp', '-v', '/usr/agent/elastic-apm-agent.jar', '/elastic/apm/agent'] + {{- end }} volumes: {{- include "data_volume" .Values | nindent 8 }} + {{- if and (.Values.global.elasticAPM) (.Values.global.elasticAPM.enabled) }} + - name: elastic-apm-agent + emptyDir: {} + {{- end }} {{- end }} diff --git a/helm/alfresco-content-services/charts/alfresco-search/templates/deployment.yaml b/helm/alfresco-content-services/charts/alfresco-search/templates/deployment.yaml index 5d9f4d512..6ceaa978c 100755 --- a/helm/alfresco-content-services/charts/alfresco-search/templates/deployment.yaml +++ b/helm/alfresco-content-services/charts/alfresco-search/templates/deployment.yaml @@ -46,6 +46,28 @@ spec: image: {{ template "alfresco-search.dockerImage" . }} imagePullPolicy: {{ template "alfresco-search.pullPolicy" . }} {{- include "component-security-context" .Values | indent 8 }} + env: + {{- if and (.Values.global.elasticAPM) (.Values.global.elasticAPM.enabled) }} + - name: ELASTIC_APM_SERVER_URLS + value: {{ .Values.global.elasticAPM.containers.env.serverUrls }} + - name: ELASTIC_APM_SERVICE_NAME + value: "solr" + - name: ELASTIC_APM_APPLICATION_PACKAGES + value: com.alfresco,org.alfresco,nl.amsterdam,org.apache + - name: ELASTIC_APM_ENVIRONMENT + value: {{ .Values.global.elasticAPM.containers.env.environment }} + - name: ELASTIC_APM_LOG_LEVEL + value: {{ .Values.global.elasticAPM.containers.env.logLevel }} + - name: ELASTIC_APM_INSTRUMENT_ANCIENT_BYTECODE + value: "true" + - name: ELASTIC_APM_SECRET_TOKEN + valueFrom: + secretKeyRef: + name: {{ .Values.global.elasticAPM.containers.env.secretToken.name }} + key: {{ .Values.global.elasticAPM.containers.env.secretToken.key }} + - name: JAVA_TOOL_OPTIONS + value: {{ .Values.global.elasticAPM.containers.env.javaToolOptions }} + {{- end }} envFrom: - configMapRef: name: {{ template "alfresco-search.fullName" . }}-solr-configmap @@ -60,6 +82,10 @@ spec: - name: data mountPath: {{ .Values.persistence.search.data.mountPath }} subPath: {{ .Values.persistence.search.data.subPath }} + {{- if and (.Values.global.elasticAPM) (.Values.global.elasticAPM.enabled) }} + - mountPath: {{ .Values.global.elasticAPM.containers.volumeMounts.mountPath }} + name: {{ .Values.global.elasticAPM.containers.volumeMounts.name }} + {{- end }} readinessProbe: httpGet: path: /solr/alfresco/admin/ping @@ -90,8 +116,21 @@ spec: preStop: exec: command: ["/bin/bash", "-c", "sleep 10"] + initContainers: + {{- if and (.Values.global.elasticAPM) (.Values.global.elasticAPM.enabled) }} + - name: elastic-java-agent + image: {{ .Values.global.elasticAPM.initContainers.image }} + volumeMounts: + - mountPath: {{ .Values.global.elasticAPM.initContainers.volumeMounts.mountPath }} + name: {{ .Values.global.elasticAPM.initContainers.volumeMounts.name }} + command: ['cp', '-v', '/usr/agent/elastic-apm-agent.jar', '/elastic/apm/agent'] + {{- end }} volumes: - name: data persistentVolumeClaim: claimName: |- {{ .Values.persistence.existingClaim | default (printf "%s-solr-claim" (include "alfresco-search.fullName" .)) }} + {{- if and (.Values.global.elasticAPM) (.Values.global.elasticAPM.enabled) }} + - name: elastic-apm-agent + emptyDir: {} + {{- end }} diff --git a/helm/alfresco-content-services/templates/deployment-filestore.yaml b/helm/alfresco-content-services/templates/deployment-filestore.yaml index 332d12938..1146599fd 100644 --- a/helm/alfresco-content-services/templates/deployment-filestore.yaml +++ b/helm/alfresco-content-services/templates/deployment-filestore.yaml @@ -59,6 +59,26 @@ spec: - name: {{ .Chart.Name }} image: "{{ .Values.filestore.image.repository }}:{{ .Values.filestore.image.tag }}" imagePullPolicy: {{ .Values.filestore.image.pullPolicy }} + {{- if and (.Values.global.elasticAPM) (.Values.global.elasticAPM.enabled) }} + env: + - name: ELASTIC_APM_SERVER_URLS + value: {{ .Values.global.elasticAPM.containers.env.serverUrls }} + - name: ELASTIC_APM_SERVICE_NAME + value: "filestore" + - name: ELASTIC_APM_APPLICATION_PACKAGES + value: com.alfresco,org.alfresco,nl.amsterdam,org.springframework + - name: ELASTIC_APM_ENVIRONMENT + value: {{ .Values.global.elasticAPM.containers.env.environment }} + - name: ELASTIC_APM_LOG_LEVEL + value: {{ .Values.global.elasticAPM.containers.env.logLevel }} + - name: ELASTIC_APM_SECRET_TOKEN + valueFrom: + secretKeyRef: + name: {{ .Values.global.elasticAPM.containers.env.secretToken.name }} + key: {{ .Values.global.elasticAPM.containers.env.secretToken.key }} + - name: JAVA_TOOL_OPTIONS + value: {{ .Values.global.elasticAPM.containers.env.javaToolOptions }} + {{- end }} {{- include "component-security-context" .Values.filestore | indent 8 }} envFrom: - configMapRef: @@ -86,6 +106,23 @@ spec: - name: data mountPath: {{ .Values.filestore.persistence.data.mountPath }} subPath: {{ .Values.filestore.persistence.data.subPath }} + {{- if and (.Values.global.elasticAPM) (.Values.global.elasticAPM.enabled) }} + - name: {{ .Values.global.elasticAPM.containers.volumeMounts.name }} + mountPath: {{ .Values.global.elasticAPM.containers.volumeMounts.mountPath }} + {{- end }} + {{- if and (.Values.global.elasticAPM) (.Values.global.elasticAPM.enabled) }} + initContainers: + - name: elastic-java-agent + image: {{ .Values.global.elasticAPM.initContainers.image }} + volumeMounts: + - mountPath: {{ .Values.global.elasticAPM.initContainers.volumeMounts.mountPath }} + name: {{ .Values.global.elasticAPM.initContainers.volumeMounts.name }} + command: ['cp', '-v', '/usr/agent/elastic-apm-agent.jar', '/elastic/apm/agent'] + {{- end }} volumes: {{- include "data_volume" .Values.filestore | nindent 8 }} + {{- if and (.Values.global.elasticAPM) (.Values.global.elasticAPM.enabled) }} + - name: elastic-apm-agent + emptyDir: {} + {{- end }} {{- end }} diff --git a/helm/alfresco-content-services/templates/deployment-imagemagick.yaml b/helm/alfresco-content-services/templates/deployment-imagemagick.yaml index 9cba6601b..50bc9a4a5 100644 --- a/helm/alfresco-content-services/templates/deployment-imagemagick.yaml +++ b/helm/alfresco-content-services/templates/deployment-imagemagick.yaml @@ -64,6 +64,25 @@ spec: name: {{ default (printf "%s-brokersecret" (include "content-services.shortname" .)) .Values.messageBroker.existingSecretName }} env: {{- include "activemq.env" . | nindent 12 }} + {{- if and (.Values.global.elasticAPM) (.Values.global.elasticAPM.enabled) }} + - name: ELASTIC_APM_SERVER_URLS + value: {{ .Values.global.elasticAPM.containers.env.serverUrls }} + - name: ELASTIC_APM_SERVICE_NAME + value: "imagemagick" + - name: ELASTIC_APM_APPLICATION_PACKAGES + value: com.alfresco,org.alfresco,nl.amsterdam + - name: ELASTIC_APM_ENVIRONMENT + value: {{ .Values.global.elasticAPM.containers.env.environment }} + - name: ELASTIC_APM_LOG_LEVEL + value: {{ .Values.global.elasticAPM.containers.env.logLevel }} + - name: ELASTIC_APM_SECRET_TOKEN + valueFrom: + secretKeyRef: + name: {{ .Values.global.elasticAPM.containers.env.secretToken.name }} + key: {{ .Values.global.elasticAPM.containers.env.secretToken.key }} + - name: JAVA_TOOL_OPTIONS + value: {{ .Values.global.elasticAPM.containers.env.javaToolOptions }} + {{- end }} ports: - containerPort: {{ .Values.imagemagick.image.internalPort }} resources: {{- toYaml .Values.imagemagick.resources | nindent 12 }} @@ -82,3 +101,22 @@ spec: periodSeconds: {{ .Values.imagemagick.livenessProbe.periodSeconds }} failureThreshold: 1 timeoutSeconds: {{ .Values.imagemagick.livenessProbe.timeoutSeconds }} + {{- if and (.Values.global.elasticAPM) (.Values.global.elasticAPM.enabled) }} + volumeMounts: + - name: {{ .Values.global.elasticAPM.containers.volumeMounts.name }} + mountPath: {{ .Values.global.elasticAPM.containers.volumeMounts.mountPath }} + {{- end }} + {{- if and (.Values.global.elasticAPM) (.Values.global.elasticAPM.enabled) }} + initContainers: + - name: elastic-java-agent + image: {{ .Values.global.elasticAPM.initContainers.image }} + volumeMounts: + - mountPath: {{ .Values.global.elasticAPM.initContainers.volumeMounts.mountPath }} + name: {{ .Values.global.elasticAPM.initContainers.volumeMounts.name }} + command: ['cp', '-v', '/usr/agent/elastic-apm-agent.jar', '/elastic/apm/agent'] + {{- end }} + volumes: + {{- if and (.Values.global.elasticAPM) (.Values.global.elasticAPM.enabled) }} + - name: elastic-apm-agent + emptyDir: {} + {{- end }} diff --git a/helm/alfresco-content-services/templates/deployment-libreoffice.yaml b/helm/alfresco-content-services/templates/deployment-libreoffice.yaml index 7261657e0..885d3026a 100644 --- a/helm/alfresco-content-services/templates/deployment-libreoffice.yaml +++ b/helm/alfresco-content-services/templates/deployment-libreoffice.yaml @@ -65,6 +65,25 @@ spec: name: {{ default (printf "%s-brokersecret" (include "content-services.shortname" .)) .Values.messageBroker.existingSecretName }} env: {{- include "activemq.env" . | nindent 12 }} + {{- if and (.Values.global.elasticAPM) (.Values.global.elasticAPM.enabled) }} + - name: ELASTIC_APM_SERVER_URLS + value: {{ .Values.global.elasticAPM.containers.env.serverUrls }} + - name: ELASTIC_APM_SERVICE_NAME + value: "libreoffice" + - name: ELASTIC_APM_APPLICATION_PACKAGES + value: com.alfresco,org.alfresco,nl.amsterdam + - name: ELASTIC_APM_ENVIRONMENT + value: {{ .Values.global.elasticAPM.containers.env.environment }} + - name: ELASTIC_APM_LOG_LEVEL + value: {{ .Values.global.elasticAPM.containers.env.logLevel }} + - name: ELASTIC_APM_SECRET_TOKEN + valueFrom: + secretKeyRef: + name: {{ .Values.global.elasticAPM.containers.env.secretToken.name }} + key: {{ .Values.global.elasticAPM.containers.env.secretToken.key }} + - name: JAVA_TOOL_OPTIONS + value: {{ .Values.global.elasticAPM.containers.env.javaToolOptions }} + {{- end }} ports: - containerPort: {{ .Values.libreoffice.image.internalPort }} resources: {{- toYaml .Values.libreoffice.resources | nindent 12 }} @@ -83,3 +102,22 @@ spec: periodSeconds: {{ .Values.libreoffice.livenessProbe.periodSeconds }} failureThreshold: 1 timeoutSeconds: {{ .Values.libreoffice.livenessProbe.timeoutSeconds }} + {{- if and (.Values.global.elasticAPM) (.Values.global.elasticAPM.enabled) }} + volumeMounts: + - name: {{ .Values.global.elasticAPM.containers.volumeMounts.name }} + mountPath: {{ .Values.global.elasticAPM.containers.volumeMounts.mountPath }} + {{- end }} + {{- if and (.Values.global.elasticAPM) (.Values.global.elasticAPM.enabled) }} + initContainers: + - name: elastic-java-agent + image: {{ .Values.global.elasticAPM.initContainers.image }} + volumeMounts: + - mountPath: {{ .Values.global.elasticAPM.initContainers.volumeMounts.mountPath }} + name: {{ .Values.global.elasticAPM.initContainers.volumeMounts.name }} + command: ['cp', '-v', '/usr/agent/elastic-apm-agent.jar', '/elastic/apm/agent'] + {{- end }} + volumes: + {{- if and (.Values.global.elasticAPM) (.Values.global.elasticAPM.enabled) }} + - name: elastic-apm-agent + emptyDir: {} + {{- end }} diff --git a/helm/alfresco-content-services/templates/deployment-pdfrenderer.yaml b/helm/alfresco-content-services/templates/deployment-pdfrenderer.yaml index f5cb0f6db..c97c6918c 100644 --- a/helm/alfresco-content-services/templates/deployment-pdfrenderer.yaml +++ b/helm/alfresco-content-services/templates/deployment-pdfrenderer.yaml @@ -64,6 +64,25 @@ spec: name: {{ default (printf "%s-brokersecret" (include "content-services.shortname" .)) .Values.messageBroker.existingSecretName }} env: {{- include "activemq.env" . | nindent 12 }} + {{- if and (.Values.global.elasticAPM) (.Values.global.elasticAPM.enabled) }} + - name: ELASTIC_APM_SERVER_URLS + value: {{ .Values.global.elasticAPM.containers.env.serverUrls }} + - name: ELASTIC_APM_SERVICE_NAME + value: "pdf-renderer" + - name: ELASTIC_APM_APPLICATION_PACKAGES + value: com.alfresco,org.alfresco,nl.amsterdam + - name: ELASTIC_APM_ENVIRONMENT + value: {{ .Values.global.elasticAPM.containers.env.environment }} + - name: ELASTIC_APM_LOG_LEVEL + value: {{ .Values.global.elasticAPM.containers.env.logLevel }} + - name: ELASTIC_APM_SECRET_TOKEN + valueFrom: + secretKeyRef: + name: {{ .Values.global.elasticAPM.containers.env.secretToken.name }} + key: {{ .Values.global.elasticAPM.containers.env.secretToken.key }} + - name: JAVA_TOOL_OPTIONS + value: {{ .Values.global.elasticAPM.containers.env.javaToolOptions }} + {{- end }} ports: - containerPort: {{ .Values.pdfrenderer.image.internalPort }} resources: {{- toYaml .Values.pdfrenderer.resources | nindent 12 }} @@ -82,3 +101,22 @@ spec: periodSeconds: {{ .Values.pdfrenderer.livenessProbe.periodSeconds }} failureThreshold: 1 timeoutSeconds: {{ .Values.pdfrenderer.livenessProbe.timeoutSeconds }} + {{- if and (.Values.global.elasticAPM) (.Values.global.elasticAPM.enabled) }} + volumeMounts: + - name: {{ .Values.global.elasticAPM.containers.volumeMounts.name }} + mountPath: {{ .Values.global.elasticAPM.containers.volumeMounts.mountPath }} + {{- end }} + {{- if and (.Values.global.elasticAPM) (.Values.global.elasticAPM.enabled) }} + initContainers: + - name: elastic-java-agent + image: {{ .Values.global.elasticAPM.initContainers.image }} + volumeMounts: + - mountPath: {{ .Values.global.elasticAPM.initContainers.volumeMounts.mountPath }} + name: {{ .Values.global.elasticAPM.initContainers.volumeMounts.name }} + command: ['cp', '-v', '/usr/agent/elastic-apm-agent.jar', '/elastic/apm/agent'] + {{- end }} + volumes: + {{- if and (.Values.global.elasticAPM) (.Values.global.elasticAPM.enabled) }} + - name: elastic-apm-agent + emptyDir: {} + {{- end }} diff --git a/helm/alfresco-content-services/templates/deployment-repository.yaml b/helm/alfresco-content-services/templates/deployment-repository.yaml index 6295555df..8a0195303 100644 --- a/helm/alfresco-content-services/templates/deployment-repository.yaml +++ b/helm/alfresco-content-services/templates/deployment-repository.yaml @@ -51,6 +51,26 @@ spec: {{ tpl .Values.repository.command . | indent 12 }} {{- end }} {{- include "component-security-context" .Values.repository | indent 8 }} + env: + {{- if and (.Values.global.elasticAPM) (.Values.global.elasticAPM.enabled) }} + - name: ELASTIC_APM_SERVER_URLS + value: {{ .Values.global.elasticAPM.containers.env.serverUrls}} + - name: ELASTIC_APM_SERVICE_NAME + value: "repository" + - name: ELASTIC_APM_APPLICATION_PACKAGES + value: com.alfresco,org.alfresco,nl.amsterdam + - name: ELASTIC_APM_ENVIRONMENT + value: {{ .Values.global.elasticAPM.containers.env.environment }} + - name: ELASTIC_APM_LOG_LEVEL + value: {{ .Values.global.elasticAPM.containers.env.logLevel }} + - name: ELASTIC_APM_SECRET_TOKEN + valueFrom: + secretKeyRef: + name: {{ .Values.global.elasticAPM.containers.env.secretToken.name}} + key: {{ .Values.global.elasticAPM.containers.env.secretToken.key }} + - name: JAVA_TOOL_OPTIONS + value: {{ .Values.global.elasticAPM.containers.env.javaToolOptions }} + {{- end }} envFrom: - secretRef: name: {{ default (printf "%s-dbsecret" (include "content-services.shortname" $)) $.Values.postgresql.existingSecretName }} @@ -103,6 +123,11 @@ spec: mountPath: /usr/local/tomcat/shared/classes/alfresco/extension/dev-log4j.properties subPath: dev-log4j.properties {{- end }} + {{- if and (.Values.global.elasticAPM) (.Values.global.elasticAPM.enabled) }} + volumeMounts: + - name: {{ .Values.global.elasticAPM.containers.volumeMounts.name }} + mountPath: {{ .Values.global.elasticAPM.containers.volumeMounts.mountPath }} + {{- end }} startupProbe: httpGet: path: /alfresco/api/-default-/public/alfresco/versions/1/probes/-ready- @@ -196,6 +221,14 @@ spec: - name: email-keystore-volume mountPath: /var/run/secrets/java.io/keystores {{- end }} + {{- if and (.Values.global.elasticAPM) (.Values.global.elasticAPM.enabled) }} + - name: elastic-java-agent + image: {{ .Values.global.elasticAPM.initContainers.image }} + volumeMounts: + - mountPath: {{ .Values.global.elasticAPM.initContainers.volumeMounts.mountPath }} + name: {{ .Values.global.elasticAPM.initContainers.volumeMounts.name }} + command: ['cp', '-v', '/usr/agent/elastic-apm-agent.jar', '/elastic/apm/agent'] + {{- end }} volumes: {{- include "data_volume" .Values.repository | nindent 8 }} {{- if eq .Values.global.tracking.auth "secret" }} @@ -250,6 +283,10 @@ spec: - key: ca.crt path: ca.crt {{- end }} + {{- if and (.Values.global.elasticAPM) (.Values.global.elasticAPM.enabled) }} + - name: elastic-apm-agent + emptyDir: {} + {{- end }} {{- if .Values.repository.extraVolumes }} {{ toYaml .Values.repository.extraVolumes | indent 6 }} {{- end }} diff --git a/helm/alfresco-content-services/templates/deployment-share.yaml b/helm/alfresco-content-services/templates/deployment-share.yaml index 85199684c..9ff64e330 100644 --- a/helm/alfresco-content-services/templates/deployment-share.yaml +++ b/helm/alfresco-content-services/templates/deployment-share.yaml @@ -47,12 +47,36 @@ spec: ports: - containerPort: {{ .Values.share.image.internalPort }} resources: {{- toYaml .Values.share.resources | nindent 12 }} + env: + {{- if and (.Values.global.elasticAPM) (.Values.global.elasticAPM.enabled) }} + - name: ELASTIC_APM_SERVER_URLS + value: {{ .Values.global.elasticAPM.containers.env.serverUrls}} + - name: ELASTIC_APM_SERVICE_NAME + value: "share" + - name: ELASTIC_APM_APPLICATION_PACKAGES + value: com.alfresco,org.alfresco,nl.amsterdam + - name: ELASTIC_APM_ENVIRONMENT + value: {{ .Values.global.elasticAPM.containers.env.environment }} + - name: ELASTIC_APM_LOG_LEVEL + value: {{ .Values.global.elasticAPM.containers.env.logLevel }} + - name: ELASTIC_APM_SECRET_TOKEN + valueFrom: + secretKeyRef: + name: {{ .Values.global.elasticAPM.containers.env.secretToken.name}} + key: {{ .Values.global.elasticAPM.containers.env.secretToken.key }} + - name: JAVA_TOOL_OPTIONS + value: {{ .Values.global.elasticAPM.containers.env.javaToolOptions }} + {{- end }} envFrom: - configMapRef: name: {{ template "content-services.shortname" . }}-share-configmap {{- if .Values.share.extraVolumeMounts }} volumeMounts: {{ toYaml .Values.share.extraVolumeMounts | indent 10 }} + {{- if and (.Values.global.elasticAPM) (.Values.global.elasticAPM.enabled) }} + - name: {{ .Values.global.elasticAPM.containers.volumeMounts.name }} + mountPath: {{ .Values.global.elasticAPM.containers.volumeMounts.mountPath }} + {{- end }} {{- end }} readinessProbe: httpGet: @@ -73,11 +97,24 @@ spec: preStop: exec: command: ["/bin/bash", "-c", "sleep 20"] - {{- if .Values.share.extraInitContainers }} initContainers: + {{- if .Values.share.extraInitContainers }} {{ tpl .Values.share.extraInitContainers . | indent 8 }} {{- end }} - {{- if .Values.share.extraVolumes }} + {{- if and (.Values.global.elasticAPM) (.Values.global.elasticAPM.enabled) }} + - name: elastic-java-agent + image: {{ .Values.global.elasticAPM.initContainers.image }} + volumeMounts: + - mountPath: {{ .Values.global.elasticAPM.initContainers.volumeMounts.mountPath }} + name: {{ .Values.global.elasticAPM.initContainers.volumeMounts.name }} + command: ['cp', '-v', '/usr/agent/elastic-apm-agent.jar', '/elastic/apm/agent'] + {{- end }} volumes: + {{- if .Values.share.extraVolumes }} {{ toYaml .Values.share.extraVolumes | indent 6 }} {{- end }} + {{- if and (.Values.global.elasticAPM) (.Values.global.elasticAPM.enabled) }} + - name: elastic-apm-agent + emptyDir: {} + {{- end }} + diff --git a/helm/alfresco-content-services/templates/deployment-tika.yaml b/helm/alfresco-content-services/templates/deployment-tika.yaml index 72830a9b5..d60c25946 100644 --- a/helm/alfresco-content-services/templates/deployment-tika.yaml +++ b/helm/alfresco-content-services/templates/deployment-tika.yaml @@ -64,6 +64,25 @@ spec: name: {{ default (printf "%s-brokersecret" (include "content-services.shortname" .)) .Values.messageBroker.existingSecretName }} env: {{- include "activemq.env" . | nindent 12 }} + {{- if and (.Values.global.elasticAPM) (.Values.global.elasticAPM.enabled) }} + - name: ELASTIC_APM_SERVER_URLS + value: {{ .Values.global.elasticAPM.containers.env.serverUrls }} + - name: ELASTIC_APM_SERVICE_NAME + value: "tika" + - name: ELASTIC_APM_APPLICATION_PACKAGES + value: com.alfresco,org.alfresco,nl.amsterdam + - name: ELASTIC_APM_ENVIRONMENT + value: {{ .Values.global.elasticAPM.containers.env.environment }} + - name: ELASTIC_APM_LOG_LEVEL + value: {{ .Values.global.elasticAPM.containers.env.logLevel }} + - name: ELASTIC_APM_SECRET_TOKEN + valueFrom: + secretKeyRef: + name: {{ .Values.global.elasticAPM.containers.env.secretToken.name }} + key: {{ .Values.global.elasticAPM.containers.env.secretToken.key }} + - name: JAVA_TOOL_OPTIONS + value: {{ .Values.global.elasticAPM.containers.env.javaToolOptions }} + {{- end }} ports: - containerPort: {{ .Values.tika.image.internalPort }} resources: {{- toYaml .Values.tika.resources | nindent 12 }} @@ -82,3 +101,22 @@ spec: periodSeconds: {{ .Values.tika.livenessProbe.periodSeconds }} failureThreshold: 1 timeoutSeconds: {{ .Values.tika.livenessProbe.timeoutSeconds }} + {{- if and (.Values.global.elasticAPM) (.Values.global.elasticAPM.enabled) }} + volumeMounts: + - name: {{ .Values.global.elasticAPM.containers.volumeMounts.name }} + mountPath: {{ .Values.global.elasticAPM.containers.volumeMounts.mountPath }} + {{- end }} + {{- if and (.Values.global.elasticAPM) (.Values.global.elasticAPM.enabled) }} + initContainers: + - name: elastic-java-agent + image: {{ .Values.global.elasticAPM.initContainers.image }} + volumeMounts: + - mountPath: {{ .Values.global.elasticAPM.initContainers.volumeMounts.mountPath }} + name: {{ .Values.global.elasticAPM.initContainers.volumeMounts.name }} + command: ['cp', '-v', '/usr/agent/elastic-apm-agent.jar', '/elastic/apm/agent'] + {{- end }} + volumes: + {{- if and (.Values.global.elasticAPM) (.Values.global.elasticAPM.enabled) }} + - name: elastic-apm-agent + emptyDir: {} + {{- end }} diff --git a/helm/alfresco-content-services/templates/deployment-transform-misc.yaml b/helm/alfresco-content-services/templates/deployment-transform-misc.yaml index ba55e0da0..0f21ebf34 100644 --- a/helm/alfresco-content-services/templates/deployment-transform-misc.yaml +++ b/helm/alfresco-content-services/templates/deployment-transform-misc.yaml @@ -65,6 +65,25 @@ spec: name: {{ default (printf "%s-brokersecret" (include "content-services.shortname" .)) .Values.messageBroker.existingSecretName }} env: {{- include "activemq.env" . | nindent 12 }} + {{- if and (.Values.global.elasticAPM) (.Values.global.elasticAPM.enabled) }} + - name: ELASTIC_APM_SERVER_URLS + value: {{ .Values.global.elasticAPM.containers.env.serverUrls }} + - name: ELASTIC_APM_SERVICE_NAME + value: "transform-misc" + - name: ELASTIC_APM_APPLICATION_PACKAGES + value: com.alfresco,org.alfresco,nl.amsterdam + - name: ELASTIC_APM_ENVIRONMENT + value: {{ .Values.global.elasticAPM.containers.env.environment }} + - name: ELASTIC_APM_LOG_LEVEL + value: {{ .Values.global.elasticAPM.containers.env.logLevel }} + - name: ELASTIC_APM_SECRET_TOKEN + valueFrom: + secretKeyRef: + name: {{ .Values.global.elasticAPM.containers.env.secretToken.name }} + key: {{ .Values.global.elasticAPM.containers.env.secretToken.key }} + - name: JAVA_TOOL_OPTIONS + value: {{ .Values.global.elasticAPM.containers.env.javaToolOptions }} + {{- end }} ports: - containerPort: {{ .Values.transformmisc.image.internalPort }} resources: {{- toYaml .Values.transformmisc.resources | nindent 12 }} @@ -83,4 +102,23 @@ spec: periodSeconds: {{ .Values.transformmisc.livenessProbe.periodSeconds }} failureThreshold: 1 timeoutSeconds: {{ .Values.transformmisc.livenessProbe.timeoutSeconds }} + {{- if and (.Values.global.elasticAPM) (.Values.global.elasticAPM.enabled) }} + volumeMounts: + - name: {{ .Values.global.elasticAPM.containers.volumeMounts.name }} + mountPath: {{ .Values.global.elasticAPM.containers.volumeMounts.mountPath }} + {{- end }} + initContainers: + {{- if and (.Values.global.elasticAPM) (.Values.global.elasticAPM.enabled) }} + - name: elastic-java-agent + image: {{ .Values.global.elasticAPM.initContainers.image }} + volumeMounts: + - mountPath: {{ .Values.global.elasticAPM.initContainers.volumeMounts.mountPath }} + name: {{ .Values.global.elasticAPM.initContainers.volumeMounts.name }} + command: ['cp', '-v', '/usr/agent/elastic-apm-agent.jar', '/elastic/apm/agent'] + {{- end }} + volumes: + {{- if and (.Values.global.elasticAPM) (.Values.global.elasticAPM.enabled) }} + - name: elastic-apm-agent + emptyDir: {} + {{- end }} {{- end }} diff --git a/helm/alfresco-content-services/templates/deployment-transform-router.yaml b/helm/alfresco-content-services/templates/deployment-transform-router.yaml index 84f0ae00c..5ea781f91 100644 --- a/helm/alfresco-content-services/templates/deployment-transform-router.yaml +++ b/helm/alfresco-content-services/templates/deployment-transform-router.yaml @@ -64,6 +64,25 @@ spec: name: {{ default (printf "%s-brokersecret" (include "content-services.shortname" .)) .Values.messageBroker.existingSecretName }} env: {{- include "activemq.env" . | nindent 12 }} + {{- if and (.Values.global.elasticAPM) (.Values.global.elasticAPM.enabled) }} + - name: ELASTIC_APM_SERVER_URLS + value: {{ .Values.global.elasticAPM.containers.env.serverUrls }} + - name: ELASTIC_APM_SERVICE_NAME + value: "transform-router" + - name: ELASTIC_APM_APPLICATION_PACKAGES + value: com.alfresco,org.alfresco,nl.amsterdam + - name: ELASTIC_APM_ENVIRONMENT + value: {{ .Values.global.elasticAPM.containers.env.environment }} + - name: ELASTIC_APM_LOG_LEVEL + value: {{ .Values.global.elasticAPM.containers.env.logLevel }} + - name: ELASTIC_APM_SECRET_TOKEN + valueFrom: + secretKeyRef: + name: {{ .Values.global.elasticAPM.containers.env.secretToken.name }} + key: {{ .Values.global.elasticAPM.containers.env.secretToken.key }} + - name: JAVA_TOOL_OPTIONS + value: {{ .Values.global.elasticAPM.containers.env.javaToolOptions }} + {{- end }} ports: - containerPort: {{ .Values.transformrouter.image.internalPort }} resources: {{- toYaml .Values.transformrouter.resources | nindent 12 }} @@ -82,15 +101,32 @@ spec: initialDelaySeconds: {{ .Values.transformrouter.readinessProbe.initialDelaySeconds }} periodSeconds: {{ .Values.transformrouter.readinessProbe.periodSeconds }} timeoutSeconds: {{ .Values.transformrouter.readinessProbe.timeoutSeconds }} - {{- if .Values.global.ai.enabled }} volumeMounts: + {{- if .Values.global.ai.enabled }} - name: config-volume mountPath: /mnt/routes {{- end }} - {{- if .Values.global.ai.enabled }} + {{- if and (.Values.global.elasticAPM) (.Values.global.elasticAPM.enabled) }} + - mountPath: {{ .Values.global.elasticAPM.containers.volumeMounts.mountPath }} + name: {{ .Values.global.elasticAPM.containers.volumeMounts.name }} + {{- end }} volumes: + {{- if .Values.global.ai.enabled }} - name: config-volume configMap: name: {{ template "alfresco.shortname" . }}-transform-routes-configmap {{- end }} + {{- if and (.Values.global.elasticAPM) (.Values.global.elasticAPM.enabled) }} + - name: elastic-apm-agent + emptyDir: {} + {{- end }} + initContainers: + {{- if and (.Values.global.elasticAPM) (.Values.global.elasticAPM.enabled) }} + - name: elastic-java-agent + image: {{ .Values.global.elasticAPM.initContainers.image }} + volumeMounts: + - mountPath: {{ .Values.global.elasticAPM.initContainers.volumeMounts.mountPath }} + name: {{ .Values.global.elasticAPM.initContainers.volumeMounts.name }} + command: ['cp', '-v', '/usr/agent/elastic-apm-agent.jar', '/elastic/apm/agent'] + {{- end }} {{- end }} diff --git a/helm/alfresco-content-services/values.yaml b/helm/alfresco-content-services/values.yaml index e0e329ee8..8fe6360bf 100644 --- a/helm/alfresco-content-services/values.yaml +++ b/helm/alfresco-content-services/values.yaml @@ -1016,3 +1016,24 @@ global: user: null # -- The password required to access the service, if any password: null + # -- Shared details for ElasticAPM, required when + # elasticAPM.enabled is true + elasticAPM: + enabled: false + containers: + env: + serverUrls: http://apm-server-apm-http.elastic:8200 + environment: test + logLevel: ERROR + secretToken: + name: apm-server-apm-token + key: secret-token + javaToolOptions: -javaagent:/elastic/apm/agent/elastic-apm-agent.jar + volumeMounts: + mountPath: /elastic/apm/agent + name: elastic-apm-agent + initContainers: + image: docker.elastic.co/observability/apm-agent-java:1.36.0 + volumeMounts: + mountPath: /elastic/apm/agent + name: elastic-apm-agent