diff --git a/chart/templates/pgbouncer/pgbouncer-deployment.yaml b/chart/templates/pgbouncer/pgbouncer-deployment.yaml
index d5c489cc25770..79a87f3dfc266 100644
--- a/chart/templates/pgbouncer/pgbouncer-deployment.yaml
+++ b/chart/templates/pgbouncer/pgbouncer-deployment.yaml
@@ -77,11 +77,12 @@ spec:
         - name: pgbouncer
           image: {{ template "pgbouncer_image" . }}
           imagePullPolicy: {{ .Values.images.pgbouncer.pullPolicy }}
-          command:
-            - pgbouncer
-            - -u
-            - nobody
-            - /etc/pgbouncer/pgbouncer.ini
+          {{- if .Values.pgbouncer.command }}
+          command: {{ tpl (toYaml .Values.pgbouncer.command) . | nindent 12 }}
+          {{- end }}
+          {{- if .Values.pgbouncer.args }}
+          args: {{ tpl (toYaml .Values.pgbouncer.args) . | nindent 12 }}
+          {{- end }}
           resources:
 {{ toYaml .Values.pgbouncer.resources | indent 12 }}
           ports:
diff --git a/chart/tests/test_cleanup_pods.py b/chart/tests/test_cleanup_pods.py
index e91eb6fcd5afd..7727e9fd600e3 100644
--- a/chart/tests/test_cleanup_pods.py
+++ b/chart/tests/test_cleanup_pods.py
@@ -142,7 +142,7 @@ def test_command_and_args_overrides(self, command, args):
         )
         assert args == jmespath.search("spec.jobTemplate.spec.template.spec.containers[0].args", docs[0])
 
-    def test_log_groomer_command_and_args_overrides_are_templated(self):
+    def test_command_and_args_overrides_are_templated(self):
         docs = render_chart(
             values={
                 "cleanup": {
diff --git a/chart/tests/test_pgbouncer.py b/chart/tests/test_pgbouncer.py
index a24a388d2464c..98f7ae92cae1e 100644
--- a/chart/tests/test_pgbouncer.py
+++ b/chart/tests/test_pgbouncer.py
@@ -223,6 +223,49 @@ def test_metrics_exporter_resources(self):
             },
         } == jmespath.search("spec.template.spec.containers[1].resources", docs[0])
 
+    def test_default_command_and_args(self):
+        docs = render_chart(
+            values={"pgbouncer": {"enabled": True}},
+            show_only=["templates/pgbouncer/pgbouncer-deployment.yaml"],
+        )
+
+        assert ["pgbouncer", "-u", "nobody", "/etc/pgbouncer/pgbouncer.ini"] == jmespath.search(
+            "spec.template.spec.containers[0].command", docs[0]
+        )
+        assert jmespath.search("spec.template.spec.containers[0].args", docs[0]) is None
+
+    @parameterized.expand(
+        [
+            (None, None),
+            (None, ["custom", "args"]),
+            (["custom", "command"], None),
+            (["custom", "command"], ["custom", "args"]),
+        ]
+    )
+    def test_command_and_args_overrides(self, command, args):
+        docs = render_chart(
+            values={"pgbouncer": {"enabled": True, "command": command, "args": args}},
+            show_only=["templates/pgbouncer/pgbouncer-deployment.yaml"],
+        )
+
+        assert command == jmespath.search("spec.template.spec.containers[0].command", docs[0])
+        assert args == jmespath.search("spec.template.spec.containers[0].args", docs[0])
+
+    def test_command_and_args_overrides_are_templated(self):
+        docs = render_chart(
+            values={
+                "pgbouncer": {
+                    "enabled": True,
+                    "command": ["{{ .Release.Name }}"],
+                    "args": ["{{ .Release.Service }}"],
+                }
+            },
+            show_only=["templates/pgbouncer/pgbouncer-deployment.yaml"],
+        )
+
+        assert ["RELEASE-NAME"] == jmespath.search("spec.template.spec.containers[0].command", docs[0])
+        assert ["Helm"] == jmespath.search("spec.template.spec.containers[0].args", docs[0])
+
 
 class PgbouncerConfigTest(unittest.TestCase):
     def test_config_not_created_by_default(self):
diff --git a/chart/values.schema.json b/chart/values.schema.json
index 927b2a4b8cee0..5b0ceda0c1bb8 100644
--- a/chart/values.schema.json
+++ b/chart/values.schema.json
@@ -2431,6 +2431,33 @@
                     "x-docsSection": "Common",
                     "default": false
                 },
+                "command": {
+                    "description": "Command to use for PgBouncer (templated).",
+                    "type": [
+                        "array",
+                        "null"
+                    ],
+                    "items": {
+                        "type": "string"
+                    },
+                    "default": [
+                        "pgbouncer",
+                        "-u",
+                        "nobody",
+                        "/etc/pgbouncer/pgbouncer.ini"
+                    ]
+                },
+                "args": {
+                    "description": "Args to use for PgBouncer (templated).",
+                    "type": [
+                        "array",
+                        "null"
+                    ],
+                    "items": {
+                        "type": "string"
+                    },
+                    "default": null
+                },
                 "extraNetworkPolicies": {
                     "description": "Additional NetworkPolicies as needed.",
                     "type": "array",
diff --git a/chart/values.yaml b/chart/values.yaml
index df01c3a4d2719..423dd844d5758 100644
--- a/chart/values.yaml
+++ b/chart/values.yaml
@@ -969,6 +969,10 @@ statsd:
 pgbouncer:
   # Enable PgBouncer
   enabled: false
+  # Command to use for PgBouncer(templated).
+  command: ["pgbouncer", "-u", "nobody", "/etc/pgbouncer/pgbouncer.ini"]
+  # Args to use for PgBouncer(templated).
+  args: ~
 
   # Create ServiceAccount
   serviceAccount:
