diff --git a/charts/gha-runner-scale-set-controller/templates/deployment.yaml b/charts/gha-runner-scale-set-controller/templates/deployment.yaml index 3cf8bd3461..bb3e7f5dd5 100644 --- a/charts/gha-runner-scale-set-controller/templates/deployment.yaml +++ b/charts/gha-runner-scale-set-controller/templates/deployment.yaml @@ -79,6 +79,9 @@ spec: - "--listener-metrics-endpoint=" - "--metrics-addr=0" {{- end }} + {{- with .Values.pprof }} + - "--pprof-addr={{ .controllerManagerAddr }}" + {{- end }} {{- range .Values.flags.excludeLabelPropagationPrefixes }} - "--exclude-label-propagation-prefix={{ . }}" {{- end }} @@ -96,12 +99,19 @@ spec: {{- end }} command: - "/manager" - {{- with .Values.metrics }} + {{- if or .Values.metrics .Values.pprof }} ports: + {{- end}} + {{- with .Values.metrics }} - containerPort: {{regexReplaceAll ":([0-9]+)" .controllerManagerAddr "${1}"}} protocol: TCP name: metrics {{- end }} + {{- with .Values.pprof }} + - containerPort: {{regexReplaceAll ":([0-9]+)" .controllerManagerAddr "${1}"}} + protocol: TCP + name: pprof + {{- end }} env: - name: CONTROLLER_MANAGER_CONTAINER_IMAGE value: "{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}" diff --git a/charts/gha-runner-scale-set-controller/values.yaml b/charts/gha-runner-scale-set-controller/values.yaml index ce0d616d59..9b5fce819a 100644 --- a/charts/gha-runner-scale-set-controller/values.yaml +++ b/charts/gha-runner-scale-set-controller/values.yaml @@ -94,6 +94,10 @@ priorityClassName: "" # listenerAddr: ":8080" # listenerEndpoint: "/metrics" +## To enable pprof, uncomment the following lines. +# pprof: +# controllerManagerAddr: ":8081" + flags: ## Log level can be set here with one of the following values: "debug", "info", "warn", "error". ## Defaults to "debug". diff --git a/main.go b/main.go index 1a02548872..bf5ebe8654 100644 --- a/main.go +++ b/main.go @@ -81,6 +81,7 @@ func main() { listenerMetricsEndpoint string metricsAddr string + pprofAddr string autoScalingRunnerSetOnly bool enableLeaderElection bool disableAdmissionWebhook bool @@ -119,6 +120,7 @@ func main() { flag.StringVar(&listenerMetricsAddr, "listener-metrics-addr", ":8080", "The address applied to AutoscalingListener metrics server") flag.StringVar(&listenerMetricsEndpoint, "listener-metrics-endpoint", "/metrics", "The AutoscalingListener metrics server endpoint from which the metrics are collected") flag.StringVar(&metricsAddr, "metrics-addr", ":8080", "The address the metric endpoint binds to.") + flag.StringVar(&pprofAddr, "pprof-addr", "", "The address the pprof endpoint binds to.") flag.BoolVar(&enableLeaderElection, "enable-leader-election", false, "Enable leader election for controller manager. Enabling this will ensure there is only one active controller manager.") flag.StringVar(&leaderElectionId, "leader-election-id", "actions-runner-controller", "Controller id for leader election.") @@ -243,6 +245,7 @@ func main() { }, }, }, + PprofBindAddress: pprofAddr, }) if err != nil { log.Error(err, "unable to start manager")