Skip to content

K8SPG-851 introduce persistent logs - #1675

Merged
hors merged 31 commits into
mainfrom
K8SPG-851
Aug 4, 2026
Merged

K8SPG-851 introduce persistent logs#1675
hors merged 31 commits into
mainfrom
K8SPG-851

Conversation

@gkech

@gkech gkech commented Jul 9, 2026

Copy link
Copy Markdown
Contributor

CHANGE DESCRIPTION

Jira: https://perconadev.atlassian.net/browse/K8SPG-851
Helm PR: percona/percona-helm-charts#917


Problem:
Short explanation of the problem.

Cause:
Short explanation of the root cause of the issue if applicable.

Solution:

Screenshot 2026-07-21 at 12 54 30 PM

FluentBit example configuration used to s3 otel envelope logs to s3 compatible storage:

      configuration: |
        pipeline:
          filters:
            - name: record_modifier
              match: "*"
              record:
                - e2e_marker present
          outputs:
            - name: s3
              match: "*.postgres"
              bucket: operator-testing
              endpoint: https://minio-service:9000
              tls: on
              tls.ca_file: /etc/fluentbit/tls/ca.crt
              region: us-east-1
              store_dir: /tmp/fluent-bit/s3
              total_file_size: 1M
              upload_timeout: 15s
              use_put_object: on
              s3_key_format: /$TAG/%Y/%m/%d/%H-%M-%S-$UUID
              s3_key_format_tag_delimiters: .
              processors:
                logs:
                  - name: opentelemetry_envelope

result in logs in minio(s3 compatible):

Screenshot 2026-07-24 at 4 53 47 PM
{"date":"2026-07-24T13:38:49.749953Z","__internal__":{"group_attributes":{"resource":{},"scope":{}},"log_metadata":{}},"file":"/pgdata/pg18/log/postgresql-Fri.log","log":"2026-07-24 13:38:46.726 UTC [164] LOG:  starting PostgreSQL 18.4 - Percona Server for PostgreSQL 18.4.2 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 14.2.1 20250110 (Red Hat 14.2.1-13), 64-bit","e2e_marker":"present"}

more logs:

{"date":"2026-07-24T13:45:27.880092Z","internal":{"group_attributes":{"resource":{},"scope":{}},"log_metadata":{}},"file":"/pgdata/pg18/log/postgresql-Fri.log","log":"2026-07-24 13:45:27.879 UTC [189] LOG: statement: SELECT name, setting, unit, vartype, context, sourcefile FROM pg_catalog.pg_settings WHERE pg_catalog.lower(name) = ANY(ARRAY['archive_cleanup_command','primary_conninfo','primary_slot_name','promote_trigger_file','recovery_end_command','recovery_min_apply_delay','recovery_target','recovery_target_lsn','recovery_target_name','recovery_target_time','recovery_target_timeline','recovery_target_xid','restore_command'])","e2e_marker":"present"}
{"date":"2026-07-24T13:45:32.036233Z","internal":{"group_attributes":{"resource":{},"scope":{}},"log_metadata":{}},"file":"/pgdata/pg18/log/postgresql-Fri.log","log":"2026-07-24 13:45:32.035 UTC [198] LOG: statement: SELECT pg_catalog.pg_postmaster_start_time(), CASE WHEN pg_catalog.pg_is_in_recovery() THEN 0 ELSE ('x' || pg_catalog.substr(pg_catalog.pg_walfile_name(pg_catalog.pg_current_wal_lsn()), 1, 8))::bit(32)::int END, CASE WHEN pg_catalog.pg_is_in_recovery() THEN 0 ELSE pg_catalog.pg_wal_lsn_diff(pg_catalog.pg_current_wal_flush_lsn(), '0/0')::bigint END, pg_catalog.pg_wal_lsn_diff(pg_catalog.pg_last_wal_replay_lsn(), '0/0')::bigint, pg_catalog.pg_wal_lsn_diff(COALESCE(pg_catalog.pg_last_wal_receive_lsn(), '0/0'), '0/0')::bigint, pg_catalog.pg_is_in_recovery() AND pg_catalog.pg_is_wal_replay_paused(), pg_catalog.pg_last_xact_replay_timestamp(), pg_catalog.pg_wal_lsn_diff(wr.latest_end_lsn, '0/0')::bigint, wr.status, pg_catalog.current_setting('restore_command'), pg_catalog.pg_wal_lsn_diff(wr.written_lsn, '0/0')::bigint, (SELECT pg_catalog.array_to_json(pg_catalog.array_agg(pg_catalog.row_to_json(ri))) FROM (SELECT (SELECT rolname FROM pg_catalog.pg_authid WHERE oid = usesysid) AS usename, application_name, client_addr, w.state, sync_state, sync_priority FROM pg_catalog.pg_stat_get_wal_senders() w, pg_catalog.pg_stat_get_activity(pid)) AS ri) FROM pg_catalog.pg_stat_get_wal_receiver() AS wr","e2e_marker":"present"}
{"date":"2026-07-24T13:54:17.877003Z","internal":{"group_attributes":{"resource":{},"scope":{}},"log_metadata":{}},"file":"/pgdata/pg18/log/postgresql-Fri.log","log":"2026-07-24 13:54:17.876 UTC [189] LOG: statement: SELECT CASE WHEN pg_catalog.pg_is_in_recovery() THEN 0 ELSE ('x' || pg_catalog.substr(pg_catalog.pg_walfile_name(pg_catalog.pg_current_wal_lsn()), 1, 8))::bit(32)::int END, CASE WHEN pg_catalog.pg_is_in_recovery() THEN 0 ELSE pg_catalog.pg_wal_lsn_diff(pg_catalog.pg_current_wal_flush_lsn(), '0/0')::bigint END, pg_catalog.pg_wal_lsn_diff(pg_catalog.pg_last_wal_replay_lsn(), '0/0')::bigint, pg_catalog.pg_wal_lsn_diff(COALESCE(pg_catalog.pg_last_wal_receive_lsn(), '0/0'), '0/0')::bigint, pg_catalog.pg_is_in_recovery() AND pg_catalog.pg_is_wal_replay_paused(), 0, CASE WHEN latest_end_lsn IS NULL THEN NULL ELSE received_tli END, pg_catalog.pg_wal_lsn_diff(written_lsn, '0/0')::bigint, slot_name, conninfo, status, pg_catalog.current_setting('restore_command'), (SELECT pg_catalog.json_agg(s.) FROM (SELECT slot_name, slot_type as type, datoid::bigint, plugin, catalog_xmin, pg_catalog.pg_wal_lsn_diff(confirmed_flush_lsn, '0/0')::bigint AS confirmed_flush_lsn, pg_catalog.pg_wal_lsn_diff(restart_lsn, '0/0')::bigint AS restart_lsn, xmin FROM pg_catalog.pg_get_replication_slots() WHERE NOT failover) AS s), 'on', '', NULL FROM pg_catalog.pg_stat_get_wal_receiver()","e2e_marker":"present"}
{"date":"2026-07-24T13:54:17.877748Z","internal":{"group_attributes":{"resource":{},"scope":{}},"log_metadata":{}},"file":"/pgdata/pg18/log/postgresql-Fri.log","log":"2026-07-24 13:54:17.877 UTC [189] LOG: statement: SELECT name, setting, unit, vartype, context, sourcefile FROM pg_catalog.pg_settings WHERE pg_catalog.lower(name) = ANY(ARRAY['archive_cleanup_command','primary_conninfo','primary_slot_name','promote_trigger_file','recovery_end_command','recovery_min_apply_delay','recovery_target','recovery_target_lsn','recovery_target_name','recovery_target_time','recovery_target_timeline','recovery_target_xid','restore_command'])","e2e_marker":"present"}
{"date":"2026-07-24T13:54:22.041400Z","internal":{"group_attributes":{"resource":{},"scope":{}},"log_metadata":{}},"file":"/pgdata/pg18/log/postgresql-Fri.log","log":"2026-07-24 13:54:22.041 UTC [198] LOG: statement: SELECT pg_catalog.pg_postmaster_start_time(), CASE WHEN pg_catalog.pg_is_in_recovery() THEN 0 ELSE ('x' || pg_catalog.substr(pg_catalog.pg_walfile_name(pg_catalog.pg_current_wal_lsn()), 1, 8))::bit(32)::int END, CASE WHEN pg_catalog.pg_is_in_recovery() THEN 0 ELSE pg_catalog.pg_wal_lsn_diff(pg_catalog.pg_current_wal_flush_lsn(), '0/0')::bigint END, pg_catalog.pg_wal_lsn_diff(pg_catalog.pg_last_wal_replay_lsn(), '0/0')::bigint, pg_catalog.pg_wal_lsn_diff(COALESCE(pg_catalog.pg_last_wal_receive_lsn(), '0/0'), '0/0')::bigint, pg_catalog.pg_is_in_recovery() AND pg_catalog.pg_is_wal_replay_paused(), pg_catalog.pg_last_xact_replay_timestamp(), pg_catalog.pg_wal_lsn_diff(wr.latest_end_lsn, '0/0')::bigint, wr.status, pg_catalog.current_setting('restore_command'), pg_catalog.pg_wal_lsn_diff(wr.written_lsn, '0/0')::bigint, (SELECT pg_catalog.array_to_json(pg_catalog.array_agg(pg_catalog.row_to_json(ri))) FROM (SELECT (SELECT rolname FROM pg_catalog.pg_authid WHERE oid = usesysid) AS usename, application_name, client_addr, w.state, sync_state, sync_priority FROM pg_catalog.pg_stat_get_wal_senders() w, pg_catalog.pg_stat_get_activity(pid)) AS ri) FROM pg_catalog.pg_stat_get_wal_receiver() AS wr","e2e_marker":"present"}
{"date":"2026-07-24T13:54:27.876696Z","internal":{"group_attributes":{"resource":{},"scope":{}},"log_metadata":{}},"file":"/pgdata/pg18/log/postgresql-Fri.log","log":"2026-07-24 13:54:27.876 UTC [189] LOG: statement: SELECT CASE WHEN pg_catalog.pg_is_in_recovery() THEN 0 ELSE ('x' || pg_catalog.substr(pg_catalog.pg_walfile_name(pg_catalog.pg_current_wal_lsn()), 1, 8))::bit(32)::int END, CASE WHEN pg_catalog.pg_is_in_recovery() THEN 0 ELSE pg_catalog.pg_wal_lsn_diff(pg_catalog.pg_current_wal_flush_lsn(), '0/0')::bigint END, pg_catalog.pg_wal_lsn_diff(pg_catalog.pg_last_wal_replay_lsn(), '0/0')::bigint, pg_catalog.pg_wal_lsn_diff(COALESCE(pg_catalog.pg_last_wal_receive_lsn(), '0/0'), '0/0')::bigint, pg_catalog.pg_is_in_recovery() AND pg_catalog.pg_is_wal_replay_paused(), 0, CASE WHEN latest_end_lsn IS NULL THEN NULL ELSE received_tli END, pg_catalog.pg_wal_lsn_diff(written_lsn, '0/0')::bigint, slot_name, conninfo, status, pg_catalog.current_setting('restore_command'), (SELECT pg_catalog.json_agg(s.
) FROM (SELECT slot_name, slot_type as type, datoid::bigint, plugin, catalog_xmin, pg_catalog.pg_wal_lsn_diff(confirmed_flush_lsn, '0/0')::bigint AS confirmed_flush_lsn, pg_catalog.pg_wal_lsn_diff(restart_lsn, '0/0')::bigint AS restart_lsn, xmin FROM pg_catalog.pg_get_replication_slots() WHERE NOT failover) AS s), 'on', '', NULL FROM pg_catalog.pg_stat_get_wal_receiver()","e2e_marker":"present"}
{"date":"2026-07-24T13:54:27.877398Z","internal":{"group_attributes":{"resource":{},"scope":{}},"log_metadata":{}},"file":"/pgdata/pg18/log/postgresql-Fri.log","log":"2026-07-24 13:54:27.877 UTC [189] LOG: statement: SELECT name, setting, unit, vartype, context, sourcefile FROM pg_catalog.pg_settings WHERE pg_catalog.lower(name) = ANY(ARRAY['archive_cleanup_command','primary_conninfo','primary_slot_name','promote_trigger_file','recovery_end_command','recovery_min_apply_delay','recovery_target','recovery_target_lsn','recovery_target_name','recovery_target_time','recovery_target_timeline','recovery_target_xid','restore_command'])","e2e_marker":"present"}
{"date":"2026-07-24T13:54:32.040263Z","internal":{"group_attributes":{"resource":{},"scope":{}},"log_metadata":{}},"file":"/pgdata/pg18/log/postgresql-Fri.log","log":"2026-07-24 13:54:32.040 UTC [198] LOG: statement: SELECT pg_catalog.pg_postmaster_start_time(), CASE WHEN pg_catalog.pg_is_in_recovery() THEN 0 ELSE ('x' || pg_catalog.substr(pg_catalog.pg_walfile_name(pg_catalog.pg_current_wal_lsn()), 1, 8))::bit(32)::int END, CASE WHEN pg_catalog.pg_is_in_recovery() THEN 0 ELSE pg_catalog.pg_wal_lsn_diff(pg_catalog.pg_current_wal_flush_lsn(), '0/0')::bigint END, pg_catalog.pg_wal_lsn_diff(pg_catalog.pg_last_wal_replay_lsn(), '0/0')::bigint, pg_catalog.pg_wal_lsn_diff(COALESCE(pg_catalog.pg_last_wal_receive_lsn(), '0/0'), '0/0')::bigint, pg_catalog.pg_is_in_recovery() AND pg_catalog.pg_is_wal_replay_paused(), pg_catalog.pg_last_xact_replay_timestamp(), pg_catalog.pg_wal_lsn_diff(wr.latest_end_lsn, '0/0')::bigint, wr.status, pg_catalog.current_setting('restore_command'), pg_catalog.pg_wal_lsn_diff(wr.written_lsn, '0/0')::bigint, (SELECT pg_catalog.array_to_json(pg_catalog.array_agg(pg_catalog.row_to_json(ri))) FROM (SELECT (SELECT rolname FROM pg_catalog.pg_authid WHERE oid = usesysid) AS usename, application_name, client_addr, w.state, sync_state, sync_priority FROM pg_catalog.pg_stat_get_wal_senders() w, pg_catalog.pg_stat_get_activity(pid)) AS ri) FROM pg_catalog.pg_stat_get_wal_receiver() AS wr","e2e_marker":"present"}

CHECKLIST

Jira

  • Is the Jira ticket created and referenced properly?
  • Does the Jira ticket have the proper statuses for documentation (Needs Doc) and QA (Needs QA)?
  • Does the Jira ticket link to the proper milestone (Fix Version field)?

Tests

  • Is an E2E test/test case added for the new feature/change?
  • Are unit tests added where appropriate?

Config/Logging/Testability

  • Are all needed new/changed options added to default YAML files?
  • Are all needed new/changed options added to the Helm Chart?
  • Did we add proper logging messages for operator actions?
  • Did we ensure compatibility with the previous version or cluster upgrade process?
  • Does the change support oldest and newest supported PG version?
  • Does the change support oldest and newest supported Kubernetes version?

Comment on lines +11 to +15
printf '%s %s\n' "$schedule" "$cmd" > /tmp/crontab
exec supercronic /tmp/crontab
else
exec go-cron "$schedule" sh -c "$cmd"
fi

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[shfmt] reported by reviewdog 🐶

Suggested change
printf '%s %s\n' "$schedule" "$cmd" > /tmp/crontab
exec supercronic /tmp/crontab
else
exec go-cron "$schedule" sh -c "$cmd"
fi
printf '%s %s\n' "$schedule" "$cmd" >/tmp/crontab
exec supercronic /tmp/crontab
else
exec go-cron "$schedule" sh -c "$cmd"
fi

Comment thread deploy/cr.yaml
# - name: s3-ca
# secret:
# secretName: my-s3-ca
# logRotate:

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@gkech Can we use the same naming as in PSMDBO https://github.com/percona/percona-server-mongodb-operator/blob/main/deploy/cr.yaml
And also, please add the possibility of adding custom liveness/readyness probes for two new sidecars (we have added it for PSMDB as well).

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

yes of course

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@gkech, please update cr.yaml as well, and make sure we can add custom liveness/readiness probes (if we do not have a default one).

local logrotate_additional_conf_files=()
local conf_d_dir="/opt/crunchy/logcollector/logrotate/conf.d"

# Operator-managed postgres.conf overrides the default when present.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[shfmt] reported by reviewdog 🐶

Suggested change
# Operator-managed postgres.conf overrides the default when present.
# Operator-managed postgres.conf overrides the default when present.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Introduces a new spec.logCollector feature to wire Fluent Bit + logrotate sidecars into PostgreSQL instance pods, including CRD/API updates, operator reconcile logic, container assets in the operator image, and E2E coverage.

Changes:

  • Add LogCollectorSpec / LogRotateSpec to the PerconaPGCluster API and regenerate deepcopy + CRD/bundle manifests.
  • Implement reconciliation to (a) inject log collector sidecars/volumes and (b) create/update/delete backing ConfigMaps.
  • Add build assets (entrypoint + fluent-bit/logrotate configs), default CR example, and a new KUTTL E2E test suite for log collection/rotation/S3 shipping.

Reviewed changes

Copilot reviewed 32 out of 38 changed files in this pull request and generated 2 comments.

Show a summary per file
File Description
pkg/apis/pgv2.percona.com/v2/zz_generated.deepcopy.go Adds deepcopy support for new log collector API types.
pkg/apis/pgv2.percona.com/v2/perconapgcluster_types.go Adds spec.logCollector API types and helper LogCollectorEnabled().
percona/logcollector/reconcile.go Implements sidecar/volume wiring and ConfigMap reconciliation for log collector.
percona/logcollector/reconcile_test.go Unit tests for reconcile behavior (ConfigMap lifecycle + sidecar wiring + version gate).
percona/logcollector/logrotate/container.go Builds the logrotate sidecar container spec.
percona/logcollector/container.go Builds fluent-bit + logrotate containers, volumes, and security context defaults.
percona/logcollector/container_test.go Unit tests for constructed containers/volumes.
percona/controller/pgcluster/controller.go Hooks logcollector reconciliation into main PGCluster reconcile flow.
internal/naming/names.go Removes unused PGBackRestRepoName constant.
e2e-tests/vars.sh Adds IMAGE_LOGCOLLECTOR test image variable.
e2e-tests/functions Wires IMAGE_LOGCOLLECTOR into generated CRs for tests.
e2e-tests/run-release.csv Enables logcollection scenario in release E2E runs.
e2e-tests/run-pr.csv Enables logcollection scenario in PR E2E runs.
e2e-tests/tests/logcollection/00-assert.yaml Asserts operator deployment/CRD presence for logcollection scenario.
e2e-tests/tests/logcollection/00-deploy-operator.yaml Deploys operator + client + MinIO prerequisites for logcollection scenario.
e2e-tests/tests/logcollection/01-assert.yaml Asserts cluster readiness and expected ConfigMaps.
e2e-tests/tests/logcollection/01-create-cluster.yaml Creates a cluster with logCollector enabled + custom fluent-bit/logrotate config and MinIO TLS wiring.
e2e-tests/tests/logcollection/02-assert.yaml Asserts backup success used to generate logs.
e2e-tests/tests/logcollection/02-generate-logs.yaml Generates Postgres and pgBackRest logs (SQL + on-demand backup).
e2e-tests/tests/logcollection/03-check-collected-logs.yaml Verifies sidecars exist and logs/config are actually being consumed.
e2e-tests/tests/logcollection/04-rotate-logs.yaml Forces logrotate run inside sidecar.
e2e-tests/tests/logcollection/05-check-rotated-logs.yaml Verifies rotated files exist on the data volume.
e2e-tests/tests/logcollection/06-check-s3-logs.yaml Verifies logs are shipped to MinIO (S3).
e2e-tests/tests/logcollection/99-remove-cluster-gracefully.yaml Cleanup step ensuring no finalizers/panics and operator teardown.
deploy/crd.yaml Updates CRD schema to include spec.logCollector.
deploy/bundle.yaml Updates bundle schema to include spec.logCollector.
deploy/cr.yaml Adds example/default logCollector configuration to sample CR.
build/postgres-operator/logcollector/logrotate/logrotate.conf Provides default logrotate rules for Postgres + pgBackRest logs.
build/postgres-operator/logcollector/fluentbit/parsers_multiline.conf Adds fluent-bit multiline parser configuration.
build/postgres-operator/logcollector/fluentbit/fluentbit.conf Top-level fluent-bit config with includes (including custom override dir).
build/postgres-operator/logcollector/fluentbit/fluentbit_pg.conf Fluent-bit inputs for Postgres and pgBackRest logs + stdout output.
build/postgres-operator/logcollector/fluentbit/custom/default.conf Placeholder custom config file in image layout.
build/postgres-operator/logcollector/entrypoint.sh Sidecar entrypoint: runs fluent-bit or scheduled logrotate with config validation.
build/postgres-operator/init-entrypoint.sh Copies logcollector assets into shared bin volume when present in operator image.
build/postgres-operator/Dockerfile Packages logcollector assets into the operator image at /logcollector.

Comment on lines +44 to +64
func securityContext(cr *v2.PerconaPGCluster) *corev1.SecurityContext {
if cr.Spec.LogCollector != nil && cr.Spec.LogCollector.ContainerSecurityContext != nil {
return cr.Spec.LogCollector.ContainerSecurityContext
}

sc := &corev1.SecurityContext{
RunAsNonRoot: new(true),
AllowPrivilegeEscalation: new(false),
Privileged: new(false),
Capabilities: &corev1.Capabilities{Drop: []corev1.Capability{"ALL"}},
SeccompProfile: &corev1.SeccompProfile{Type: corev1.SeccompProfileTypeRuntimeDefault},
}

// OpenShift assigns one shared UID to every container in the pod.
if cr.Spec.OpenShift == nil || !*cr.Spec.OpenShift {
sc.RunAsUser = new(postgresUserID)
sc.RunAsGroup = new(postgresUserID)
}

return sc
}

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

not true, it was with values: https://go.dev/play/p/dTtSaU19JXe

Comment on lines +53 to +56
for i := range cr.Spec.InstanceSets {
cr.Spec.InstanceSets[i].Sidecars = append(cr.Spec.InstanceSets[i].Sidecars, containers...)
cr.Spec.InstanceSets[i].SidecarVolumes = append(cr.Spec.InstanceSets[i].SidecarVolumes, volumes...)
}
Path ${PG_LOG_DIR}/*.log,${PG_LOG_DIR}/*.csv
Tag ${POD_NAMESPACE}.${POD_NAME}.postgres
Refresh_Interval 5
DB /tmp/flb_pg.db

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

should we persist this across restarts?

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@gkech Do we need to add ignore_older option in this case? Who will remove this DB if it becomes big? What we will do in case of a major Fluentbit upgrade, which can require a DB update as well. Will we have a real advantage with the persist approach? If yes, we need to change it for all operators.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do we need to add ignore_older option in this case?

Yes

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Who will remove this DB if it becomes big?

if we use ignore_older, the size of the db will be max the amount of days written there, and in general it will not grew thaaat big I guess

# extra time-based cap.
/pgdata/pg*/log/*.log
/pgdata/pg*/log/*.csv {
daily

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

i wonder how this plays with postgresql's daily rotation according to weekday

egegunes
egegunes previously approved these changes Jul 31, 2026
hors
hors previously approved these changes Jul 31, 2026
@gkech
gkech dismissed stale reviews from hors and egegunes via ccdb73b July 31, 2026 09:47
@gkech
gkech requested review from egegunes and hors July 31, 2026 10:05
Comment thread deploy/cr.yaml Outdated
Comment on lines +777 to +778
# # The fluent-bit HTTP server is enabled by default on port 2020, so the
# # tcpSocket/httpGet probes below work out of the box.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

do we need this comment?

builder: instanceContainers,
logCollector: &v2.LogCollectorSpec{
Enabled: false,
Enabled: ptr.To(false),

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

why not new(false)?

mayankshah1607
mayankshah1607 previously approved these changes Aug 3, 2026
egegunes
egegunes previously approved these changes Aug 3, 2026
@JNKPercona

Copy link
Copy Markdown
Collaborator
Test Name Result Time
backup-enable-disable passed 00:00:00
builtin-extensions passed 00:00:00
custom-extensions passed 00:16:26
cert-manager-tls passed 00:00:00
custom-envs passed 00:00:00
custom-tls passed 00:00:00
database-init-sql passed 00:00:00
demand-backup passed 00:00:00
demand-backup-offline-snapshot passed 00:15:17
dynamic-configuration passed 00:00:00
finalizers passed 00:00:00
init-deploy passed 00:03:58
huge-pages passed 00:00:00
major-upgrade-14-to-15 passed 00:00:00
major-upgrade-15-to-16 passed 00:00:00
major-upgrade-16-to-17 passed 00:00:00
major-upgrade-17-to-18 passed 00:00:00
ldap passed 00:00:00
ldap-tls passed 00:00:00
logcollection passed 00:00:00
monitoring passed 00:00:00
one-pod passed 00:00:00
operator-self-healing passed 00:00:00
pgbouncer-mtls passed 00:00:00
pg-tde passed 00:00:00
pitr passed 00:00:00
scaling passed 00:00:00
scheduled-backup passed 00:00:00
self-healing passed 00:10:17
sidecars passed 00:00:00
standby-pgbackrest passed 00:00:00
standby-streaming passed 00:00:00
start-from-backup passed 00:00:00
tablespaces passed 00:00:00
telemetry-transfer passed 00:00:00
upgrade-consistency passed 00:00:00
upgrade-minor passed 00:00:00
users passed 00:00:00
migration-from-crunchy-standby passed 00:00:00
migration-from-crunchy-pv passed 00:00:00
migration-from-crunchy-backup-restore passed 00:00:00
Summary Value
Tests Run 41/41
Job Duration 00:34:44
Total Test Time 00:46:00

commit: 9b4b1d8
image: perconalab/percona-postgresql-operator:PR-1675-9b4b1d8e5

@hors
hors merged commit 8da49af into main Aug 4, 2026
16 of 18 checks passed
@hors
hors deleted the K8SPG-851 branch August 4, 2026 08:23
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

9 participants