[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 <Fiete.Ostkamp@telekom.de>
diff --git a/kubernetes/aai/components/aai-resources/templates/deployment.yaml b/kubernetes/aai/components/aai-resources/templates/deployment.yaml
index 626dc71..54097fa 100644
--- a/kubernetes/aai/components/aai-resources/templates/deployment.yaml
+++ b/kubernetes/aai/components/aai-resources/templates/deployment.yaml
@@ -141,6 +141,14 @@
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 @@
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 e8bbb37..cf8d17b 100644
--- a/kubernetes/aai/components/aai-resources/values.yaml
+++ b/kubernetes/aai/components/aai-resources/values.yaml
@@ -193,6 +193,27 @@
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 9a61841..8f52fe2 100644
--- a/kubernetes/aai/components/aai-traversal/templates/deployment.yaml
+++ b/kubernetes/aai/components/aai-traversal/templates/deployment.yaml
@@ -160,6 +160,14 @@
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 @@
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 08b956d..a1c383e 100644
--- a/kubernetes/aai/components/aai-traversal/values.yaml
+++ b/kubernetes/aai/components/aai-traversal/values.yaml
@@ -183,6 +183,23 @@
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