From 21d48641d6344e9f00523ca15d49d44fcdb277b3 Mon Sep 17 00:00:00 2001 From: Fiete Ostkamp Date: Tue, 16 Jan 2024 08:33:59 +0100 Subject: [PATCH] [AAI] Add options for remote debugging and profiling - add debug.enabled value for enabling debugging [1] - add profiling.enabled value for enabling probiling [2] - only expose debug port (5005) if debug.enabled=true [1] appropriate jvm args will be added and the debug port will be exposed on the pod [2] appropriate jvm args will be added and the 9999 port used for profiling via jmx will be exposed Issue-ID: AAI-3730 Change-Id: I1d83a6ac1875ba63e710e86d4fcbfc8924810292 Signed-off-by: Fiete Ostkamp --- .../aai-resources/templates/deployment.yaml | 15 +++++++++++++++ kubernetes/aai/components/aai-resources/values.yaml | 21 +++++++++++++++++++++ .../aai-traversal/templates/deployment.yaml | 16 ++++++++++++++++ kubernetes/aai/components/aai-traversal/values.yaml | 17 +++++++++++++++++ 4 files changed, 69 insertions(+) diff --git a/kubernetes/aai/components/aai-resources/templates/deployment.yaml b/kubernetes/aai/components/aai-resources/templates/deployment.yaml index 626dc71506..54097faf6d 100644 --- a/kubernetes/aai/components/aai-resources/templates/deployment.yaml +++ b/kubernetes/aai/components/aai-resources/templates/deployment.yaml @@ -141,6 +141,14 @@ spec: value: {{ $value | quote}} {{- end }} {{- end }} + {{- if .Values.config.profiling.enabled }} + - name: PRE_JVM_ARGS + value: '{{ join " " .Values.config.profiling.args }}' + {{- end }} + {{- if .Values.config.debug.enabled }} + - name: POST_JVM_ARGS + value: {{ .Values.config.debug.args | quote }} + {{- end }} - name: LOCAL_USER_ID value: {{ .Values.global.config.userId | quote }} - name: LOCAL_GROUP_ID @@ -184,10 +192,17 @@ spec: ports: - containerPort: {{ .Values.service.internalPort }} name: {{ .Values.service.portName }} + {{- if .Values.config.debug.enabled }} - containerPort: {{ .Values.service.internalPort2 }} name: {{ .Values.service.portName2 }} + {{- end }} - containerPort: {{ .Values.service.internalPort3 }} name: {{ .Values.service.portName3 }} + {{- if .Values.config.profiling.enabled }} + - containerPort: {{ .Values.service.internalPort4 }} + name: {{ .Values.service.portName4 }} + {{- end }} + lifecycle: # wait for active requests (long-running tasks) to be finished # Before the SIGTERM is invoked, Kubernetes exposes a preStop hook in the Pod. diff --git a/kubernetes/aai/components/aai-resources/values.yaml b/kubernetes/aai/components/aai-resources/values.yaml index e8bbb37140..cf8d17ba2b 100644 --- a/kubernetes/aai/components/aai-resources/values.yaml +++ b/kubernetes/aai/components/aai-resources/values.yaml @@ -193,6 +193,27 @@ config: MAX_HEAP_SIZE: "1024m" MAX_METASPACE_SIZE: "512m" + # adds jvm args for remote debugging the application + debug: + enabled: false + args: "-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005" + + # adds jvm args for remote profiling the application + # port-forward, i.e: + # $ PODNAME=traversal + # $ kubectl -n ${NAMESPACE:=onap} port-forward pod/$(kubectl -n ${NAMESPACE:=onap} + # get pods | awk '{print $1}' | grep -m1 -e "$PODNAME") 9999:9999 + profiling: + enabled: false + args: + - "-Dcom.sun.management.jmxremote" + - "-Dcom.sun.management.jmxremote.ssl=false" + - "-Dcom.sun.management.jmxremote.authenticate=false" + - "-Dcom.sun.management.jmxremote.local.only=false" + - "-Dcom.sun.management.jmxremote.port=9999" + - "-Dcom.sun.management.jmxremote.rmi.port=9999" + - "-Djava.rmi.server.hostname=127.0.0.1" + nodeSelector: {} affinity: {} diff --git a/kubernetes/aai/components/aai-traversal/templates/deployment.yaml b/kubernetes/aai/components/aai-traversal/templates/deployment.yaml index 9a61841e67..8f52fe26df 100644 --- a/kubernetes/aai/components/aai-traversal/templates/deployment.yaml +++ b/kubernetes/aai/components/aai-traversal/templates/deployment.yaml @@ -160,6 +160,14 @@ spec: value: {{ $value | quote}} {{- end }} {{- end }} + {{- if .Values.config.profiling.enabled }} + - name: PRE_JVM_ARGS + value: '{{ join " " .Values.config.profiling.args }}' + {{- end }} + {{- if .Values.config.debug.enabled }} + - name: POST_JVM_ARGS + value: {{ .Values.config.debug.args | quote }} + {{- end }} - name: DISABLE_UPDATE_QUERY value: {{ .Values.config.disableUpdateQuery | quote }} - name: LOCAL_USER_ID @@ -207,10 +215,18 @@ spec: ports: - containerPort: {{ .Values.service.internalPort }} name: {{ .Values.service.portName }} + + {{- if .Values.config.debug.enabled }} - containerPort: {{ .Values.service.internalPort2 }} name: {{ .Values.service.portName2 }} + {{- end }} - containerPort: {{ .Values.service.internalPort3 }} name: {{ .Values.service.portName3 }} + {{- if .Values.config.profiling.enabled }} + - containerPort: {{ .Values.service.internalPort4 }} + name: {{ .Values.service.portName4 }} + {{- end }} + lifecycle: # wait for active requests (long-running tasks) to be finished # Before the SIGTERM is invoked, Kubernetes exposes a preStop hook in the Pod. diff --git a/kubernetes/aai/components/aai-traversal/values.yaml b/kubernetes/aai/components/aai-traversal/values.yaml index 08b956d8e1..a1c383e522 100644 --- a/kubernetes/aai/components/aai-traversal/values.yaml +++ b/kubernetes/aai/components/aai-traversal/values.yaml @@ -183,6 +183,23 @@ config: MAX_HEAP_SIZE: "1024m" MAX_METASPACE_SIZE: "512m" + # adds jvm args for remote debugging the application + debug: + enabled: false + args: "-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005" + + # adds jvm args for remote profiling the application + profiling: + enabled: false + args: + - "-Dcom.sun.management.jmxremote" + - "-Dcom.sun.management.jmxremote.ssl=false" + - "-Dcom.sun.management.jmxremote.authenticate=false" + - "-Dcom.sun.management.jmxremote.local.only=false" + - "-Dcom.sun.management.jmxremote.port=9999" + - "-Dcom.sun.management.jmxremote.rmi.port=9999" + - "-Djava.rmi.server.hostname=127.0.0.1" + # Disables the updateQueryData script to run as part of traversal disableUpdateQuery: true -- 2.16.6