You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
fix(roles): preserve password when the referenced Secret is missing (cloudnative-pg#10053)
Previously, when a role's passwordSecret could not be fetched, the
reconciler would clear the password on the PostgreSQL role. The role is
now left untouched until the Secret becomes available.
Role reconciliation no longer stops at the first failing action: every
action is attempted and the resulting errors are aggregated, giving
better visibility into partial failures.
Closescloudnative-pg#9677
Signed-off-by: Jaime Silvela <jaime.silvela@mailfence.com>
Signed-off-by: Armando Ruocco <armando.ruocco@enterprisedb.com>
Signed-off-by: Leonardo Cecchi <leonardo.cecchi@enterprisedb.com>
Co-authored-by: Armando Ruocco <armando.ruocco@enterprisedb.com>
Co-authored-by: Leonardo Cecchi <leonardo.cecchi@enterprisedb.com>
(cherry picked from commit 1854d20)
|`byStatus`_object (keys:[RoleStatus](#rolestatus), values:string array)_| ByStatus gives the list of roles in each state ||||
1211
-
|`cannotReconcile`_object (keys:string, values:string array)_| CannotReconcile lists roles that cannot be reconciledin PostgreSQL,<br />with an explanation of the cause||||
1211
+
|`cannotReconcile`_object (keys:string, values:string array)_| CannotReconcile lists roles that cannot be reconciled, with an<br />explanation of the cause. Failures may originate in PostgreSQL<br />(e.g. dropping a role that owns objects) or in Kubernetes (e.g.<br />the referenced password Secret cannot be fetched).||||
1212
1212
|`passwordStatus`_object (keys:string, values:[PasswordState](#passwordstate))_| PasswordStatus gives the last transaction id and password secret version for each managed role ||||
1213
1213
1214
1214
@@ -2042,7 +2042,7 @@ _Appears in:_
2042
2042
|`name`_string_| Name of the role | True |||
2043
2043
|`comment`_string_| Description of the role ||||
2044
2044
|`ensure`_[EnsureOption](#ensureoption)_| Ensure the role is `present` or `absent` - defaults to "present" || present | Enum: [present absent] <br /> |
2045
-
|`passwordSecret`_[LocalObjectReference](https://pkg.go.dev/github.com/cloudnative-pg/machinery/pkg/api#LocalObjectReference)_| Secret containing the password of the role (if present)<br />If null, the password will be ignored unless DisablePassword is set ||||
2045
+
|`passwordSecret`_[LocalObjectReference](https://pkg.go.dev/github.com/cloudnative-pg/machinery/pkg/api#LocalObjectReference)_| Secret containing the password of the role (if present).<br />If null, the password will be ignored unless DisablePassword is set.<br />When set, the secret must follow the `kubernetes.io/basic-auth` format<br />and contain both a `username` and a `password` field.||||
2046
2046
|`connectionLimit`_integer_| If the role can log in, this specifies how many concurrent<br />connections the role can make. `-1` (the default) means no limit. || -1 ||
2047
2047
|`validUntil`_[Time](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.34/#time-v1-meta)_| Date and time after which the role's password is no longer valid.<br />When omitted, the password will never expire (default). ||||
2048
2048
|`inRoles`_string array_| List of one or more existing roles to which this role will be<br />immediately added as a new member. Default empty. ||||
0 commit comments