CloudNativePG
v1.28.4Storage & Data보안 동작과 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 .에 전달하기 전에 운영자가 SCRAM-SHA-256 형식으로 인코딩합니다. 관련 보안 권고는 CVE-2026-55765와 GHSA-w3gf-xc94-wvmj입니다.. . PASSWORD breaking
cluster참조 변경 불가Database,Pooler,Publication,Subscription,ScheduledBackup리소스에서cluster참조를 사용하는 경우에 적용됩니다.Database,Pooler,Publication,Subscription,ScheduledBackup리소스의cluster참조를 만든 뒤에는 변경할 수 없게 되었습니다.breaking검증 웹훅 값의 기록 시점 재검사
검증 웹훅이 검사하는 값을 사용하는 경우에 적용됩니다.
검증 웹훅에서 해당 값이 거부되며, 값을 실제로 기록하는 지점에서도 다시 검사합니다.
미리 준비 (2)
deprecated
1.지원 종료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.accepting keys that are not valid PostgreSQL parameter names, which could inject arbitrary directives intopostgresql. parameters postgresql.; key names are now validated by the webhook.conf - Fixed declarative
Database,Publication, andSubscriptionobjects 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 correspondingJoband 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 primaryindefinitely when the instance-creation Job exhausted its backoff limit - Fixed deletion of a
Database,Publication, orSubscriptiongetting stuck inTerminatingon a replica cluster - Fixed a conflicting duplicate
DatabaseorSubscriptionwith adeletereclaim policy dropping the PostgreSQL object owned by the surviving CR - Fixed the
postgressuperuser being left locked out after superuser access was disabled and then re-enabled - Fixed backups getting stuck in the
startedphase when the instance manager running them was restarted - Fixed resource leaks when concurrent
Backupobjects 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_replicacreation and wedged replica joins. - Fixed a
ScheduledBackupcontroller loop that occurred when aBackupwas created but its status patch never landed - Fixed a nil-pointer panic when reconciling a
PoolerwhoseClusterhas been deleted. - Fixed bootstrap log handling so that all named log pipes (
postgres,postgres., andcsv postgres.) get consumers duringjson 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_basebackupbootstrap path overwriting or failing on a pre-existingPGDATA - Fixed the
Clusterphase flapping betweenHealthyand 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
ServiceFQDN instead of its short name - Fixed excessive operator log noise from the per-request
Clustercreate/update validation webhook messages, now logged atdebuginstead ofinfo. - 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
VolumeSnapshotbackup 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 psqlon 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 -fon busy clusters
additions (2)
- Added a label selector to the
Clusterscale subresource (status.), making aselector Clustera validtargetReffor the Vertical Pod Autoscaler (VPA) and Horizontal Pod Autoscaler (HPA), which can now map aClusterto its instance pods. - The operator now emits a
WarningPrimaryStatusCheckFailedevent on theClusterwhen the primary pod isReadyfrom the kubelet perspective but the operator's/pg/statuscheck fails and failover is deferred, giving users visibility into the deferral viakubectl 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.
조치가 필요한 릴리스가 나왔을 때 주간 메일로 알려드립니다. 이번 릴리스의 보안 패치와 브레이킹 체인지 같은 것들입니다.