RATATOSKRATATOSK
로그인

CloudNativePG

v1.28.4Storage & Data
2026년 6월 29일

CHECK 4PLAN 2OTHER 35

보안 동작과 API 검증이 강화되었고, 지원 정책과 기본 동작이 갱신되었습니다. 클러스터 운영과 `cnpg` 플러그인 전반의 정확성 문제도 수정되었습니다.

영향 확인 (4)

  • securitycritical풀링 연결의 search_path 고정

    풀링 연결을 사용하는 경우에 적용됩니다.

    모든 풀링 연결의 시작 메시지에 search_path = pg_catalog, public, pg_temp가 포함되도록 고정되어, 테넌트가 설정한 기본값보다 우선합니다. 관련 보안 권고는 CVE-2026-55769와 GHSA-x8c2-3p4r-v9r6입니다.

  • securityhigh평문 역할 비밀번호의 SCRAM-SHA-256 인코딩

    평문 역할 비밀번호를 사용하는 경우에 적용됩니다.

    평문 역할 비밀번호를 CREATE 또는 ALTER ROLE ... PASSWORD에 전달하기 전에 운영자가 SCRAM-SHA-256 형식으로 인코딩합니다. 관련 보안 권고는 CVE-2026-55765와 GHSA-w3gf-xc94-wvmj입니다.

  • breakingcluster 참조 변경 불가

    Database, Pooler, Publication, Subscription, ScheduledBackup 리소스에서 cluster 참조를 사용하는 경우에 적용됩니다.

    Database, Pooler, Publication, Subscription, ScheduledBackup 리소스의 cluster 참조를 만든 뒤에는 변경할 수 없게 되었습니다.

  • breaking검증 웹훅 값의 기록 시점 재검사

    검증 웹훅이 검사하는 값을 사용하는 경우에 적용됩니다.

    검증 웹훅에서 해당 값이 거부되며, 값을 실제로 기록하는 지점에서도 다시 검사합니다.

미리 준비 (2)

  • deprecated1.28.x 지원 종료

    1.28을 실행하는 경우에 적용됩니다.

    1.28.x 계열의 마지막 릴리스이며, 1.28은 더 이상 지원되지 않습니다. 최신 마이너 버전으로 업그레이드하는 방향이 안내됩니다.

  • deprecatedBarman Cloud 지원 종료 시점 변경1.31.0에서 제거 예정

    native (in-tree) Barman Cloud support를 사용하는 경우에 적용됩니다.

    native (in-tree) Barman Cloud support의 제거 시점이 1.30.0에서 1.31.0으로 변경되었습니다. Barman Cloud Plugin으로 이전하는 방향은 계속 안내됩니다.

그 외 기록된 변경 35건 전체fixes 30 · additions 2 · value changes 2 · constraints 1

fixes (30)

  • Fixed spec.postgresql.parameters accepting keys that are not valid PostgreSQL parameter names, which could inject arbitrary directives into postgresql.conf; key names are now validated by the webhook.
  • Fixed declarative Database, Publication, and Subscription objects reporting a stale primary-side status forever after their cluster was demoted to a replica
  • Fixed non-sequential pod names (for example -1, -3) caused by the instance serial counter being advanced before the corresponding Job and PVCs were created
  • Fixed a switchover deadlock when a WAL-archiver plugin was enabled on an existing cluster
  • Fixed a cluster staying in Setting up primary indefinitely when the instance-creation Job exhausted its backoff limit
  • Fixed deletion of a Database, Publication, or Subscription getting stuck in Terminating on a replica cluster
  • Fixed a conflicting duplicate Database or Subscription with a delete reclaim policy dropping the PostgreSQL object owned by the surviving CR
  • Fixed the postgres superuser being left locked out after superuser access was disabled and then re-enabled
  • Fixed backups getting stuck in the started phase when the instance manager running them was restarted
  • Fixed resource leaks when concurrent Backup objects raced
  • Fixed role reconciliation clearing the password on a PostgreSQL role when the referenced Secret could not be fetched
  • Fixed a bootstrap failure where a metrics-exporter setup error (commonly a duplicate-key race with the controller) rolled back streaming_replica creation and wedged replica joins.
  • Fixed a ScheduledBackup controller loop that occurred when a Backup was created but its status patch never landed
  • Fixed a nil-pointer panic when reconciling a Pooler whose Cluster has been deleted.
  • Fixed bootstrap log handling so that all named log pipes (postgres, postgres.csv, and postgres.json) get consumers during WithActiveInstance
  • Fixed generation of invalid IPv6 URLs by wrapping the address in square brackets.
  • Fixed an external cluster plugin still being treated as active when its configuration set enabled: false.
  • Fixed a race during bootstrap recovery from an object store where the restore job could read a stale Cluster
  • Fixed a cache race during cluster creation when the server and client CA resolve to the same Secret (the default)
  • Fixed the pg_basebackup bootstrap path overwriting or failing on a pre-existing PGDATA
  • Fixed the Cluster phase flapping between Healthy and a plugin-failure phase when a post-reconcile plugin hook returned an error
  • Fixed stale certificate data and partial reads after an external server's Secret was rotated
  • Fixed plugin connectivity to use the plugin Service FQDN instead of its short name
  • Fixed excessive operator log noise from the per-request Cluster create/update validation webhook messages, now logged at debug instead of info.
  • Fixed a first-primary bootstrap deadlock where a status-patch conflict after the data PVC was created but before the initialization Job was started left the orphan Pending PVC counted as an instance
  • Fixed a declarative VolumeSnapshot backup being permanently marked as failed when a stale cache made the operator re-create a snapshot it had already provisioned
  • Fixed a volume snapshot backup being discarded on a transient instance-manager connection error
  • Fixed a replica switchover losing its status.demotionToken
  • Fixed kubectl cnpg psql on Windows, where execution relied on a Unix-only system call and failed with "not supported by windows"
  • Fixed an unbounded memory leak in kubectl cnpg logs -f on busy clusters

additions (2)

  • Added a label selector to the Cluster scale subresource (status.selector), making a Cluster a valid targetRef for the Vertical Pod Autoscaler (VPA) and Horizontal Pod Autoscaler (HPA), which can now map a Cluster to its instance pods.
  • The operator now emits a Warning PrimaryStatusCheckFailed event on the Cluster when the primary pod is Ready from the kubelet perspective but the operator's /pg/status check fails and failover is deferred, giving users visibility into the deferral via kubectl describe cluster.

value changes (2)

  • The operator now reloads a CNPG-i plugin automatically when its pods are rolled
  • Updated the default PostgreSQL version to 18.4.

constraints (1)

  • Added support for Kubernetes 1.35 and enabled unit tests on Kubernetes 1.36.
CloudNativePG 스택에 추가

조치가 필요한 릴리스가 나왔을 때 주간 메일로 알려드립니다. 이번 릴리스의 보안 패치와 브레이킹 체인지 같은 것들입니다.

스택에 추가 →