Skip to content

Default UI Deployment Manifest Contains Invalid JSON #3062

@andeke07

Description

@andeke07
  • Which image of the operator are you using? ghcr.io/zalando/postgres-operator-ui:v1.15.1
  • Where do you run it - cloud or metal? Kubernetes or OpenShift? Bare Medal K8S
  • Are you running Postgres Operator in production? yes
  • Type of issue? Bug report

When following the standard documentation to install postgres-operator, the default deployment manifest for the UI contains invalid JSON and the container fails to start:

2026-03-27T18:02:41.618509043Z Traceback (most recent call last):
2026-03-27T18:02:41.618536249Z   File "<frozen runpy>", line 198, in _run_module_as_main
2026-03-27T18:02:41.618547749Z   File "<frozen runpy>", line 88, in _run_code
2026-03-27T18:02:41.618557100Z   File "/app/operator_ui/__main__.py", line 1, in <module>
2026-03-27T18:02:41.618783907Z     from .main import main
2026-03-27T18:02:41.618807169Z   File "/app/operator_ui/main.py", line 63, in <module>
2026-03-27T18:02:41.619130607Z     OPERATOR_UI_CONFIG = loads(getenv('OPERATOR_UI_CONFIG', '{}'))
2026-03-27T18:02:41.619154607Z                          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2026-03-27T18:02:41.619165762Z   File "/usr/local/lib/python3.11/json/__init__.py", line 346, in loads
2026-03-27T18:02:41.619757608Z     return _default_decoder.decode(s)
2026-03-27T18:02:41.619782196Z            ^^^^^^^^^^^^^^^^^^^^^^^^^^
2026-03-27T18:02:41.619789571Z   File "/usr/local/lib/python3.11/json/decoder.py", line 337, in decode
2026-03-27T18:02:41.620140115Z     obj, end = self.raw_decode(s, idx=_w(s, 0).end())
2026-03-27T18:02:41.620284341Z                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2026-03-27T18:02:41.620298670Z   File "/usr/local/lib/python3.11/json/decoder.py", line 355, in raw_decode
2026-03-27T18:02:41.620727762Z     raise JSONDecodeError("Expecting value", s, err.value) from None
2026-03-27T18:02:41.620752154Z json.decoder.JSONDecodeError: Expecting value: line 25 column 3 (char 602)

investigation of the OPERATOR_UI_CONFIG environment variable in the default deployment shows an extra comma within ui/manifests/deployment.yaml:

"postgresql_versions": [
  "18",
  "17",
  "16",
  "15",
  "14",
]

This extra comma after "14" causes the parser to fail and the pod goes in to a crash loop.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions