diff --git a/charts/gha-runner-scale-set-controller/templates/deployment.yaml b/charts/gha-runner-scale-set-controller/templates/deployment.yaml index 200cbe0f6b..52e4bbda2b 100644 --- a/charts/gha-runner-scale-set-controller/templates/deployment.yaml +++ b/charts/gha-runner-scale-set-controller/templates/deployment.yaml @@ -84,6 +84,9 @@ spec: - "--listener-metrics-endpoint=" - "--metrics-addr=0" {{- end }} + {{- with .Values.pprof }} + - "--pprof-addr={{ .addr }}" + {{- end }} {{- range .Values.flags.excludeLabelPropagationPrefixes }} - "--exclude-label-propagation-prefix={{ . }}" {{- end }} @@ -95,12 +98,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]+)" .addr "${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 fb54ed9924..ed65cbf034 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: +# addr: ":6060" + 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 116f292089..3037508e5c 100644 --- a/main.go +++ b/main.go @@ -83,6 +83,7 @@ func main() { listenerMetricsEndpoint string metricsAddr string + pprofAddr string autoScalingRunnerSetOnly bool enableLeaderElection bool disableAdmissionWebhook bool @@ -121,6 +122,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.") @@ -239,6 +241,7 @@ func main() { SyncPeriod: &syncPeriod, DefaultNamespaces: defaultNamespaces, }, + PprofBindAddress: pprofAddr, WebhookServer: webhookServer, LeaderElection: enableLeaderElection, LeaderElectionID: leaderElectionID,