=== RUN kuttl harness.go:460: starting setup harness.go:258: running tests using configured kubeconfig. harness.go:281: Successful connection to cluster at: https://104.198.74.23 harness.go:366: running tests harness.go:77: going to run test suite with timeout of 600 seconds for each step harness.go:378: testsuite: e2e-tests/tests has 55 tests === RUN kuttl/harness === RUN kuttl/harness/additional-volumes === PAUSE kuttl/harness/additional-volumes === CONT kuttl/harness/additional-volumes logger.go:42: 18:11:28 | additional-volumes | Creating namespace "kuttl-test-intimate-garfish" logger.go:42: 18:11:28 | additional-volumes/0-deploy-operator | starting test step 0-deploy-operator logger.go:42: 18:11:28 | additional-volumes/0-deploy-operator | running command: [sh -c set -o errexit set -o xtrace source ../../functions init_temp_dir # do this only in the first TestStep deploy_operator deploy_client] logger.go:42: 18:11:28 | additional-volumes/0-deploy-operator | + source ../../functions logger.go:42: 18:11:28 | additional-volumes/0-deploy-operator | +++ realpath ../../.. logger.go:42: 18:11:28 | additional-volumes/0-deploy-operator | ++ ROOT_REPO=/mnt/jenkins/workspace/cloud-pg-operator_PR-1760 logger.go:42: 18:11:28 | additional-volumes/0-deploy-operator | ++ CERT_MANAGER_VER=1.20.2 logger.go:42: 18:11:28 | additional-volumes/0-deploy-operator | ++ CERT_MANAGER_TEST_LABEL=e2e.percona.com/managed-by=percona-postgresql-operator-tests logger.go:42: 18:11:28 | additional-volumes/0-deploy-operator | ++ CHAOS_MESH_VER=2.5.1 logger.go:42: 18:11:28 | additional-volumes/0-deploy-operator | ++ BUSYBOX_VER=1.36 logger.go:42: 18:11:28 | additional-volumes/0-deploy-operator | ++++ pwd logger.go:42: 18:11:28 | additional-volumes/0-deploy-operator | +++ basename /mnt/jenkins/workspace/cloud-pg-operator_PR-1760/e2e-tests/tests/additional-volumes logger.go:42: 18:11:28 | additional-volumes/0-deploy-operator | ++ test_name=additional-volumes logger.go:42: 18:11:28 | additional-volumes/0-deploy-operator | ++ source /mnt/jenkins/workspace/cloud-pg-operator_PR-1760/e2e-tests/vars.sh logger.go:42: 18:11:28 | additional-volumes/0-deploy-operator | +++ export ROOT_REPO=/mnt/jenkins/workspace/cloud-pg-operator_PR-1760 logger.go:42: 18:11:28 | additional-volumes/0-deploy-operator | +++ ROOT_REPO=/mnt/jenkins/workspace/cloud-pg-operator_PR-1760 logger.go:42: 18:11:28 | additional-volumes/0-deploy-operator | +++ export DEPLOY_DIR=/mnt/jenkins/workspace/cloud-pg-operator_PR-1760/deploy logger.go:42: 18:11:28 | additional-volumes/0-deploy-operator | +++ DEPLOY_DIR=/mnt/jenkins/workspace/cloud-pg-operator_PR-1760/deploy logger.go:42: 18:11:28 | additional-volumes/0-deploy-operator | +++ export TESTS_DIR=/mnt/jenkins/workspace/cloud-pg-operator_PR-1760/e2e-tests logger.go:42: 18:11:28 | additional-volumes/0-deploy-operator | +++ TESTS_DIR=/mnt/jenkins/workspace/cloud-pg-operator_PR-1760/e2e-tests logger.go:42: 18:11:28 | additional-volumes/0-deploy-operator | +++ export TESTS_CONFIG_DIR=/mnt/jenkins/workspace/cloud-pg-operator_PR-1760/e2e-tests/conf logger.go:42: 18:11:28 | additional-volumes/0-deploy-operator | +++ TESTS_CONFIG_DIR=/mnt/jenkins/workspace/cloud-pg-operator_PR-1760/e2e-tests/conf logger.go:42: 18:11:28 | additional-volumes/0-deploy-operator | +++ export TEST_CONFIG_DIR=/mnt/jenkins/workspace/cloud-pg-operator_PR-1760/e2e-tests/tests/additional-volumes/conf logger.go:42: 18:11:28 | additional-volumes/0-deploy-operator | +++ TEST_CONFIG_DIR=/mnt/jenkins/workspace/cloud-pg-operator_PR-1760/e2e-tests/tests/additional-volumes/conf logger.go:42: 18:11:28 | additional-volumes/0-deploy-operator | +++ export TEMP_DIR=/tmp/kuttl/pg/additional-volumes logger.go:42: 18:11:28 | additional-volumes/0-deploy-operator | +++ TEMP_DIR=/tmp/kuttl/pg/additional-volumes logger.go:42: 18:11:28 | additional-volumes/0-deploy-operator | ++++ git rev-parse --abbrev-ref HEAD logger.go:42: 18:11:28 | additional-volumes/0-deploy-operator | +++ export GIT_BRANCH=PR-1760 logger.go:42: 18:11:28 | additional-volumes/0-deploy-operator | +++ GIT_BRANCH=PR-1760 logger.go:42: 18:11:28 | additional-volumes/0-deploy-operator | +++ export VERSION=PR-1760-4947a0272 logger.go:42: 18:11:28 | additional-volumes/0-deploy-operator | +++ VERSION=PR-1760-4947a0272 logger.go:42: 18:11:28 | additional-volumes/0-deploy-operator | +++ export SKIP_TEST_WARNINGS=true logger.go:42: 18:11:28 | additional-volumes/0-deploy-operator | +++ SKIP_TEST_WARNINGS=true logger.go:42: 18:11:28 | additional-volumes/0-deploy-operator | +++ export K8S_UPGRADE_PLATFORM=gke logger.go:42: 18:11:28 | additional-volumes/0-deploy-operator | +++ K8S_UPGRADE_PLATFORM=gke logger.go:42: 18:11:28 | additional-volumes/0-deploy-operator | +++ export K8S_UPGRADE_REGION=us-central1-a logger.go:42: 18:11:28 | additional-volumes/0-deploy-operator | +++ K8S_UPGRADE_REGION=us-central1-a logger.go:42: 18:11:28 | additional-volumes/0-deploy-operator | +++ export K8S_UPGRADE_INITIAL_VERSION= logger.go:42: 18:11:28 | additional-volumes/0-deploy-operator | +++ K8S_UPGRADE_INITIAL_VERSION= logger.go:42: 18:11:28 | additional-volumes/0-deploy-operator | +++ export K8S_UPGRADE_FINAL_VERSION= logger.go:42: 18:11:28 | additional-volumes/0-deploy-operator | +++ K8S_UPGRADE_FINAL_VERSION= logger.go:42: 18:11:28 | additional-volumes/0-deploy-operator | +++ [[ -z '' ]] logger.go:42: 18:11:28 | additional-volumes/0-deploy-operator | ++++ detect_k8s_platform logger.go:42: 18:11:28 | additional-volumes/0-deploy-operator | ++++ local detected_platform logger.go:42: 18:11:28 | additional-volumes/0-deploy-operator | ++++ local xtrace_enabled=false logger.go:42: 18:11:28 | additional-volumes/0-deploy-operator | ++++ [[ -o xtrace ]] logger.go:42: 18:11:28 | additional-volumes/0-deploy-operator | ++++ xtrace_enabled=true logger.go:42: 18:11:28 | additional-volumes/0-deploy-operator | ++++ set +o xtrace logger.go:42: 18:11:32 | additional-volumes/0-deploy-operator | +++ PLATFORM=gke logger.go:42: 18:11:32 | additional-volumes/0-deploy-operator | +++ export PLATFORM logger.go:42: 18:11:32 | additional-volumes/0-deploy-operator | +++ export IMAGE_BASE=perconalab/percona-postgresql-operator logger.go:42: 18:11:32 | additional-volumes/0-deploy-operator | +++ IMAGE_BASE=perconalab/percona-postgresql-operator logger.go:42: 18:11:32 | additional-volumes/0-deploy-operator | +++ export IMAGE=perconalab/percona-postgresql-operator:PR-1760-4947a0272 logger.go:42: 18:11:32 | additional-volumes/0-deploy-operator | +++ IMAGE=perconalab/percona-postgresql-operator:PR-1760-4947a0272 logger.go:42: 18:11:32 | additional-volumes/0-deploy-operator | +++ [[ ! -n '' ]] logger.go:42: 18:11:32 | additional-volumes/0-deploy-operator | +++ [[ -n '' ]] logger.go:42: 18:11:32 | additional-volumes/0-deploy-operator | +++ export PG_VER=18 logger.go:42: 18:11:32 | additional-volumes/0-deploy-operator | +++ PG_VER=18 logger.go:42: 18:11:32 | additional-volumes/0-deploy-operator | +++ export PG_DISTRIBUTION= logger.go:42: 18:11:32 | additional-volumes/0-deploy-operator | +++ PG_DISTRIBUTION= logger.go:42: 18:11:32 | additional-volumes/0-deploy-operator | +++ [[ '' == community ]] logger.go:42: 18:11:32 | additional-volumes/0-deploy-operator | +++ export IMAGE_PGBOUNCER=perconalab/percona-postgresql-operator:main-pgbouncer18 logger.go:42: 18:11:32 | additional-volumes/0-deploy-operator | +++ IMAGE_PGBOUNCER=perconalab/percona-postgresql-operator:main-pgbouncer18 logger.go:42: 18:11:32 | additional-volumes/0-deploy-operator | +++ export IMAGE_POSTGRESQL=perconalab/percona-postgresql-operator:main-ppg18-postgres logger.go:42: 18:11:32 | additional-volumes/0-deploy-operator | +++ IMAGE_POSTGRESQL=perconalab/percona-postgresql-operator:main-ppg18-postgres logger.go:42: 18:11:32 | additional-volumes/0-deploy-operator | +++ export IMAGE_BACKREST=perconalab/percona-postgresql-operator:main-pgbackrest18 logger.go:42: 18:11:32 | additional-volumes/0-deploy-operator | +++ IMAGE_BACKREST=perconalab/percona-postgresql-operator:main-pgbackrest18 logger.go:42: 18:11:32 | additional-volumes/0-deploy-operator | +++ export IMAGE_UPGRADE=perconalab/percona-postgresql-operator:main-upgrade logger.go:42: 18:11:32 | additional-volumes/0-deploy-operator | +++ IMAGE_UPGRADE=perconalab/percona-postgresql-operator:main-upgrade logger.go:42: 18:11:32 | additional-volumes/0-deploy-operator | +++ export BUCKET=pg-operator-testing logger.go:42: 18:11:32 | additional-volumes/0-deploy-operator | +++ BUCKET=pg-operator-testing logger.go:42: 18:11:32 | additional-volumes/0-deploy-operator | +++ export PMM_SERVER_VERSION=9.9.9 logger.go:42: 18:11:32 | additional-volumes/0-deploy-operator | +++ PMM_SERVER_VERSION=9.9.9 logger.go:42: 18:11:32 | additional-volumes/0-deploy-operator | +++ export IMAGE_PMM_CLIENT=perconalab/pmm-client:3-dev-latest logger.go:42: 18:11:32 | additional-volumes/0-deploy-operator | +++ IMAGE_PMM_CLIENT=perconalab/pmm-client:3-dev-latest logger.go:42: 18:11:32 | additional-volumes/0-deploy-operator | +++ export IMAGE_PMM_SERVER=perconalab/pmm-server:3-dev-latest logger.go:42: 18:11:32 | additional-volumes/0-deploy-operator | +++ IMAGE_PMM_SERVER=perconalab/pmm-server:3-dev-latest logger.go:42: 18:11:32 | additional-volumes/0-deploy-operator | +++ export IMAGE_LOGCOLLECTOR=perconalab/fluentbit:main-logcollector logger.go:42: 18:11:32 | additional-volumes/0-deploy-operator | +++ IMAGE_LOGCOLLECTOR=perconalab/fluentbit:main-logcollector logger.go:42: 18:11:32 | additional-volumes/0-deploy-operator | +++ export PGOV1_TAG=1.4.0 logger.go:42: 18:11:32 | additional-volumes/0-deploy-operator | +++ PGOV1_TAG=1.4.0 logger.go:42: 18:11:32 | additional-volumes/0-deploy-operator | +++ export PGOV1_VER=14 logger.go:42: 18:11:32 | additional-volumes/0-deploy-operator | +++ PGOV1_VER=14 logger.go:42: 18:11:32 | additional-volumes/0-deploy-operator | +++ export CPGO_VERSION=5.8.7 logger.go:42: 18:11:32 | additional-volumes/0-deploy-operator | +++ CPGO_VERSION=5.8.7 logger.go:42: 18:11:32 | additional-volumes/0-deploy-operator | +++ export MINIO_VER=5.4.0 logger.go:42: 18:11:32 | additional-volumes/0-deploy-operator | +++ MINIO_VER=5.4.0 logger.go:42: 18:11:32 | additional-volumes/0-deploy-operator | +++ export VAULT_VER=0.32.0 logger.go:42: 18:11:32 | additional-volumes/0-deploy-operator | +++ VAULT_VER=0.32.0 logger.go:42: 18:11:32 | additional-volumes/0-deploy-operator | +++ export REGISTRY_NAME=docker.io logger.go:42: 18:11:32 | additional-volumes/0-deploy-operator | +++ REGISTRY_NAME=docker.io logger.go:42: 18:11:32 | additional-volumes/0-deploy-operator | +++ export REGISTRY_NAME_FULL=docker.io/ logger.go:42: 18:11:32 | additional-volumes/0-deploy-operator | +++ REGISTRY_NAME_FULL=docker.io/ logger.go:42: 18:11:32 | additional-volumes/0-deploy-operator | ++++ printenv logger.go:42: 18:11:32 | additional-volumes/0-deploy-operator | ++++ grep -E '^IMAGE' logger.go:42: 18:11:32 | additional-volumes/0-deploy-operator | ++++ awk -F= '{print $1}' logger.go:42: 18:11:32 | additional-volumes/0-deploy-operator | +++ for var in $(printenv | grep -E '^IMAGE' | awk -F'=' '{print $1}') logger.go:42: 18:11:32 | additional-volumes/0-deploy-operator | ++++ eval 'echo $IMAGE_BACKREST' logger.go:42: 18:11:32 | additional-volumes/0-deploy-operator | +++++ echo perconalab/percona-postgresql-operator:main-pgbackrest18 logger.go:42: 18:11:32 | additional-volumes/0-deploy-operator | +++ var_value=perconalab/percona-postgresql-operator:main-pgbackrest18 logger.go:42: 18:11:32 | additional-volumes/0-deploy-operator | +++ [[ perconalab/percona-postgresql-operator:main-pgbackrest18 == docker.io/* ]] logger.go:42: 18:11:32 | additional-volumes/0-deploy-operator | +++ [[ perconalab/percona-postgresql-operator:main-pgbackrest18 == percona/* ]] logger.go:42: 18:11:32 | additional-volumes/0-deploy-operator | +++ [[ perconalab/percona-postgresql-operator:main-pgbackrest18 == perconalab/* ]] logger.go:42: 18:11:32 | additional-volumes/0-deploy-operator | +++ new_value=docker.io/perconalab/percona-postgresql-operator:main-pgbackrest18 logger.go:42: 18:11:32 | additional-volumes/0-deploy-operator | +++ export IMAGE_BACKREST=docker.io/perconalab/percona-postgresql-operator:main-pgbackrest18 logger.go:42: 18:11:32 | additional-volumes/0-deploy-operator | +++ IMAGE_BACKREST=docker.io/perconalab/percona-postgresql-operator:main-pgbackrest18 logger.go:42: 18:11:32 | additional-volumes/0-deploy-operator | +++ echo IMAGE_BACKREST=docker.io/perconalab/percona-postgresql-operator:main-pgbackrest18 logger.go:42: 18:11:32 | additional-volumes/0-deploy-operator | IMAGE_BACKREST=docker.io/perconalab/percona-postgresql-operator:main-pgbackrest18 logger.go:42: 18:11:32 | additional-volumes/0-deploy-operator | +++ echo perconalab/percona-postgresql-operator:PR-1760-4947a0272 logger.go:42: 18:11:32 | additional-volumes/0-deploy-operator | perconalab/percona-postgresql-operator:PR-1760-4947a0272 logger.go:42: 18:11:32 | additional-volumes/0-deploy-operator | +++ for var in $(printenv | grep -E '^IMAGE' | awk -F'=' '{print $1}') logger.go:42: 18:11:32 | additional-volumes/0-deploy-operator | ++++ eval 'echo $IMAGE' logger.go:42: 18:11:32 | additional-volumes/0-deploy-operator | +++++ echo perconalab/percona-postgresql-operator:PR-1760-4947a0272 logger.go:42: 18:11:32 | additional-volumes/0-deploy-operator | +++ var_value=perconalab/percona-postgresql-operator:PR-1760-4947a0272 logger.go:42: 18:11:32 | additional-volumes/0-deploy-operator | +++ [[ perconalab/percona-postgresql-operator:PR-1760-4947a0272 == docker.io/* ]] logger.go:42: 18:11:32 | additional-volumes/0-deploy-operator | +++ [[ perconalab/percona-postgresql-operator:PR-1760-4947a0272 == percona/* ]] logger.go:42: 18:11:32 | additional-volumes/0-deploy-operator | +++ [[ perconalab/percona-postgresql-operator:PR-1760-4947a0272 == perconalab/* ]] logger.go:42: 18:11:32 | additional-volumes/0-deploy-operator | +++ new_value=docker.io/perconalab/percona-postgresql-operator:PR-1760-4947a0272 logger.go:42: 18:11:32 | additional-volumes/0-deploy-operator | +++ export IMAGE=docker.io/perconalab/percona-postgresql-operator:PR-1760-4947a0272 logger.go:42: 18:11:32 | additional-volumes/0-deploy-operator | +++ IMAGE=docker.io/perconalab/percona-postgresql-operator:PR-1760-4947a0272 logger.go:42: 18:11:32 | additional-volumes/0-deploy-operator | +++ echo IMAGE=docker.io/perconalab/percona-postgresql-operator:PR-1760-4947a0272 logger.go:42: 18:11:32 | additional-volumes/0-deploy-operator | IMAGE=docker.io/perconalab/percona-postgresql-operator:PR-1760-4947a0272 logger.go:42: 18:11:32 | additional-volumes/0-deploy-operator | +++ echo docker.io/perconalab/percona-postgresql-operator:PR-1760-4947a0272 logger.go:42: 18:11:32 | additional-volumes/0-deploy-operator | docker.io/perconalab/percona-postgresql-operator:PR-1760-4947a0272 logger.go:42: 18:11:32 | additional-volumes/0-deploy-operator | +++ for var in $(printenv | grep -E '^IMAGE' | awk -F'=' '{print $1}') logger.go:42: 18:11:32 | additional-volumes/0-deploy-operator | ++++ eval 'echo $IMAGE_UPGRADE' logger.go:42: 18:11:32 | additional-volumes/0-deploy-operator | +++++ echo perconalab/percona-postgresql-operator:main-upgrade logger.go:42: 18:11:32 | additional-volumes/0-deploy-operator | +++ var_value=perconalab/percona-postgresql-operator:main-upgrade logger.go:42: 18:11:32 | additional-volumes/0-deploy-operator | +++ [[ perconalab/percona-postgresql-operator:main-upgrade == docker.io/* ]] logger.go:42: 18:11:32 | additional-volumes/0-deploy-operator | +++ [[ perconalab/percona-postgresql-operator:main-upgrade == percona/* ]] logger.go:42: 18:11:32 | additional-volumes/0-deploy-operator | +++ [[ perconalab/percona-postgresql-operator:main-upgrade == perconalab/* ]] logger.go:42: 18:11:32 | additional-volumes/0-deploy-operator | +++ new_value=docker.io/perconalab/percona-postgresql-operator:main-upgrade logger.go:42: 18:11:32 | additional-volumes/0-deploy-operator | +++ export IMAGE_UPGRADE=docker.io/perconalab/percona-postgresql-operator:main-upgrade logger.go:42: 18:11:32 | additional-volumes/0-deploy-operator | +++ IMAGE_UPGRADE=docker.io/perconalab/percona-postgresql-operator:main-upgrade logger.go:42: 18:11:32 | additional-volumes/0-deploy-operator | +++ echo IMAGE_UPGRADE=docker.io/perconalab/percona-postgresql-operator:main-upgrade logger.go:42: 18:11:32 | additional-volumes/0-deploy-operator | IMAGE_UPGRADE=docker.io/perconalab/percona-postgresql-operator:main-upgrade logger.go:42: 18:11:32 | additional-volumes/0-deploy-operator | +++ echo docker.io/perconalab/percona-postgresql-operator:PR-1760-4947a0272 logger.go:42: 18:11:32 | additional-volumes/0-deploy-operator | docker.io/perconalab/percona-postgresql-operator:PR-1760-4947a0272 logger.go:42: 18:11:32 | additional-volumes/0-deploy-operator | +++ for var in $(printenv | grep -E '^IMAGE' | awk -F'=' '{print $1}') logger.go:42: 18:11:32 | additional-volumes/0-deploy-operator | ++++ eval 'echo $IMAGE_LOGCOLLECTOR' logger.go:42: 18:11:32 | additional-volumes/0-deploy-operator | +++++ echo perconalab/fluentbit:main-logcollector logger.go:42: 18:11:32 | additional-volumes/0-deploy-operator | +++ var_value=perconalab/fluentbit:main-logcollector logger.go:42: 18:11:32 | additional-volumes/0-deploy-operator | +++ [[ perconalab/fluentbit:main-logcollector == docker.io/* ]] logger.go:42: 18:11:32 | additional-volumes/0-deploy-operator | +++ [[ perconalab/fluentbit:main-logcollector == percona/* ]] logger.go:42: 18:11:32 | additional-volumes/0-deploy-operator | +++ [[ perconalab/fluentbit:main-logcollector == perconalab/* ]] logger.go:42: 18:11:32 | additional-volumes/0-deploy-operator | +++ new_value=docker.io/perconalab/fluentbit:main-logcollector logger.go:42: 18:11:32 | additional-volumes/0-deploy-operator | +++ export IMAGE_LOGCOLLECTOR=docker.io/perconalab/fluentbit:main-logcollector logger.go:42: 18:11:32 | additional-volumes/0-deploy-operator | +++ IMAGE_LOGCOLLECTOR=docker.io/perconalab/fluentbit:main-logcollector logger.go:42: 18:11:32 | additional-volumes/0-deploy-operator | +++ echo IMAGE_LOGCOLLECTOR=docker.io/perconalab/fluentbit:main-logcollector logger.go:42: 18:11:32 | additional-volumes/0-deploy-operator | IMAGE_LOGCOLLECTOR=docker.io/perconalab/fluentbit:main-logcollector logger.go:42: 18:11:32 | additional-volumes/0-deploy-operator | +++ echo docker.io/perconalab/percona-postgresql-operator:PR-1760-4947a0272 logger.go:42: 18:11:32 | additional-volumes/0-deploy-operator | docker.io/perconalab/percona-postgresql-operator:PR-1760-4947a0272 logger.go:42: 18:11:32 | additional-volumes/0-deploy-operator | +++ for var in $(printenv | grep -E '^IMAGE' | awk -F'=' '{print $1}') logger.go:42: 18:11:32 | additional-volumes/0-deploy-operator | ++++ eval 'echo $IMAGE_BASE' logger.go:42: 18:11:32 | additional-volumes/0-deploy-operator | +++++ echo perconalab/percona-postgresql-operator logger.go:42: 18:11:32 | additional-volumes/0-deploy-operator | +++ var_value=perconalab/percona-postgresql-operator logger.go:42: 18:11:32 | additional-volumes/0-deploy-operator | +++ [[ perconalab/percona-postgresql-operator == docker.io/* ]] logger.go:42: 18:11:32 | additional-volumes/0-deploy-operator | +++ [[ perconalab/percona-postgresql-operator == percona/* ]] logger.go:42: 18:11:32 | additional-volumes/0-deploy-operator | +++ [[ perconalab/percona-postgresql-operator == perconalab/* ]] logger.go:42: 18:11:32 | additional-volumes/0-deploy-operator | +++ new_value=docker.io/perconalab/percona-postgresql-operator logger.go:42: 18:11:32 | additional-volumes/0-deploy-operator | +++ export IMAGE_BASE=docker.io/perconalab/percona-postgresql-operator logger.go:42: 18:11:32 | additional-volumes/0-deploy-operator | +++ IMAGE_BASE=docker.io/perconalab/percona-postgresql-operator logger.go:42: 18:11:32 | additional-volumes/0-deploy-operator | +++ echo IMAGE_BASE=docker.io/perconalab/percona-postgresql-operator logger.go:42: 18:11:32 | additional-volumes/0-deploy-operator | IMAGE_BASE=docker.io/perconalab/percona-postgresql-operator logger.go:42: 18:11:32 | additional-volumes/0-deploy-operator | +++ echo docker.io/perconalab/percona-postgresql-operator:PR-1760-4947a0272 logger.go:42: 18:11:32 | additional-volumes/0-deploy-operator | docker.io/perconalab/percona-postgresql-operator:PR-1760-4947a0272 logger.go:42: 18:11:32 | additional-volumes/0-deploy-operator | +++ for var in $(printenv | grep -E '^IMAGE' | awk -F'=' '{print $1}') logger.go:42: 18:11:32 | additional-volumes/0-deploy-operator | ++++ eval 'echo $IMAGE_PGBOUNCER' logger.go:42: 18:11:32 | additional-volumes/0-deploy-operator | +++++ echo perconalab/percona-postgresql-operator:main-pgbouncer18 logger.go:42: 18:11:32 | additional-volumes/0-deploy-operator | +++ var_value=perconalab/percona-postgresql-operator:main-pgbouncer18 logger.go:42: 18:11:32 | additional-volumes/0-deploy-operator | +++ [[ perconalab/percona-postgresql-operator:main-pgbouncer18 == docker.io/* ]] logger.go:42: 18:11:32 | additional-volumes/0-deploy-operator | +++ [[ perconalab/percona-postgresql-operator:main-pgbouncer18 == percona/* ]] logger.go:42: 18:11:32 | additional-volumes/0-deploy-operator | +++ [[ perconalab/percona-postgresql-operator:main-pgbouncer18 == perconalab/* ]] logger.go:42: 18:11:32 | additional-volumes/0-deploy-operator | +++ new_value=docker.io/perconalab/percona-postgresql-operator:main-pgbouncer18 logger.go:42: 18:11:32 | additional-volumes/0-deploy-operator | +++ export IMAGE_PGBOUNCER=docker.io/perconalab/percona-postgresql-operator:main-pgbouncer18 logger.go:42: 18:11:32 | additional-volumes/0-deploy-operator | +++ IMAGE_PGBOUNCER=docker.io/perconalab/percona-postgresql-operator:main-pgbouncer18 logger.go:42: 18:11:32 | additional-volumes/0-deploy-operator | +++ echo IMAGE_PGBOUNCER=docker.io/perconalab/percona-postgresql-operator:main-pgbouncer18 logger.go:42: 18:11:32 | additional-volumes/0-deploy-operator | IMAGE_PGBOUNCER=docker.io/perconalab/percona-postgresql-operator:main-pgbouncer18 logger.go:42: 18:11:32 | additional-volumes/0-deploy-operator | +++ echo docker.io/perconalab/percona-postgresql-operator:PR-1760-4947a0272 logger.go:42: 18:11:32 | additional-volumes/0-deploy-operator | docker.io/perconalab/percona-postgresql-operator:PR-1760-4947a0272 logger.go:42: 18:11:32 | additional-volumes/0-deploy-operator | +++ for var in $(printenv | grep -E '^IMAGE' | awk -F'=' '{print $1}') logger.go:42: 18:11:32 | additional-volumes/0-deploy-operator | ++++ eval 'echo $IMAGE_POSTGRESQL' logger.go:42: 18:11:32 | additional-volumes/0-deploy-operator | +++++ echo perconalab/percona-postgresql-operator:main-ppg18-postgres logger.go:42: 18:11:32 | additional-volumes/0-deploy-operator | +++ var_value=perconalab/percona-postgresql-operator:main-ppg18-postgres logger.go:42: 18:11:32 | additional-volumes/0-deploy-operator | +++ [[ perconalab/percona-postgresql-operator:main-ppg18-postgres == docker.io/* ]] logger.go:42: 18:11:32 | additional-volumes/0-deploy-operator | +++ [[ perconalab/percona-postgresql-operator:main-ppg18-postgres == percona/* ]] logger.go:42: 18:11:32 | additional-volumes/0-deploy-operator | +++ [[ perconalab/percona-postgresql-operator:main-ppg18-postgres == perconalab/* ]] logger.go:42: 18:11:32 | additional-volumes/0-deploy-operator | +++ new_value=docker.io/perconalab/percona-postgresql-operator:main-ppg18-postgres logger.go:42: 18:11:32 | additional-volumes/0-deploy-operator | +++ export IMAGE_POSTGRESQL=docker.io/perconalab/percona-postgresql-operator:main-ppg18-postgres logger.go:42: 18:11:32 | additional-volumes/0-deploy-operator | +++ IMAGE_POSTGRESQL=docker.io/perconalab/percona-postgresql-operator:main-ppg18-postgres logger.go:42: 18:11:32 | additional-volumes/0-deploy-operator | +++ echo IMAGE_POSTGRESQL=docker.io/perconalab/percona-postgresql-operator:main-ppg18-postgres logger.go:42: 18:11:32 | additional-volumes/0-deploy-operator | IMAGE_POSTGRESQL=docker.io/perconalab/percona-postgresql-operator:main-ppg18-postgres logger.go:42: 18:11:32 | additional-volumes/0-deploy-operator | +++ echo docker.io/perconalab/percona-postgresql-operator:PR-1760-4947a0272 logger.go:42: 18:11:32 | additional-volumes/0-deploy-operator | docker.io/perconalab/percona-postgresql-operator:PR-1760-4947a0272 logger.go:42: 18:11:32 | additional-volumes/0-deploy-operator | +++ for var in $(printenv | grep -E '^IMAGE' | awk -F'=' '{print $1}') logger.go:42: 18:11:32 | additional-volumes/0-deploy-operator | ++++ eval 'echo $IMAGE_PMM_SERVER' logger.go:42: 18:11:32 | additional-volumes/0-deploy-operator | +++++ echo perconalab/pmm-server:3-dev-latest logger.go:42: 18:11:32 | additional-volumes/0-deploy-operator | +++ var_value=perconalab/pmm-server:3-dev-latest logger.go:42: 18:11:32 | additional-volumes/0-deploy-operator | +++ [[ perconalab/pmm-server:3-dev-latest == docker.io/* ]] logger.go:42: 18:11:32 | additional-volumes/0-deploy-operator | +++ [[ perconalab/pmm-server:3-dev-latest == percona/* ]] logger.go:42: 18:11:32 | additional-volumes/0-deploy-operator | +++ [[ perconalab/pmm-server:3-dev-latest == perconalab/* ]] logger.go:42: 18:11:32 | additional-volumes/0-deploy-operator | +++ new_value=docker.io/perconalab/pmm-server:3-dev-latest logger.go:42: 18:11:32 | additional-volumes/0-deploy-operator | +++ export IMAGE_PMM_SERVER=docker.io/perconalab/pmm-server:3-dev-latest logger.go:42: 18:11:32 | additional-volumes/0-deploy-operator | +++ IMAGE_PMM_SERVER=docker.io/perconalab/pmm-server:3-dev-latest logger.go:42: 18:11:32 | additional-volumes/0-deploy-operator | +++ echo IMAGE_PMM_SERVER=docker.io/perconalab/pmm-server:3-dev-latest logger.go:42: 18:11:32 | additional-volumes/0-deploy-operator | IMAGE_PMM_SERVER=docker.io/perconalab/pmm-server:3-dev-latest logger.go:42: 18:11:32 | additional-volumes/0-deploy-operator | +++ echo docker.io/perconalab/percona-postgresql-operator:PR-1760-4947a0272 logger.go:42: 18:11:32 | additional-volumes/0-deploy-operator | docker.io/perconalab/percona-postgresql-operator:PR-1760-4947a0272 logger.go:42: 18:11:32 | additional-volumes/0-deploy-operator | +++ for var in $(printenv | grep -E '^IMAGE' | awk -F'=' '{print $1}') logger.go:42: 18:11:32 | additional-volumes/0-deploy-operator | ++++ eval 'echo $IMAGE_PMM_CLIENT' logger.go:42: 18:11:32 | additional-volumes/0-deploy-operator | +++++ echo perconalab/pmm-client:3-dev-latest logger.go:42: 18:11:32 | additional-volumes/0-deploy-operator | +++ var_value=perconalab/pmm-client:3-dev-latest logger.go:42: 18:11:32 | additional-volumes/0-deploy-operator | +++ [[ perconalab/pmm-client:3-dev-latest == docker.io/* ]] logger.go:42: 18:11:32 | additional-volumes/0-deploy-operator | +++ [[ perconalab/pmm-client:3-dev-latest == percona/* ]] logger.go:42: 18:11:32 | additional-volumes/0-deploy-operator | +++ [[ perconalab/pmm-client:3-dev-latest == perconalab/* ]] logger.go:42: 18:11:32 | additional-volumes/0-deploy-operator | +++ new_value=docker.io/perconalab/pmm-client:3-dev-latest logger.go:42: 18:11:32 | additional-volumes/0-deploy-operator | +++ export IMAGE_PMM_CLIENT=docker.io/perconalab/pmm-client:3-dev-latest logger.go:42: 18:11:32 | additional-volumes/0-deploy-operator | +++ IMAGE_PMM_CLIENT=docker.io/perconalab/pmm-client:3-dev-latest logger.go:42: 18:11:32 | additional-volumes/0-deploy-operator | +++ echo IMAGE_PMM_CLIENT=docker.io/perconalab/pmm-client:3-dev-latest logger.go:42: 18:11:32 | additional-volumes/0-deploy-operator | IMAGE_PMM_CLIENT=docker.io/perconalab/pmm-client:3-dev-latest logger.go:42: 18:11:32 | additional-volumes/0-deploy-operator | +++ echo docker.io/perconalab/percona-postgresql-operator:PR-1760-4947a0272 logger.go:42: 18:11:32 | additional-volumes/0-deploy-operator | docker.io/perconalab/percona-postgresql-operator:PR-1760-4947a0272 logger.go:42: 18:11:32 | additional-volumes/0-deploy-operator | ++++ which gdate logger.go:42: 18:11:32 | additional-volumes/0-deploy-operator | which: no gdate in (/mnt/jenkins/workspace/cloud-pg-operator_PR-1760/bin/:/root/.krew/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/var/lib/snapd/snap/bin) logger.go:42: 18:11:32 | additional-volumes/0-deploy-operator | ++++ which date logger.go:42: 18:11:32 | additional-volumes/0-deploy-operator | +++ date=/usr/sbin/date logger.go:42: 18:11:32 | additional-volumes/0-deploy-operator | ++++ which gsed logger.go:42: 18:11:32 | additional-volumes/0-deploy-operator | which: no gsed in (/mnt/jenkins/workspace/cloud-pg-operator_PR-1760/bin/:/root/.krew/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/var/lib/snapd/snap/bin) logger.go:42: 18:11:32 | additional-volumes/0-deploy-operator | ++++ which sed logger.go:42: 18:11:32 | additional-volumes/0-deploy-operator | +++ sed=/usr/sbin/sed logger.go:42: 18:11:32 | additional-volumes/0-deploy-operator | + init_temp_dir logger.go:42: 18:11:32 | additional-volumes/0-deploy-operator | + rm -rf /tmp/kuttl/pg/additional-volumes logger.go:42: 18:11:32 | additional-volumes/0-deploy-operator | + mkdir -p /tmp/kuttl/pg/additional-volumes logger.go:42: 18:11:32 | additional-volumes/0-deploy-operator | + deploy_operator logger.go:42: 18:11:32 | additional-volumes/0-deploy-operator | + local cw_prefix= logger.go:42: 18:11:32 | additional-volumes/0-deploy-operator | + destroy_operator logger.go:42: 18:11:32 | additional-volumes/0-deploy-operator | + kubectl -n pg-operator delete deployment percona-postgresql-operator --force --grace-period=0 logger.go:42: 18:11:32 | additional-volumes/0-deploy-operator | Warning: Immediate deletion does not wait for confirmation that the running resource has been terminated. The resource may continue to run on the cluster indefinitely. logger.go:42: 18:11:32 | additional-volumes/0-deploy-operator | Error from server (NotFound): deployments.apps "percona-postgresql-operator" not found logger.go:42: 18:11:32 | additional-volumes/0-deploy-operator | + true logger.go:42: 18:11:32 | additional-volumes/0-deploy-operator | + [[ -n pg-operator ]] logger.go:42: 18:11:32 | additional-volumes/0-deploy-operator | + kubectl delete namespace pg-operator --force --grace-period=0 logger.go:42: 18:11:32 | additional-volumes/0-deploy-operator | Warning: Immediate deletion does not wait for confirmation that the running resource has been terminated. The resource may continue to run on the cluster indefinitely. logger.go:42: 18:11:33 | additional-volumes/0-deploy-operator | Error from server (NotFound): namespaces "pg-operator" not found logger.go:42: 18:11:33 | additional-volumes/0-deploy-operator | + true logger.go:42: 18:11:33 | additional-volumes/0-deploy-operator | + [[ -n pg-operator ]] logger.go:42: 18:11:33 | additional-volumes/0-deploy-operator | + create_namespace pg-operator logger.go:42: 18:11:33 | additional-volumes/0-deploy-operator | + local namespace=pg-operator logger.go:42: 18:11:33 | additional-volumes/0-deploy-operator | + [[ gke == openshift ]] logger.go:42: 18:11:33 | additional-volumes/0-deploy-operator | + kubectl delete namespace pg-operator --ignore-not-found logger.go:42: 18:11:33 | additional-volumes/0-deploy-operator | + kubectl wait --for=delete namespace pg-operator logger.go:42: 18:11:34 | additional-volumes/0-deploy-operator | + kubectl create namespace pg-operator logger.go:42: 18:11:34 | additional-volumes/0-deploy-operator | namespace/pg-operator created logger.go:42: 18:11:34 | additional-volumes/0-deploy-operator | + cw_prefix=cw- logger.go:42: 18:11:34 | additional-volumes/0-deploy-operator | + kubectl -n pg-operator apply --server-side --force-conflicts -f /mnt/jenkins/workspace/cloud-pg-operator_PR-1760/deploy/crd.yaml logger.go:42: 18:11:35 | additional-volumes/0-deploy-operator | customresourcedefinition.apiextensions.k8s.io/crunchybridgeclusters.upstream.pgv2.percona.com serverside-applied logger.go:42: 18:11:36 | additional-volumes/0-deploy-operator | customresourcedefinition.apiextensions.k8s.io/perconapgbackups.pgv2.percona.com serverside-applied logger.go:42: 18:11:37 | additional-volumes/0-deploy-operator | customresourcedefinition.apiextensions.k8s.io/perconapgclusters.pgv2.percona.com serverside-applied logger.go:42: 18:11:38 | additional-volumes/0-deploy-operator | customresourcedefinition.apiextensions.k8s.io/perconapgrestores.pgv2.percona.com serverside-applied logger.go:42: 18:11:38 | additional-volumes/0-deploy-operator | customresourcedefinition.apiextensions.k8s.io/perconapgupgrades.pgv2.percona.com serverside-applied logger.go:42: 18:11:38 | additional-volumes/0-deploy-operator | customresourcedefinition.apiextensions.k8s.io/pgadmins.upstream.pgv2.percona.com serverside-applied logger.go:42: 18:11:38 | additional-volumes/0-deploy-operator | customresourcedefinition.apiextensions.k8s.io/pgupgrades.upstream.pgv2.percona.com serverside-applied logger.go:42: 18:11:41 | additional-volumes/0-deploy-operator | customresourcedefinition.apiextensions.k8s.io/postgresclusters.upstream.pgv2.percona.com serverside-applied logger.go:42: 18:11:41 | additional-volumes/0-deploy-operator | + kubectl -n pg-operator apply --server-side --force-conflicts -f /mnt/jenkins/workspace/cloud-pg-operator_PR-1760/deploy/cw-rbac.yaml logger.go:42: 18:11:43 | additional-volumes/0-deploy-operator | serviceaccount/percona-postgresql-operator serverside-applied logger.go:42: 18:11:43 | additional-volumes/0-deploy-operator | clusterrole.rbac.authorization.k8s.io/percona-postgresql-operator serverside-applied logger.go:42: 18:11:43 | additional-volumes/0-deploy-operator | clusterrolebinding.rbac.authorization.k8s.io/percona-postgresql-operator serverside-applied logger.go:42: 18:11:43 | additional-volumes/0-deploy-operator | + local disable_telemetry=true logger.go:42: 18:11:43 | additional-volumes/0-deploy-operator | + '[' additional-volumes == telemetry-transfer ']' logger.go:42: 18:11:43 | additional-volumes/0-deploy-operator | + yq eval '.spec.template.spec.containers[0].image = "docker.io/perconalab/percona-postgresql-operator:PR-1760-4947a0272"' /mnt/jenkins/workspace/cloud-pg-operator_PR-1760/deploy/cw-operator.yaml logger.go:42: 18:11:43 | additional-volumes/0-deploy-operator | + yq eval '(.spec.template.spec.containers[] | select(.name=="operator") | .env[] | select(.name=="DISABLE_TELEMETRY") | .value) = "true"' - logger.go:42: 18:11:43 | additional-volumes/0-deploy-operator | + yq eval '(.spec.template.spec.containers[] | select(.name=="operator") | .env[] | select(.name=="LOG_LEVEL") | .value) = "DEBUG"' - logger.go:42: 18:11:43 | additional-volumes/0-deploy-operator | + yq eval '(.spec.template.spec.containers[] | select(.name=="operator") | .env[] | select(.name=="PGO_FEATURE_GATES") | .value) = ""' - logger.go:42: 18:11:43 | additional-volumes/0-deploy-operator | + kubectl -n pg-operator apply -f - logger.go:42: 18:11:45 | additional-volumes/0-deploy-operator | deployment.apps/percona-postgresql-operator created logger.go:42: 18:11:45 | additional-volumes/0-deploy-operator | + deploy_client logger.go:42: 18:11:45 | additional-volumes/0-deploy-operator | + kubectl -n kuttl-test-intimate-garfish apply -f /mnt/jenkins/workspace/cloud-pg-operator_PR-1760/e2e-tests/conf/client.yaml logger.go:42: 18:11:46 | additional-volumes/0-deploy-operator | deployment.apps/pg-client created logger.go:42: 18:11:47 | additional-volumes/0-deploy-operator | running command: [sh -c kubectl assert exist-enhanced deployment percona-postgresql-operator -n ${OPERATOR_NS:-$NAMESPACE} --field-selector status.readyReplicas=1] logger.go:42: 18:11:47 | additional-volumes/0-deploy-operator | ASSERT deployment percona-postgresql-operator matching field criteria 'status.readyReplicas=1' should exist. logger.go:42: 18:11:47 | additional-volumes/0-deploy-operator | ASSERT FAIL Resource(s) not found. logger.go:42: 18:11:49 | additional-volumes/0-deploy-operator | running command: [sh -c kubectl assert exist-enhanced deployment percona-postgresql-operator -n ${OPERATOR_NS:-$NAMESPACE} --field-selector status.readyReplicas=1] logger.go:42: 18:11:49 | additional-volumes/0-deploy-operator | ASSERT deployment percona-postgresql-operator matching field criteria 'status.readyReplicas=1' should exist. logger.go:42: 18:11:49 | additional-volumes/0-deploy-operator | ASSERT FAIL Resource(s) not found. logger.go:42: 18:11:51 | additional-volumes/0-deploy-operator | running command: [sh -c kubectl assert exist-enhanced deployment percona-postgresql-operator -n ${OPERATOR_NS:-$NAMESPACE} --field-selector status.readyReplicas=1] logger.go:42: 18:11:51 | additional-volumes/0-deploy-operator | ASSERT deployment percona-postgresql-operator matching field criteria 'status.readyReplicas=1' should exist. logger.go:42: 18:11:51 | additional-volumes/0-deploy-operator | ASSERT FAIL Resource(s) not found. logger.go:42: 18:11:53 | additional-volumes/0-deploy-operator | running command: [sh -c kubectl assert exist-enhanced deployment percona-postgresql-operator -n ${OPERATOR_NS:-$NAMESPACE} --field-selector status.readyReplicas=1] logger.go:42: 18:11:53 | additional-volumes/0-deploy-operator | ASSERT deployment percona-postgresql-operator matching field criteria 'status.readyReplicas=1' should exist. logger.go:42: 18:11:53 | additional-volumes/0-deploy-operator | ASSERT FAIL Resource(s) not found. logger.go:42: 18:11:55 | additional-volumes/0-deploy-operator | running command: [sh -c kubectl assert exist-enhanced deployment percona-postgresql-operator -n ${OPERATOR_NS:-$NAMESPACE} --field-selector status.readyReplicas=1] logger.go:42: 18:11:55 | additional-volumes/0-deploy-operator | ASSERT deployment percona-postgresql-operator matching field criteria 'status.readyReplicas=1' should exist. logger.go:42: 18:11:55 | additional-volumes/0-deploy-operator | ASSERT FAIL Resource(s) not found. logger.go:42: 18:11:57 | additional-volumes/0-deploy-operator | running command: [sh -c kubectl assert exist-enhanced deployment percona-postgresql-operator -n ${OPERATOR_NS:-$NAMESPACE} --field-selector status.readyReplicas=1] logger.go:42: 18:11:57 | additional-volumes/0-deploy-operator | ASSERT deployment percona-postgresql-operator matching field criteria 'status.readyReplicas=1' should exist. logger.go:42: 18:11:57 | additional-volumes/0-deploy-operator | ASSERT FAIL Resource(s) not found. logger.go:42: 18:11:58 | additional-volumes/0-deploy-operator | running command: [sh -c kubectl assert exist-enhanced deployment percona-postgresql-operator -n ${OPERATOR_NS:-$NAMESPACE} --field-selector status.readyReplicas=1] logger.go:42: 18:11:59 | additional-volumes/0-deploy-operator | ASSERT deployment percona-postgresql-operator matching field criteria 'status.readyReplicas=1' should exist. logger.go:42: 18:11:59 | additional-volumes/0-deploy-operator | INFO Found 1 resource(s). logger.go:42: 18:11:59 | additional-volumes/0-deploy-operator | NAME NAMESPACE COL0 logger.go:42: 18:11:59 | additional-volumes/0-deploy-operator | percona-postgresql-operator pg-operator 1 logger.go:42: 18:11:59 | additional-volumes/0-deploy-operator | ASSERT PASS logger.go:42: 18:11:59 | additional-volumes/0-deploy-operator | test step completed 0-deploy-operator logger.go:42: 18:11:59 | additional-volumes/1-create-cluster | starting test step 1-create-cluster logger.go:42: 18:11:59 | additional-volumes/1-create-cluster | running command: [sh -c set -o errexit set -o xtrace source ../../functions # K8SPG-1086: the log volume is gated on crVersion >= 3.2.0 while deploy/cr.yaml # still ships 3.1.0. Drop this line once percona/version/version.txt reaches 3.2.0. get_cr \ | yq eval '.spec.crVersion = "3.2.0"' - \ | yq eval ' .spec.instances[0].walVolumeClaimSpec.accessModes[0]="ReadWriteOnce" | .spec.instances[0].walVolumeClaimSpec.resources.requests.storage="1Gi" | .spec.instances[0].logVolumeClaimSpec.accessModes[0]="ReadWriteOnce" | .spec.instances[0].logVolumeClaimSpec.resources.requests.storage="1Gi" | .spec.instances[0].tablespaceVolumes[0].name="myts" | .spec.instances[0].tablespaceVolumes[0].dataVolumeClaimSpec.accessModes[0]="ReadWriteOnce" | .spec.instances[0].tablespaceVolumes[0].dataVolumeClaimSpec.resources.requests.storage="1Gi"' - \ | kubectl -n "${NAMESPACE}" apply -f -] logger.go:42: 18:11:59 | additional-volumes/1-create-cluster | + source ../../functions logger.go:42: 18:11:59 | additional-volumes/1-create-cluster | +++ realpath ../../.. logger.go:42: 18:11:59 | additional-volumes/1-create-cluster | ++ ROOT_REPO=/mnt/jenkins/workspace/cloud-pg-operator_PR-1760 logger.go:42: 18:11:59 | additional-volumes/1-create-cluster | ++ CERT_MANAGER_VER=1.20.2 logger.go:42: 18:11:59 | additional-volumes/1-create-cluster | ++ CERT_MANAGER_TEST_LABEL=e2e.percona.com/managed-by=percona-postgresql-operator-tests logger.go:42: 18:11:59 | additional-volumes/1-create-cluster | ++ CHAOS_MESH_VER=2.5.1 logger.go:42: 18:11:59 | additional-volumes/1-create-cluster | ++ BUSYBOX_VER=1.36 logger.go:42: 18:11:59 | additional-volumes/1-create-cluster | ++++ pwd logger.go:42: 18:11:59 | additional-volumes/1-create-cluster | +++ basename /mnt/jenkins/workspace/cloud-pg-operator_PR-1760/e2e-tests/tests/additional-volumes logger.go:42: 18:11:59 | additional-volumes/1-create-cluster | ++ test_name=additional-volumes logger.go:42: 18:11:59 | additional-volumes/1-create-cluster | ++ source /mnt/jenkins/workspace/cloud-pg-operator_PR-1760/e2e-tests/vars.sh logger.go:42: 18:11:59 | additional-volumes/1-create-cluster | +++ export ROOT_REPO=/mnt/jenkins/workspace/cloud-pg-operator_PR-1760 logger.go:42: 18:11:59 | additional-volumes/1-create-cluster | +++ ROOT_REPO=/mnt/jenkins/workspace/cloud-pg-operator_PR-1760 logger.go:42: 18:11:59 | additional-volumes/1-create-cluster | +++ export DEPLOY_DIR=/mnt/jenkins/workspace/cloud-pg-operator_PR-1760/deploy logger.go:42: 18:11:59 | additional-volumes/1-create-cluster | +++ DEPLOY_DIR=/mnt/jenkins/workspace/cloud-pg-operator_PR-1760/deploy logger.go:42: 18:11:59 | additional-volumes/1-create-cluster | +++ export TESTS_DIR=/mnt/jenkins/workspace/cloud-pg-operator_PR-1760/e2e-tests logger.go:42: 18:11:59 | additional-volumes/1-create-cluster | +++ TESTS_DIR=/mnt/jenkins/workspace/cloud-pg-operator_PR-1760/e2e-tests logger.go:42: 18:11:59 | additional-volumes/1-create-cluster | +++ export TESTS_CONFIG_DIR=/mnt/jenkins/workspace/cloud-pg-operator_PR-1760/e2e-tests/conf logger.go:42: 18:11:59 | additional-volumes/1-create-cluster | +++ TESTS_CONFIG_DIR=/mnt/jenkins/workspace/cloud-pg-operator_PR-1760/e2e-tests/conf logger.go:42: 18:11:59 | additional-volumes/1-create-cluster | +++ export TEST_CONFIG_DIR=/mnt/jenkins/workspace/cloud-pg-operator_PR-1760/e2e-tests/tests/additional-volumes/conf logger.go:42: 18:11:59 | additional-volumes/1-create-cluster | +++ TEST_CONFIG_DIR=/mnt/jenkins/workspace/cloud-pg-operator_PR-1760/e2e-tests/tests/additional-volumes/conf logger.go:42: 18:11:59 | additional-volumes/1-create-cluster | +++ export TEMP_DIR=/tmp/kuttl/pg/additional-volumes logger.go:42: 18:11:59 | additional-volumes/1-create-cluster | +++ TEMP_DIR=/tmp/kuttl/pg/additional-volumes logger.go:42: 18:11:59 | additional-volumes/1-create-cluster | ++++ git rev-parse --abbrev-ref HEAD logger.go:42: 18:11:59 | additional-volumes/1-create-cluster | +++ export GIT_BRANCH=PR-1760 logger.go:42: 18:11:59 | additional-volumes/1-create-cluster | +++ GIT_BRANCH=PR-1760 logger.go:42: 18:11:59 | additional-volumes/1-create-cluster | +++ export VERSION=PR-1760-4947a0272 logger.go:42: 18:11:59 | additional-volumes/1-create-cluster | +++ VERSION=PR-1760-4947a0272 logger.go:42: 18:11:59 | additional-volumes/1-create-cluster | +++ export SKIP_TEST_WARNINGS=true logger.go:42: 18:11:59 | additional-volumes/1-create-cluster | +++ SKIP_TEST_WARNINGS=true logger.go:42: 18:11:59 | additional-volumes/1-create-cluster | +++ export K8S_UPGRADE_PLATFORM=gke logger.go:42: 18:11:59 | additional-volumes/1-create-cluster | +++ K8S_UPGRADE_PLATFORM=gke logger.go:42: 18:11:59 | additional-volumes/1-create-cluster | +++ export K8S_UPGRADE_REGION=us-central1-a logger.go:42: 18:11:59 | additional-volumes/1-create-cluster | +++ K8S_UPGRADE_REGION=us-central1-a logger.go:42: 18:11:59 | additional-volumes/1-create-cluster | +++ export K8S_UPGRADE_INITIAL_VERSION= logger.go:42: 18:11:59 | additional-volumes/1-create-cluster | +++ K8S_UPGRADE_INITIAL_VERSION= logger.go:42: 18:11:59 | additional-volumes/1-create-cluster | +++ export K8S_UPGRADE_FINAL_VERSION= logger.go:42: 18:11:59 | additional-volumes/1-create-cluster | +++ K8S_UPGRADE_FINAL_VERSION= logger.go:42: 18:11:59 | additional-volumes/1-create-cluster | +++ [[ -z '' ]] logger.go:42: 18:11:59 | additional-volumes/1-create-cluster | ++++ detect_k8s_platform logger.go:42: 18:11:59 | additional-volumes/1-create-cluster | ++++ local detected_platform logger.go:42: 18:11:59 | additional-volumes/1-create-cluster | ++++ local xtrace_enabled=false logger.go:42: 18:11:59 | additional-volumes/1-create-cluster | ++++ [[ -o xtrace ]] logger.go:42: 18:11:59 | additional-volumes/1-create-cluster | ++++ xtrace_enabled=true logger.go:42: 18:11:59 | additional-volumes/1-create-cluster | ++++ set +o xtrace logger.go:42: 18:12:01 | additional-volumes/1-create-cluster | +++ PLATFORM=gke logger.go:42: 18:12:01 | additional-volumes/1-create-cluster | +++ export PLATFORM logger.go:42: 18:12:01 | additional-volumes/1-create-cluster | +++ export IMAGE_BASE=perconalab/percona-postgresql-operator logger.go:42: 18:12:01 | additional-volumes/1-create-cluster | +++ IMAGE_BASE=perconalab/percona-postgresql-operator logger.go:42: 18:12:01 | additional-volumes/1-create-cluster | +++ export IMAGE=perconalab/percona-postgresql-operator:PR-1760-4947a0272 logger.go:42: 18:12:01 | additional-volumes/1-create-cluster | +++ IMAGE=perconalab/percona-postgresql-operator:PR-1760-4947a0272 logger.go:42: 18:12:01 | additional-volumes/1-create-cluster | +++ [[ ! -n '' ]] logger.go:42: 18:12:01 | additional-volumes/1-create-cluster | +++ [[ -n '' ]] logger.go:42: 18:12:01 | additional-volumes/1-create-cluster | +++ export PG_VER=18 logger.go:42: 18:12:01 | additional-volumes/1-create-cluster | +++ PG_VER=18 logger.go:42: 18:12:01 | additional-volumes/1-create-cluster | +++ export PG_DISTRIBUTION= logger.go:42: 18:12:01 | additional-volumes/1-create-cluster | +++ PG_DISTRIBUTION= logger.go:42: 18:12:01 | additional-volumes/1-create-cluster | +++ [[ '' == community ]] logger.go:42: 18:12:01 | additional-volumes/1-create-cluster | +++ export IMAGE_PGBOUNCER=perconalab/percona-postgresql-operator:main-pgbouncer18 logger.go:42: 18:12:01 | additional-volumes/1-create-cluster | +++ IMAGE_PGBOUNCER=perconalab/percona-postgresql-operator:main-pgbouncer18 logger.go:42: 18:12:01 | additional-volumes/1-create-cluster | +++ export IMAGE_POSTGRESQL=perconalab/percona-postgresql-operator:main-ppg18-postgres logger.go:42: 18:12:01 | additional-volumes/1-create-cluster | +++ IMAGE_POSTGRESQL=perconalab/percona-postgresql-operator:main-ppg18-postgres logger.go:42: 18:12:01 | additional-volumes/1-create-cluster | +++ export IMAGE_BACKREST=perconalab/percona-postgresql-operator:main-pgbackrest18 logger.go:42: 18:12:01 | additional-volumes/1-create-cluster | +++ IMAGE_BACKREST=perconalab/percona-postgresql-operator:main-pgbackrest18 logger.go:42: 18:12:01 | additional-volumes/1-create-cluster | +++ export IMAGE_UPGRADE=perconalab/percona-postgresql-operator:main-upgrade logger.go:42: 18:12:01 | additional-volumes/1-create-cluster | +++ IMAGE_UPGRADE=perconalab/percona-postgresql-operator:main-upgrade logger.go:42: 18:12:01 | additional-volumes/1-create-cluster | +++ export BUCKET=pg-operator-testing logger.go:42: 18:12:01 | additional-volumes/1-create-cluster | +++ BUCKET=pg-operator-testing logger.go:42: 18:12:01 | additional-volumes/1-create-cluster | +++ export PMM_SERVER_VERSION=9.9.9 logger.go:42: 18:12:01 | additional-volumes/1-create-cluster | +++ PMM_SERVER_VERSION=9.9.9 logger.go:42: 18:12:01 | additional-volumes/1-create-cluster | +++ export IMAGE_PMM_CLIENT=perconalab/pmm-client:3-dev-latest logger.go:42: 18:12:01 | additional-volumes/1-create-cluster | +++ IMAGE_PMM_CLIENT=perconalab/pmm-client:3-dev-latest logger.go:42: 18:12:01 | additional-volumes/1-create-cluster | +++ export IMAGE_PMM_SERVER=perconalab/pmm-server:3-dev-latest logger.go:42: 18:12:01 | additional-volumes/1-create-cluster | +++ IMAGE_PMM_SERVER=perconalab/pmm-server:3-dev-latest logger.go:42: 18:12:01 | additional-volumes/1-create-cluster | +++ export IMAGE_LOGCOLLECTOR=perconalab/fluentbit:main-logcollector logger.go:42: 18:12:01 | additional-volumes/1-create-cluster | +++ IMAGE_LOGCOLLECTOR=perconalab/fluentbit:main-logcollector logger.go:42: 18:12:01 | additional-volumes/1-create-cluster | +++ export PGOV1_TAG=1.4.0 logger.go:42: 18:12:01 | additional-volumes/1-create-cluster | +++ PGOV1_TAG=1.4.0 logger.go:42: 18:12:01 | additional-volumes/1-create-cluster | +++ export PGOV1_VER=14 logger.go:42: 18:12:01 | additional-volumes/1-create-cluster | +++ PGOV1_VER=14 logger.go:42: 18:12:01 | additional-volumes/1-create-cluster | +++ export CPGO_VERSION=5.8.7 logger.go:42: 18:12:01 | additional-volumes/1-create-cluster | +++ CPGO_VERSION=5.8.7 logger.go:42: 18:12:01 | additional-volumes/1-create-cluster | +++ export MINIO_VER=5.4.0 logger.go:42: 18:12:01 | additional-volumes/1-create-cluster | +++ MINIO_VER=5.4.0 logger.go:42: 18:12:01 | additional-volumes/1-create-cluster | +++ export VAULT_VER=0.32.0 logger.go:42: 18:12:01 | additional-volumes/1-create-cluster | +++ VAULT_VER=0.32.0 logger.go:42: 18:12:01 | additional-volumes/1-create-cluster | +++ export REGISTRY_NAME=docker.io logger.go:42: 18:12:01 | additional-volumes/1-create-cluster | +++ REGISTRY_NAME=docker.io logger.go:42: 18:12:01 | additional-volumes/1-create-cluster | +++ export REGISTRY_NAME_FULL=docker.io/ logger.go:42: 18:12:01 | additional-volumes/1-create-cluster | +++ REGISTRY_NAME_FULL=docker.io/ logger.go:42: 18:12:01 | additional-volumes/1-create-cluster | ++++ printenv logger.go:42: 18:12:01 | additional-volumes/1-create-cluster | ++++ grep -E '^IMAGE' logger.go:42: 18:12:01 | additional-volumes/1-create-cluster | ++++ awk -F= '{print $1}' logger.go:42: 18:12:01 | additional-volumes/1-create-cluster | +++ for var in $(printenv | grep -E '^IMAGE' | awk -F'=' '{print $1}') logger.go:42: 18:12:01 | additional-volumes/1-create-cluster | ++++ eval 'echo $IMAGE_BACKREST' logger.go:42: 18:12:01 | additional-volumes/1-create-cluster | +++++ echo perconalab/percona-postgresql-operator:main-pgbackrest18 logger.go:42: 18:12:01 | additional-volumes/1-create-cluster | +++ var_value=perconalab/percona-postgresql-operator:main-pgbackrest18 logger.go:42: 18:12:01 | additional-volumes/1-create-cluster | +++ [[ perconalab/percona-postgresql-operator:main-pgbackrest18 == docker.io/* ]] logger.go:42: 18:12:01 | additional-volumes/1-create-cluster | +++ [[ perconalab/percona-postgresql-operator:main-pgbackrest18 == percona/* ]] logger.go:42: 18:12:01 | additional-volumes/1-create-cluster | +++ [[ perconalab/percona-postgresql-operator:main-pgbackrest18 == perconalab/* ]] logger.go:42: 18:12:01 | additional-volumes/1-create-cluster | +++ new_value=docker.io/perconalab/percona-postgresql-operator:main-pgbackrest18 logger.go:42: 18:12:01 | additional-volumes/1-create-cluster | +++ export IMAGE_BACKREST=docker.io/perconalab/percona-postgresql-operator:main-pgbackrest18 logger.go:42: 18:12:01 | additional-volumes/1-create-cluster | +++ IMAGE_BACKREST=docker.io/perconalab/percona-postgresql-operator:main-pgbackrest18 logger.go:42: 18:12:01 | additional-volumes/1-create-cluster | +++ echo IMAGE_BACKREST=docker.io/perconalab/percona-postgresql-operator:main-pgbackrest18 logger.go:42: 18:12:01 | additional-volumes/1-create-cluster | IMAGE_BACKREST=docker.io/perconalab/percona-postgresql-operator:main-pgbackrest18 logger.go:42: 18:12:01 | additional-volumes/1-create-cluster | +++ echo perconalab/percona-postgresql-operator:PR-1760-4947a0272 logger.go:42: 18:12:01 | additional-volumes/1-create-cluster | perconalab/percona-postgresql-operator:PR-1760-4947a0272 logger.go:42: 18:12:01 | additional-volumes/1-create-cluster | +++ for var in $(printenv | grep -E '^IMAGE' | awk -F'=' '{print $1}') logger.go:42: 18:12:01 | additional-volumes/1-create-cluster | ++++ eval 'echo $IMAGE' logger.go:42: 18:12:01 | additional-volumes/1-create-cluster | +++++ echo perconalab/percona-postgresql-operator:PR-1760-4947a0272 logger.go:42: 18:12:01 | additional-volumes/1-create-cluster | +++ var_value=perconalab/percona-postgresql-operator:PR-1760-4947a0272 logger.go:42: 18:12:01 | additional-volumes/1-create-cluster | +++ [[ perconalab/percona-postgresql-operator:PR-1760-4947a0272 == docker.io/* ]] logger.go:42: 18:12:01 | additional-volumes/1-create-cluster | +++ [[ perconalab/percona-postgresql-operator:PR-1760-4947a0272 == percona/* ]] logger.go:42: 18:12:01 | additional-volumes/1-create-cluster | +++ [[ perconalab/percona-postgresql-operator:PR-1760-4947a0272 == perconalab/* ]] logger.go:42: 18:12:01 | additional-volumes/1-create-cluster | +++ new_value=docker.io/perconalab/percona-postgresql-operator:PR-1760-4947a0272 logger.go:42: 18:12:01 | additional-volumes/1-create-cluster | +++ export IMAGE=docker.io/perconalab/percona-postgresql-operator:PR-1760-4947a0272 logger.go:42: 18:12:01 | additional-volumes/1-create-cluster | +++ IMAGE=docker.io/perconalab/percona-postgresql-operator:PR-1760-4947a0272 logger.go:42: 18:12:01 | additional-volumes/1-create-cluster | +++ echo IMAGE=docker.io/perconalab/percona-postgresql-operator:PR-1760-4947a0272 logger.go:42: 18:12:01 | additional-volumes/1-create-cluster | IMAGE=docker.io/perconalab/percona-postgresql-operator:PR-1760-4947a0272 logger.go:42: 18:12:01 | additional-volumes/1-create-cluster | +++ echo docker.io/perconalab/percona-postgresql-operator:PR-1760-4947a0272 logger.go:42: 18:12:01 | additional-volumes/1-create-cluster | docker.io/perconalab/percona-postgresql-operator:PR-1760-4947a0272 logger.go:42: 18:12:01 | additional-volumes/1-create-cluster | +++ for var in $(printenv | grep -E '^IMAGE' | awk -F'=' '{print $1}') logger.go:42: 18:12:01 | additional-volumes/1-create-cluster | ++++ eval 'echo $IMAGE_UPGRADE' logger.go:42: 18:12:01 | additional-volumes/1-create-cluster | +++++ echo perconalab/percona-postgresql-operator:main-upgrade logger.go:42: 18:12:01 | additional-volumes/1-create-cluster | +++ var_value=perconalab/percona-postgresql-operator:main-upgrade logger.go:42: 18:12:01 | additional-volumes/1-create-cluster | +++ [[ perconalab/percona-postgresql-operator:main-upgrade == docker.io/* ]] logger.go:42: 18:12:01 | additional-volumes/1-create-cluster | +++ [[ perconalab/percona-postgresql-operator:main-upgrade == percona/* ]] logger.go:42: 18:12:01 | additional-volumes/1-create-cluster | +++ [[ perconalab/percona-postgresql-operator:main-upgrade == perconalab/* ]] logger.go:42: 18:12:01 | additional-volumes/1-create-cluster | +++ new_value=docker.io/perconalab/percona-postgresql-operator:main-upgrade logger.go:42: 18:12:01 | additional-volumes/1-create-cluster | +++ export IMAGE_UPGRADE=docker.io/perconalab/percona-postgresql-operator:main-upgrade logger.go:42: 18:12:01 | additional-volumes/1-create-cluster | +++ IMAGE_UPGRADE=docker.io/perconalab/percona-postgresql-operator:main-upgrade logger.go:42: 18:12:01 | additional-volumes/1-create-cluster | +++ echo IMAGE_UPGRADE=docker.io/perconalab/percona-postgresql-operator:main-upgrade logger.go:42: 18:12:01 | additional-volumes/1-create-cluster | IMAGE_UPGRADE=docker.io/perconalab/percona-postgresql-operator:main-upgrade logger.go:42: 18:12:01 | additional-volumes/1-create-cluster | +++ echo docker.io/perconalab/percona-postgresql-operator:PR-1760-4947a0272 logger.go:42: 18:12:01 | additional-volumes/1-create-cluster | docker.io/perconalab/percona-postgresql-operator:PR-1760-4947a0272 logger.go:42: 18:12:01 | additional-volumes/1-create-cluster | +++ for var in $(printenv | grep -E '^IMAGE' | awk -F'=' '{print $1}') logger.go:42: 18:12:01 | additional-volumes/1-create-cluster | ++++ eval 'echo $IMAGE_LOGCOLLECTOR' logger.go:42: 18:12:01 | additional-volumes/1-create-cluster | +++++ echo perconalab/fluentbit:main-logcollector logger.go:42: 18:12:01 | additional-volumes/1-create-cluster | +++ var_value=perconalab/fluentbit:main-logcollector logger.go:42: 18:12:01 | additional-volumes/1-create-cluster | +++ [[ perconalab/fluentbit:main-logcollector == docker.io/* ]] logger.go:42: 18:12:01 | additional-volumes/1-create-cluster | +++ [[ perconalab/fluentbit:main-logcollector == percona/* ]] logger.go:42: 18:12:01 | additional-volumes/1-create-cluster | +++ [[ perconalab/fluentbit:main-logcollector == perconalab/* ]] logger.go:42: 18:12:01 | additional-volumes/1-create-cluster | +++ new_value=docker.io/perconalab/fluentbit:main-logcollector logger.go:42: 18:12:01 | additional-volumes/1-create-cluster | +++ export IMAGE_LOGCOLLECTOR=docker.io/perconalab/fluentbit:main-logcollector logger.go:42: 18:12:01 | additional-volumes/1-create-cluster | +++ IMAGE_LOGCOLLECTOR=docker.io/perconalab/fluentbit:main-logcollector logger.go:42: 18:12:01 | additional-volumes/1-create-cluster | +++ echo IMAGE_LOGCOLLECTOR=docker.io/perconalab/fluentbit:main-logcollector logger.go:42: 18:12:01 | additional-volumes/1-create-cluster | IMAGE_LOGCOLLECTOR=docker.io/perconalab/fluentbit:main-logcollector logger.go:42: 18:12:01 | additional-volumes/1-create-cluster | +++ echo docker.io/perconalab/percona-postgresql-operator:PR-1760-4947a0272 logger.go:42: 18:12:01 | additional-volumes/1-create-cluster | docker.io/perconalab/percona-postgresql-operator:PR-1760-4947a0272 logger.go:42: 18:12:01 | additional-volumes/1-create-cluster | +++ for var in $(printenv | grep -E '^IMAGE' | awk -F'=' '{print $1}') logger.go:42: 18:12:01 | additional-volumes/1-create-cluster | ++++ eval 'echo $IMAGE_BASE' logger.go:42: 18:12:01 | additional-volumes/1-create-cluster | +++++ echo perconalab/percona-postgresql-operator logger.go:42: 18:12:01 | additional-volumes/1-create-cluster | +++ var_value=perconalab/percona-postgresql-operator logger.go:42: 18:12:01 | additional-volumes/1-create-cluster | +++ [[ perconalab/percona-postgresql-operator == docker.io/* ]] logger.go:42: 18:12:01 | additional-volumes/1-create-cluster | +++ [[ perconalab/percona-postgresql-operator == percona/* ]] logger.go:42: 18:12:01 | additional-volumes/1-create-cluster | +++ [[ perconalab/percona-postgresql-operator == perconalab/* ]] logger.go:42: 18:12:01 | additional-volumes/1-create-cluster | +++ new_value=docker.io/perconalab/percona-postgresql-operator logger.go:42: 18:12:01 | additional-volumes/1-create-cluster | +++ export IMAGE_BASE=docker.io/perconalab/percona-postgresql-operator logger.go:42: 18:12:01 | additional-volumes/1-create-cluster | +++ IMAGE_BASE=docker.io/perconalab/percona-postgresql-operator logger.go:42: 18:12:01 | additional-volumes/1-create-cluster | +++ echo IMAGE_BASE=docker.io/perconalab/percona-postgresql-operator logger.go:42: 18:12:01 | additional-volumes/1-create-cluster | IMAGE_BASE=docker.io/perconalab/percona-postgresql-operator logger.go:42: 18:12:01 | additional-volumes/1-create-cluster | +++ echo docker.io/perconalab/percona-postgresql-operator:PR-1760-4947a0272 logger.go:42: 18:12:01 | additional-volumes/1-create-cluster | docker.io/perconalab/percona-postgresql-operator:PR-1760-4947a0272 logger.go:42: 18:12:01 | additional-volumes/1-create-cluster | +++ for var in $(printenv | grep -E '^IMAGE' | awk -F'=' '{print $1}') logger.go:42: 18:12:01 | additional-volumes/1-create-cluster | ++++ eval 'echo $IMAGE_PGBOUNCER' logger.go:42: 18:12:01 | additional-volumes/1-create-cluster | +++++ echo perconalab/percona-postgresql-operator:main-pgbouncer18 logger.go:42: 18:12:01 | additional-volumes/1-create-cluster | +++ var_value=perconalab/percona-postgresql-operator:main-pgbouncer18 logger.go:42: 18:12:01 | additional-volumes/1-create-cluster | +++ [[ perconalab/percona-postgresql-operator:main-pgbouncer18 == docker.io/* ]] logger.go:42: 18:12:01 | additional-volumes/1-create-cluster | +++ [[ perconalab/percona-postgresql-operator:main-pgbouncer18 == percona/* ]] logger.go:42: 18:12:01 | additional-volumes/1-create-cluster | +++ [[ perconalab/percona-postgresql-operator:main-pgbouncer18 == perconalab/* ]] logger.go:42: 18:12:01 | additional-volumes/1-create-cluster | +++ new_value=docker.io/perconalab/percona-postgresql-operator:main-pgbouncer18 logger.go:42: 18:12:01 | additional-volumes/1-create-cluster | +++ export IMAGE_PGBOUNCER=docker.io/perconalab/percona-postgresql-operator:main-pgbouncer18 logger.go:42: 18:12:01 | additional-volumes/1-create-cluster | +++ IMAGE_PGBOUNCER=docker.io/perconalab/percona-postgresql-operator:main-pgbouncer18 logger.go:42: 18:12:01 | additional-volumes/1-create-cluster | +++ echo IMAGE_PGBOUNCER=docker.io/perconalab/percona-postgresql-operator:main-pgbouncer18 logger.go:42: 18:12:01 | additional-volumes/1-create-cluster | IMAGE_PGBOUNCER=docker.io/perconalab/percona-postgresql-operator:main-pgbouncer18 logger.go:42: 18:12:01 | additional-volumes/1-create-cluster | +++ echo docker.io/perconalab/percona-postgresql-operator:PR-1760-4947a0272 logger.go:42: 18:12:01 | additional-volumes/1-create-cluster | docker.io/perconalab/percona-postgresql-operator:PR-1760-4947a0272 logger.go:42: 18:12:01 | additional-volumes/1-create-cluster | +++ for var in $(printenv | grep -E '^IMAGE' | awk -F'=' '{print $1}') logger.go:42: 18:12:01 | additional-volumes/1-create-cluster | ++++ eval 'echo $IMAGE_POSTGRESQL' logger.go:42: 18:12:01 | additional-volumes/1-create-cluster | +++++ echo perconalab/percona-postgresql-operator:main-ppg18-postgres logger.go:42: 18:12:01 | additional-volumes/1-create-cluster | +++ var_value=perconalab/percona-postgresql-operator:main-ppg18-postgres logger.go:42: 18:12:01 | additional-volumes/1-create-cluster | +++ [[ perconalab/percona-postgresql-operator:main-ppg18-postgres == docker.io/* ]] logger.go:42: 18:12:01 | additional-volumes/1-create-cluster | +++ [[ perconalab/percona-postgresql-operator:main-ppg18-postgres == percona/* ]] logger.go:42: 18:12:01 | additional-volumes/1-create-cluster | +++ [[ perconalab/percona-postgresql-operator:main-ppg18-postgres == perconalab/* ]] logger.go:42: 18:12:01 | additional-volumes/1-create-cluster | +++ new_value=docker.io/perconalab/percona-postgresql-operator:main-ppg18-postgres logger.go:42: 18:12:01 | additional-volumes/1-create-cluster | +++ export IMAGE_POSTGRESQL=docker.io/perconalab/percona-postgresql-operator:main-ppg18-postgres logger.go:42: 18:12:01 | additional-volumes/1-create-cluster | +++ IMAGE_POSTGRESQL=docker.io/perconalab/percona-postgresql-operator:main-ppg18-postgres logger.go:42: 18:12:01 | additional-volumes/1-create-cluster | +++ echo IMAGE_POSTGRESQL=docker.io/perconalab/percona-postgresql-operator:main-ppg18-postgres logger.go:42: 18:12:01 | additional-volumes/1-create-cluster | IMAGE_POSTGRESQL=docker.io/perconalab/percona-postgresql-operator:main-ppg18-postgres logger.go:42: 18:12:01 | additional-volumes/1-create-cluster | +++ echo docker.io/perconalab/percona-postgresql-operator:PR-1760-4947a0272 logger.go:42: 18:12:01 | additional-volumes/1-create-cluster | docker.io/perconalab/percona-postgresql-operator:PR-1760-4947a0272 logger.go:42: 18:12:01 | additional-volumes/1-create-cluster | +++ for var in $(printenv | grep -E '^IMAGE' | awk -F'=' '{print $1}') logger.go:42: 18:12:01 | additional-volumes/1-create-cluster | ++++ eval 'echo $IMAGE_PMM_SERVER' logger.go:42: 18:12:01 | additional-volumes/1-create-cluster | +++++ echo perconalab/pmm-server:3-dev-latest logger.go:42: 18:12:01 | additional-volumes/1-create-cluster | +++ var_value=perconalab/pmm-server:3-dev-latest logger.go:42: 18:12:01 | additional-volumes/1-create-cluster | +++ [[ perconalab/pmm-server:3-dev-latest == docker.io/* ]] logger.go:42: 18:12:01 | additional-volumes/1-create-cluster | +++ [[ perconalab/pmm-server:3-dev-latest == percona/* ]] logger.go:42: 18:12:01 | additional-volumes/1-create-cluster | +++ [[ perconalab/pmm-server:3-dev-latest == perconalab/* ]] logger.go:42: 18:12:01 | additional-volumes/1-create-cluster | +++ new_value=docker.io/perconalab/pmm-server:3-dev-latest logger.go:42: 18:12:01 | additional-volumes/1-create-cluster | +++ export IMAGE_PMM_SERVER=docker.io/perconalab/pmm-server:3-dev-latest logger.go:42: 18:12:01 | additional-volumes/1-create-cluster | +++ IMAGE_PMM_SERVER=docker.io/perconalab/pmm-server:3-dev-latest logger.go:42: 18:12:01 | additional-volumes/1-create-cluster | +++ echo IMAGE_PMM_SERVER=docker.io/perconalab/pmm-server:3-dev-latest logger.go:42: 18:12:01 | additional-volumes/1-create-cluster | IMAGE_PMM_SERVER=docker.io/perconalab/pmm-server:3-dev-latest logger.go:42: 18:12:01 | additional-volumes/1-create-cluster | +++ echo docker.io/perconalab/percona-postgresql-operator:PR-1760-4947a0272 logger.go:42: 18:12:01 | additional-volumes/1-create-cluster | docker.io/perconalab/percona-postgresql-operator:PR-1760-4947a0272 logger.go:42: 18:12:01 | additional-volumes/1-create-cluster | +++ for var in $(printenv | grep -E '^IMAGE' | awk -F'=' '{print $1}') logger.go:42: 18:12:01 | additional-volumes/1-create-cluster | ++++ eval 'echo $IMAGE_PMM_CLIENT' logger.go:42: 18:12:01 | additional-volumes/1-create-cluster | +++++ echo perconalab/pmm-client:3-dev-latest logger.go:42: 18:12:01 | additional-volumes/1-create-cluster | +++ var_value=perconalab/pmm-client:3-dev-latest logger.go:42: 18:12:01 | additional-volumes/1-create-cluster | +++ [[ perconalab/pmm-client:3-dev-latest == docker.io/* ]] logger.go:42: 18:12:01 | additional-volumes/1-create-cluster | +++ [[ perconalab/pmm-client:3-dev-latest == percona/* ]] logger.go:42: 18:12:01 | additional-volumes/1-create-cluster | +++ [[ perconalab/pmm-client:3-dev-latest == perconalab/* ]] logger.go:42: 18:12:01 | additional-volumes/1-create-cluster | +++ new_value=docker.io/perconalab/pmm-client:3-dev-latest logger.go:42: 18:12:01 | additional-volumes/1-create-cluster | +++ export IMAGE_PMM_CLIENT=docker.io/perconalab/pmm-client:3-dev-latest logger.go:42: 18:12:01 | additional-volumes/1-create-cluster | +++ IMAGE_PMM_CLIENT=docker.io/perconalab/pmm-client:3-dev-latest logger.go:42: 18:12:01 | additional-volumes/1-create-cluster | +++ echo IMAGE_PMM_CLIENT=docker.io/perconalab/pmm-client:3-dev-latest logger.go:42: 18:12:01 | additional-volumes/1-create-cluster | IMAGE_PMM_CLIENT=docker.io/perconalab/pmm-client:3-dev-latest logger.go:42: 18:12:01 | additional-volumes/1-create-cluster | +++ echo docker.io/perconalab/percona-postgresql-operator:PR-1760-4947a0272 logger.go:42: 18:12:01 | additional-volumes/1-create-cluster | docker.io/perconalab/percona-postgresql-operator:PR-1760-4947a0272 logger.go:42: 18:12:01 | additional-volumes/1-create-cluster | ++++ which gdate logger.go:42: 18:12:01 | additional-volumes/1-create-cluster | which: no gdate in (/mnt/jenkins/workspace/cloud-pg-operator_PR-1760/bin/:/root/.krew/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/var/lib/snapd/snap/bin) logger.go:42: 18:12:01 | additional-volumes/1-create-cluster | ++++ which date logger.go:42: 18:12:01 | additional-volumes/1-create-cluster | +++ date=/usr/sbin/date logger.go:42: 18:12:01 | additional-volumes/1-create-cluster | ++++ which gsed logger.go:42: 18:12:01 | additional-volumes/1-create-cluster | which: no gsed in (/mnt/jenkins/workspace/cloud-pg-operator_PR-1760/bin/:/root/.krew/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/var/lib/snapd/snap/bin) logger.go:42: 18:12:01 | additional-volumes/1-create-cluster | ++++ which sed logger.go:42: 18:12:01 | additional-volumes/1-create-cluster | +++ sed=/usr/sbin/sed logger.go:42: 18:12:01 | additional-volumes/1-create-cluster | + get_cr logger.go:42: 18:12:01 | additional-volumes/1-create-cluster | + yq eval '.spec.crVersion = "3.2.0"' - logger.go:42: 18:12:01 | additional-volumes/1-create-cluster | + yq eval $'\n .spec.instances[0].walVolumeClaimSpec.accessModes[0]="ReadWriteOnce" |\n .spec.instances[0].walVolumeClaimSpec.resources.requests.storage="1Gi" |\n .spec.instances[0].logVolumeClaimSpec.accessModes[0]="ReadWriteOnce" |\n .spec.instances[0].logVolumeClaimSpec.resources.requests.storage="1Gi" |\n .spec.instances[0].tablespaceVolumes[0].name="myts" |\n .spec.instances[0].tablespaceVolumes[0].dataVolumeClaimSpec.accessModes[0]="ReadWriteOnce" |\n .spec.instances[0].tablespaceVolumes[0].dataVolumeClaimSpec.resources.requests.storage="1Gi"' - logger.go:42: 18:12:01 | additional-volumes/1-create-cluster | + kubectl -n kuttl-test-intimate-garfish apply -f - logger.go:42: 18:12:01 | additional-volumes/1-create-cluster | + local cr_name=additional-volumes logger.go:42: 18:12:01 | additional-volumes/1-create-cluster | + local repo_path= logger.go:42: 18:12:01 | additional-volumes/1-create-cluster | + local source_path= logger.go:42: 18:12:01 | additional-volumes/1-create-cluster | + local platform=gke logger.go:42: 18:12:01 | additional-volumes/1-create-cluster | + local cr_file=/mnt/jenkins/workspace/cloud-pg-operator_PR-1760/e2e-tests/tests/additional-volumes/conf/additional-volumes.yaml logger.go:42: 18:12:01 | additional-volumes/1-create-cluster | + local platform_cr_file=/mnt/jenkins/workspace/cloud-pg-operator_PR-1760/e2e-tests/tests/additional-volumes/conf/additional-volumes-gke.yaml logger.go:42: 18:12:01 | additional-volumes/1-create-cluster | + local spaces_cr_file=/mnt/jenkins/workspace/cloud-pg-operator_PR-1760/e2e-tests/tests/additional-volumes/conf/additional-volumes-spaces.yaml logger.go:42: 18:12:01 | additional-volumes/1-create-cluster | + [[ -f /mnt/jenkins/workspace/cloud-pg-operator_PR-1760/e2e-tests/tests/additional-volumes/conf/additional-volumes-gke.yaml ]] logger.go:42: 18:12:01 | additional-volumes/1-create-cluster | + [[ gke == doks ]] logger.go:42: 18:12:01 | additional-volumes/1-create-cluster | + crs=('/mnt/jenkins/workspace/cloud-pg-operator_PR-1760/deploy/cr.yaml') logger.go:42: 18:12:01 | additional-volumes/1-create-cluster | + local crs logger.go:42: 18:12:01 | additional-volumes/1-create-cluster | + [[ -f /mnt/jenkins/workspace/cloud-pg-operator_PR-1760/e2e-tests/tests/additional-volumes/conf/additional-volumes.yaml ]] logger.go:42: 18:12:01 | additional-volumes/1-create-cluster | + yq eval-all $'\n\t\tselect(fileIndex == 0) * (select(fileIndex == 1) // {}) |\n\t\t.metadata.name = "additional-volumes" |\n\t\t.metadata.labels = {"e2e":"additional-volumes"} |\n\t\t.spec.postgresVersion = 18 |\n\t\t.spec.users += [{"name":"postgres","password":{"type":"AlphaNumeric"}}] |\n\t\t.spec.users += [{"name":"additional-volumes","password":{"type":"AlphaNumeric"}}] |\n\t\t.spec.image = "docker.io/perconalab/percona-postgresql-operator:main-ppg18-postgres" |\n\t\t.spec.initContainer.image = "docker.io/perconalab/percona-postgresql-operator:PR-1760-4947a0272" |\n\t\t.spec.backups.pgbackrest.image = "docker.io/perconalab/percona-postgresql-operator:main-pgbackrest18" |\n\t\t.spec.proxy.pgBouncer.image = "docker.io/perconalab/percona-postgresql-operator:main-pgbouncer18" |\n\t\t.spec.logcollector.image = "docker.io/perconalab/fluentbit:main-logcollector" |\n\t\t.spec.pmm.image = "docker.io/perconalab/pmm-client:3-dev-latest" |\n\t\t.spec.pmm.secret = "additional-volumes-pmm-secret" |\n\t\t.spec.pmm.customClusterName = "additional-volumes-pmm-custom-name" |\n\t\t.spec.pmm.postgresParams = "--environment=dev-postgres"\n\t' /mnt/jenkins/workspace/cloud-pg-operator_PR-1760/deploy/cr.yaml logger.go:42: 18:12:01 | additional-volumes/1-create-cluster | + /usr/sbin/sed -i 's|||g' /tmp/kuttl/pg/additional-volumes/cr.yaml logger.go:42: 18:12:01 | additional-volumes/1-create-cluster | + /usr/sbin/sed -i 's|||g' /tmp/kuttl/pg/additional-volumes/cr.yaml logger.go:42: 18:12:01 | additional-volumes/1-create-cluster | + /usr/sbin/sed -i 's||pg-operator-testing|g' /tmp/kuttl/pg/additional-volumes/cr.yaml logger.go:42: 18:12:01 | additional-volumes/1-create-cluster | + /usr/sbin/sed -i 's||docker.io/perconalab/percona-postgresql-operator:PR-1760-4947a0272|g' /tmp/kuttl/pg/additional-volumes/cr.yaml logger.go:42: 18:12:01 | additional-volumes/1-create-cluster | + [[ gke == openshift ]] logger.go:42: 18:12:01 | additional-volumes/1-create-cluster | + cat /tmp/kuttl/pg/additional-volumes/cr.yaml logger.go:42: 18:12:03 | additional-volumes/1-create-cluster | perconapgcluster.pgv2.percona.com/additional-volumes created logger.go:42: 18:13:42 | additional-volumes/1-create-cluster | test step completed 1-create-cluster logger.go:42: 18:13:42 | additional-volumes/2-verify-volumes | starting test step 2-verify-volumes logger.go:42: 18:13:42 | additional-volumes/2-verify-volumes | running command: [sh -c set -o errexit set -o xtrace source ../../functions for role in pgwal pglogs; do pvcs=$(kubectl -n "${NAMESPACE}" get pvc \ --selector postgres-operator.crunchydata.com/role=${role} \ -o custom-columns='NAME:.metadata.name' --no-headers) if [[ -z ${pvcs} ]]; then echo "no ${role} PVC was created" exit 1 fi for pvc in ${pvcs}; do kubectl -n "${NAMESPACE}" wait --for=jsonpath='{.status.phase}'=Bound \ "pvc/${pvc}" --timeout=120s done done sts=$(kubectl -n "${NAMESPACE}" get sts \ --selector postgres-operator.crunchydata.com/instance-set=instance1 -o json) check_sts_volume() { local volume=$1 local path=$2 printf '%s\n' "${sts}" | jq -e --arg v "${volume}" '.items[0].spec.template.spec.volumes[] | select(.name == $v) | select(.persistentVolumeClaim != null)' >/dev/null printf '%s\n' "${sts}" | jq -e --arg p "${path}" '.items[0].spec.template.spec.containers[] | select(.name == "database") | .volumeMounts[] | select(.mountPath == $p)' >/dev/null printf '%s\n' "${sts}" | jq -e --arg p "${path}" '.items[0].spec.template.spec.initContainers[] | select(.name == "postgres-startup") | .volumeMounts[] | select(.mountPath == $p)' >/dev/null } check_sts_volume postgres-wal /pgwal check_sts_volume postgres-logs /pglogs # The startup command relocates the WAL directory, the pgBackRest spool path and # the log directories onto their volumes; all of them are symlinks from the data # volume, so nothing else has to be reconfigured to use them. i=1 for pod in $(get_instance_set_pods instance1); do # /proc/mounts guards against a false positive where the mount silently # failed and reads/writes land on the container's own filesystem instead. kubectl -n "${NAMESPACE}" exec "${pod}" -c database -- \ grep -q ' /pgwal ' /proc/mounts kubectl -n "${NAMESPACE}" exec "${pod}" -c database -- \ grep -q ' /pglogs ' /proc/mounts check_additional_volume_symlinks "${pod}" "on start" kubectl -n "${NAMESPACE}" exec "${pod}" -c database -- \ test -d /pglogs/postgres -a -d /pglogs/pgbackrest/log path=$(kubectl -n "${NAMESPACE}" exec "${pod}" -c database -- ls /tablespaces) kubectl create configmap -n "${NAMESPACE}" 02-ts-path-${i} --from-literal=path="/tablespaces/${path}" i=$((i + 1)) done] logger.go:42: 18:13:42 | additional-volumes/2-verify-volumes | + source ../../functions logger.go:42: 18:13:42 | additional-volumes/2-verify-volumes | +++ realpath ../../.. logger.go:42: 18:13:42 | additional-volumes/2-verify-volumes | ++ ROOT_REPO=/mnt/jenkins/workspace/cloud-pg-operator_PR-1760 logger.go:42: 18:13:42 | additional-volumes/2-verify-volumes | ++ CERT_MANAGER_VER=1.20.2 logger.go:42: 18:13:42 | additional-volumes/2-verify-volumes | ++ CERT_MANAGER_TEST_LABEL=e2e.percona.com/managed-by=percona-postgresql-operator-tests logger.go:42: 18:13:42 | additional-volumes/2-verify-volumes | ++ CHAOS_MESH_VER=2.5.1 logger.go:42: 18:13:42 | additional-volumes/2-verify-volumes | ++ BUSYBOX_VER=1.36 logger.go:42: 18:13:42 | additional-volumes/2-verify-volumes | ++++ pwd logger.go:42: 18:13:42 | additional-volumes/2-verify-volumes | +++ basename /mnt/jenkins/workspace/cloud-pg-operator_PR-1760/e2e-tests/tests/additional-volumes logger.go:42: 18:13:42 | additional-volumes/2-verify-volumes | ++ test_name=additional-volumes logger.go:42: 18:13:42 | additional-volumes/2-verify-volumes | ++ source /mnt/jenkins/workspace/cloud-pg-operator_PR-1760/e2e-tests/vars.sh logger.go:42: 18:13:42 | additional-volumes/2-verify-volumes | +++ export ROOT_REPO=/mnt/jenkins/workspace/cloud-pg-operator_PR-1760 logger.go:42: 18:13:42 | additional-volumes/2-verify-volumes | +++ ROOT_REPO=/mnt/jenkins/workspace/cloud-pg-operator_PR-1760 logger.go:42: 18:13:42 | additional-volumes/2-verify-volumes | +++ export DEPLOY_DIR=/mnt/jenkins/workspace/cloud-pg-operator_PR-1760/deploy logger.go:42: 18:13:42 | additional-volumes/2-verify-volumes | +++ DEPLOY_DIR=/mnt/jenkins/workspace/cloud-pg-operator_PR-1760/deploy logger.go:42: 18:13:42 | additional-volumes/2-verify-volumes | +++ export TESTS_DIR=/mnt/jenkins/workspace/cloud-pg-operator_PR-1760/e2e-tests logger.go:42: 18:13:42 | additional-volumes/2-verify-volumes | +++ TESTS_DIR=/mnt/jenkins/workspace/cloud-pg-operator_PR-1760/e2e-tests logger.go:42: 18:13:42 | additional-volumes/2-verify-volumes | +++ export TESTS_CONFIG_DIR=/mnt/jenkins/workspace/cloud-pg-operator_PR-1760/e2e-tests/conf logger.go:42: 18:13:42 | additional-volumes/2-verify-volumes | +++ TESTS_CONFIG_DIR=/mnt/jenkins/workspace/cloud-pg-operator_PR-1760/e2e-tests/conf logger.go:42: 18:13:42 | additional-volumes/2-verify-volumes | +++ export TEST_CONFIG_DIR=/mnt/jenkins/workspace/cloud-pg-operator_PR-1760/e2e-tests/tests/additional-volumes/conf logger.go:42: 18:13:42 | additional-volumes/2-verify-volumes | +++ TEST_CONFIG_DIR=/mnt/jenkins/workspace/cloud-pg-operator_PR-1760/e2e-tests/tests/additional-volumes/conf logger.go:42: 18:13:42 | additional-volumes/2-verify-volumes | +++ export TEMP_DIR=/tmp/kuttl/pg/additional-volumes logger.go:42: 18:13:42 | additional-volumes/2-verify-volumes | +++ TEMP_DIR=/tmp/kuttl/pg/additional-volumes logger.go:42: 18:13:42 | additional-volumes/2-verify-volumes | ++++ git rev-parse --abbrev-ref HEAD logger.go:42: 18:13:42 | additional-volumes/2-verify-volumes | +++ export GIT_BRANCH=PR-1760 logger.go:42: 18:13:42 | additional-volumes/2-verify-volumes | +++ GIT_BRANCH=PR-1760 logger.go:42: 18:13:42 | additional-volumes/2-verify-volumes | +++ export VERSION=PR-1760-4947a0272 logger.go:42: 18:13:42 | additional-volumes/2-verify-volumes | +++ VERSION=PR-1760-4947a0272 logger.go:42: 18:13:42 | additional-volumes/2-verify-volumes | +++ export SKIP_TEST_WARNINGS=true logger.go:42: 18:13:42 | additional-volumes/2-verify-volumes | +++ SKIP_TEST_WARNINGS=true logger.go:42: 18:13:42 | additional-volumes/2-verify-volumes | +++ export K8S_UPGRADE_PLATFORM=gke logger.go:42: 18:13:42 | additional-volumes/2-verify-volumes | +++ K8S_UPGRADE_PLATFORM=gke logger.go:42: 18:13:42 | additional-volumes/2-verify-volumes | +++ export K8S_UPGRADE_REGION=us-central1-a logger.go:42: 18:13:42 | additional-volumes/2-verify-volumes | +++ K8S_UPGRADE_REGION=us-central1-a logger.go:42: 18:13:42 | additional-volumes/2-verify-volumes | +++ export K8S_UPGRADE_INITIAL_VERSION= logger.go:42: 18:13:42 | additional-volumes/2-verify-volumes | +++ K8S_UPGRADE_INITIAL_VERSION= logger.go:42: 18:13:42 | additional-volumes/2-verify-volumes | +++ export K8S_UPGRADE_FINAL_VERSION= logger.go:42: 18:13:42 | additional-volumes/2-verify-volumes | +++ K8S_UPGRADE_FINAL_VERSION= logger.go:42: 18:13:42 | additional-volumes/2-verify-volumes | +++ [[ -z '' ]] logger.go:42: 18:13:42 | additional-volumes/2-verify-volumes | ++++ detect_k8s_platform logger.go:42: 18:13:42 | additional-volumes/2-verify-volumes | ++++ local detected_platform logger.go:42: 18:13:42 | additional-volumes/2-verify-volumes | ++++ local xtrace_enabled=false logger.go:42: 18:13:42 | additional-volumes/2-verify-volumes | ++++ [[ -o xtrace ]] logger.go:42: 18:13:42 | additional-volumes/2-verify-volumes | ++++ xtrace_enabled=true logger.go:42: 18:13:42 | additional-volumes/2-verify-volumes | ++++ set +o xtrace logger.go:42: 18:13:44 | additional-volumes/2-verify-volumes | +++ PLATFORM=gke logger.go:42: 18:13:44 | additional-volumes/2-verify-volumes | +++ export PLATFORM logger.go:42: 18:13:44 | additional-volumes/2-verify-volumes | +++ export IMAGE_BASE=perconalab/percona-postgresql-operator logger.go:42: 18:13:44 | additional-volumes/2-verify-volumes | +++ IMAGE_BASE=perconalab/percona-postgresql-operator logger.go:42: 18:13:44 | additional-volumes/2-verify-volumes | +++ export IMAGE=perconalab/percona-postgresql-operator:PR-1760-4947a0272 logger.go:42: 18:13:44 | additional-volumes/2-verify-volumes | +++ IMAGE=perconalab/percona-postgresql-operator:PR-1760-4947a0272 logger.go:42: 18:13:44 | additional-volumes/2-verify-volumes | +++ [[ ! -n '' ]] logger.go:42: 18:13:44 | additional-volumes/2-verify-volumes | +++ [[ -n '' ]] logger.go:42: 18:13:44 | additional-volumes/2-verify-volumes | +++ export PG_VER=18 logger.go:42: 18:13:44 | additional-volumes/2-verify-volumes | +++ PG_VER=18 logger.go:42: 18:13:44 | additional-volumes/2-verify-volumes | +++ export PG_DISTRIBUTION= logger.go:42: 18:13:44 | additional-volumes/2-verify-volumes | +++ PG_DISTRIBUTION= logger.go:42: 18:13:44 | additional-volumes/2-verify-volumes | +++ [[ '' == community ]] logger.go:42: 18:13:44 | additional-volumes/2-verify-volumes | +++ export IMAGE_PGBOUNCER=perconalab/percona-postgresql-operator:main-pgbouncer18 logger.go:42: 18:13:44 | additional-volumes/2-verify-volumes | +++ IMAGE_PGBOUNCER=perconalab/percona-postgresql-operator:main-pgbouncer18 logger.go:42: 18:13:44 | additional-volumes/2-verify-volumes | +++ export IMAGE_POSTGRESQL=perconalab/percona-postgresql-operator:main-ppg18-postgres logger.go:42: 18:13:44 | additional-volumes/2-verify-volumes | +++ IMAGE_POSTGRESQL=perconalab/percona-postgresql-operator:main-ppg18-postgres logger.go:42: 18:13:44 | additional-volumes/2-verify-volumes | +++ export IMAGE_BACKREST=perconalab/percona-postgresql-operator:main-pgbackrest18 logger.go:42: 18:13:44 | additional-volumes/2-verify-volumes | +++ IMAGE_BACKREST=perconalab/percona-postgresql-operator:main-pgbackrest18 logger.go:42: 18:13:44 | additional-volumes/2-verify-volumes | +++ export IMAGE_UPGRADE=perconalab/percona-postgresql-operator:main-upgrade logger.go:42: 18:13:44 | additional-volumes/2-verify-volumes | +++ IMAGE_UPGRADE=perconalab/percona-postgresql-operator:main-upgrade logger.go:42: 18:13:44 | additional-volumes/2-verify-volumes | +++ export BUCKET=pg-operator-testing logger.go:42: 18:13:44 | additional-volumes/2-verify-volumes | +++ BUCKET=pg-operator-testing logger.go:42: 18:13:44 | additional-volumes/2-verify-volumes | +++ export PMM_SERVER_VERSION=9.9.9 logger.go:42: 18:13:44 | additional-volumes/2-verify-volumes | +++ PMM_SERVER_VERSION=9.9.9 logger.go:42: 18:13:44 | additional-volumes/2-verify-volumes | +++ export IMAGE_PMM_CLIENT=perconalab/pmm-client:3-dev-latest logger.go:42: 18:13:44 | additional-volumes/2-verify-volumes | +++ IMAGE_PMM_CLIENT=perconalab/pmm-client:3-dev-latest logger.go:42: 18:13:44 | additional-volumes/2-verify-volumes | +++ export IMAGE_PMM_SERVER=perconalab/pmm-server:3-dev-latest logger.go:42: 18:13:44 | additional-volumes/2-verify-volumes | +++ IMAGE_PMM_SERVER=perconalab/pmm-server:3-dev-latest logger.go:42: 18:13:44 | additional-volumes/2-verify-volumes | +++ export IMAGE_LOGCOLLECTOR=perconalab/fluentbit:main-logcollector logger.go:42: 18:13:44 | additional-volumes/2-verify-volumes | +++ IMAGE_LOGCOLLECTOR=perconalab/fluentbit:main-logcollector logger.go:42: 18:13:44 | additional-volumes/2-verify-volumes | +++ export PGOV1_TAG=1.4.0 logger.go:42: 18:13:44 | additional-volumes/2-verify-volumes | +++ PGOV1_TAG=1.4.0 logger.go:42: 18:13:44 | additional-volumes/2-verify-volumes | +++ export PGOV1_VER=14 logger.go:42: 18:13:44 | additional-volumes/2-verify-volumes | +++ PGOV1_VER=14 logger.go:42: 18:13:44 | additional-volumes/2-verify-volumes | +++ export CPGO_VERSION=5.8.7 logger.go:42: 18:13:44 | additional-volumes/2-verify-volumes | +++ CPGO_VERSION=5.8.7 logger.go:42: 18:13:44 | additional-volumes/2-verify-volumes | +++ export MINIO_VER=5.4.0 logger.go:42: 18:13:44 | additional-volumes/2-verify-volumes | +++ MINIO_VER=5.4.0 logger.go:42: 18:13:44 | additional-volumes/2-verify-volumes | +++ export VAULT_VER=0.32.0 logger.go:42: 18:13:44 | additional-volumes/2-verify-volumes | +++ VAULT_VER=0.32.0 logger.go:42: 18:13:44 | additional-volumes/2-verify-volumes | +++ export REGISTRY_NAME=docker.io logger.go:42: 18:13:44 | additional-volumes/2-verify-volumes | +++ REGISTRY_NAME=docker.io logger.go:42: 18:13:44 | additional-volumes/2-verify-volumes | +++ export REGISTRY_NAME_FULL=docker.io/ logger.go:42: 18:13:44 | additional-volumes/2-verify-volumes | +++ REGISTRY_NAME_FULL=docker.io/ logger.go:42: 18:13:44 | additional-volumes/2-verify-volumes | ++++ printenv logger.go:42: 18:13:44 | additional-volumes/2-verify-volumes | ++++ grep -E '^IMAGE' logger.go:42: 18:13:44 | additional-volumes/2-verify-volumes | ++++ awk -F= '{print $1}' logger.go:42: 18:13:44 | additional-volumes/2-verify-volumes | +++ for var in $(printenv | grep -E '^IMAGE' | awk -F'=' '{print $1}') logger.go:42: 18:13:44 | additional-volumes/2-verify-volumes | ++++ eval 'echo $IMAGE_BACKREST' logger.go:42: 18:13:44 | additional-volumes/2-verify-volumes | +++++ echo perconalab/percona-postgresql-operator:main-pgbackrest18 logger.go:42: 18:13:44 | additional-volumes/2-verify-volumes | +++ var_value=perconalab/percona-postgresql-operator:main-pgbackrest18 logger.go:42: 18:13:44 | additional-volumes/2-verify-volumes | +++ [[ perconalab/percona-postgresql-operator:main-pgbackrest18 == docker.io/* ]] logger.go:42: 18:13:44 | additional-volumes/2-verify-volumes | +++ [[ perconalab/percona-postgresql-operator:main-pgbackrest18 == percona/* ]] logger.go:42: 18:13:44 | additional-volumes/2-verify-volumes | +++ [[ perconalab/percona-postgresql-operator:main-pgbackrest18 == perconalab/* ]] logger.go:42: 18:13:44 | additional-volumes/2-verify-volumes | +++ new_value=docker.io/perconalab/percona-postgresql-operator:main-pgbackrest18 logger.go:42: 18:13:44 | additional-volumes/2-verify-volumes | +++ export IMAGE_BACKREST=docker.io/perconalab/percona-postgresql-operator:main-pgbackrest18 logger.go:42: 18:13:44 | additional-volumes/2-verify-volumes | +++ IMAGE_BACKREST=docker.io/perconalab/percona-postgresql-operator:main-pgbackrest18 logger.go:42: 18:13:44 | additional-volumes/2-verify-volumes | +++ echo IMAGE_BACKREST=docker.io/perconalab/percona-postgresql-operator:main-pgbackrest18 logger.go:42: 18:13:44 | additional-volumes/2-verify-volumes | IMAGE_BACKREST=docker.io/perconalab/percona-postgresql-operator:main-pgbackrest18 logger.go:42: 18:13:44 | additional-volumes/2-verify-volumes | +++ echo perconalab/percona-postgresql-operator:PR-1760-4947a0272 logger.go:42: 18:13:44 | additional-volumes/2-verify-volumes | perconalab/percona-postgresql-operator:PR-1760-4947a0272 logger.go:42: 18:13:44 | additional-volumes/2-verify-volumes | +++ for var in $(printenv | grep -E '^IMAGE' | awk -F'=' '{print $1}') logger.go:42: 18:13:44 | additional-volumes/2-verify-volumes | ++++ eval 'echo $IMAGE' logger.go:42: 18:13:44 | additional-volumes/2-verify-volumes | +++++ echo perconalab/percona-postgresql-operator:PR-1760-4947a0272 logger.go:42: 18:13:44 | additional-volumes/2-verify-volumes | +++ var_value=perconalab/percona-postgresql-operator:PR-1760-4947a0272 logger.go:42: 18:13:44 | additional-volumes/2-verify-volumes | +++ [[ perconalab/percona-postgresql-operator:PR-1760-4947a0272 == docker.io/* ]] logger.go:42: 18:13:44 | additional-volumes/2-verify-volumes | +++ [[ perconalab/percona-postgresql-operator:PR-1760-4947a0272 == percona/* ]] logger.go:42: 18:13:44 | additional-volumes/2-verify-volumes | +++ [[ perconalab/percona-postgresql-operator:PR-1760-4947a0272 == perconalab/* ]] logger.go:42: 18:13:44 | additional-volumes/2-verify-volumes | +++ new_value=docker.io/perconalab/percona-postgresql-operator:PR-1760-4947a0272 logger.go:42: 18:13:44 | additional-volumes/2-verify-volumes | +++ export IMAGE=docker.io/perconalab/percona-postgresql-operator:PR-1760-4947a0272 logger.go:42: 18:13:44 | additional-volumes/2-verify-volumes | +++ IMAGE=docker.io/perconalab/percona-postgresql-operator:PR-1760-4947a0272 logger.go:42: 18:13:44 | additional-volumes/2-verify-volumes | +++ echo IMAGE=docker.io/perconalab/percona-postgresql-operator:PR-1760-4947a0272 logger.go:42: 18:13:44 | additional-volumes/2-verify-volumes | IMAGE=docker.io/perconalab/percona-postgresql-operator:PR-1760-4947a0272 logger.go:42: 18:13:44 | additional-volumes/2-verify-volumes | +++ echo docker.io/perconalab/percona-postgresql-operator:PR-1760-4947a0272 logger.go:42: 18:13:44 | additional-volumes/2-verify-volumes | docker.io/perconalab/percona-postgresql-operator:PR-1760-4947a0272 logger.go:42: 18:13:44 | additional-volumes/2-verify-volumes | +++ for var in $(printenv | grep -E '^IMAGE' | awk -F'=' '{print $1}') logger.go:42: 18:13:44 | additional-volumes/2-verify-volumes | ++++ eval 'echo $IMAGE_UPGRADE' logger.go:42: 18:13:44 | additional-volumes/2-verify-volumes | +++++ echo perconalab/percona-postgresql-operator:main-upgrade logger.go:42: 18:13:44 | additional-volumes/2-verify-volumes | +++ var_value=perconalab/percona-postgresql-operator:main-upgrade logger.go:42: 18:13:44 | additional-volumes/2-verify-volumes | +++ [[ perconalab/percona-postgresql-operator:main-upgrade == docker.io/* ]] logger.go:42: 18:13:44 | additional-volumes/2-verify-volumes | +++ [[ perconalab/percona-postgresql-operator:main-upgrade == percona/* ]] logger.go:42: 18:13:44 | additional-volumes/2-verify-volumes | +++ [[ perconalab/percona-postgresql-operator:main-upgrade == perconalab/* ]] logger.go:42: 18:13:44 | additional-volumes/2-verify-volumes | +++ new_value=docker.io/perconalab/percona-postgresql-operator:main-upgrade logger.go:42: 18:13:44 | additional-volumes/2-verify-volumes | +++ export IMAGE_UPGRADE=docker.io/perconalab/percona-postgresql-operator:main-upgrade logger.go:42: 18:13:44 | additional-volumes/2-verify-volumes | +++ IMAGE_UPGRADE=docker.io/perconalab/percona-postgresql-operator:main-upgrade logger.go:42: 18:13:44 | additional-volumes/2-verify-volumes | +++ echo IMAGE_UPGRADE=docker.io/perconalab/percona-postgresql-operator:main-upgrade logger.go:42: 18:13:44 | additional-volumes/2-verify-volumes | IMAGE_UPGRADE=docker.io/perconalab/percona-postgresql-operator:main-upgrade logger.go:42: 18:13:44 | additional-volumes/2-verify-volumes | +++ echo docker.io/perconalab/percona-postgresql-operator:PR-1760-4947a0272 logger.go:42: 18:13:44 | additional-volumes/2-verify-volumes | docker.io/perconalab/percona-postgresql-operator:PR-1760-4947a0272 logger.go:42: 18:13:44 | additional-volumes/2-verify-volumes | +++ for var in $(printenv | grep -E '^IMAGE' | awk -F'=' '{print $1}') logger.go:42: 18:13:44 | additional-volumes/2-verify-volumes | ++++ eval 'echo $IMAGE_LOGCOLLECTOR' logger.go:42: 18:13:44 | additional-volumes/2-verify-volumes | +++++ echo perconalab/fluentbit:main-logcollector logger.go:42: 18:13:44 | additional-volumes/2-verify-volumes | +++ var_value=perconalab/fluentbit:main-logcollector logger.go:42: 18:13:44 | additional-volumes/2-verify-volumes | +++ [[ perconalab/fluentbit:main-logcollector == docker.io/* ]] logger.go:42: 18:13:44 | additional-volumes/2-verify-volumes | +++ [[ perconalab/fluentbit:main-logcollector == percona/* ]] logger.go:42: 18:13:44 | additional-volumes/2-verify-volumes | +++ [[ perconalab/fluentbit:main-logcollector == perconalab/* ]] logger.go:42: 18:13:44 | additional-volumes/2-verify-volumes | +++ new_value=docker.io/perconalab/fluentbit:main-logcollector logger.go:42: 18:13:44 | additional-volumes/2-verify-volumes | +++ export IMAGE_LOGCOLLECTOR=docker.io/perconalab/fluentbit:main-logcollector logger.go:42: 18:13:44 | additional-volumes/2-verify-volumes | +++ IMAGE_LOGCOLLECTOR=docker.io/perconalab/fluentbit:main-logcollector logger.go:42: 18:13:44 | additional-volumes/2-verify-volumes | +++ echo IMAGE_LOGCOLLECTOR=docker.io/perconalab/fluentbit:main-logcollector logger.go:42: 18:13:44 | additional-volumes/2-verify-volumes | IMAGE_LOGCOLLECTOR=docker.io/perconalab/fluentbit:main-logcollector logger.go:42: 18:13:44 | additional-volumes/2-verify-volumes | +++ echo docker.io/perconalab/percona-postgresql-operator:PR-1760-4947a0272 logger.go:42: 18:13:44 | additional-volumes/2-verify-volumes | docker.io/perconalab/percona-postgresql-operator:PR-1760-4947a0272 logger.go:42: 18:13:44 | additional-volumes/2-verify-volumes | +++ for var in $(printenv | grep -E '^IMAGE' | awk -F'=' '{print $1}') logger.go:42: 18:13:44 | additional-volumes/2-verify-volumes | ++++ eval 'echo $IMAGE_BASE' logger.go:42: 18:13:44 | additional-volumes/2-verify-volumes | +++++ echo perconalab/percona-postgresql-operator logger.go:42: 18:13:44 | additional-volumes/2-verify-volumes | +++ var_value=perconalab/percona-postgresql-operator logger.go:42: 18:13:44 | additional-volumes/2-verify-volumes | +++ [[ perconalab/percona-postgresql-operator == docker.io/* ]] logger.go:42: 18:13:44 | additional-volumes/2-verify-volumes | +++ [[ perconalab/percona-postgresql-operator == percona/* ]] logger.go:42: 18:13:44 | additional-volumes/2-verify-volumes | +++ [[ perconalab/percona-postgresql-operator == perconalab/* ]] logger.go:42: 18:13:44 | additional-volumes/2-verify-volumes | +++ new_value=docker.io/perconalab/percona-postgresql-operator logger.go:42: 18:13:44 | additional-volumes/2-verify-volumes | +++ export IMAGE_BASE=docker.io/perconalab/percona-postgresql-operator logger.go:42: 18:13:44 | additional-volumes/2-verify-volumes | +++ IMAGE_BASE=docker.io/perconalab/percona-postgresql-operator logger.go:42: 18:13:44 | additional-volumes/2-verify-volumes | +++ echo IMAGE_BASE=docker.io/perconalab/percona-postgresql-operator logger.go:42: 18:13:44 | additional-volumes/2-verify-volumes | IMAGE_BASE=docker.io/perconalab/percona-postgresql-operator logger.go:42: 18:13:44 | additional-volumes/2-verify-volumes | +++ echo docker.io/perconalab/percona-postgresql-operator:PR-1760-4947a0272 logger.go:42: 18:13:44 | additional-volumes/2-verify-volumes | docker.io/perconalab/percona-postgresql-operator:PR-1760-4947a0272 logger.go:42: 18:13:44 | additional-volumes/2-verify-volumes | +++ for var in $(printenv | grep -E '^IMAGE' | awk -F'=' '{print $1}') logger.go:42: 18:13:44 | additional-volumes/2-verify-volumes | ++++ eval 'echo $IMAGE_PGBOUNCER' logger.go:42: 18:13:44 | additional-volumes/2-verify-volumes | +++++ echo perconalab/percona-postgresql-operator:main-pgbouncer18 logger.go:42: 18:13:44 | additional-volumes/2-verify-volumes | +++ var_value=perconalab/percona-postgresql-operator:main-pgbouncer18 logger.go:42: 18:13:44 | additional-volumes/2-verify-volumes | +++ [[ perconalab/percona-postgresql-operator:main-pgbouncer18 == docker.io/* ]] logger.go:42: 18:13:44 | additional-volumes/2-verify-volumes | +++ [[ perconalab/percona-postgresql-operator:main-pgbouncer18 == percona/* ]] logger.go:42: 18:13:44 | additional-volumes/2-verify-volumes | +++ [[ perconalab/percona-postgresql-operator:main-pgbouncer18 == perconalab/* ]] logger.go:42: 18:13:44 | additional-volumes/2-verify-volumes | +++ new_value=docker.io/perconalab/percona-postgresql-operator:main-pgbouncer18 logger.go:42: 18:13:44 | additional-volumes/2-verify-volumes | +++ export IMAGE_PGBOUNCER=docker.io/perconalab/percona-postgresql-operator:main-pgbouncer18 logger.go:42: 18:13:44 | additional-volumes/2-verify-volumes | +++ IMAGE_PGBOUNCER=docker.io/perconalab/percona-postgresql-operator:main-pgbouncer18 logger.go:42: 18:13:44 | additional-volumes/2-verify-volumes | +++ echo IMAGE_PGBOUNCER=docker.io/perconalab/percona-postgresql-operator:main-pgbouncer18 logger.go:42: 18:13:44 | additional-volumes/2-verify-volumes | IMAGE_PGBOUNCER=docker.io/perconalab/percona-postgresql-operator:main-pgbouncer18 logger.go:42: 18:13:44 | additional-volumes/2-verify-volumes | +++ echo docker.io/perconalab/percona-postgresql-operator:PR-1760-4947a0272 logger.go:42: 18:13:44 | additional-volumes/2-verify-volumes | docker.io/perconalab/percona-postgresql-operator:PR-1760-4947a0272 logger.go:42: 18:13:44 | additional-volumes/2-verify-volumes | +++ for var in $(printenv | grep -E '^IMAGE' | awk -F'=' '{print $1}') logger.go:42: 18:13:44 | additional-volumes/2-verify-volumes | ++++ eval 'echo $IMAGE_POSTGRESQL' logger.go:42: 18:13:44 | additional-volumes/2-verify-volumes | +++++ echo perconalab/percona-postgresql-operator:main-ppg18-postgres logger.go:42: 18:13:44 | additional-volumes/2-verify-volumes | +++ var_value=perconalab/percona-postgresql-operator:main-ppg18-postgres logger.go:42: 18:13:44 | additional-volumes/2-verify-volumes | +++ [[ perconalab/percona-postgresql-operator:main-ppg18-postgres == docker.io/* ]] logger.go:42: 18:13:44 | additional-volumes/2-verify-volumes | +++ [[ perconalab/percona-postgresql-operator:main-ppg18-postgres == percona/* ]] logger.go:42: 18:13:44 | additional-volumes/2-verify-volumes | +++ [[ perconalab/percona-postgresql-operator:main-ppg18-postgres == perconalab/* ]] logger.go:42: 18:13:44 | additional-volumes/2-verify-volumes | +++ new_value=docker.io/perconalab/percona-postgresql-operator:main-ppg18-postgres logger.go:42: 18:13:44 | additional-volumes/2-verify-volumes | +++ export IMAGE_POSTGRESQL=docker.io/perconalab/percona-postgresql-operator:main-ppg18-postgres logger.go:42: 18:13:44 | additional-volumes/2-verify-volumes | +++ IMAGE_POSTGRESQL=docker.io/perconalab/percona-postgresql-operator:main-ppg18-postgres logger.go:42: 18:13:44 | additional-volumes/2-verify-volumes | +++ echo IMAGE_POSTGRESQL=docker.io/perconalab/percona-postgresql-operator:main-ppg18-postgres logger.go:42: 18:13:44 | additional-volumes/2-verify-volumes | IMAGE_POSTGRESQL=docker.io/perconalab/percona-postgresql-operator:main-ppg18-postgres logger.go:42: 18:13:44 | additional-volumes/2-verify-volumes | +++ echo docker.io/perconalab/percona-postgresql-operator:PR-1760-4947a0272 logger.go:42: 18:13:44 | additional-volumes/2-verify-volumes | docker.io/perconalab/percona-postgresql-operator:PR-1760-4947a0272 logger.go:42: 18:13:44 | additional-volumes/2-verify-volumes | +++ for var in $(printenv | grep -E '^IMAGE' | awk -F'=' '{print $1}') logger.go:42: 18:13:44 | additional-volumes/2-verify-volumes | ++++ eval 'echo $IMAGE_PMM_SERVER' logger.go:42: 18:13:44 | additional-volumes/2-verify-volumes | +++++ echo perconalab/pmm-server:3-dev-latest logger.go:42: 18:13:44 | additional-volumes/2-verify-volumes | +++ var_value=perconalab/pmm-server:3-dev-latest logger.go:42: 18:13:44 | additional-volumes/2-verify-volumes | +++ [[ perconalab/pmm-server:3-dev-latest == docker.io/* ]] logger.go:42: 18:13:44 | additional-volumes/2-verify-volumes | +++ [[ perconalab/pmm-server:3-dev-latest == percona/* ]] logger.go:42: 18:13:44 | additional-volumes/2-verify-volumes | +++ [[ perconalab/pmm-server:3-dev-latest == perconalab/* ]] logger.go:42: 18:13:44 | additional-volumes/2-verify-volumes | +++ new_value=docker.io/perconalab/pmm-server:3-dev-latest logger.go:42: 18:13:44 | additional-volumes/2-verify-volumes | +++ export IMAGE_PMM_SERVER=docker.io/perconalab/pmm-server:3-dev-latest logger.go:42: 18:13:44 | additional-volumes/2-verify-volumes | +++ IMAGE_PMM_SERVER=docker.io/perconalab/pmm-server:3-dev-latest logger.go:42: 18:13:44 | additional-volumes/2-verify-volumes | +++ echo IMAGE_PMM_SERVER=docker.io/perconalab/pmm-server:3-dev-latest logger.go:42: 18:13:44 | additional-volumes/2-verify-volumes | IMAGE_PMM_SERVER=docker.io/perconalab/pmm-server:3-dev-latest logger.go:42: 18:13:44 | additional-volumes/2-verify-volumes | +++ echo docker.io/perconalab/percona-postgresql-operator:PR-1760-4947a0272 logger.go:42: 18:13:44 | additional-volumes/2-verify-volumes | docker.io/perconalab/percona-postgresql-operator:PR-1760-4947a0272 logger.go:42: 18:13:44 | additional-volumes/2-verify-volumes | +++ for var in $(printenv | grep -E '^IMAGE' | awk -F'=' '{print $1}') logger.go:42: 18:13:44 | additional-volumes/2-verify-volumes | ++++ eval 'echo $IMAGE_PMM_CLIENT' logger.go:42: 18:13:44 | additional-volumes/2-verify-volumes | +++++ echo perconalab/pmm-client:3-dev-latest logger.go:42: 18:13:44 | additional-volumes/2-verify-volumes | +++ var_value=perconalab/pmm-client:3-dev-latest logger.go:42: 18:13:44 | additional-volumes/2-verify-volumes | +++ [[ perconalab/pmm-client:3-dev-latest == docker.io/* ]] logger.go:42: 18:13:44 | additional-volumes/2-verify-volumes | +++ [[ perconalab/pmm-client:3-dev-latest == percona/* ]] logger.go:42: 18:13:44 | additional-volumes/2-verify-volumes | +++ [[ perconalab/pmm-client:3-dev-latest == perconalab/* ]] logger.go:42: 18:13:44 | additional-volumes/2-verify-volumes | +++ new_value=docker.io/perconalab/pmm-client:3-dev-latest logger.go:42: 18:13:44 | additional-volumes/2-verify-volumes | +++ export IMAGE_PMM_CLIENT=docker.io/perconalab/pmm-client:3-dev-latest logger.go:42: 18:13:44 | additional-volumes/2-verify-volumes | +++ IMAGE_PMM_CLIENT=docker.io/perconalab/pmm-client:3-dev-latest logger.go:42: 18:13:44 | additional-volumes/2-verify-volumes | +++ echo IMAGE_PMM_CLIENT=docker.io/perconalab/pmm-client:3-dev-latest logger.go:42: 18:13:44 | additional-volumes/2-verify-volumes | IMAGE_PMM_CLIENT=docker.io/perconalab/pmm-client:3-dev-latest logger.go:42: 18:13:44 | additional-volumes/2-verify-volumes | +++ echo docker.io/perconalab/percona-postgresql-operator:PR-1760-4947a0272 logger.go:42: 18:13:44 | additional-volumes/2-verify-volumes | docker.io/perconalab/percona-postgresql-operator:PR-1760-4947a0272 logger.go:42: 18:13:44 | additional-volumes/2-verify-volumes | ++++ which gdate logger.go:42: 18:13:44 | additional-volumes/2-verify-volumes | which: no gdate in (/mnt/jenkins/workspace/cloud-pg-operator_PR-1760/bin/:/root/.krew/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/var/lib/snapd/snap/bin) logger.go:42: 18:13:44 | additional-volumes/2-verify-volumes | ++++ which date logger.go:42: 18:13:44 | additional-volumes/2-verify-volumes | +++ date=/usr/sbin/date logger.go:42: 18:13:44 | additional-volumes/2-verify-volumes | ++++ which gsed logger.go:42: 18:13:44 | additional-volumes/2-verify-volumes | which: no gsed in (/mnt/jenkins/workspace/cloud-pg-operator_PR-1760/bin/:/root/.krew/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/var/lib/snapd/snap/bin) logger.go:42: 18:13:44 | additional-volumes/2-verify-volumes | ++++ which sed logger.go:42: 18:13:44 | additional-volumes/2-verify-volumes | +++ sed=/usr/sbin/sed logger.go:42: 18:13:44 | additional-volumes/2-verify-volumes | + for role in pgwal pglogs logger.go:42: 18:13:44 | additional-volumes/2-verify-volumes | ++ kubectl -n kuttl-test-intimate-garfish get pvc --selector postgres-operator.crunchydata.com/role=pgwal -o custom-columns=NAME:.metadata.name --no-headers logger.go:42: 18:13:44 | additional-volumes/2-verify-volumes | + pvcs=$'additional-volumes-instance1-24br-pgwal\nadditional-volumes-instance1-n8pg-pgwal\nadditional-volumes-instance1-xvbw-pgwal' logger.go:42: 18:13:44 | additional-volumes/2-verify-volumes | + [[ -z additional-volumes-instance1-24br-pgwal logger.go:42: 18:13:44 | additional-volumes/2-verify-volumes | additional-volumes-instance1-n8pg-pgwal logger.go:42: 18:13:44 | additional-volumes/2-verify-volumes | additional-volumes-instance1-xvbw-pgwal ]] logger.go:42: 18:13:44 | additional-volumes/2-verify-volumes | + for pvc in ${pvcs} logger.go:42: 18:13:44 | additional-volumes/2-verify-volumes | + kubectl -n kuttl-test-intimate-garfish wait '--for=jsonpath={.status.phase}=Bound' pvc/additional-volumes-instance1-24br-pgwal --timeout=120s logger.go:42: 18:13:45 | additional-volumes/2-verify-volumes | E0819 18:13:45.680133 14279 reflector.go:227] "Failed to watch" err="Get \"https://104.198.74.23/api/v1/namespaces/kuttl-test-intimate-garfish/persistentvolumeclaims?allowWatchBookmarks=true&fieldSelector=metadata.name%3Dadditional-volumes-instance1-24br-pgwal&resourceVersion=1787163224649649000&timeoutSeconds=448&watch=true\": context canceled" reflector="k8s.io/client-go/tools/watch/informerwatcher.go:162" type="*unstructured.Unstructured" logger.go:42: 18:13:45 | additional-volumes/2-verify-volumes | persistentvolumeclaim/additional-volumes-instance1-24br-pgwal condition met logger.go:42: 18:13:45 | additional-volumes/2-verify-volumes | + for pvc in ${pvcs} logger.go:42: 18:13:45 | additional-volumes/2-verify-volumes | + kubectl -n kuttl-test-intimate-garfish wait '--for=jsonpath={.status.phase}=Bound' pvc/additional-volumes-instance1-n8pg-pgwal --timeout=120s logger.go:42: 18:13:46 | additional-volumes/2-verify-volumes | E0819 18:13:46.517202 14296 reflector.go:227] "Failed to watch" err="Get \"https://104.198.74.23/api/v1/namespaces/kuttl-test-intimate-garfish/persistentvolumeclaims?allowWatchBookmarks=true&fieldSelector=metadata.name%3Dadditional-volumes-instance1-n8pg-pgwal&resourceVersion=1787163226270012000&timeoutSeconds=322&watch=true\": context canceled" reflector="k8s.io/client-go/tools/watch/informerwatcher.go:162" type="*unstructured.Unstructured" logger.go:42: 18:13:46 | additional-volumes/2-verify-volumes | persistentvolumeclaim/additional-volumes-instance1-n8pg-pgwal condition met logger.go:42: 18:13:46 | additional-volumes/2-verify-volumes | + for pvc in ${pvcs} logger.go:42: 18:13:46 | additional-volumes/2-verify-volumes | + kubectl -n kuttl-test-intimate-garfish wait '--for=jsonpath={.status.phase}=Bound' pvc/additional-volumes-instance1-xvbw-pgwal --timeout=120s logger.go:42: 18:13:47 | additional-volumes/2-verify-volumes | E0819 18:13:47.274954 14315 reflector.go:227] "Failed to watch" err="Get \"https://104.198.74.23/api/v1/namespaces/kuttl-test-intimate-garfish/persistentvolumeclaims?allowWatchBookmarks=true&fieldSelector=metadata.name%3Dadditional-volumes-instance1-xvbw-pgwal&resourceVersion=1787163226270012000&timeoutSeconds=393&watch=true\": context canceled" reflector="k8s.io/client-go/tools/watch/informerwatcher.go:162" type="*unstructured.Unstructured" logger.go:42: 18:13:47 | additional-volumes/2-verify-volumes | persistentvolumeclaim/additional-volumes-instance1-xvbw-pgwal condition met logger.go:42: 18:13:47 | additional-volumes/2-verify-volumes | + for role in pgwal pglogs logger.go:42: 18:13:47 | additional-volumes/2-verify-volumes | ++ kubectl -n kuttl-test-intimate-garfish get pvc --selector postgres-operator.crunchydata.com/role=pglogs -o custom-columns=NAME:.metadata.name --no-headers logger.go:42: 18:13:47 | additional-volumes/2-verify-volumes | + pvcs=$'additional-volumes-instance1-24br-pglogs\nadditional-volumes-instance1-n8pg-pglogs\nadditional-volumes-instance1-xvbw-pglogs' logger.go:42: 18:13:47 | additional-volumes/2-verify-volumes | + [[ -z additional-volumes-instance1-24br-pglogs logger.go:42: 18:13:47 | additional-volumes/2-verify-volumes | additional-volumes-instance1-n8pg-pglogs logger.go:42: 18:13:47 | additional-volumes/2-verify-volumes | additional-volumes-instance1-xvbw-pglogs ]] logger.go:42: 18:13:47 | additional-volumes/2-verify-volumes | + for pvc in ${pvcs} logger.go:42: 18:13:47 | additional-volumes/2-verify-volumes | + kubectl -n kuttl-test-intimate-garfish wait '--for=jsonpath={.status.phase}=Bound' pvc/additional-volumes-instance1-24br-pglogs --timeout=120s logger.go:42: 18:13:48 | additional-volumes/2-verify-volumes | E0819 18:13:48.594912 14348 reflector.go:227] "Failed to watch" err="Get \"https://104.198.74.23/api/v1/namespaces/kuttl-test-intimate-garfish/persistentvolumeclaims?allowWatchBookmarks=true&fieldSelector=metadata.name%3Dadditional-volumes-instance1-24br-pglogs&resourceVersion=1787163227677414000&timeoutSeconds=585&watch=true\": context canceled" reflector="k8s.io/client-go/tools/watch/informerwatcher.go:162" type="*unstructured.Unstructured" logger.go:42: 18:13:48 | additional-volumes/2-verify-volumes | persistentvolumeclaim/additional-volumes-instance1-24br-pglogs condition met logger.go:42: 18:13:48 | additional-volumes/2-verify-volumes | + for pvc in ${pvcs} logger.go:42: 18:13:48 | additional-volumes/2-verify-volumes | + kubectl -n kuttl-test-intimate-garfish wait '--for=jsonpath={.status.phase}=Bound' pvc/additional-volumes-instance1-n8pg-pglogs --timeout=120s logger.go:42: 18:13:49 | additional-volumes/2-verify-volumes | E0819 18:13:49.356603 14365 reflector.go:227] "Failed to watch" err="Get \"https://104.198.74.23/api/v1/namespaces/kuttl-test-intimate-garfish/persistentvolumeclaims?allowWatchBookmarks=true&fieldSelector=metadata.name%3Dadditional-volumes-instance1-n8pg-pglogs&resourceVersion=1787163229023102000&timeoutSeconds=351&watch=true\": context canceled" reflector="k8s.io/client-go/tools/watch/informerwatcher.go:162" type="*unstructured.Unstructured" logger.go:42: 18:13:49 | additional-volumes/2-verify-volumes | persistentvolumeclaim/additional-volumes-instance1-n8pg-pglogs condition met logger.go:42: 18:13:49 | additional-volumes/2-verify-volumes | + for pvc in ${pvcs} logger.go:42: 18:13:49 | additional-volumes/2-verify-volumes | + kubectl -n kuttl-test-intimate-garfish wait '--for=jsonpath={.status.phase}=Bound' pvc/additional-volumes-instance1-xvbw-pglogs --timeout=120s logger.go:42: 18:13:50 | additional-volumes/2-verify-volumes | E0819 18:13:50.104008 14384 reflector.go:227] "Failed to watch" err="Get \"https://104.198.74.23/api/v1/namespaces/kuttl-test-intimate-garfish/persistentvolumeclaims?allowWatchBookmarks=true&fieldSelector=metadata.name%3Dadditional-volumes-instance1-xvbw-pglogs&resourceVersion=1787163229023102000&timeoutSeconds=595&watch=true\": context canceled" reflector="k8s.io/client-go/tools/watch/informerwatcher.go:162" type="*unstructured.Unstructured" logger.go:42: 18:13:50 | additional-volumes/2-verify-volumes | persistentvolumeclaim/additional-volumes-instance1-xvbw-pglogs condition met logger.go:42: 18:13:50 | additional-volumes/2-verify-volumes | ++ kubectl -n kuttl-test-intimate-garfish get sts --selector postgres-operator.crunchydata.com/instance-set=instance1 -o json logger.go:42: 18:13:50 | additional-volumes/2-verify-volumes | + sts=$'{\n "apiVersion": "v1",\n "items": [\n {\n "apiVersion": "apps/v1",\n "kind": "StatefulSet",\n "metadata": {\n "annotations": {\n "pgv2.percona.com/logcollector-config-hash": "d9a116e02b828bdc02165325e92799d82961fb499041814c7c765d0ce263ce77"\n },\n "creationTimestamp": "2026-08-19T18:12:04Z",\n "generation": 1,\n "labels": {\n "app.kubernetes.io/component": "pg",\n "app.kubernetes.io/instance": "additional-volumes",\n "app.kubernetes.io/managed-by": "percona-postgresql-operator",\n "app.kubernetes.io/name": "percona-postgresql",\n "app.kubernetes.io/part-of": "percona-postgresql",\n "pgv2.percona.com/version": "3.2.0",\n "postgres-operator.crunchydata.com/cluster": "additional-volumes",\n "postgres-operator.crunchydata.com/data": "postgres",\n "postgres-operator.crunchydata.com/instance": "additional-volumes-instance1-24br",\n "postgres-operator.crunchydata.com/instance-set": "instance1"\n },\n "name": "additional-volumes-instance1-24br",\n "namespace": "kuttl-test-intimate-garfish",\n "ownerReferences": [\n {\n "apiVersion": "upstream.pgv2.percona.com/v1beta1",\n "blockOwnerDeletion": true,\n "controller": true,\n "kind": "PostgresCluster",\n "name": "additional-volumes",\n "uid": "b795649f-550b-4283-b2ef-eca573235e5a"\n }\n ],\n "resourceVersion": "1787163196013855005",\n "uid": "471c7b02-6f1c-4f53-a6b2-557d95701703"\n },\n "spec": {\n "persistentVolumeClaimRetentionPolicy": {\n "whenDeleted": "Retain",\n "whenScaled": "Retain"\n },\n "podManagementPolicy": "OrderedReady",\n "replicas": 1,\n "revisionHistoryLimit": 0,\n "selector": {\n "matchLabels": {\n "postgres-operator.crunchydata.com/cluster": "additional-volumes",\n "postgres-operator.crunchydata.com/instance": "additional-volumes-instance1-24br",\n "postgres-operator.crunchydata.com/instance-set": "instance1"\n }\n },\n "serviceName": "additional-volumes-pods",\n "template": {\n "metadata": {\n "annotations": {\n "kubectl.kubernetes.io/default-container": "database",\n "pgv2.percona.com/logcollector-config-hash": "d9a116e02b828bdc02165325e92799d82961fb499041814c7c765d0ce263ce77"\n },\n "creationTimestamp": null,\n "labels": {\n "app.kubernetes.io/component": "pg",\n "app.kubernetes.io/instance": "additional-volumes",\n "app.kubernetes.io/managed-by": "percona-postgresql-operator",\n "app.kubernetes.io/name": "percona-postgresql",\n "app.kubernetes.io/part-of": "percona-postgresql",\n "pgv2.percona.com/version": "3.2.0",\n "postgres-operator.crunchydata.com/cluster": "additional-volumes",\n "postgres-operator.crunchydata.com/data": "postgres",\n "postgres-operator.crunchydata.com/instance": "additional-volumes-instance1-24br",\n "postgres-operator.crunchydata.com/instance-set": "instance1",\n "postgres-operator.crunchydata.com/patroni": "additional-volumes-ha"\n }\n },\n "spec": {\n "affinity": {\n "podAntiAffinity": {\n "preferredDuringSchedulingIgnoredDuringExecution": [\n {\n "podAffinityTerm": {\n "labelSelector": {\n "matchLabels": {\n "postgres-operator.crunchydata.com/data": "postgres"\n }\n },\n "topologyKey": "kubernetes.io/hostname"\n },\n "weight": 1\n }\n ]\n }\n },\n "containers": [\n {\n "command": [\n "/opt/crunchy/bin/postgres-entrypoint.sh",\n "patroni",\n "/etc/patroni"\n ],\n "env": [\n {\n "name": "PGDATA",\n "value": "/pgdata/pg18"\n },\n {\n "name": "PGHOST",\n "value": "/tmp/postgres"\n },\n {\n "name": "PGPORT",\n "value": "5432"\n },\n {\n "name": "KRB5_CONFIG",\n "value": "/etc/postgres/krb5.conf"\n },\n {\n "name": "KRB5RCACHEDIR",\n "value": "/tmp"\n },\n {\n "name": "LDAPTLS_CACERT",\n "value": "/etc/postgres/ldap/ca.crt"\n },\n {\n "name": "LC_ALL",\n "value": "en_US.utf-8"\n },\n {\n "name": "LANG",\n "value": "en_US.utf-8"\n },\n {\n "name": "PATRONI_NAME",\n "valueFrom": {\n "fieldRef": {\n "apiVersion": "v1",\n "fieldPath": "metadata.name"\n }\n }\n },\n {\n "name": "PATRONI_KUBERNETES_POD_IP",\n "valueFrom": {\n "fieldRef": {\n "apiVersion": "v1",\n "fieldPath": "status.podIP"\n }\n }\n },\n {\n "name": "PATRONI_KUBERNETES_PORTS",\n "value": "- name: postgres\\n port: 5432\\n protocol: TCP\\n"\n },\n {\n "name": "PATRONI_POSTGRESQL_CONNECT_ADDRESS",\n "value": "$(PATRONI_NAME).additional-volumes-pods:5432"\n },\n {\n "name": "PATRONI_POSTGRESQL_LISTEN",\n "value": "*:5432"\n },\n {\n "name": "PATRONI_POSTGRESQL_CONFIG_DIR",\n "value": "/pgdata/pg18"\n },\n {\n "name": "PATRONI_POSTGRESQL_DATA_DIR",\n "value": "/pgdata/pg18"\n },\n {\n "name": "PATRONI_RESTAPI_CONNECT_ADDRESS",\n "value": "$(PATRONI_NAME).additional-volumes-pods:8008"\n },\n {\n "name": "PATRONI_RESTAPI_LISTEN",\n "value": "*:8008"\n },\n {\n "name": "PATRONICTL_CONFIG_FILE",\n "value": "/etc/patroni"\n },\n {\n "name": "LD_PRELOAD",\n "value": "/usr/lib64/libnss_wrapper.so"\n },\n {\n "name": "NSS_WRAPPER_PASSWD",\n "value": "/tmp/nss_wrapper/postgres/passwd"\n },\n {\n "name": "NSS_WRAPPER_GROUP",\n "value": "/tmp/nss_wrapper/postgres/group"\n }\n ],\n "image": "docker.io/perconalab/percona-postgresql-operator:main-ppg18-postgres",\n "imagePullPolicy": "Always",\n "livenessProbe": {\n "exec": {\n "command": [\n "bash",\n "-c",\n "/opt/crunchy/bin/postgres-liveness-check.sh"\n ]\n },\n "failureThreshold": 3,\n "initialDelaySeconds": 3,\n "periodSeconds": 10,\n "successThreshold": 1,\n "timeoutSeconds": 5\n },\n "name": "database",\n "ports": [\n {\n "containerPort": 5432,\n "name": "postgres",\n "protocol": "TCP"\n }\n ],\n "readinessProbe": {\n "exec": {\n "command": [\n "bash",\n "-c",\n "/opt/crunchy/bin/postgres-readiness-check.sh"\n ]\n },\n "failureThreshold": 3,\n "initialDelaySeconds": 3,\n "periodSeconds": 10,\n "successThreshold": 1,\n "timeoutSeconds": 5\n },\n "resources": {},\n "securityContext": {\n "allowPrivilegeEscalation": false,\n "capabilities": {\n "drop": [\n "ALL"\n ]\n },\n "privileged": false,\n "readOnlyRootFilesystem": true,\n "runAsNonRoot": true,\n "seccompProfile": {\n "type": "RuntimeDefault"\n }\n },\n "terminationMessagePath": "/dev/termination-log",\n "terminationMessagePolicy": "File",\n "volumeMounts": [\n {\n "mountPath": "/pgconf/tls",\n "name": "cert-volume",\n "readOnly": true\n },\n {\n "mountPath": "/pgdata",\n "name": "postgres-data"\n },\n {\n "mountPath": "/etc/database-containerinfo",\n "name": "database-containerinfo",\n "readOnly": true\n },\n {\n "mountPath": "/tablespaces/myts",\n "name": "tablespace-myts"\n },\n {\n "mountPath": "/pgwal",\n "name": "postgres-wal"\n },\n {\n "mountPath": "/pglogs",\n "name": "postgres-logs"\n },\n {\n "mountPath": "/etc/pgbackrest/conf.d",\n "name": "pgbackrest-config",\n "readOnly": true\n },\n {\n "mountPath": "/etc/patroni",\n "name": "patroni-config",\n "readOnly": true\n },\n {\n "mountPath": "/opt/crunchy",\n "name": "crunchy-bin"\n },\n {\n "mountPath": "/tmp",\n "name": "tmp"\n },\n {\n "mountPath": "/dev/shm",\n "name": "dshm"\n }\n ]\n },\n {\n "command": [\n "bash",\n "-ceu",\n "--",\n "monitor() {\\n# Parameters for curl when managing autogrow annotation.\\nAPISERVER=\\"https://kubernetes.default.svc\\"\\nSERVICEACCOUNT=\\"/var/run/secrets/kubernetes.io/serviceaccount\\"\\nNAMESPACE=$(cat ${SERVICEACCOUNT}/namespace)\\nTOKEN=$(cat ${SERVICEACCOUNT}/token)\\nCACERT=${SERVICEACCOUNT}/ca.crt\\n\\ndeclare -r directory=\\"/pgconf/tls\\"\\nexec {fd}\\u003c\\u003e \\u003c(:||:)\\nwhile read -r -t 5 -u \\"${fd}\\" ||:; do\\n # Manage replication certificate.\\n if [[ \\"${directory}\\" -nt \\"/proc/self/fd/${fd}\\" ]] \\u0026\\u0026\\n install -D --mode=0600 -t \\"/tmp/replication\\" \\"${directory}\\"/{replication/tls.crt,replication/tls.key,replication/ca.crt} \\u0026\\u0026\\n pkill -HUP --exact --parent=1 postgres\\n then\\n exec {fd}\\u003e\\u0026- \\u0026\\u0026 exec {fd}\\u003c\\u003e \\u003c(:||:)\\n stat --format=\'Loaded certificates dated %y\' \\"${directory}\\"\\n fi\\n\\ndone\\n}; export -f monitor; exec -a \\"$0\\" bash -ceu monitor",\n "replication-cert-copy"\n ],\n "image": "docker.io/perconalab/percona-postgresql-operator:main-ppg18-postgres",\n "imagePullPolicy": "Always",\n "name": "replication-cert-copy",\n "resources": {},\n "securityContext": {\n "allowPrivilegeEscalation": false,\n "capabilities": {\n "drop": [\n "ALL"\n ]\n },\n "privileged": false,\n "readOnlyRootFilesystem": true,\n "runAsNonRoot": true,\n "seccompProfile": {\n "type": "RuntimeDefault"\n }\n },\n "terminationMessagePath": "/dev/termination-log",\n "terminationMessagePolicy": "File",\n "volumeMounts": [\n {\n "mountPath": "/pgconf/tls",\n "name": "cert-volume",\n "readOnly": true\n },\n {\n "mountPath": "/pgdata",\n "name": "postgres-data"\n },\n {\n "mountPath": "/tmp",\n "name": "tmp"\n }\n ]\n },\n {\n "args": [\n "fluent-bit"\n ],\n "command": [\n "/opt/crunchy/logcollector/entrypoint.sh"\n ],\n "env": [\n {\n "name": "PG_LOG_DIR",\n "value": "/pgdata/pg18/log"\n },\n {\n "name": "PGBACKREST_LOG_DIR",\n "value": "/pgdata/pgbackrest/log"\n },\n {\n "name": "POD_NAMESPACE",\n "valueFrom": {\n "fieldRef": {\n "apiVersion": "v1",\n "fieldPath": "metadata.namespace"\n }\n }\n },\n {\n "name": "POD_NAME",\n "valueFrom": {\n "fieldRef": {\n "apiVersion": "v1",\n "fieldPath": "metadata.name"\n }\n }\n }\n ],\n "image": "docker.io/perconalab/fluentbit:main-logcollector",\n "imagePullPolicy": "IfNotPresent",\n "name": "logs",\n "resources": {},\n "securityContext": {\n "allowPrivilegeEscalation": false,\n "capabilities": {\n "drop": [\n "ALL"\n ]\n },\n "privileged": false,\n "runAsGroup": 26,\n "runAsNonRoot": true,\n "runAsUser": 26,\n "seccompProfile": {\n "type": "RuntimeDefault"\n }\n },\n "terminationMessagePath": "/dev/termination-log",\n "terminationMessagePolicy": "File",\n "volumeMounts": [\n {\n "mountPath": "/pgdata",\n "name": "postgres-data"\n },\n {\n "mountPath": "/opt/crunchy",\n "name": "crunchy-bin"\n },\n {\n "mountPath": "/tmp",\n "name": "tmp"\n }\n ]\n },\n {\n "args": [\n "logrotate"\n ],\n "command": [\n "/opt/crunchy/logcollector/entrypoint.sh"\n ],\n "env": [\n {\n "name": "POD_NAMESPACE",\n "valueFrom": {\n "fieldRef": {\n "apiVersion": "v1",\n "fieldPath": "metadata.namespace"\n }\n }\n },\n {\n "name": "POD_NAME",\n "valueFrom": {\n "fieldRef": {\n "apiVersion": "v1",\n "fieldPath": "metadata.name"\n }\n }\n },\n {\n "name": "LOGROTATE_SCHEDULE",\n "value": "0 0 * * *"\n },\n {\n "name": "LD_PRELOAD",\n "value": "/tmp/nss_wrapper/libnss_wrapper.so"\n },\n {\n "name": "NSS_WRAPPER_PASSWD",\n "value": "/tmp/nss_wrapper/postgres/passwd"\n },\n {\n "name": "NSS_WRAPPER_GROUP",\n "value": "/tmp/nss_wrapper/postgres/group"\n }\n ],\n "image": "docker.io/perconalab/fluentbit:main-logcollector",\n "imagePullPolicy": "IfNotPresent",\n "name": "logrotate",\n "resources": {},\n "securityContext": {\n "allowPrivilegeEscalation": false,\n "capabilities": {\n "drop": [\n "ALL"\n ]\n },\n "privileged": false,\n "runAsGroup": 26,\n "runAsNonRoot": true,\n "runAsUser": 26,\n "seccompProfile": {\n "type": "RuntimeDefault"\n }\n },\n "terminationMessagePath": "/dev/termination-log",\n "terminationMessagePolicy": "File",\n "volumeMounts": [\n {\n "mountPath": "/pgdata",\n "name": "postgres-data"\n },\n {\n "mountPath": "/opt/crunchy",\n "name": "crunchy-bin"\n },\n {\n "mountPath": "/tmp",\n "name": "tmp"\n }\n ]\n },\n {\n "command": [\n "pgbackrest",\n "server"\n ],\n "env": [\n {\n "name": "LD_PRELOAD",\n "value": "/usr/lib64/libnss_wrapper.so"\n },\n {\n "name": "NSS_WRAPPER_PASSWD",\n "value": "/tmp/nss_wrapper/postgres/passwd"\n },\n {\n "name": "NSS_WRAPPER_GROUP",\n "value": "/tmp/nss_wrapper/postgres/group"\n }\n ],\n "image": "docker.io/perconalab/percona-postgresql-operator:main-pgbackrest18",\n "imagePullPolicy": "Always",\n "livenessProbe": {\n "exec": {\n "command": [\n "pgbackrest",\n "server-ping"\n ]\n },\n "failureThreshold": 3,\n "periodSeconds": 10,\n "successThreshold": 1,\n "timeoutSeconds": 1\n },\n "name": "pgbackrest",\n "resources": {},\n "securityContext": {\n "allowPrivilegeEscalation": false,\n "capabilities": {\n "drop": [\n "ALL"\n ]\n },\n "privileged": false,\n "readOnlyRootFilesystem": true,\n "runAsNonRoot": true,\n "seccompProfile": {\n "type": "RuntimeDefault"\n }\n },\n "terminationMessagePath": "/dev/termination-log",\n "terminationMessagePolicy": "File",\n "volumeMounts": [\n {\n "mountPath": "/etc/pgbackrest/server",\n "name": "pgbackrest-server",\n "readOnly": true\n },\n {\n "mountPath": "/pgdata",\n "name": "postgres-data"\n },\n {\n "mountPath": "/tablespaces/myts",\n "name": "tablespace-myts"\n },\n {\n "mountPath": "/pgwal",\n "name": "postgres-wal"\n },\n {\n "mountPath": "/etc/pgbackrest/conf.d",\n "name": "pgbackrest-config",\n "readOnly": true\n },\n {\n "mountPath": "/tmp",\n "name": "tmp"\n }\n ]\n },\n {\n "command": [\n "bash",\n "-ceu",\n "--",\n "monitor() {\\nexec {fd}\\u003c\\u003e \\u003c(:||:)\\nuntil read -r -t 5 -u \\"${fd}\\"; do\\n if\\n [[ \\"${filename}\\" -nt \\"/proc/self/fd/${fd}\\" ]] \\u0026\\u0026\\n pkill -HUP --exact --parent=0 pgbackrest\\n then\\n exec {fd}\\u003e\\u0026- \\u0026\\u0026 exec {fd}\\u003c\\u003e \\u003c(:||:)\\n stat --dereference --format=\'Loaded configuration dated %y\' \\"${filename}\\"\\n elif\\n { [[ \\"${directory}\\" -nt \\"/proc/self/fd/${fd}\\" ]] ||\\n [[ \\"${authority}\\" -nt \\"/proc/self/fd/${fd}\\" ]]\\n } \\u0026\\u0026\\n pkill -HUP --exact --parent=0 pgbackrest\\n then\\n exec {fd}\\u003e\\u0026- \\u0026\\u0026 exec {fd}\\u003c\\u003e \\u003c(:||:)\\n stat --format=\'Loaded certificates dated %y\' \\"${directory}\\"\\n fi\\ndone\\n}; export directory=\\"$1\\" authority=\\"$2\\" filename=\\"$3\\"; export -f monitor; exec -a \\"$0\\" bash -ceu monitor",\n "pgbackrest-config",\n "/etc/pgbackrest/server",\n "/etc/pgbackrest/conf.d/~postgres-operator/tls-ca.crt",\n "/etc/pgbackrest/conf.d/~postgres-operator_server.conf"\n ],\n "image": "docker.io/perconalab/percona-postgresql-operator:main-pgbackrest18",\n "imagePullPolicy": "Always",\n "name": "pgbackrest-config",\n "resources": {},\n "securityContext": {\n "allowPrivilegeEscalation": false,\n "capabilities": {\n "drop": [\n "ALL"\n ]\n },\n "privileged": false,\n "readOnlyRootFilesystem": true,\n "runAsNonRoot": true,\n "seccompProfile": {\n "type": "RuntimeDefault"\n }\n },\n "terminationMessagePath": "/dev/termination-log",\n "terminationMessagePolicy": "File",\n "volumeMounts": [\n {\n "mountPath": "/etc/pgbackrest/server",\n "name": "pgbackrest-server",\n "readOnly": true\n },\n {\n "mountPath": "/etc/pgbackrest/conf.d",\n "name": "pgbackrest-config",\n "readOnly": true\n },\n {\n "mountPath": "/tmp",\n "name": "tmp"\n }\n ]\n }\n ],\n "dnsPolicy": "ClusterFirst",\n "enableServiceLinks": false,\n "initContainers": [\n {\n "command": [\n "/usr/local/bin/init-entrypoint.sh"\n ],\n "image": "docker.io/perconalab/percona-postgresql-operator:PR-1760-4947a0272",\n "imagePullPolicy": "Always",\n "name": "database-init",\n "resources": {},\n "securityContext": {\n "allowPrivilegeEscalation": false,\n "capabilities": {\n "drop": [\n "ALL"\n ]\n },\n "privileged": false,\n "readOnlyRootFilesystem": true,\n "runAsNonRoot": true,\n "seccompProfile": {\n "type": "RuntimeDefault"\n }\n },\n "terminationMessagePath": "/dev/termination-log",\n "terminationMessagePolicy": "File",\n "volumeMounts": [\n {\n "mountPath": "/opt/crunchy",\n "name": "crunchy-bin"\n },\n {\n "mountPath": "/tmp",\n "name": "tmp"\n }\n ]\n },\n {\n "command": [\n "bash",\n "-ceu",\n "--",\n "declare -r expected_major_version=\\"$1\\" pgwal_directory=\\"$2\\" pgbrLog_directory=\\"$3\\"\\npermissions() { while [[ -n \\"$1\\" ]]; do set \\"${1%/*}\\" \\"$@\\"; done; shift; stat -Lc \'%A %4u %4g %n\' \\"$@\\"; }\\nhalt() { local rc=$?; \\u003e\\u00262 echo \\"$@\\"; exit \\"${rc/#0/1}\\"; }\\nresults() { printf \'::postgres-operator: %s::%s\\\\n\' \\"$@\\"; }\\nrecreate() (\\n local tmp; tmp=$(mktemp -d -p \\"${1%/*}\\"); GLOBIGNORE=\'.:..\'; set -x\\n chmod \\"$2\\" \\"${tmp}\\"; mv \\"$1\\"/* \\"${tmp}\\"; rmdir \\"$1\\"; mv \\"${tmp}\\" \\"$1\\"\\n)\\nsafelink() (\\n local desired=\\"$1\\" name=\\"$2\\" current\\n current=$(realpath \\"${name}\\")\\n if [[ \\"${current}\\" == \\"${desired}\\" ]]; then return; fi\\n set -x; mv --no-target-directory \\"${current}\\" \\"${desired}\\"\\n ln --no-dereference --force --symbolic \\"${desired}\\" \\"${name}\\"\\n)\\necho Initializing ...\\nresults \'uid\' \\"$(id -u ||:)\\" \'gid\' \\"$(id -G ||:)\\"\\nif [[ \\"${pgwal_directory}\\" == *\\"pgwal/\\"* ]] \\u0026\\u0026 [[ ! -d \\"/pgwal/pgbackrest-spool\\" ]];then rm -rf \\"/pgdata/pgbackrest-spool\\" \\u0026\\u0026 mkdir -p \\"/pgwal/pgbackrest-spool\\" \\u0026\\u0026 ln --force --symbolic \\"/pgwal/pgbackrest-spool\\" \\"/pgdata/pgbackrest-spool\\";fi\\nif [[ ! -e \\"/pgdata/pgbackrest-spool\\" ]];then rm -rf /pgdata/pgbackrest-spool;fi\\nif [[ ! -e \\"/pgdata/logs/postgres\\" ]];then rm -rf \\"/pgdata/logs/postgres\\";fi\\nif [[ ! -e \\"${pgbrLog_directory}\\" ]];then rm -rf \\"${pgbrLog_directory}\\";fi\\nif [[ -d \\"/pglogs\\" ]];then install --directory --mode=0775 \\"/pglogs/postgres\\" \\"/pglogs/pgbackrest/log\\";if [[ ! -L \\"/pgdata/logs/postgres\\" ]];then mkdir -p \\"/pgdata/logs\\" \\u0026\\u0026 rm -rf \\"/pgdata/logs/postgres\\" \\u0026\\u0026 ln --symbolic \\"/pglogs/postgres\\" \\"/pgdata/logs/postgres\\";fi;if [[ ! -L \\"${pgbrLog_directory}\\" ]];then mkdir -p \\"${pgbrLog_directory%/*}\\" \\u0026\\u0026 rm -rf \\"${pgbrLog_directory}\\" \\u0026\\u0026 ln --symbolic \\"/pglogs/pgbackrest/log\\" \\"${pgbrLog_directory}\\";fi;fi\\nresults \'postgres path\' \\"$(command -v postgres ||:)\\"\\nresults \'postgres version\' \\"${postgres_version:=$(postgres --version ||:)}\\"\\n[[ \\"${postgres_version}\\" =~ \\") ${expected_major_version}\\"($|[^0-9]) ]] ||\\nhalt Expected PostgreSQL version \\"${expected_major_version}\\"\\nresults \'config directory\' \\"${PGDATA:?}\\"\\npostgres_data_directory=$([[ -d \\"${PGDATA}\\" ]] \\u0026\\u0026 postgres -C data_directory || echo \\"${PGDATA}\\")\\nresults \'data directory\' \\"${postgres_data_directory}\\"\\n[[ \\"${postgres_data_directory}\\" == \\"${PGDATA}\\" ]] ||\\nhalt Expected matching config and data directories\\nbootstrap_dir=\\"${postgres_data_directory}_bootstrap\\"\\n[[ -d \\"${bootstrap_dir}\\" ]] \\u0026\\u0026 results \'bootstrap directory\' \\"${bootstrap_dir}\\"\\n[[ -d \\"${bootstrap_dir}\\" ]] \\u0026\\u0026 postgres_data_directory=\\"${bootstrap_dir}\\"\\nif [[ ! -e \\"${postgres_data_directory}\\" || -O \\"${postgres_data_directory}\\" ]]; then\\ninstall --directory --mode=0700 \\"${postgres_data_directory}\\"\\nelif [[ -w \\"${postgres_data_directory}\\" \\u0026\\u0026 -g \\"${postgres_data_directory}\\" ]]; then\\nrecreate \\"${postgres_data_directory}\\" \'0700\'\\nelse (halt Permissions!); fi ||\\nhalt \\"$(permissions \\"${postgres_data_directory}\\" ||:)\\"\\nresults \'pgBackRest log directory\' \\"${pgbrLog_directory}\\"\\ninstall --directory --mode=0775 \\"${pgbrLog_directory}\\" ||\\nhalt \\"$(permissions \\"${pgbrLog_directory}\\" ||:)\\"\\ninstall -D --mode=0600 -t \\"/tmp/replication\\" \\"/pgconf/tls/replication\\"/{tls.crt,tls.key,ca.crt}\\n\\ntablespace_dir=/tablespaces/myts/data\\nif [[ ! -e \\"${tablespace_dir}\\" || -O \\"${tablespace_dir}\\" ]]; then\\ninstall --directory --mode=0700 \\"${tablespace_dir}\\"\\nelif [[ -w \\"${tablespace_dir}\\" \\u0026\\u0026 -g \\"${tablespace_dir}\\" ]]; then\\nrecreate \\"${tablespace_dir}\\" \'0700\'\\nelse (halt Permissions!); fi ||\\nhalt \\"$(permissions \\"${tablespace_dir}\\" ||:)\\"\\n[[ -f \\"${postgres_data_directory}/PG_VERSION\\" ]] || exit 0\\nresults \'data version\' \\"${postgres_data_version:=$(\\u003c \\"${postgres_data_directory}/PG_VERSION\\")}\\"\\n[[ \\"${postgres_data_version}\\" == \\"${expected_major_version}\\" ]] ||\\nhalt Expected PostgreSQL data version \\"${expected_major_version}\\"\\n[[ ! -f \\"${postgres_data_directory}/postgresql.conf\\" ]] \\u0026\\u0026\\ntouch \\"${postgres_data_directory}/postgresql.conf\\"\\nsafelink \\"${pgwal_directory}\\" \\"${postgres_data_directory}/pg_wal\\"\\nresults \'wal directory\' \\"$(realpath \\"${postgres_data_directory}/pg_wal\\" ||:)\\"\\nrm -f \\"${postgres_data_directory}/recovery.signal\\"",\n "startup",\n "18",\n "/pgwal/pg18_wal",\n "/pgdata/pgbackrest/log"\n ],\n "env": [\n {\n "name": "PGDATA",\n "value": "/pgdata/pg18"\n },\n {\n "name": "PGHOST",\n "value": "/tmp/postgres"\n },\n {\n "name": "PGPORT",\n "value": "5432"\n },\n {\n "name": "KRB5_CONFIG",\n "value": "/etc/postgres/krb5.conf"\n },\n {\n "name": "KRB5RCACHEDIR",\n "value": "/tmp"\n },\n {\n "name": "LDAPTLS_CACERT",\n "value": "/etc/postgres/ldap/ca.crt"\n },\n {\n "name": "LC_ALL",\n "value": "en_US.utf-8"\n },\n {\n "name": "LANG",\n "value": "en_US.utf-8"\n }\n ],\n "image": "docker.io/perconalab/percona-postgresql-operator:main-ppg18-postgres",\n "imagePullPolicy": "Always",\n "name": "postgres-startup",\n "resources": {},\n "securityContext": {\n "allowPrivilegeEscalation": false,\n "capabilities": {\n "drop": [\n "ALL"\n ]\n },\n "privileged": false,\n "readOnlyRootFilesystem": true,\n "runAsNonRoot": true,\n "seccompProfile": {\n "type": "RuntimeDefault"\n }\n },\n "terminationMessagePath": "/dev/termination-log",\n "terminationMessagePolicy": "File",\n "volumeMounts": [\n {\n "mountPath": "/pgconf/tls",\n "name": "cert-volume",\n "readOnly": true\n },\n {\n "mountPath": "/pgdata",\n "name": "postgres-data"\n },\n {\n "mountPath": "/tablespaces/myts",\n "name": "tablespace-myts"\n },\n {\n "mountPath": "/pgwal",\n "name": "postgres-wal"\n },\n {\n "mountPath": "/pglogs",\n "name": "postgres-logs"\n },\n {\n "mountPath": "/tmp",\n "name": "tmp"\n }\n ]\n },\n {\n "command": [\n "bash",\n "-c",\n "mkdir -p /tmp/nss_wrapper \\u0026\\u0026 { [[ -f /tmp/nss_wrapper/libnss_wrapper.so ]] || cp /usr/lib64/libnss_wrapper.so /tmp/nss_wrapper/libnss_wrapper.so; }"\n ],\n "image": "docker.io/perconalab/percona-postgresql-operator:main-ppg18-postgres",\n "imagePullPolicy": "Always",\n "name": "nss-wrapper-init-logcollector",\n "resources": {},\n "securityContext": {\n "allowPrivilegeEscalation": false,\n "capabilities": {\n "drop": [\n "ALL"\n ]\n },\n "privileged": false,\n "runAsGroup": 26,\n "runAsNonRoot": true,\n "runAsUser": 26,\n "seccompProfile": {\n "type": "RuntimeDefault"\n }\n },\n "terminationMessagePath": "/dev/termination-log",\n "terminationMessagePolicy": "File",\n "volumeMounts": [\n {\n "mountPath": "/tmp",\n "name": "tmp"\n }\n ]\n },\n {\n "command": [\n "bash",\n "-c",\n "export NSS_WRAPPER_SUBDIR=postgres CRUNCHY_NSS_USERNAME=postgres CRUNCHY_NSS_USER_DESC=\\"postgres\\" \\n# Define nss_wrapper directory and passwd \\u0026 group files that will be utilized by nss_wrapper. The\\n# nss_wrapper_env.sh script (which also sets these vars) isn\'t sourced here since the nss_wrapper\\n# has not yet been setup, and we therefore don\'t yet want the nss_wrapper vars in the environment.\\nmkdir -p /tmp/nss_wrapper\\nchmod g+rwx /tmp/nss_wrapper\\n\\nNSS_WRAPPER_DIR=\\"/tmp/nss_wrapper/${NSS_WRAPPER_SUBDIR}\\"\\nNSS_WRAPPER_PASSWD=\\"${NSS_WRAPPER_DIR}/passwd\\"\\nNSS_WRAPPER_GROUP=\\"${NSS_WRAPPER_DIR}/group\\"\\n\\n# create the nss_wrapper directory\\nmkdir -p \\"${NSS_WRAPPER_DIR}\\"\\n\\n# grab the current user ID and group ID\\nUSER_ID=$(id -u)\\nexport USER_ID\\nGROUP_ID=$(id -g)\\nexport GROUP_ID\\n\\n# get copies of the passwd and group files\\n[[ -f \\"${NSS_WRAPPER_PASSWD}\\" ]] || cp \\"/etc/passwd\\" \\"${NSS_WRAPPER_PASSWD}\\"\\n[[ -f \\"${NSS_WRAPPER_GROUP}\\" ]] || cp \\"/etc/group\\" \\"${NSS_WRAPPER_GROUP}\\"\\n\\n# if the username is missing from the passwd file, then add it\\nif [[ ! $(cat \\"${NSS_WRAPPER_PASSWD}\\") =~ ${CRUNCHY_NSS_USERNAME}:x:${USER_ID} ]]; then\\n echo \\"nss_wrapper: adding user\\"\\n passwd_tmp=\\"${NSS_WRAPPER_DIR}/passwd_tmp\\"\\n cp \\"${NSS_WRAPPER_PASSWD}\\" \\"${passwd_tmp}\\"\\n sed -i \\"/${CRUNCHY_NSS_USERNAME}:x:/d\\" \\"${passwd_tmp}\\"\\n # needed for OCP 4.x because crio updates /etc/passwd with an entry for USER_ID\\n sed -i \\"/${USER_ID}:x:/d\\" \\"${passwd_tmp}\\"\\n printf \'${CRUNCHY_NSS_USERNAME}:x:${USER_ID}:${GROUP_ID}:${CRUNCHY_NSS_USER_DESC}:${HOME}:/bin/bash\\\\n\' \\u003e\\u003e \\"${passwd_tmp}\\"\\n envsubst \\u003c \\"${passwd_tmp}\\" \\u003e \\"${NSS_WRAPPER_PASSWD}\\"\\n rm \\"${passwd_tmp}\\"\\nelse\\n echo \\"nss_wrapper: user exists\\"\\nfi\\n\\n# if the username (which will be the same as the group name) is missing from group file, then add it\\nif [[ ! $(cat \\"${NSS_WRAPPER_GROUP}\\") =~ ${CRUNCHY_NSS_USERNAME}:x:${USER_ID} ]]; then\\n echo \\"nss_wrapper: adding group\\"\\n group_tmp=\\"${NSS_WRAPPER_DIR}/group_tmp\\"\\n cp \\"${NSS_WRAPPER_GROUP}\\" \\"${group_tmp}\\"\\n sed -i \\"/${CRUNCHY_NSS_USERNAME}:x:/d\\" \\"${group_tmp}\\"\\n printf \'${CRUNCHY_NSS_USERNAME}:x:${USER_ID}:${CRUNCHY_NSS_USERNAME}\\\\n\' \\u003e\\u003e \\"${group_tmp}\\"\\n envsubst \\u003c \\"${group_tmp}\\" \\u003e \\"${NSS_WRAPPER_GROUP}\\"\\n rm \\"${group_tmp}\\"\\nelse\\n echo \\"nss_wrapper: group exists\\"\\nfi\\n\\n# export the nss_wrapper env vars\\n# define nss_wrapper directory and passwd \\u0026 group files that will be utilized by nss_wrapper\\nNSS_WRAPPER_DIR=\\"/tmp/nss_wrapper/${NSS_WRAPPER_SUBDIR}\\"\\nNSS_WRAPPER_PASSWD=\\"${NSS_WRAPPER_DIR}/passwd\\"\\nNSS_WRAPPER_GROUP=\\"${NSS_WRAPPER_DIR}/group\\"\\n\\nexport LD_PRELOAD=/usr/lib64/libnss_wrapper.so\\nexport NSS_WRAPPER_PASSWD=\\"${NSS_WRAPPER_PASSWD}\\"\\nexport NSS_WRAPPER_GROUP=\\"${NSS_WRAPPER_GROUP}\\"\\n\\necho \\"nss_wrapper: environment configured\\"\\n"\n ],\n "image": "docker.io/perconalab/percona-postgresql-operator:main-ppg18-postgres",\n "imagePullPolicy": "Always",\n "name": "nss-wrapper-init",\n "resources": {},\n "securityContext": {\n "allowPrivilegeEscalation": false,\n "capabilities": {\n "drop": [\n "ALL"\n ]\n },\n "privileged": false,\n "readOnlyRootFilesystem": true,\n "runAsNonRoot": true,\n "seccompProfile": {\n "type": "RuntimeDefault"\n }\n },\n "terminationMessagePath": "/dev/termination-log",\n "terminationMessagePolicy": "File",\n "volumeMounts": [\n {\n "mountPath": "/tmp",\n "name": "tmp"\n }\n ]\n }\n ],\n "restartPolicy": "Always",\n "schedulerName": "default-scheduler",\n "securityContext": {\n "fsGroup": 26,\n "fsGroupChangePolicy": "OnRootMismatch"\n },\n "serviceAccount": "additional-volumes-instance",\n "serviceAccountName": "additional-volumes-instance",\n "shareProcessNamespace": true,\n "terminationGracePeriodSeconds": 30,\n "topologySpreadConstraints": [\n {\n "labelSelector": {\n "matchExpressions": [\n {\n "key": "postgres-operator.crunchydata.com/data",\n "operator": "In",\n "values": [\n "postgres",\n "pgbackrest"\n ]\n }\n ],\n "matchLabels": {\n "postgres-operator.crunchydata.com/cluster": "additional-volumes"\n }\n },\n "maxSkew": 1,\n "topologyKey": "kubernetes.io/hostname",\n "whenUnsatisfiable": "ScheduleAnyway"\n },\n {\n "labelSelector": {\n "matchExpressions": [\n {\n "key": "postgres-operator.crunchydata.com/data",\n "operator": "In",\n "values": [\n "postgres",\n "pgbackrest"\n ]\n }\n ],\n "matchLabels": {\n "postgres-operator.crunchydata.com/cluster": "additional-volumes"\n }\n },\n "maxSkew": 1,\n "topologyKey": "topology.kubernetes.io/zone",\n "whenUnsatisfiable": "ScheduleAnyway"\n }\n ],\n "volumes": [\n {\n "name": "cert-volume",\n "projected": {\n "defaultMode": 384,\n "sources": [\n {\n "secret": {\n "items": [\n {\n "key": "tls.crt",\n "path": "tls.crt"\n },\n {\n "key": "tls.key",\n "path": "tls.key"\n },\n {\n "key": "ca.crt",\n "path": "ca.crt"\n }\n ],\n "name": "additional-volumes-cluster-cert"\n }\n },\n {\n "secret": {\n "items": [\n {\n "key": "tls.crt",\n "path": "replication/tls.crt"\n },\n {\n "key": "tls.key",\n "path": "replication/tls.key"\n },\n {\n "key": "ca.crt",\n "path": "replication/ca.crt"\n }\n ],\n "name": "additional-volumes-replication-cert"\n }\n }\n ]\n }\n },\n {\n "name": "postgres-data",\n "persistentVolumeClaim": {\n "claimName": "additional-volumes-instance1-24br-pgdata"\n }\n },\n {\n "downwardAPI": {\n "defaultMode": 420,\n "items": [\n {\n "path": "cpu_limit",\n "resourceFieldRef": {\n "containerName": "database",\n "divisor": "1m",\n "resource": "limits.cpu"\n }\n },\n {\n "path": "cpu_request",\n "resourceFieldRef": {\n "containerName": "database",\n "divisor": "1m",\n "resource": "requests.cpu"\n }\n },\n {\n "path": "mem_limit",\n "resourceFieldRef": {\n "containerName": "database",\n "divisor": "1Mi",\n "resource": "limits.memory"\n }\n },\n {\n "path": "mem_request",\n "resourceFieldRef": {\n "containerName": "database",\n "divisor": "1Mi",\n "resource": "requests.memory"\n }\n },\n {\n "fieldRef": {\n "apiVersion": "v1",\n "fieldPath": "metadata.labels"\n },\n "path": "labels"\n },\n {\n "fieldRef": {\n "apiVersion": "v1",\n "fieldPath": "metadata.annotations"\n },\n "path": "annotations"\n }\n ]\n },\n "name": "database-containerinfo"\n },\n {\n "name": "tablespace-myts",\n "persistentVolumeClaim": {\n "claimName": "additional-volumes-instance1-24br-myts-tablespace"\n }\n },\n {\n "name": "postgres-wal",\n "persistentVolumeClaim": {\n "claimName": "additional-volumes-instance1-24br-pgwal"\n }\n },\n {\n "name": "postgres-logs",\n "persistentVolumeClaim": {\n "claimName": "additional-volumes-instance1-24br-pglogs"\n }\n },\n {\n "name": "pgbackrest-server",\n "projected": {\n "defaultMode": 420,\n "sources": [\n {\n "secret": {\n "items": [\n {\n "key": "pgbackrest-server.crt",\n "path": "server-tls.crt"\n },\n {\n "key": "pgbackrest-server.key",\n "mode": 384,\n "path": "server-tls.key"\n }\n ],\n "name": "additional-volumes-instance1-24br-certs"\n }\n }\n ]\n }\n },\n {\n "name": "pgbackrest-config",\n "projected": {\n "defaultMode": 420,\n "sources": [\n {\n "configMap": {\n "items": [\n {\n "key": "pgbackrest_instance.conf",\n "path": "pgbackrest_instance.conf"\n },\n {\n "key": "config-hash",\n "path": "config-hash"\n },\n {\n "key": "pgbackrest-server.conf",\n "path": "~postgres-operator_server.conf"\n }\n ],\n "name": "additional-volumes-pgbackrest-config"\n }\n },\n {\n "secret": {\n "items": [\n {\n "key": "pgbackrest.ca-roots",\n "path": "~postgres-operator/tls-ca.crt"\n },\n {\n "key": "pgbackrest-client.crt",\n "path": "~postgres-operator/client-tls.crt"\n },\n {\n "key": "pgbackrest-client.key",\n "mode": 384,\n "path": "~postgres-operator/client-tls.key"\n }\n ],\n "name": "additional-volumes-pgbackrest"\n }\n }\n ]\n }\n },\n {\n "name": "patroni-config",\n "projected": {\n "defaultMode": 420,\n "sources": [\n {\n "configMap": {\n "items": [\n {\n "key": "patroni.yaml",\n "path": "~postgres-operator_cluster.yaml"\n }\n ],\n "name": "additional-volumes-config"\n }\n },\n {\n "configMap": {\n "items": [\n {\n "key": "patroni.yaml",\n "path": "~postgres-operator_instance.yaml"\n }\n ],\n "name": "additional-volumes-instance1-24br-config"\n }\n },\n {\n "secret": {\n "items": [\n {\n "key": "patroni.ca-roots",\n "path": "~postgres-operator/patroni.ca-roots"\n },\n {\n "key": "patroni.crt-combined",\n "path": "~postgres-operator/patroni.crt+key"\n }\n ],\n "name": "additional-volumes-instance1-24br-certs"\n }\n }\n ]\n }\n },\n {\n "emptyDir": {},\n "name": "crunchy-bin"\n },\n {\n "emptyDir": {\n "sizeLimit": "2Gi"\n },\n "name": "tmp"\n },\n {\n "emptyDir": {\n "medium": "Memory"\n },\n "name": "dshm"\n }\n ]\n }\n },\n "updateStrategy": {\n "type": "OnDelete"\n }\n },\n "status": {\n "availableReplicas": 1,\n "collisionCount": 0,\n "currentReplicas": 1,\n "currentRevision": "additional-volumes-instance1-24br-6849b5b674",\n "observedGeneration": 1,\n "readyReplicas": 1,\n "replicas": 1,\n "updateRevision": "additional-volumes-instance1-24br-6849b5b674",\n "updatedReplicas": 1\n }\n },\n {\n "apiVersion": "apps/v1",\n "kind": "StatefulSet",\n "metadata": {\n "annotations": {\n "pgv2.percona.com/logcollector-config-hash": "d9a116e02b828bdc02165325e92799d82961fb499041814c7c765d0ce263ce77"\n },\n "creationTimestamp": "2026-08-19T18:12:06Z",\n "generation": 1,\n "labels": {\n "app.kubernetes.io/component": "pg",\n "app.kubernetes.io/instance": "additional-volumes",\n "app.kubernetes.io/managed-by": "percona-postgresql-operator",\n "app.kubernetes.io/name": "percona-postgresql",\n "app.kubernetes.io/part-of": "percona-postgresql",\n "pgv2.percona.com/version": "3.2.0",\n "postgres-operator.crunchydata.com/cluster": "additional-volumes",\n "postgres-operator.crunchydata.com/data": "postgres",\n "postgres-operator.crunchydata.com/instance": "additional-volumes-instance1-n8pg",\n "postgres-operator.crunchydata.com/instance-set": "instance1"\n },\n "name": "additional-volumes-instance1-n8pg",\n "namespace": "kuttl-test-intimate-garfish",\n "ownerReferences": [\n {\n "apiVersion": "upstream.pgv2.percona.com/v1beta1",\n "blockOwnerDeletion": true,\n "controller": true,\n "kind": "PostgresCluster",\n "name": "additional-volumes",\n "uid": "b795649f-550b-4283-b2ef-eca573235e5a"\n }\n ],\n "resourceVersion": "1787163189863071003",\n "uid": "c2983a30-d942-42e2-9d6a-3e99691891fd"\n },\n "spec": {\n "persistentVolumeClaimRetentionPolicy": {\n "whenDeleted": "Retain",\n "whenScaled": "Retain"\n },\n "podManagementPolicy": "OrderedReady",\n "replicas": 1,\n "revisionHistoryLimit": 0,\n "selector": {\n "matchLabels": {\n "postgres-operator.crunchydata.com/cluster": "additional-volumes",\n "postgres-operator.crunchydata.com/instance": "additional-volumes-instance1-n8pg",\n "postgres-operator.crunchydata.com/instance-set": "instance1"\n }\n },\n "serviceName": "additional-volumes-pods",\n "template": {\n "metadata": {\n "annotations": {\n "kubectl.kubernetes.io/default-container": "database",\n "pgv2.percona.com/logcollector-config-hash": "d9a116e02b828bdc02165325e92799d82961fb499041814c7c765d0ce263ce77"\n },\n "creationTimestamp": null,\n "labels": {\n "app.kubernetes.io/component": "pg",\n "app.kubernetes.io/instance": "additional-volumes",\n "app.kubernetes.io/managed-by": "percona-postgresql-operator",\n "app.kubernetes.io/name": "percona-postgresql",\n "app.kubernetes.io/part-of": "percona-postgresql",\n "pgv2.percona.com/version": "3.2.0",\n "postgres-operator.crunchydata.com/cluster": "additional-volumes",\n "postgres-operator.crunchydata.com/data": "postgres",\n "postgres-operator.crunchydata.com/instance": "additional-volumes-instance1-n8pg",\n "postgres-operator.crunchydata.com/instance-set": "instance1",\n "postgres-operator.crunchydata.com/patroni": "additional-volumes-ha"\n }\n },\n "spec": {\n "affinity": {\n "podAntiAffinity": {\n "preferredDuringSchedulingIgnoredDuringExecution": [\n {\n "podAffinityTerm": {\n "labelSelector": {\n "matchLabels": {\n "postgres-operator.crunchydata.com/data": "postgres"\n }\n },\n "topologyKey": "kubernetes.io/hostname"\n },\n "weight": 1\n }\n ]\n }\n },\n "containers": [\n {\n "command": [\n "/opt/crunchy/bin/postgres-entrypoint.sh",\n "patroni",\n "/etc/patroni"\n ],\n "env": [\n {\n "name": "PGDATA",\n "value": "/pgdata/pg18"\n },\n {\n "name": "PGHOST",\n "value": "/tmp/postgres"\n },\n {\n "name": "PGPORT",\n "value": "5432"\n },\n {\n "name": "KRB5_CONFIG",\n "value": "/etc/postgres/krb5.conf"\n },\n {\n "name": "KRB5RCACHEDIR",\n "value": "/tmp"\n },\n {\n "name": "LDAPTLS_CACERT",\n "value": "/etc/postgres/ldap/ca.crt"\n },\n {\n "name": "LC_ALL",\n "value": "en_US.utf-8"\n },\n {\n "name": "LANG",\n "value": "en_US.utf-8"\n },\n {\n "name": "PATRONI_NAME",\n "valueFrom": {\n "fieldRef": {\n "apiVersion": "v1",\n "fieldPath": "metadata.name"\n }\n }\n },\n {\n "name": "PATRONI_KUBERNETES_POD_IP",\n "valueFrom": {\n "fieldRef": {\n "apiVersion": "v1",\n "fieldPath": "status.podIP"\n }\n }\n },\n {\n "name": "PATRONI_KUBERNETES_PORTS",\n "value": "- name: postgres\\n port: 5432\\n protocol: TCP\\n"\n },\n {\n "name": "PATRONI_POSTGRESQL_CONNECT_ADDRESS",\n "value": "$(PATRONI_NAME).additional-volumes-pods:5432"\n },\n {\n "name": "PATRONI_POSTGRESQL_LISTEN",\n "value": "*:5432"\n },\n {\n "name": "PATRONI_POSTGRESQL_CONFIG_DIR",\n "value": "/pgdata/pg18"\n },\n {\n "name": "PATRONI_POSTGRESQL_DATA_DIR",\n "value": "/pgdata/pg18"\n },\n {\n "name": "PATRONI_RESTAPI_CONNECT_ADDRESS",\n "value": "$(PATRONI_NAME).additional-volumes-pods:8008"\n },\n {\n "name": "PATRONI_RESTAPI_LISTEN",\n "value": "*:8008"\n },\n {\n "name": "PATRONICTL_CONFIG_FILE",\n "value": "/etc/patroni"\n },\n {\n "name": "LD_PRELOAD",\n "value": "/usr/lib64/libnss_wrapper.so"\n },\n {\n "name": "NSS_WRAPPER_PASSWD",\n "value": "/tmp/nss_wrapper/postgres/passwd"\n },\n {\n "name": "NSS_WRAPPER_GROUP",\n "value": "/tmp/nss_wrapper/postgres/group"\n }\n ],\n "image": "docker.io/perconalab/percona-postgresql-operator:main-ppg18-postgres",\n "imagePullPolicy": "Always",\n "livenessProbe": {\n "exec": {\n "command": [\n "bash",\n "-c",\n "/opt/crunchy/bin/postgres-liveness-check.sh"\n ]\n },\n "failureThreshold": 3,\n "initialDelaySeconds": 3,\n "periodSeconds": 10,\n "successThreshold": 1,\n "timeoutSeconds": 5\n },\n "name": "database",\n "ports": [\n {\n "containerPort": 5432,\n "name": "postgres",\n "protocol": "TCP"\n }\n ],\n "readinessProbe": {\n "exec": {\n "command": [\n "bash",\n "-c",\n "/opt/crunchy/bin/postgres-readiness-check.sh"\n ]\n },\n "failureThreshold": 3,\n "initialDelaySeconds": 3,\n "periodSeconds": 10,\n "successThreshold": 1,\n "timeoutSeconds": 5\n },\n "resources": {},\n "securityContext": {\n "allowPrivilegeEscalation": false,\n "capabilities": {\n "drop": [\n "ALL"\n ]\n },\n "privileged": false,\n "readOnlyRootFilesystem": true,\n "runAsNonRoot": true,\n "seccompProfile": {\n "type": "RuntimeDefault"\n }\n },\n "terminationMessagePath": "/dev/termination-log",\n "terminationMessagePolicy": "File",\n "volumeMounts": [\n {\n "mountPath": "/pgconf/tls",\n "name": "cert-volume",\n "readOnly": true\n },\n {\n "mountPath": "/pgdata",\n "name": "postgres-data"\n },\n {\n "mountPath": "/etc/database-containerinfo",\n "name": "database-containerinfo",\n "readOnly": true\n },\n {\n "mountPath": "/tablespaces/myts",\n "name": "tablespace-myts"\n },\n {\n "mountPath": "/pgwal",\n "name": "postgres-wal"\n },\n {\n "mountPath": "/pglogs",\n "name": "postgres-logs"\n },\n {\n "mountPath": "/etc/pgbackrest/conf.d",\n "name": "pgbackrest-config",\n "readOnly": true\n },\n {\n "mountPath": "/etc/patroni",\n "name": "patroni-config",\n "readOnly": true\n },\n {\n "mountPath": "/opt/crunchy",\n "name": "crunchy-bin"\n },\n {\n "mountPath": "/tmp",\n "name": "tmp"\n },\n {\n "mountPath": "/dev/shm",\n "name": "dshm"\n }\n ]\n },\n {\n "command": [\n "bash",\n "-ceu",\n "--",\n "monitor() {\\n# Parameters for curl when managing autogrow annotation.\\nAPISERVER=\\"https://kubernetes.default.svc\\"\\nSERVICEACCOUNT=\\"/var/run/secrets/kubernetes.io/serviceaccount\\"\\nNAMESPACE=$(cat ${SERVICEACCOUNT}/namespace)\\nTOKEN=$(cat ${SERVICEACCOUNT}/token)\\nCACERT=${SERVICEACCOUNT}/ca.crt\\n\\ndeclare -r directory=\\"/pgconf/tls\\"\\nexec {fd}\\u003c\\u003e \\u003c(:||:)\\nwhile read -r -t 5 -u \\"${fd}\\" ||:; do\\n # Manage replication certificate.\\n if [[ \\"${directory}\\" -nt \\"/proc/self/fd/${fd}\\" ]] \\u0026\\u0026\\n install -D --mode=0600 -t \\"/tmp/replication\\" \\"${directory}\\"/{replication/tls.crt,replication/tls.key,replication/ca.crt} \\u0026\\u0026\\n pkill -HUP --exact --parent=1 postgres\\n then\\n exec {fd}\\u003e\\u0026- \\u0026\\u0026 exec {fd}\\u003c\\u003e \\u003c(:||:)\\n stat --format=\'Loaded certificates dated %y\' \\"${directory}\\"\\n fi\\n\\ndone\\n}; export -f monitor; exec -a \\"$0\\" bash -ceu monitor",\n "replication-cert-copy"\n ],\n "image": "docker.io/perconalab/percona-postgresql-operator:main-ppg18-postgres",\n "imagePullPolicy": "Always",\n "name": "replication-cert-copy",\n "resources": {},\n "securityContext": {\n "allowPrivilegeEscalation": false,\n "capabilities": {\n "drop": [\n "ALL"\n ]\n },\n "privileged": false,\n "readOnlyRootFilesystem": true,\n "runAsNonRoot": true,\n "seccompProfile": {\n "type": "RuntimeDefault"\n }\n },\n "terminationMessagePath": "/dev/termination-log",\n "terminationMessagePolicy": "File",\n "volumeMounts": [\n {\n "mountPath": "/pgconf/tls",\n "name": "cert-volume",\n "readOnly": true\n },\n {\n "mountPath": "/pgdata",\n "name": "postgres-data"\n },\n {\n "mountPath": "/tmp",\n "name": "tmp"\n }\n ]\n },\n {\n "args": [\n "fluent-bit"\n ],\n "command": [\n "/opt/crunchy/logcollector/entrypoint.sh"\n ],\n "env": [\n {\n "name": "PG_LOG_DIR",\n "value": "/pgdata/pg18/log"\n },\n {\n "name": "PGBACKREST_LOG_DIR",\n "value": "/pgdata/pgbackrest/log"\n },\n {\n "name": "POD_NAMESPACE",\n "valueFrom": {\n "fieldRef": {\n "apiVersion": "v1",\n "fieldPath": "metadata.namespace"\n }\n }\n },\n {\n "name": "POD_NAME",\n "valueFrom": {\n "fieldRef": {\n "apiVersion": "v1",\n "fieldPath": "metadata.name"\n }\n }\n }\n ],\n "image": "docker.io/perconalab/fluentbit:main-logcollector",\n "imagePullPolicy": "IfNotPresent",\n "name": "logs",\n "resources": {},\n "securityContext": {\n "allowPrivilegeEscalation": false,\n "capabilities": {\n "drop": [\n "ALL"\n ]\n },\n "privileged": false,\n "runAsGroup": 26,\n "runAsNonRoot": true,\n "runAsUser": 26,\n "seccompProfile": {\n "type": "RuntimeDefault"\n }\n },\n "terminationMessagePath": "/dev/termination-log",\n "terminationMessagePolicy": "File",\n "volumeMounts": [\n {\n "mountPath": "/pgdata",\n "name": "postgres-data"\n },\n {\n "mountPath": "/opt/crunchy",\n "name": "crunchy-bin"\n },\n {\n "mountPath": "/tmp",\n "name": "tmp"\n }\n ]\n },\n {\n "args": [\n "logrotate"\n ],\n "command": [\n "/opt/crunchy/logcollector/entrypoint.sh"\n ],\n "env": [\n {\n "name": "POD_NAMESPACE",\n "valueFrom": {\n "fieldRef": {\n "apiVersion": "v1",\n "fieldPath": "metadata.namespace"\n }\n }\n },\n {\n "name": "POD_NAME",\n "valueFrom": {\n "fieldRef": {\n "apiVersion": "v1",\n "fieldPath": "metadata.name"\n }\n }\n },\n {\n "name": "LOGROTATE_SCHEDULE",\n "value": "0 0 * * *"\n },\n {\n "name": "LD_PRELOAD",\n "value": "/tmp/nss_wrapper/libnss_wrapper.so"\n },\n {\n "name": "NSS_WRAPPER_PASSWD",\n "value": "/tmp/nss_wrapper/postgres/passwd"\n },\n {\n "name": "NSS_WRAPPER_GROUP",\n "value": "/tmp/nss_wrapper/postgres/group"\n }\n ],\n "image": "docker.io/perconalab/fluentbit:main-logcollector",\n "imagePullPolicy": "IfNotPresent",\n "name": "logrotate",\n "resources": {},\n "securityContext": {\n "allowPrivilegeEscalation": false,\n "capabilities": {\n "drop": [\n "ALL"\n ]\n },\n "privileged": false,\n "runAsGroup": 26,\n "runAsNonRoot": true,\n "runAsUser": 26,\n "seccompProfile": {\n "type": "RuntimeDefault"\n }\n },\n "terminationMessagePath": "/dev/termination-log",\n "terminationMessagePolicy": "File",\n "volumeMounts": [\n {\n "mountPath": "/pgdata",\n "name": "postgres-data"\n },\n {\n "mountPath": "/opt/crunchy",\n "name": "crunchy-bin"\n },\n {\n "mountPath": "/tmp",\n "name": "tmp"\n }\n ]\n },\n {\n "command": [\n "pgbackrest",\n "server"\n ],\n "env": [\n {\n "name": "LD_PRELOAD",\n "value": "/usr/lib64/libnss_wrapper.so"\n },\n {\n "name": "NSS_WRAPPER_PASSWD",\n "value": "/tmp/nss_wrapper/postgres/passwd"\n },\n {\n "name": "NSS_WRAPPER_GROUP",\n "value": "/tmp/nss_wrapper/postgres/group"\n }\n ],\n "image": "docker.io/perconalab/percona-postgresql-operator:main-pgbackrest18",\n "imagePullPolicy": "Always",\n "livenessProbe": {\n "exec": {\n "command": [\n "pgbackrest",\n "server-ping"\n ]\n },\n "failureThreshold": 3,\n "periodSeconds": 10,\n "successThreshold": 1,\n "timeoutSeconds": 1\n },\n "name": "pgbackrest",\n "resources": {},\n "securityContext": {\n "allowPrivilegeEscalation": false,\n "capabilities": {\n "drop": [\n "ALL"\n ]\n },\n "privileged": false,\n "readOnlyRootFilesystem": true,\n "runAsNonRoot": true,\n "seccompProfile": {\n "type": "RuntimeDefault"\n }\n },\n "terminationMessagePath": "/dev/termination-log",\n "terminationMessagePolicy": "File",\n "volumeMounts": [\n {\n "mountPath": "/etc/pgbackrest/server",\n "name": "pgbackrest-server",\n "readOnly": true\n },\n {\n "mountPath": "/pgdata",\n "name": "postgres-data"\n },\n {\n "mountPath": "/tablespaces/myts",\n "name": "tablespace-myts"\n },\n {\n "mountPath": "/pgwal",\n "name": "postgres-wal"\n },\n {\n "mountPath": "/etc/pgbackrest/conf.d",\n "name": "pgbackrest-config",\n "readOnly": true\n },\n {\n "mountPath": "/tmp",\n "name": "tmp"\n }\n ]\n },\n {\n "command": [\n "bash",\n "-ceu",\n "--",\n "monitor() {\\nexec {fd}\\u003c\\u003e \\u003c(:||:)\\nuntil read -r -t 5 -u \\"${fd}\\"; do\\n if\\n [[ \\"${filename}\\" -nt \\"/proc/self/fd/${fd}\\" ]] \\u0026\\u0026\\n pkill -HUP --exact --parent=0 pgbackrest\\n then\\n exec {fd}\\u003e\\u0026- \\u0026\\u0026 exec {fd}\\u003c\\u003e \\u003c(:||:)\\n stat --dereference --format=\'Loaded configuration dated %y\' \\"${filename}\\"\\n elif\\n { [[ \\"${directory}\\" -nt \\"/proc/self/fd/${fd}\\" ]] ||\\n [[ \\"${authority}\\" -nt \\"/proc/self/fd/${fd}\\" ]]\\n } \\u0026\\u0026\\n pkill -HUP --exact --parent=0 pgbackrest\\n then\\n exec {fd}\\u003e\\u0026- \\u0026\\u0026 exec {fd}\\u003c\\u003e \\u003c(:||:)\\n stat --format=\'Loaded certificates dated %y\' \\"${directory}\\"\\n fi\\ndone\\n}; export directory=\\"$1\\" authority=\\"$2\\" filename=\\"$3\\"; export -f monitor; exec -a \\"$0\\" bash -ceu monitor",\n "pgbackrest-config",\n "/etc/pgbackrest/server",\n "/etc/pgbackrest/conf.d/~postgres-operator/tls-ca.crt",\n "/etc/pgbackrest/conf.d/~postgres-operator_server.conf"\n ],\n "image": "docker.io/perconalab/percona-postgresql-operator:main-pgbackrest18",\n "imagePullPolicy": "Always",\n "name": "pgbackrest-config",\n "resources": {},\n "securityContext": {\n "allowPrivilegeEscalation": false,\n "capabilities": {\n "drop": [\n "ALL"\n ]\n },\n "privileged": false,\n "readOnlyRootFilesystem": true,\n "runAsNonRoot": true,\n "seccompProfile": {\n "type": "RuntimeDefault"\n }\n },\n "terminationMessagePath": "/dev/termination-log",\n "terminationMessagePolicy": "File",\n "volumeMounts": [\n {\n "mountPath": "/etc/pgbackrest/server",\n "name": "pgbackrest-server",\n "readOnly": true\n },\n {\n "mountPath": "/etc/pgbackrest/conf.d",\n "name": "pgbackrest-config",\n "readOnly": true\n },\n {\n "mountPath": "/tmp",\n "name": "tmp"\n }\n ]\n }\n ],\n "dnsPolicy": "ClusterFirst",\n "enableServiceLinks": false,\n "initContainers": [\n {\n "command": [\n "/usr/local/bin/init-entrypoint.sh"\n ],\n "image": "docker.io/perconalab/percona-postgresql-operator:PR-1760-4947a0272",\n "imagePullPolicy": "Always",\n "name": "database-init",\n "resources": {},\n "securityContext": {\n "allowPrivilegeEscalation": false,\n "capabilities": {\n "drop": [\n "ALL"\n ]\n },\n "privileged": false,\n "readOnlyRootFilesystem": true,\n "runAsNonRoot": true,\n "seccompProfile": {\n "type": "RuntimeDefault"\n }\n },\n "terminationMessagePath": "/dev/termination-log",\n "terminationMessagePolicy": "File",\n "volumeMounts": [\n {\n "mountPath": "/opt/crunchy",\n "name": "crunchy-bin"\n },\n {\n "mountPath": "/tmp",\n "name": "tmp"\n }\n ]\n },\n {\n "command": [\n "bash",\n "-ceu",\n "--",\n "declare -r expected_major_version=\\"$1\\" pgwal_directory=\\"$2\\" pgbrLog_directory=\\"$3\\"\\npermissions() { while [[ -n \\"$1\\" ]]; do set \\"${1%/*}\\" \\"$@\\"; done; shift; stat -Lc \'%A %4u %4g %n\' \\"$@\\"; }\\nhalt() { local rc=$?; \\u003e\\u00262 echo \\"$@\\"; exit \\"${rc/#0/1}\\"; }\\nresults() { printf \'::postgres-operator: %s::%s\\\\n\' \\"$@\\"; }\\nrecreate() (\\n local tmp; tmp=$(mktemp -d -p \\"${1%/*}\\"); GLOBIGNORE=\'.:..\'; set -x\\n chmod \\"$2\\" \\"${tmp}\\"; mv \\"$1\\"/* \\"${tmp}\\"; rmdir \\"$1\\"; mv \\"${tmp}\\" \\"$1\\"\\n)\\nsafelink() (\\n local desired=\\"$1\\" name=\\"$2\\" current\\n current=$(realpath \\"${name}\\")\\n if [[ \\"${current}\\" == \\"${desired}\\" ]]; then return; fi\\n set -x; mv --no-target-directory \\"${current}\\" \\"${desired}\\"\\n ln --no-dereference --force --symbolic \\"${desired}\\" \\"${name}\\"\\n)\\necho Initializing ...\\nresults \'uid\' \\"$(id -u ||:)\\" \'gid\' \\"$(id -G ||:)\\"\\nif [[ \\"${pgwal_directory}\\" == *\\"pgwal/\\"* ]] \\u0026\\u0026 [[ ! -d \\"/pgwal/pgbackrest-spool\\" ]];then rm -rf \\"/pgdata/pgbackrest-spool\\" \\u0026\\u0026 mkdir -p \\"/pgwal/pgbackrest-spool\\" \\u0026\\u0026 ln --force --symbolic \\"/pgwal/pgbackrest-spool\\" \\"/pgdata/pgbackrest-spool\\";fi\\nif [[ ! -e \\"/pgdata/pgbackrest-spool\\" ]];then rm -rf /pgdata/pgbackrest-spool;fi\\nif [[ ! -e \\"/pgdata/logs/postgres\\" ]];then rm -rf \\"/pgdata/logs/postgres\\";fi\\nif [[ ! -e \\"${pgbrLog_directory}\\" ]];then rm -rf \\"${pgbrLog_directory}\\";fi\\nif [[ -d \\"/pglogs\\" ]];then install --directory --mode=0775 \\"/pglogs/postgres\\" \\"/pglogs/pgbackrest/log\\";if [[ ! -L \\"/pgdata/logs/postgres\\" ]];then mkdir -p \\"/pgdata/logs\\" \\u0026\\u0026 rm -rf \\"/pgdata/logs/postgres\\" \\u0026\\u0026 ln --symbolic \\"/pglogs/postgres\\" \\"/pgdata/logs/postgres\\";fi;if [[ ! -L \\"${pgbrLog_directory}\\" ]];then mkdir -p \\"${pgbrLog_directory%/*}\\" \\u0026\\u0026 rm -rf \\"${pgbrLog_directory}\\" \\u0026\\u0026 ln --symbolic \\"/pglogs/pgbackrest/log\\" \\"${pgbrLog_directory}\\";fi;fi\\nresults \'postgres path\' \\"$(command -v postgres ||:)\\"\\nresults \'postgres version\' \\"${postgres_version:=$(postgres --version ||:)}\\"\\n[[ \\"${postgres_version}\\" =~ \\") ${expected_major_version}\\"($|[^0-9]) ]] ||\\nhalt Expected PostgreSQL version \\"${expected_major_version}\\"\\nresults \'config directory\' \\"${PGDATA:?}\\"\\npostgres_data_directory=$([[ -d \\"${PGDATA}\\" ]] \\u0026\\u0026 postgres -C data_directory || echo \\"${PGDATA}\\")\\nresults \'data directory\' \\"${postgres_data_directory}\\"\\n[[ \\"${postgres_data_directory}\\" == \\"${PGDATA}\\" ]] ||\\nhalt Expected matching config and data directories\\nbootstrap_dir=\\"${postgres_data_directory}_bootstrap\\"\\n[[ -d \\"${bootstrap_dir}\\" ]] \\u0026\\u0026 results \'bootstrap directory\' \\"${bootstrap_dir}\\"\\n[[ -d \\"${bootstrap_dir}\\" ]] \\u0026\\u0026 postgres_data_directory=\\"${bootstrap_dir}\\"\\nif [[ ! -e \\"${postgres_data_directory}\\" || -O \\"${postgres_data_directory}\\" ]]; then\\ninstall --directory --mode=0700 \\"${postgres_data_directory}\\"\\nelif [[ -w \\"${postgres_data_directory}\\" \\u0026\\u0026 -g \\"${postgres_data_directory}\\" ]]; then\\nrecreate \\"${postgres_data_directory}\\" \'0700\'\\nelse (halt Permissions!); fi ||\\nhalt \\"$(permissions \\"${postgres_data_directory}\\" ||:)\\"\\nresults \'pgBackRest log directory\' \\"${pgbrLog_directory}\\"\\ninstall --directory --mode=0775 \\"${pgbrLog_directory}\\" ||\\nhalt \\"$(permissions \\"${pgbrLog_directory}\\" ||:)\\"\\ninstall -D --mode=0600 -t \\"/tmp/replication\\" \\"/pgconf/tls/replication\\"/{tls.crt,tls.key,ca.crt}\\n\\ntablespace_dir=/tablespaces/myts/data\\nif [[ ! -e \\"${tablespace_dir}\\" || -O \\"${tablespace_dir}\\" ]]; then\\ninstall --directory --mode=0700 \\"${tablespace_dir}\\"\\nelif [[ -w \\"${tablespace_dir}\\" \\u0026\\u0026 -g \\"${tablespace_dir}\\" ]]; then\\nrecreate \\"${tablespace_dir}\\" \'0700\'\\nelse (halt Permissions!); fi ||\\nhalt \\"$(permissions \\"${tablespace_dir}\\" ||:)\\"\\n[[ -f \\"${postgres_data_directory}/PG_VERSION\\" ]] || exit 0\\nresults \'data version\' \\"${postgres_data_version:=$(\\u003c \\"${postgres_data_directory}/PG_VERSION\\")}\\"\\n[[ \\"${postgres_data_version}\\" == \\"${expected_major_version}\\" ]] ||\\nhalt Expected PostgreSQL data version \\"${expected_major_version}\\"\\n[[ ! -f \\"${postgres_data_directory}/postgresql.conf\\" ]] \\u0026\\u0026\\ntouch \\"${postgres_data_directory}/postgresql.conf\\"\\nsafelink \\"${pgwal_directory}\\" \\"${postgres_data_directory}/pg_wal\\"\\nresults \'wal directory\' \\"$(realpath \\"${postgres_data_directory}/pg_wal\\" ||:)\\"\\nrm -f \\"${postgres_data_directory}/recovery.signal\\"",\n "startup",\n "18",\n "/pgwal/pg18_wal",\n "/pgdata/pgbackrest/log"\n ],\n "env": [\n {\n "name": "PGDATA",\n "value": "/pgdata/pg18"\n },\n {\n "name": "PGHOST",\n "value": "/tmp/postgres"\n },\n {\n "name": "PGPORT",\n "value": "5432"\n },\n {\n "name": "KRB5_CONFIG",\n "value": "/etc/postgres/krb5.conf"\n },\n {\n "name": "KRB5RCACHEDIR",\n "value": "/tmp"\n },\n {\n "name": "LDAPTLS_CACERT",\n "value": "/etc/postgres/ldap/ca.crt"\n },\n {\n "name": "LC_ALL",\n "value": "en_US.utf-8"\n },\n {\n "name": "LANG",\n "value": "en_US.utf-8"\n }\n ],\n "image": "docker.io/perconalab/percona-postgresql-operator:main-ppg18-postgres",\n "imagePullPolicy": "Always",\n "name": "postgres-startup",\n "resources": {},\n "securityContext": {\n "allowPrivilegeEscalation": false,\n "capabilities": {\n "drop": [\n "ALL"\n ]\n },\n "privileged": false,\n "readOnlyRootFilesystem": true,\n "runAsNonRoot": true,\n "seccompProfile": {\n "type": "RuntimeDefault"\n }\n },\n "terminationMessagePath": "/dev/termination-log",\n "terminationMessagePolicy": "File",\n "volumeMounts": [\n {\n "mountPath": "/pgconf/tls",\n "name": "cert-volume",\n "readOnly": true\n },\n {\n "mountPath": "/pgdata",\n "name": "postgres-data"\n },\n {\n "mountPath": "/tablespaces/myts",\n "name": "tablespace-myts"\n },\n {\n "mountPath": "/pgwal",\n "name": "postgres-wal"\n },\n {\n "mountPath": "/pglogs",\n "name": "postgres-logs"\n },\n {\n "mountPath": "/tmp",\n "name": "tmp"\n }\n ]\n },\n {\n "command": [\n "bash",\n "-c",\n "mkdir -p /tmp/nss_wrapper \\u0026\\u0026 { [[ -f /tmp/nss_wrapper/libnss_wrapper.so ]] || cp /usr/lib64/libnss_wrapper.so /tmp/nss_wrapper/libnss_wrapper.so; }"\n ],\n "image": "docker.io/perconalab/percona-postgresql-operator:main-ppg18-postgres",\n "imagePullPolicy": "Always",\n "name": "nss-wrapper-init-logcollector",\n "resources": {},\n "securityContext": {\n "allowPrivilegeEscalation": false,\n "capabilities": {\n "drop": [\n "ALL"\n ]\n },\n "privileged": false,\n "runAsGroup": 26,\n "runAsNonRoot": true,\n "runAsUser": 26,\n "seccompProfile": {\n "type": "RuntimeDefault"\n }\n },\n "terminationMessagePath": "/dev/termination-log",\n "terminationMessagePolicy": "File",\n "volumeMounts": [\n {\n "mountPath": "/tmp",\n "name": "tmp"\n }\n ]\n },\n {\n "command": [\n "bash",\n "-c",\n "export NSS_WRAPPER_SUBDIR=postgres CRUNCHY_NSS_USERNAME=postgres CRUNCHY_NSS_USER_DESC=\\"postgres\\" \\n# Define nss_wrapper directory and passwd \\u0026 group files that will be utilized by nss_wrapper. The\\n# nss_wrapper_env.sh script (which also sets these vars) isn\'t sourced here since the nss_wrapper\\n# has not yet been setup, and we therefore don\'t yet want the nss_wrapper vars in the environment.\\nmkdir -p /tmp/nss_wrapper\\nchmod g+rwx /tmp/nss_wrapper\\n\\nNSS_WRAPPER_DIR=\\"/tmp/nss_wrapper/${NSS_WRAPPER_SUBDIR}\\"\\nNSS_WRAPPER_PASSWD=\\"${NSS_WRAPPER_DIR}/passwd\\"\\nNSS_WRAPPER_GROUP=\\"${NSS_WRAPPER_DIR}/group\\"\\n\\n# create the nss_wrapper directory\\nmkdir -p \\"${NSS_WRAPPER_DIR}\\"\\n\\n# grab the current user ID and group ID\\nUSER_ID=$(id -u)\\nexport USER_ID\\nGROUP_ID=$(id -g)\\nexport GROUP_ID\\n\\n# get copies of the passwd and group files\\n[[ -f \\"${NSS_WRAPPER_PASSWD}\\" ]] || cp \\"/etc/passwd\\" \\"${NSS_WRAPPER_PASSWD}\\"\\n[[ -f \\"${NSS_WRAPPER_GROUP}\\" ]] || cp \\"/etc/group\\" \\"${NSS_WRAPPER_GROUP}\\"\\n\\n# if the username is missing from the passwd file, then add it\\nif [[ ! $(cat \\"${NSS_WRAPPER_PASSWD}\\") =~ ${CRUNCHY_NSS_USERNAME}:x:${USER_ID} ]]; then\\n echo \\"nss_wrapper: adding user\\"\\n passwd_tmp=\\"${NSS_WRAPPER_DIR}/passwd_tmp\\"\\n cp \\"${NSS_WRAPPER_PASSWD}\\" \\"${passwd_tmp}\\"\\n sed -i \\"/${CRUNCHY_NSS_USERNAME}:x:/d\\" \\"${passwd_tmp}\\"\\n # needed for OCP 4.x because crio updates /etc/passwd with an entry for USER_ID\\n sed -i \\"/${USER_ID}:x:/d\\" \\"${passwd_tmp}\\"\\n printf \'${CRUNCHY_NSS_USERNAME}:x:${USER_ID}:${GROUP_ID}:${CRUNCHY_NSS_USER_DESC}:${HOME}:/bin/bash\\\\n\' \\u003e\\u003e \\"${passwd_tmp}\\"\\n envsubst \\u003c \\"${passwd_tmp}\\" \\u003e \\"${NSS_WRAPPER_PASSWD}\\"\\n rm \\"${passwd_tmp}\\"\\nelse\\n echo \\"nss_wrapper: user exists\\"\\nfi\\n\\n# if the username (which will be the same as the group name) is missing from group file, then add it\\nif [[ ! $(cat \\"${NSS_WRAPPER_GROUP}\\") =~ ${CRUNCHY_NSS_USERNAME}:x:${USER_ID} ]]; then\\n echo \\"nss_wrapper: adding group\\"\\n group_tmp=\\"${NSS_WRAPPER_DIR}/group_tmp\\"\\n cp \\"${NSS_WRAPPER_GROUP}\\" \\"${group_tmp}\\"\\n sed -i \\"/${CRUNCHY_NSS_USERNAME}:x:/d\\" \\"${group_tmp}\\"\\n printf \'${CRUNCHY_NSS_USERNAME}:x:${USER_ID}:${CRUNCHY_NSS_USERNAME}\\\\n\' \\u003e\\u003e \\"${group_tmp}\\"\\n envsubst \\u003c \\"${group_tmp}\\" \\u003e \\"${NSS_WRAPPER_GROUP}\\"\\n rm \\"${group_tmp}\\"\\nelse\\n echo \\"nss_wrapper: group exists\\"\\nfi\\n\\n# export the nss_wrapper env vars\\n# define nss_wrapper directory and passwd \\u0026 group files that will be utilized by nss_wrapper\\nNSS_WRAPPER_DIR=\\"/tmp/nss_wrapper/${NSS_WRAPPER_SUBDIR}\\"\\nNSS_WRAPPER_PASSWD=\\"${NSS_WRAPPER_DIR}/passwd\\"\\nNSS_WRAPPER_GROUP=\\"${NSS_WRAPPER_DIR}/group\\"\\n\\nexport LD_PRELOAD=/usr/lib64/libnss_wrapper.so\\nexport NSS_WRAPPER_PASSWD=\\"${NSS_WRAPPER_PASSWD}\\"\\nexport NSS_WRAPPER_GROUP=\\"${NSS_WRAPPER_GROUP}\\"\\n\\necho \\"nss_wrapper: environment configured\\"\\n"\n ],\n "image": "docker.io/perconalab/percona-postgresql-operator:main-ppg18-postgres",\n "imagePullPolicy": "Always",\n "name": "nss-wrapper-init",\n "resources": {},\n "securityContext": {\n "allowPrivilegeEscalation": false,\n "capabilities": {\n "drop": [\n "ALL"\n ]\n },\n "privileged": false,\n "readOnlyRootFilesystem": true,\n "runAsNonRoot": true,\n "seccompProfile": {\n "type": "RuntimeDefault"\n }\n },\n "terminationMessagePath": "/dev/termination-log",\n "terminationMessagePolicy": "File",\n "volumeMounts": [\n {\n "mountPath": "/tmp",\n "name": "tmp"\n }\n ]\n }\n ],\n "restartPolicy": "Always",\n "schedulerName": "default-scheduler",\n "securityContext": {\n "fsGroup": 26,\n "fsGroupChangePolicy": "OnRootMismatch"\n },\n "serviceAccount": "additional-volumes-instance",\n "serviceAccountName": "additional-volumes-instance",\n "shareProcessNamespace": true,\n "terminationGracePeriodSeconds": 30,\n "topologySpreadConstraints": [\n {\n "labelSelector": {\n "matchExpressions": [\n {\n "key": "postgres-operator.crunchydata.com/data",\n "operator": "In",\n "values": [\n "postgres",\n "pgbackrest"\n ]\n }\n ],\n "matchLabels": {\n "postgres-operator.crunchydata.com/cluster": "additional-volumes"\n }\n },\n "maxSkew": 1,\n "topologyKey": "kubernetes.io/hostname",\n "whenUnsatisfiable": "ScheduleAnyway"\n },\n {\n "labelSelector": {\n "matchExpressions": [\n {\n "key": "postgres-operator.crunchydata.com/data",\n "operator": "In",\n "values": [\n "postgres",\n "pgbackrest"\n ]\n }\n ],\n "matchLabels": {\n "postgres-operator.crunchydata.com/cluster": "additional-volumes"\n }\n },\n "maxSkew": 1,\n "topologyKey": "topology.kubernetes.io/zone",\n "whenUnsatisfiable": "ScheduleAnyway"\n }\n ],\n "volumes": [\n {\n "name": "cert-volume",\n "projected": {\n "defaultMode": 384,\n "sources": [\n {\n "secret": {\n "items": [\n {\n "key": "tls.crt",\n "path": "tls.crt"\n },\n {\n "key": "tls.key",\n "path": "tls.key"\n },\n {\n "key": "ca.crt",\n "path": "ca.crt"\n }\n ],\n "name": "additional-volumes-cluster-cert"\n }\n },\n {\n "secret": {\n "items": [\n {\n "key": "tls.crt",\n "path": "replication/tls.crt"\n },\n {\n "key": "tls.key",\n "path": "replication/tls.key"\n },\n {\n "key": "ca.crt",\n "path": "replication/ca.crt"\n }\n ],\n "name": "additional-volumes-replication-cert"\n }\n }\n ]\n }\n },\n {\n "name": "postgres-data",\n "persistentVolumeClaim": {\n "claimName": "additional-volumes-instance1-n8pg-pgdata"\n }\n },\n {\n "downwardAPI": {\n "defaultMode": 420,\n "items": [\n {\n "path": "cpu_limit",\n "resourceFieldRef": {\n "containerName": "database",\n "divisor": "1m",\n "resource": "limits.cpu"\n }\n },\n {\n "path": "cpu_request",\n "resourceFieldRef": {\n "containerName": "database",\n "divisor": "1m",\n "resource": "requests.cpu"\n }\n },\n {\n "path": "mem_limit",\n "resourceFieldRef": {\n "containerName": "database",\n "divisor": "1Mi",\n "resource": "limits.memory"\n }\n },\n {\n "path": "mem_request",\n "resourceFieldRef": {\n "containerName": "database",\n "divisor": "1Mi",\n "resource": "requests.memory"\n }\n },\n {\n "fieldRef": {\n "apiVersion": "v1",\n "fieldPath": "metadata.labels"\n },\n "path": "labels"\n },\n {\n "fieldRef": {\n "apiVersion": "v1",\n "fieldPath": "metadata.annotations"\n },\n "path": "annotations"\n }\n ]\n },\n "name": "database-containerinfo"\n },\n {\n "name": "tablespace-myts",\n "persistentVolumeClaim": {\n "claimName": "additional-volumes-instance1-n8pg-myts-tablespace"\n }\n },\n {\n "name": "postgres-wal",\n "persistentVolumeClaim": {\n "claimName": "additional-volumes-instance1-n8pg-pgwal"\n }\n },\n {\n "name": "postgres-logs",\n "persistentVolumeClaim": {\n "claimName": "additional-volumes-instance1-n8pg-pglogs"\n }\n },\n {\n "name": "pgbackrest-server",\n "projected": {\n "defaultMode": 420,\n "sources": [\n {\n "secret": {\n "items": [\n {\n "key": "pgbackrest-server.crt",\n "path": "server-tls.crt"\n },\n {\n "key": "pgbackrest-server.key",\n "mode": 384,\n "path": "server-tls.key"\n }\n ],\n "name": "additional-volumes-instance1-n8pg-certs"\n }\n }\n ]\n }\n },\n {\n "name": "pgbackrest-config",\n "projected": {\n "defaultMode": 420,\n "sources": [\n {\n "configMap": {\n "items": [\n {\n "key": "pgbackrest_instance.conf",\n "path": "pgbackrest_instance.conf"\n },\n {\n "key": "config-hash",\n "path": "config-hash"\n },\n {\n "key": "pgbackrest-server.conf",\n "path": "~postgres-operator_server.conf"\n }\n ],\n "name": "additional-volumes-pgbackrest-config"\n }\n },\n {\n "secret": {\n "items": [\n {\n "key": "pgbackrest.ca-roots",\n "path": "~postgres-operator/tls-ca.crt"\n },\n {\n "key": "pgbackrest-client.crt",\n "path": "~postgres-operator/client-tls.crt"\n },\n {\n "key": "pgbackrest-client.key",\n "mode": 384,\n "path": "~postgres-operator/client-tls.key"\n }\n ],\n "name": "additional-volumes-pgbackrest"\n }\n }\n ]\n }\n },\n {\n "name": "patroni-config",\n "projected": {\n "defaultMode": 420,\n "sources": [\n {\n "configMap": {\n "items": [\n {\n "key": "patroni.yaml",\n "path": "~postgres-operator_cluster.yaml"\n }\n ],\n "name": "additional-volumes-config"\n }\n },\n {\n "configMap": {\n "items": [\n {\n "key": "patroni.yaml",\n "path": "~postgres-operator_instance.yaml"\n }\n ],\n "name": "additional-volumes-instance1-n8pg-config"\n }\n },\n {\n "secret": {\n "items": [\n {\n "key": "patroni.ca-roots",\n "path": "~postgres-operator/patroni.ca-roots"\n },\n {\n "key": "patroni.crt-combined",\n "path": "~postgres-operator/patroni.crt+key"\n }\n ],\n "name": "additional-volumes-instance1-n8pg-certs"\n }\n }\n ]\n }\n },\n {\n "emptyDir": {},\n "name": "crunchy-bin"\n },\n {\n "emptyDir": {\n "sizeLimit": "2Gi"\n },\n "name": "tmp"\n },\n {\n "emptyDir": {\n "medium": "Memory"\n },\n "name": "dshm"\n }\n ]\n }\n },\n "updateStrategy": {\n "type": "OnDelete"\n }\n },\n "status": {\n "availableReplicas": 1,\n "collisionCount": 0,\n "currentReplicas": 1,\n "currentRevision": "additional-volumes-instance1-n8pg-7f58bcfdb6",\n "observedGeneration": 1,\n "readyReplicas": 1,\n "replicas": 1,\n "updateRevision": "additional-volumes-instance1-n8pg-7f58bcfdb6",\n "updatedReplicas": 1\n }\n },\n {\n "apiVersion": "apps/v1",\n "kind": "StatefulSet",\n "metadata": {\n "annotations": {\n "pgv2.percona.com/logcollector-config-hash": "d9a116e02b828bdc02165325e92799d82961fb499041814c7c765d0ce263ce77"\n },\n "creationTimestamp": "2026-08-19T18:12:05Z",\n "generation": 1,\n "labels": {\n "app.kubernetes.io/component": "pg",\n "app.kubernetes.io/instance": "additional-volumes",\n "app.kubernetes.io/managed-by": "percona-postgresql-operator",\n "app.kubernetes.io/name": "percona-postgresql",\n "app.kubernetes.io/part-of": "percona-postgresql",\n "pgv2.percona.com/version": "3.2.0",\n "postgres-operator.crunchydata.com/cluster": "additional-volumes",\n "postgres-operator.crunchydata.com/data": "postgres",\n "postgres-operator.crunchydata.com/instance": "additional-volumes-instance1-xvbw",\n "postgres-operator.crunchydata.com/instance-set": "instance1"\n },\n "name": "additional-volumes-instance1-xvbw",\n "namespace": "kuttl-test-intimate-garfish",\n "ownerReferences": [\n {\n "apiVersion": "upstream.pgv2.percona.com/v1beta1",\n "blockOwnerDeletion": true,\n "controller": true,\n "kind": "PostgresCluster",\n "name": "additional-volumes",\n "uid": "b795649f-550b-4283-b2ef-eca573235e5a"\n }\n ],\n "resourceVersion": "1787163193859951017",\n "uid": "ff0eabc4-a14f-43d4-85da-3372e3c9c0da"\n },\n "spec": {\n "persistentVolumeClaimRetentionPolicy": {\n "whenDeleted": "Retain",\n "whenScaled": "Retain"\n },\n "podManagementPolicy": "OrderedReady",\n "replicas": 1,\n "revisionHistoryLimit": 0,\n "selector": {\n "matchLabels": {\n "postgres-operator.crunchydata.com/cluster": "additional-volumes",\n "postgres-operator.crunchydata.com/instance": "additional-volumes-instance1-xvbw",\n "postgres-operator.crunchydata.com/instance-set": "instance1"\n }\n },\n "serviceName": "additional-volumes-pods",\n "template": {\n "metadata": {\n "annotations": {\n "kubectl.kubernetes.io/default-container": "database",\n "pgv2.percona.com/logcollector-config-hash": "d9a116e02b828bdc02165325e92799d82961fb499041814c7c765d0ce263ce77"\n },\n "creationTimestamp": null,\n "labels": {\n "app.kubernetes.io/component": "pg",\n "app.kubernetes.io/instance": "additional-volumes",\n "app.kubernetes.io/managed-by": "percona-postgresql-operator",\n "app.kubernetes.io/name": "percona-postgresql",\n "app.kubernetes.io/part-of": "percona-postgresql",\n "pgv2.percona.com/version": "3.2.0",\n "postgres-operator.crunchydata.com/cluster": "additional-volumes",\n "postgres-operator.crunchydata.com/data": "postgres",\n "postgres-operator.crunchydata.com/instance": "additional-volumes-instance1-xvbw",\n "postgres-operator.crunchydata.com/instance-set": "instance1",\n "postgres-operator.crunchydata.com/patroni": "additional-volumes-ha"\n }\n },\n "spec": {\n "affinity": {\n "podAntiAffinity": {\n "preferredDuringSchedulingIgnoredDuringExecution": [\n {\n "podAffinityTerm": {\n "labelSelector": {\n "matchLabels": {\n "postgres-operator.crunchydata.com/data": "postgres"\n }\n },\n "topologyKey": "kubernetes.io/hostname"\n },\n "weight": 1\n }\n ]\n }\n },\n "containers": [\n {\n "command": [\n "/opt/crunchy/bin/postgres-entrypoint.sh",\n "patroni",\n "/etc/patroni"\n ],\n "env": [\n {\n "name": "PGDATA",\n "value": "/pgdata/pg18"\n },\n {\n "name": "PGHOST",\n "value": "/tmp/postgres"\n },\n {\n "name": "PGPORT",\n "value": "5432"\n },\n {\n "name": "KRB5_CONFIG",\n "value": "/etc/postgres/krb5.conf"\n },\n {\n "name": "KRB5RCACHEDIR",\n "value": "/tmp"\n },\n {\n "name": "LDAPTLS_CACERT",\n "value": "/etc/postgres/ldap/ca.crt"\n },\n {\n "name": "LC_ALL",\n "value": "en_US.utf-8"\n },\n {\n "name": "LANG",\n "value": "en_US.utf-8"\n },\n {\n "name": "PATRONI_NAME",\n "valueFrom": {\n "fieldRef": {\n "apiVersion": "v1",\n "fieldPath": "metadata.name"\n }\n }\n },\n {\n "name": "PATRONI_KUBERNETES_POD_IP",\n "valueFrom": {\n "fieldRef": {\n "apiVersion": "v1",\n "fieldPath": "status.podIP"\n }\n }\n },\n {\n "name": "PATRONI_KUBERNETES_PORTS",\n "value": "- name: postgres\\n port: 5432\\n protocol: TCP\\n"\n },\n {\n "name": "PATRONI_POSTGRESQL_CONNECT_ADDRESS",\n "value": "$(PATRONI_NAME).additional-volumes-pods:5432"\n },\n {\n "name": "PATRONI_POSTGRESQL_LISTEN",\n "value": "*:5432"\n },\n {\n "name": "PATRONI_POSTGRESQL_CONFIG_DIR",\n "value": "/pgdata/pg18"\n },\n {\n "name": "PATRONI_POSTGRESQL_DATA_DIR",\n "value": "/pgdata/pg18"\n },\n {\n "name": "PATRONI_RESTAPI_CONNECT_ADDRESS",\n "value": "$(PATRONI_NAME).additional-volumes-pods:8008"\n },\n {\n "name": "PATRONI_RESTAPI_LISTEN",\n "value": "*:8008"\n },\n {\n "name": "PATRONICTL_CONFIG_FILE",\n "value": "/etc/patroni"\n },\n {\n "name": "LD_PRELOAD",\n "value": "/usr/lib64/libnss_wrapper.so"\n },\n {\n "name": "NSS_WRAPPER_PASSWD",\n "value": "/tmp/nss_wrapper/postgres/passwd"\n },\n {\n "name": "NSS_WRAPPER_GROUP",\n "value": "/tmp/nss_wrapper/postgres/group"\n }\n ],\n "image": "docker.io/perconalab/percona-postgresql-operator:main-ppg18-postgres",\n "imagePullPolicy": "Always",\n "livenessProbe": {\n "exec": {\n "command": [\n "bash",\n "-c",\n "/opt/crunchy/bin/postgres-liveness-check.sh"\n ]\n },\n "failureThreshold": 3,\n "initialDelaySeconds": 3,\n "periodSeconds": 10,\n "successThreshold": 1,\n "timeoutSeconds": 5\n },\n "name": "database",\n "ports": [\n {\n "containerPort": 5432,\n "name": "postgres",\n "protocol": "TCP"\n }\n ],\n "readinessProbe": {\n "exec": {\n "command": [\n "bash",\n "-c",\n "/opt/crunchy/bin/postgres-readiness-check.sh"\n ]\n },\n "failureThreshold": 3,\n "initialDelaySeconds": 3,\n "periodSeconds": 10,\n "successThreshold": 1,\n "timeoutSeconds": 5\n },\n "resources": {},\n "securityContext": {\n "allowPrivilegeEscalation": false,\n "capabilities": {\n "drop": [\n "ALL"\n ]\n },\n "privileged": false,\n "readOnlyRootFilesystem": true,\n "runAsNonRoot": true,\n "seccompProfile": {\n "type": "RuntimeDefault"\n }\n },\n "terminationMessagePath": "/dev/termination-log",\n "terminationMessagePolicy": "File",\n "volumeMounts": [\n {\n "mountPath": "/pgconf/tls",\n "name": "cert-volume",\n "readOnly": true\n },\n {\n "mountPath": "/pgdata",\n "name": "postgres-data"\n },\n {\n "mountPath": "/etc/database-containerinfo",\n "name": "database-containerinfo",\n "readOnly": true\n },\n {\n "mountPath": "/tablespaces/myts",\n "name": "tablespace-myts"\n },\n {\n "mountPath": "/pgwal",\n "name": "postgres-wal"\n },\n {\n "mountPath": "/pglogs",\n "name": "postgres-logs"\n },\n {\n "mountPath": "/etc/pgbackrest/conf.d",\n "name": "pgbackrest-config",\n "readOnly": true\n },\n {\n "mountPath": "/etc/patroni",\n "name": "patroni-config",\n "readOnly": true\n },\n {\n "mountPath": "/opt/crunchy",\n "name": "crunchy-bin"\n },\n {\n "mountPath": "/tmp",\n "name": "tmp"\n },\n {\n "mountPath": "/dev/shm",\n "name": "dshm"\n }\n ]\n },\n {\n "command": [\n "bash",\n "-ceu",\n "--",\n "monitor() {\\n# Parameters for curl when managing autogrow annotation.\\nAPISERVER=\\"https://kubernetes.default.svc\\"\\nSERVICEACCOUNT=\\"/var/run/secrets/kubernetes.io/serviceaccount\\"\\nNAMESPACE=$(cat ${SERVICEACCOUNT}/namespace)\\nTOKEN=$(cat ${SERVICEACCOUNT}/token)\\nCACERT=${SERVICEACCOUNT}/ca.crt\\n\\ndeclare -r directory=\\"/pgconf/tls\\"\\nexec {fd}\\u003c\\u003e \\u003c(:||:)\\nwhile read -r -t 5 -u \\"${fd}\\" ||:; do\\n # Manage replication certificate.\\n if [[ \\"${directory}\\" -nt \\"/proc/self/fd/${fd}\\" ]] \\u0026\\u0026\\n install -D --mode=0600 -t \\"/tmp/replication\\" \\"${directory}\\"/{replication/tls.crt,replication/tls.key,replication/ca.crt} \\u0026\\u0026\\n pkill -HUP --exact --parent=1 postgres\\n then\\n exec {fd}\\u003e\\u0026- \\u0026\\u0026 exec {fd}\\u003c\\u003e \\u003c(:||:)\\n stat --format=\'Loaded certificates dated %y\' \\"${directory}\\"\\n fi\\n\\ndone\\n}; export -f monitor; exec -a \\"$0\\" bash -ceu monitor",\n "replication-cert-copy"\n ],\n "image": "docker.io/perconalab/percona-postgresql-operator:main-ppg18-postgres",\n "imagePullPolicy": "Always",\n "name": "replication-cert-copy",\n "resources": {},\n "securityContext": {\n "allowPrivilegeEscalation": false,\n "capabilities": {\n "drop": [\n "ALL"\n ]\n },\n "privileged": false,\n "readOnlyRootFilesystem": true,\n "runAsNonRoot": true,\n "seccompProfile": {\n "type": "RuntimeDefault"\n }\n },\n "terminationMessagePath": "/dev/termination-log",\n "terminationMessagePolicy": "File",\n "volumeMounts": [\n {\n "mountPath": "/pgconf/tls",\n "name": "cert-volume",\n "readOnly": true\n },\n {\n "mountPath": "/pgdata",\n "name": "postgres-data"\n },\n {\n "mountPath": "/tmp",\n "name": "tmp"\n }\n ]\n },\n {\n "args": [\n "fluent-bit"\n ],\n "command": [\n "/opt/crunchy/logcollector/entrypoint.sh"\n ],\n "env": [\n {\n "name": "PG_LOG_DIR",\n "value": "/pgdata/pg18/log"\n },\n {\n "name": "PGBACKREST_LOG_DIR",\n "value": "/pgdata/pgbackrest/log"\n },\n {\n "name": "POD_NAMESPACE",\n "valueFrom": {\n "fieldRef": {\n "apiVersion": "v1",\n "fieldPath": "metadata.namespace"\n }\n }\n },\n {\n "name": "POD_NAME",\n "valueFrom": {\n "fieldRef": {\n "apiVersion": "v1",\n "fieldPath": "metadata.name"\n }\n }\n }\n ],\n "image": "docker.io/perconalab/fluentbit:main-logcollector",\n "imagePullPolicy": "IfNotPresent",\n "name": "logs",\n "resources": {},\n "securityContext": {\n "allowPrivilegeEscalation": false,\n "capabilities": {\n "drop": [\n "ALL"\n ]\n },\n "privileged": false,\n "runAsGroup": 26,\n "runAsNonRoot": true,\n "runAsUser": 26,\n "seccompProfile": {\n "type": "RuntimeDefault"\n }\n },\n "terminationMessagePath": "/dev/termination-log",\n "terminationMessagePolicy": "File",\n "volumeMounts": [\n {\n "mountPath": "/pgdata",\n "name": "postgres-data"\n },\n {\n "mountPath": "/opt/crunchy",\n "name": "crunchy-bin"\n },\n {\n "mountPath": "/tmp",\n "name": "tmp"\n }\n ]\n },\n {\n "args": [\n "logrotate"\n ],\n "command": [\n "/opt/crunchy/logcollector/entrypoint.sh"\n ],\n "env": [\n {\n "name": "POD_NAMESPACE",\n "valueFrom": {\n "fieldRef": {\n "apiVersion": "v1",\n "fieldPath": "metadata.namespace"\n }\n }\n },\n {\n "name": "POD_NAME",\n "valueFrom": {\n "fieldRef": {\n "apiVersion": "v1",\n "fieldPath": "metadata.name"\n }\n }\n },\n {\n "name": "LOGROTATE_SCHEDULE",\n "value": "0 0 * * *"\n },\n {\n "name": "LD_PRELOAD",\n "value": "/tmp/nss_wrapper/libnss_wrapper.so"\n },\n {\n "name": "NSS_WRAPPER_PASSWD",\n "value": "/tmp/nss_wrapper/postgres/passwd"\n },\n {\n "name": "NSS_WRAPPER_GROUP",\n "value": "/tmp/nss_wrapper/postgres/group"\n }\n ],\n "image": "docker.io/perconalab/fluentbit:main-logcollector",\n "imagePullPolicy": "IfNotPresent",\n "name": "logrotate",\n "resources": {},\n "securityContext": {\n "allowPrivilegeEscalation": false,\n "capabilities": {\n "drop": [\n "ALL"\n ]\n },\n "privileged": false,\n "runAsGroup": 26,\n "runAsNonRoot": true,\n "runAsUser": 26,\n "seccompProfile": {\n "type": "RuntimeDefault"\n }\n },\n "terminationMessagePath": "/dev/termination-log",\n "terminationMessagePolicy": "File",\n "volumeMounts": [\n {\n "mountPath": "/pgdata",\n "name": "postgres-data"\n },\n {\n "mountPath": "/opt/crunchy",\n "name": "crunchy-bin"\n },\n {\n "mountPath": "/tmp",\n "name": "tmp"\n }\n ]\n },\n {\n "command": [\n "pgbackrest",\n "server"\n ],\n "env": [\n {\n "name": "LD_PRELOAD",\n "value": "/usr/lib64/libnss_wrapper.so"\n },\n {\n "name": "NSS_WRAPPER_PASSWD",\n "value": "/tmp/nss_wrapper/postgres/passwd"\n },\n {\n "name": "NSS_WRAPPER_GROUP",\n "value": "/tmp/nss_wrapper/postgres/group"\n }\n ],\n "image": "docker.io/perconalab/percona-postgresql-operator:main-pgbackrest18",\n "imagePullPolicy": "Always",\n "livenessProbe": {\n "exec": {\n "command": [\n "pgbackrest",\n "server-ping"\n ]\n },\n "failureThreshold": 3,\n "periodSeconds": 10,\n "successThreshold": 1,\n "timeoutSeconds": 1\n },\n "name": "pgbackrest",\n "resources": {},\n "securityContext": {\n "allowPrivilegeEscalation": false,\n "capabilities": {\n "drop": [\n "ALL"\n ]\n },\n "privileged": false,\n "readOnlyRootFilesystem": true,\n "runAsNonRoot": true,\n "seccompProfile": {\n "type": "RuntimeDefault"\n }\n },\n "terminationMessagePath": "/dev/termination-log",\n "terminationMessagePolicy": "File",\n "volumeMounts": [\n {\n "mountPath": "/etc/pgbackrest/server",\n "name": "pgbackrest-server",\n "readOnly": true\n },\n {\n "mountPath": "/pgdata",\n "name": "postgres-data"\n },\n {\n "mountPath": "/tablespaces/myts",\n "name": "tablespace-myts"\n },\n {\n "mountPath": "/pgwal",\n "name": "postgres-wal"\n },\n {\n "mountPath": "/etc/pgbackrest/conf.d",\n "name": "pgbackrest-config",\n "readOnly": true\n },\n {\n "mountPath": "/tmp",\n "name": "tmp"\n }\n ]\n },\n {\n "command": [\n "bash",\n "-ceu",\n "--",\n "monitor() {\\nexec {fd}\\u003c\\u003e \\u003c(:||:)\\nuntil read -r -t 5 -u \\"${fd}\\"; do\\n if\\n [[ \\"${filename}\\" -nt \\"/proc/self/fd/${fd}\\" ]] \\u0026\\u0026\\n pkill -HUP --exact --parent=0 pgbackrest\\n then\\n exec {fd}\\u003e\\u0026- \\u0026\\u0026 exec {fd}\\u003c\\u003e \\u003c(:||:)\\n stat --dereference --format=\'Loaded configuration dated %y\' \\"${filename}\\"\\n elif\\n { [[ \\"${directory}\\" -nt \\"/proc/self/fd/${fd}\\" ]] ||\\n [[ \\"${authority}\\" -nt \\"/proc/self/fd/${fd}\\" ]]\\n } \\u0026\\u0026\\n pkill -HUP --exact --parent=0 pgbackrest\\n then\\n exec {fd}\\u003e\\u0026- \\u0026\\u0026 exec {fd}\\u003c\\u003e \\u003c(:||:)\\n stat --format=\'Loaded certificates dated %y\' \\"${directory}\\"\\n fi\\ndone\\n}; export directory=\\"$1\\" authority=\\"$2\\" filename=\\"$3\\"; export -f monitor; exec -a \\"$0\\" bash -ceu monitor",\n "pgbackrest-config",\n "/etc/pgbackrest/server",\n "/etc/pgbackrest/conf.d/~postgres-operator/tls-ca.crt",\n "/etc/pgbackrest/conf.d/~postgres-operator_server.conf"\n ],\n "image": "docker.io/perconalab/percona-postgresql-operator:main-pgbackrest18",\n "imagePullPolicy": "Always",\n "name": "pgbackrest-config",\n "resources": {},\n "securityContext": {\n "allowPrivilegeEscalation": false,\n "capabilities": {\n "drop": [\n "ALL"\n ]\n },\n "privileged": false,\n "readOnlyRootFilesystem": true,\n "runAsNonRoot": true,\n "seccompProfile": {\n "type": "RuntimeDefault"\n }\n },\n "terminationMessagePath": "/dev/termination-log",\n "terminationMessagePolicy": "File",\n "volumeMounts": [\n {\n "mountPath": "/etc/pgbackrest/server",\n "name": "pgbackrest-server",\n "readOnly": true\n },\n {\n "mountPath": "/etc/pgbackrest/conf.d",\n "name": "pgbackrest-config",\n "readOnly": true\n },\n {\n "mountPath": "/tmp",\n "name": "tmp"\n }\n ]\n }\n ],\n "dnsPolicy": "ClusterFirst",\n "enableServiceLinks": false,\n "initContainers": [\n {\n "command": [\n "/usr/local/bin/init-entrypoint.sh"\n ],\n "image": "docker.io/perconalab/percona-postgresql-operator:PR-1760-4947a0272",\n "imagePullPolicy": "Always",\n "name": "database-init",\n "resources": {},\n "securityContext": {\n "allowPrivilegeEscalation": false,\n "capabilities": {\n "drop": [\n "ALL"\n ]\n },\n "privileged": false,\n "readOnlyRootFilesystem": true,\n "runAsNonRoot": true,\n "seccompProfile": {\n "type": "RuntimeDefault"\n }\n },\n "terminationMessagePath": "/dev/termination-log",\n "terminationMessagePolicy": "File",\n "volumeMounts": [\n {\n "mountPath": "/opt/crunchy",\n "name": "crunchy-bin"\n },\n {\n "mountPath": "/tmp",\n "name": "tmp"\n }\n ]\n },\n {\n "command": [\n "bash",\n "-ceu",\n "--",\n "declare -r expected_major_version=\\"$1\\" pgwal_directory=\\"$2\\" pgbrLog_directory=\\"$3\\"\\npermissions() { while [[ -n \\"$1\\" ]]; do set \\"${1%/*}\\" \\"$@\\"; done; shift; stat -Lc \'%A %4u %4g %n\' \\"$@\\"; }\\nhalt() { local rc=$?; \\u003e\\u00262 echo \\"$@\\"; exit \\"${rc/#0/1}\\"; }\\nresults() { printf \'::postgres-operator: %s::%s\\\\n\' \\"$@\\"; }\\nrecreate() (\\n local tmp; tmp=$(mktemp -d -p \\"${1%/*}\\"); GLOBIGNORE=\'.:..\'; set -x\\n chmod \\"$2\\" \\"${tmp}\\"; mv \\"$1\\"/* \\"${tmp}\\"; rmdir \\"$1\\"; mv \\"${tmp}\\" \\"$1\\"\\n)\\nsafelink() (\\n local desired=\\"$1\\" name=\\"$2\\" current\\n current=$(realpath \\"${name}\\")\\n if [[ \\"${current}\\" == \\"${desired}\\" ]]; then return; fi\\n set -x; mv --no-target-directory \\"${current}\\" \\"${desired}\\"\\n ln --no-dereference --force --symbolic \\"${desired}\\" \\"${name}\\"\\n)\\necho Initializing ...\\nresults \'uid\' \\"$(id -u ||:)\\" \'gid\' \\"$(id -G ||:)\\"\\nif [[ \\"${pgwal_directory}\\" == *\\"pgwal/\\"* ]] \\u0026\\u0026 [[ ! -d \\"/pgwal/pgbackrest-spool\\" ]];then rm -rf \\"/pgdata/pgbackrest-spool\\" \\u0026\\u0026 mkdir -p \\"/pgwal/pgbackrest-spool\\" \\u0026\\u0026 ln --force --symbolic \\"/pgwal/pgbackrest-spool\\" \\"/pgdata/pgbackrest-spool\\";fi\\nif [[ ! -e \\"/pgdata/pgbackrest-spool\\" ]];then rm -rf /pgdata/pgbackrest-spool;fi\\nif [[ ! -e \\"/pgdata/logs/postgres\\" ]];then rm -rf \\"/pgdata/logs/postgres\\";fi\\nif [[ ! -e \\"${pgbrLog_directory}\\" ]];then rm -rf \\"${pgbrLog_directory}\\";fi\\nif [[ -d \\"/pglogs\\" ]];then install --directory --mode=0775 \\"/pglogs/postgres\\" \\"/pglogs/pgbackrest/log\\";if [[ ! -L \\"/pgdata/logs/postgres\\" ]];then mkdir -p \\"/pgdata/logs\\" \\u0026\\u0026 rm -rf \\"/pgdata/logs/postgres\\" \\u0026\\u0026 ln --symbolic \\"/pglogs/postgres\\" \\"/pgdata/logs/postgres\\";fi;if [[ ! -L \\"${pgbrLog_directory}\\" ]];then mkdir -p \\"${pgbrLog_directory%/*}\\" \\u0026\\u0026 rm -rf \\"${pgbrLog_directory}\\" \\u0026\\u0026 ln --symbolic \\"/pglogs/pgbackrest/log\\" \\"${pgbrLog_directory}\\";fi;fi\\nresults \'postgres path\' \\"$(command -v postgres ||:)\\"\\nresults \'postgres version\' \\"${postgres_version:=$(postgres --version ||:)}\\"\\n[[ \\"${postgres_version}\\" =~ \\") ${expected_major_version}\\"($|[^0-9]) ]] ||\\nhalt Expected PostgreSQL version \\"${expected_major_version}\\"\\nresults \'config directory\' \\"${PGDATA:?}\\"\\npostgres_data_directory=$([[ -d \\"${PGDATA}\\" ]] \\u0026\\u0026 postgres -C data_directory || echo \\"${PGDATA}\\")\\nresults \'data directory\' \\"${postgres_data_directory}\\"\\n[[ \\"${postgres_data_directory}\\" == \\"${PGDATA}\\" ]] ||\\nhalt Expected matching config and data directories\\nbootstrap_dir=\\"${postgres_data_directory}_bootstrap\\"\\n[[ -d \\"${bootstrap_dir}\\" ]] \\u0026\\u0026 results \'bootstrap directory\' \\"${bootstrap_dir}\\"\\n[[ -d \\"${bootstrap_dir}\\" ]] \\u0026\\u0026 postgres_data_directory=\\"${bootstrap_dir}\\"\\nif [[ ! -e \\"${postgres_data_directory}\\" || -O \\"${postgres_data_directory}\\" ]]; then\\ninstall --directory --mode=0700 \\"${postgres_data_directory}\\"\\nelif [[ -w \\"${postgres_data_directory}\\" \\u0026\\u0026 -g \\"${postgres_data_directory}\\" ]]; then\\nrecreate \\"${postgres_data_directory}\\" \'0700\'\\nelse (halt Permissions!); fi ||\\nhalt \\"$(permissions \\"${postgres_data_directory}\\" ||:)\\"\\nresults \'pgBackRest log directory\' \\"${pgbrLog_directory}\\"\\ninstall --directory --mode=0775 \\"${pgbrLog_directory}\\" ||\\nhalt \\"$(permissions \\"${pgbrLog_directory}\\" ||:)\\"\\ninstall -D --mode=0600 -t \\"/tmp/replication\\" \\"/pgconf/tls/replication\\"/{tls.crt,tls.key,ca.crt}\\n\\ntablespace_dir=/tablespaces/myts/data\\nif [[ ! -e \\"${tablespace_dir}\\" || -O \\"${tablespace_dir}\\" ]]; then\\ninstall --directory --mode=0700 \\"${tablespace_dir}\\"\\nelif [[ -w \\"${tablespace_dir}\\" \\u0026\\u0026 -g \\"${tablespace_dir}\\" ]]; then\\nrecreate \\"${tablespace_dir}\\" \'0700\'\\nelse (halt Permissions!); fi ||\\nhalt \\"$(permissions \\"${tablespace_dir}\\" ||:)\\"\\n[[ -f \\"${postgres_data_directory}/PG_VERSION\\" ]] || exit 0\\nresults \'data version\' \\"${postgres_data_version:=$(\\u003c \\"${postgres_data_directory}/PG_VERSION\\")}\\"\\n[[ \\"${postgres_data_version}\\" == \\"${expected_major_version}\\" ]] ||\\nhalt Expected PostgreSQL data version \\"${expected_major_version}\\"\\n[[ ! -f \\"${postgres_data_directory}/postgresql.conf\\" ]] \\u0026\\u0026\\ntouch \\"${postgres_data_directory}/postgresql.conf\\"\\nsafelink \\"${pgwal_directory}\\" \\"${postgres_data_directory}/pg_wal\\"\\nresults \'wal directory\' \\"$(realpath \\"${postgres_data_directory}/pg_wal\\" ||:)\\"\\nrm -f \\"${postgres_data_directory}/recovery.signal\\"",\n "startup",\n "18",\n "/pgwal/pg18_wal",\n "/pgdata/pgbackrest/log"\n ],\n "env": [\n {\n "name": "PGDATA",\n "value": "/pgdata/pg18"\n },\n {\n "name": "PGHOST",\n "value": "/tmp/postgres"\n },\n {\n "name": "PGPORT",\n "value": "5432"\n },\n {\n "name": "KRB5_CONFIG",\n "value": "/etc/postgres/krb5.conf"\n },\n {\n "name": "KRB5RCACHEDIR",\n "value": "/tmp"\n },\n {\n "name": "LDAPTLS_CACERT",\n "value": "/etc/postgres/ldap/ca.crt"\n },\n {\n "name": "LC_ALL",\n "value": "en_US.utf-8"\n },\n {\n "name": "LANG",\n "value": "en_US.utf-8"\n }\n ],\n "image": "docker.io/perconalab/percona-postgresql-operator:main-ppg18-postgres",\n "imagePullPolicy": "Always",\n "name": "postgres-startup",\n "resources": {},\n "securityContext": {\n "allowPrivilegeEscalation": false,\n "capabilities": {\n "drop": [\n "ALL"\n ]\n },\n "privileged": false,\n "readOnlyRootFilesystem": true,\n "runAsNonRoot": true,\n "seccompProfile": {\n "type": "RuntimeDefault"\n }\n },\n "terminationMessagePath": "/dev/termination-log",\n "terminationMessagePolicy": "File",\n "volumeMounts": [\n {\n "mountPath": "/pgconf/tls",\n "name": "cert-volume",\n "readOnly": true\n },\n {\n "mountPath": "/pgdata",\n "name": "postgres-data"\n },\n {\n "mountPath": "/tablespaces/myts",\n "name": "tablespace-myts"\n },\n {\n "mountPath": "/pgwal",\n "name": "postgres-wal"\n },\n {\n "mountPath": "/pglogs",\n "name": "postgres-logs"\n },\n {\n "mountPath": "/tmp",\n "name": "tmp"\n }\n ]\n },\n {\n "command": [\n "bash",\n "-c",\n "mkdir -p /tmp/nss_wrapper \\u0026\\u0026 { [[ -f /tmp/nss_wrapper/libnss_wrapper.so ]] || cp /usr/lib64/libnss_wrapper.so /tmp/nss_wrapper/libnss_wrapper.so; }"\n ],\n "image": "docker.io/perconalab/percona-postgresql-operator:main-ppg18-postgres",\n "imagePullPolicy": "Always",\n "name": "nss-wrapper-init-logcollector",\n "resources": {},\n "securityContext": {\n "allowPrivilegeEscalation": false,\n "capabilities": {\n "drop": [\n "ALL"\n ]\n },\n "privileged": false,\n "runAsGroup": 26,\n "runAsNonRoot": true,\n "runAsUser": 26,\n "seccompProfile": {\n "type": "RuntimeDefault"\n }\n },\n "terminationMessagePath": "/dev/termination-log",\n "terminationMessagePolicy": "File",\n "volumeMounts": [\n {\n "mountPath": "/tmp",\n "name": "tmp"\n }\n ]\n },\n {\n "command": [\n "bash",\n "-c",\n "export NSS_WRAPPER_SUBDIR=postgres CRUNCHY_NSS_USERNAME=postgres CRUNCHY_NSS_USER_DESC=\\"postgres\\" \\n# Define nss_wrapper directory and passwd \\u0026 group files that will be utilized by nss_wrapper. The\\n# nss_wrapper_env.sh script (which also sets these vars) isn\'t sourced here since the nss_wrapper\\n# has not yet been setup, and we therefore don\'t yet want the nss_wrapper vars in the environment.\\nmkdir -p /tmp/nss_wrapper\\nchmod g+rwx /tmp/nss_wrapper\\n\\nNSS_WRAPPER_DIR=\\"/tmp/nss_wrapper/${NSS_WRAPPER_SUBDIR}\\"\\nNSS_WRAPPER_PASSWD=\\"${NSS_WRAPPER_DIR}/passwd\\"\\nNSS_WRAPPER_GROUP=\\"${NSS_WRAPPER_DIR}/group\\"\\n\\n# create the nss_wrapper directory\\nmkdir -p \\"${NSS_WRAPPER_DIR}\\"\\n\\n# grab the current user ID and group ID\\nUSER_ID=$(id -u)\\nexport USER_ID\\nGROUP_ID=$(id -g)\\nexport GROUP_ID\\n\\n# get copies of the passwd and group files\\n[[ -f \\"${NSS_WRAPPER_PASSWD}\\" ]] || cp \\"/etc/passwd\\" \\"${NSS_WRAPPER_PASSWD}\\"\\n[[ -f \\"${NSS_WRAPPER_GROUP}\\" ]] || cp \\"/etc/group\\" \\"${NSS_WRAPPER_GROUP}\\"\\n\\n# if the username is missing from the passwd file, then add it\\nif [[ ! $(cat \\"${NSS_WRAPPER_PASSWD}\\") =~ ${CRUNCHY_NSS_USERNAME}:x:${USER_ID} ]]; then\\n echo \\"nss_wrapper: adding user\\"\\n passwd_tmp=\\"${NSS_WRAPPER_DIR}/passwd_tmp\\"\\n cp \\"${NSS_WRAPPER_PASSWD}\\" \\"${passwd_tmp}\\"\\n sed -i \\"/${CRUNCHY_NSS_USERNAME}:x:/d\\" \\"${passwd_tmp}\\"\\n # needed for OCP 4.x because crio updates /etc/passwd with an entry for USER_ID\\n sed -i \\"/${USER_ID}:x:/d\\" \\"${passwd_tmp}\\"\\n printf \'${CRUNCHY_NSS_USERNAME}:x:${USER_ID}:${GROUP_ID}:${CRUNCHY_NSS_USER_DESC}:${HOME}:/bin/bash\\\\n\' \\u003e\\u003e \\"${passwd_tmp}\\"\\n envsubst \\u003c \\"${passwd_tmp}\\" \\u003e \\"${NSS_WRAPPER_PASSWD}\\"\\n rm \\"${passwd_tmp}\\"\\nelse\\n echo \\"nss_wrapper: user exists\\"\\nfi\\n\\n# if the username (which will be the same as the group name) is missing from group file, then add it\\nif [[ ! $(cat \\"${NSS_WRAPPER_GROUP}\\") =~ ${CRUNCHY_NSS_USERNAME}:x:${USER_ID} ]]; then\\n echo \\"nss_wrapper: adding group\\"\\n group_tmp=\\"${NSS_WRAPPER_DIR}/group_tmp\\"\\n cp \\"${NSS_WRAPPER_GROUP}\\" \\"${group_tmp}\\"\\n sed -i \\"/${CRUNCHY_NSS_USERNAME}:x:/d\\" \\"${group_tmp}\\"\\n printf \'${CRUNCHY_NSS_USERNAME}:x:${USER_ID}:${CRUNCHY_NSS_USERNAME}\\\\n\' \\u003e\\u003e \\"${group_tmp}\\"\\n envsubst \\u003c \\"${group_tmp}\\" \\u003e \\"${NSS_WRAPPER_GROUP}\\"\\n rm \\"${group_tmp}\\"\\nelse\\n echo \\"nss_wrapper: group exists\\"\\nfi\\n\\n# export the nss_wrapper env vars\\n# define nss_wrapper directory and passwd \\u0026 group files that will be utilized by nss_wrapper\\nNSS_WRAPPER_DIR=\\"/tmp/nss_wrapper/${NSS_WRAPPER_SUBDIR}\\"\\nNSS_WRAPPER_PASSWD=\\"${NSS_WRAPPER_DIR}/passwd\\"\\nNSS_WRAPPER_GROUP=\\"${NSS_WRAPPER_DIR}/group\\"\\n\\nexport LD_PRELOAD=/usr/lib64/libnss_wrapper.so\\nexport NSS_WRAPPER_PASSWD=\\"${NSS_WRAPPER_PASSWD}\\"\\nexport NSS_WRAPPER_GROUP=\\"${NSS_WRAPPER_GROUP}\\"\\n\\necho \\"nss_wrapper: environment configured\\"\\n"\n ],\n "image": "docker.io/perconalab/percona-postgresql-operator:main-ppg18-postgres",\n "imagePullPolicy": "Always",\n "name": "nss-wrapper-init",\n "resources": {},\n "securityContext": {\n "allowPrivilegeEscalation": false,\n "capabilities": {\n "drop": [\n "ALL"\n ]\n },\n "privileged": false,\n "readOnlyRootFilesystem": true,\n "runAsNonRoot": true,\n "seccompProfile": {\n "type": "RuntimeDefault"\n }\n },\n "terminationMessagePath": "/dev/termination-log",\n "terminationMessagePolicy": "File",\n "volumeMounts": [\n {\n "mountPath": "/tmp",\n "name": "tmp"\n }\n ]\n }\n ],\n "restartPolicy": "Always",\n "schedulerName": "default-scheduler",\n "securityContext": {\n "fsGroup": 26,\n "fsGroupChangePolicy": "OnRootMismatch"\n },\n "serviceAccount": "additional-volumes-instance",\n "serviceAccountName": "additional-volumes-instance",\n "shareProcessNamespace": true,\n "terminationGracePeriodSeconds": 30,\n "topologySpreadConstraints": [\n {\n "labelSelector": {\n "matchExpressions": [\n {\n "key": "postgres-operator.crunchydata.com/data",\n "operator": "In",\n "values": [\n "postgres",\n "pgbackrest"\n ]\n }\n ],\n "matchLabels": {\n "postgres-operator.crunchydata.com/cluster": "additional-volumes"\n }\n },\n "maxSkew": 1,\n "topologyKey": "kubernetes.io/hostname",\n "whenUnsatisfiable": "ScheduleAnyway"\n },\n {\n "labelSelector": {\n "matchExpressions": [\n {\n "key": "postgres-operator.crunchydata.com/data",\n "operator": "In",\n "values": [\n "postgres",\n "pgbackrest"\n ]\n }\n ],\n "matchLabels": {\n "postgres-operator.crunchydata.com/cluster": "additional-volumes"\n }\n },\n "maxSkew": 1,\n "topologyKey": "topology.kubernetes.io/zone",\n "whenUnsatisfiable": "ScheduleAnyway"\n }\n ],\n "volumes": [\n {\n "name": "cert-volume",\n "projected": {\n "defaultMode": 384,\n "sources": [\n {\n "secret": {\n "items": [\n {\n "key": "tls.crt",\n "path": "tls.crt"\n },\n {\n "key": "tls.key",\n "path": "tls.key"\n },\n {\n "key": "ca.crt",\n "path": "ca.crt"\n }\n ],\n "name": "additional-volumes-cluster-cert"\n }\n },\n {\n "secret": {\n "items": [\n {\n "key": "tls.crt",\n "path": "replication/tls.crt"\n },\n {\n "key": "tls.key",\n "path": "replication/tls.key"\n },\n {\n "key": "ca.crt",\n "path": "replication/ca.crt"\n }\n ],\n "name": "additional-volumes-replication-cert"\n }\n }\n ]\n }\n },\n {\n "name": "postgres-data",\n "persistentVolumeClaim": {\n "claimName": "additional-volumes-instance1-xvbw-pgdata"\n }\n },\n {\n "downwardAPI": {\n "defaultMode": 420,\n "items": [\n {\n "path": "cpu_limit",\n "resourceFieldRef": {\n "containerName": "database",\n "divisor": "1m",\n "resource": "limits.cpu"\n }\n },\n {\n "path": "cpu_request",\n "resourceFieldRef": {\n "containerName": "database",\n "divisor": "1m",\n "resource": "requests.cpu"\n }\n },\n {\n "path": "mem_limit",\n "resourceFieldRef": {\n "containerName": "database",\n "divisor": "1Mi",\n "resource": "limits.memory"\n }\n },\n {\n "path": "mem_request",\n "resourceFieldRef": {\n "containerName": "database",\n "divisor": "1Mi",\n "resource": "requests.memory"\n }\n },\n {\n "fieldRef": {\n "apiVersion": "v1",\n "fieldPath": "metadata.labels"\n },\n "path": "labels"\n },\n {\n "fieldRef": {\n "apiVersion": "v1",\n "fieldPath": "metadata.annotations"\n },\n "path": "annotations"\n }\n ]\n },\n "name": "database-containerinfo"\n },\n {\n "name": "tablespace-myts",\n "persistentVolumeClaim": {\n "claimName": "additional-volumes-instance1-xvbw-myts-tablespace"\n }\n },\n {\n "name": "postgres-wal",\n "persistentVolumeClaim": {\n "claimName": "additional-volumes-instance1-xvbw-pgwal"\n }\n },\n {\n "name": "postgres-logs",\n "persistentVolumeClaim": {\n "claimName": "additional-volumes-instance1-xvbw-pglogs"\n }\n },\n {\n "name": "pgbackrest-server",\n "projected": {\n "defaultMode": 420,\n "sources": [\n {\n "secret": {\n "items": [\n {\n "key": "pgbackrest-server.crt",\n "path": "server-tls.crt"\n },\n {\n "key": "pgbackrest-server.key",\n "mode": 384,\n "path": "server-tls.key"\n }\n ],\n "name": "additional-volumes-instance1-xvbw-certs"\n }\n }\n ]\n }\n },\n {\n "name": "pgbackrest-config",\n "projected": {\n "defaultMode": 420,\n "sources": [\n {\n "configMap": {\n "items": [\n {\n "key": "pgbackrest_instance.conf",\n "path": "pgbackrest_instance.conf"\n },\n {\n "key": "config-hash",\n "path": "config-hash"\n },\n {\n "key": "pgbackrest-server.conf",\n "path": "~postgres-operator_server.conf"\n }\n ],\n "name": "additional-volumes-pgbackrest-config"\n }\n },\n {\n "secret": {\n "items": [\n {\n "key": "pgbackrest.ca-roots",\n "path": "~postgres-operator/tls-ca.crt"\n },\n {\n "key": "pgbackrest-client.crt",\n "path": "~postgres-operator/client-tls.crt"\n },\n {\n "key": "pgbackrest-client.key",\n "mode": 384,\n "path": "~postgres-operator/client-tls.key"\n }\n ],\n "name": "additional-volumes-pgbackrest"\n }\n }\n ]\n }\n },\n {\n "name": "patroni-config",\n "projected": {\n "defaultMode": 420,\n "sources": [\n {\n "configMap": {\n "items": [\n {\n "key": "patroni.yaml",\n "path": "~postgres-operator_cluster.yaml"\n }\n ],\n "name": "additional-volumes-config"\n }\n },\n {\n "configMap": {\n "items": [\n {\n "key": "patroni.yaml",\n "path": "~postgres-operator_instance.yaml"\n }\n ],\n "name": "additional-volumes-instance1-xvbw-config"\n }\n },\n {\n "secret": {\n "items": [\n {\n "key": "patroni.ca-roots",\n "path": "~postgres-operator/patroni.ca-roots"\n },\n {\n "key": "patroni.crt-combined",\n "path": "~postgres-operator/patroni.crt+key"\n }\n ],\n "name": "additional-volumes-instance1-xvbw-certs"\n }\n }\n ]\n }\n },\n {\n "emptyDir": {},\n "name": "crunchy-bin"\n },\n {\n "emptyDir": {\n "sizeLimit": "2Gi"\n },\n "name": "tmp"\n },\n {\n "emptyDir": {\n "medium": "Memory"\n },\n "name": "dshm"\n }\n ]\n }\n },\n "updateStrategy": {\n "type": "OnDelete"\n }\n },\n "status": {\n "availableReplicas": 1,\n "collisionCount": 0,\n "currentReplicas": 1,\n "currentRevision": "additional-volumes-instance1-xvbw-7dcb456674",\n "observedGeneration": 1,\n "readyReplicas": 1,\n "replicas": 1,\n "updateRevision": "additional-volumes-instance1-xvbw-7dcb456674",\n "updatedReplicas": 1\n }\n }\n ],\n "kind": "List",\n "metadata": {\n "resourceVersion": ""\n }\n}' logger.go:42: 18:13:50 | additional-volumes/2-verify-volumes | + check_sts_volume postgres-wal /pgwal logger.go:42: 18:13:50 | additional-volumes/2-verify-volumes | + local volume=postgres-wal logger.go:42: 18:13:50 | additional-volumes/2-verify-volumes | + local path=/pgwal logger.go:42: 18:13:50 | additional-volumes/2-verify-volumes | + jq -e --arg v postgres-wal $'.items[0].spec.template.spec.volumes[]\n | select(.name == $v) | select(.persistentVolumeClaim != null)' logger.go:42: 18:13:50 | additional-volumes/2-verify-volumes | + printf '%s\n' $'{\n "apiVersion": "v1",\n "items": [\n {\n "apiVersion": "apps/v1",\n "kind": "StatefulSet",\n "metadata": {\n "annotations": {\n "pgv2.percona.com/logcollector-config-hash": "d9a116e02b828bdc02165325e92799d82961fb499041814c7c765d0ce263ce77"\n },\n "creationTimestamp": "2026-08-19T18:12:04Z",\n "generation": 1,\n "labels": {\n "app.kubernetes.io/component": "pg",\n "app.kubernetes.io/instance": "additional-volumes",\n "app.kubernetes.io/managed-by": "percona-postgresql-operator",\n "app.kubernetes.io/name": "percona-postgresql",\n "app.kubernetes.io/part-of": "percona-postgresql",\n "pgv2.percona.com/version": "3.2.0",\n "postgres-operator.crunchydata.com/cluster": "additional-volumes",\n "postgres-operator.crunchydata.com/data": "postgres",\n "postgres-operator.crunchydata.com/instance": "additional-volumes-instance1-24br",\n "postgres-operator.crunchydata.com/instance-set": "instance1"\n },\n "name": "additional-volumes-instance1-24br",\n "namespace": "kuttl-test-intimate-garfish",\n "ownerReferences": [\n {\n "apiVersion": "upstream.pgv2.percona.com/v1beta1",\n "blockOwnerDeletion": true,\n "controller": true,\n "kind": "PostgresCluster",\n "name": "additional-volumes",\n "uid": "b795649f-550b-4283-b2ef-eca573235e5a"\n }\n ],\n "resourceVersion": "1787163196013855005",\n "uid": "471c7b02-6f1c-4f53-a6b2-557d95701703"\n },\n "spec": {\n "persistentVolumeClaimRetentionPolicy": {\n "whenDeleted": "Retain",\n "whenScaled": "Retain"\n },\n "podManagementPolicy": "OrderedReady",\n "replicas": 1,\n "revisionHistoryLimit": 0,\n "selector": {\n "matchLabels": {\n "postgres-operator.crunchydata.com/cluster": "additional-volumes",\n "postgres-operator.crunchydata.com/instance": "additional-volumes-instance1-24br",\n "postgres-operator.crunchydata.com/instance-set": "instance1"\n }\n },\n "serviceName": "additional-volumes-pods",\n "template": {\n "metadata": {\n "annotations": {\n "kubectl.kubernetes.io/default-container": "database",\n "pgv2.percona.com/logcollector-config-hash": "d9a116e02b828bdc02165325e92799d82961fb499041814c7c765d0ce263ce77"\n },\n "creationTimestamp": null,\n "labels": {\n "app.kubernetes.io/component": "pg",\n "app.kubernetes.io/instance": "additional-volumes",\n "app.kubernetes.io/managed-by": "percona-postgresql-operator",\n "app.kubernetes.io/name": "percona-postgresql",\n "app.kubernetes.io/part-of": "percona-postgresql",\n "pgv2.percona.com/version": "3.2.0",\n "postgres-operator.crunchydata.com/cluster": "additional-volumes",\n "postgres-operator.crunchydata.com/data": "postgres",\n "postgres-operator.crunchydata.com/instance": "additional-volumes-instance1-24br",\n "postgres-operator.crunchydata.com/instance-set": "instance1",\n "postgres-operator.crunchydata.com/patroni": "additional-volumes-ha"\n }\n },\n "spec": {\n "affinity": {\n "podAntiAffinity": {\n "preferredDuringSchedulingIgnoredDuringExecution": [\n {\n "podAffinityTerm": {\n "labelSelector": {\n "matchLabels": {\n "postgres-operator.crunchydata.com/data": "postgres"\n }\n },\n "topologyKey": "kubernetes.io/hostname"\n },\n "weight": 1\n }\n ]\n }\n },\n "containers": [\n {\n "command": [\n "/opt/crunchy/bin/postgres-entrypoint.sh",\n "patroni",\n "/etc/patroni"\n ],\n "env": [\n {\n "name": "PGDATA",\n "value": "/pgdata/pg18"\n },\n {\n "name": "PGHOST",\n "value": "/tmp/postgres"\n },\n {\n "name": "PGPORT",\n "value": "5432"\n },\n {\n "name": "KRB5_CONFIG",\n "value": "/etc/postgres/krb5.conf"\n },\n {\n "name": "KRB5RCACHEDIR",\n "value": "/tmp"\n },\n {\n "name": "LDAPTLS_CACERT",\n "value": "/etc/postgres/ldap/ca.crt"\n },\n {\n "name": "LC_ALL",\n "value": "en_US.utf-8"\n },\n {\n "name": "LANG",\n "value": "en_US.utf-8"\n },\n {\n "name": "PATRONI_NAME",\n "valueFrom": {\n "fieldRef": {\n "apiVersion": "v1",\n "fieldPath": "metadata.name"\n }\n }\n },\n {\n "name": "PATRONI_KUBERNETES_POD_IP",\n "valueFrom": {\n "fieldRef": {\n "apiVersion": "v1",\n "fieldPath": "status.podIP"\n }\n }\n },\n {\n "name": "PATRONI_KUBERNETES_PORTS",\n "value": "- name: postgres\\n port: 5432\\n protocol: TCP\\n"\n },\n {\n "name": "PATRONI_POSTGRESQL_CONNECT_ADDRESS",\n "value": "$(PATRONI_NAME).additional-volumes-pods:5432"\n },\n {\n "name": "PATRONI_POSTGRESQL_LISTEN",\n "value": "*:5432"\n },\n {\n "name": "PATRONI_POSTGRESQL_CONFIG_DIR",\n "value": "/pgdata/pg18"\n },\n {\n "name": "PATRONI_POSTGRESQL_DATA_DIR",\n "value": "/pgdata/pg18"\n },\n {\n "name": "PATRONI_RESTAPI_CONNECT_ADDRESS",\n "value": "$(PATRONI_NAME).additional-volumes-pods:8008"\n },\n {\n "name": "PATRONI_RESTAPI_LISTEN",\n "value": "*:8008"\n },\n {\n "name": "PATRONICTL_CONFIG_FILE",\n "value": "/etc/patroni"\n },\n {\n "name": "LD_PRELOAD",\n "value": "/usr/lib64/libnss_wrapper.so"\n },\n {\n "name": "NSS_WRAPPER_PASSWD",\n "value": "/tmp/nss_wrapper/postgres/passwd"\n },\n {\n "name": "NSS_WRAPPER_GROUP",\n "value": "/tmp/nss_wrapper/postgres/group"\n }\n ],\n "image": "docker.io/perconalab/percona-postgresql-operator:main-ppg18-postgres",\n "imagePullPolicy": "Always",\n "livenessProbe": {\n "exec": {\n "command": [\n "bash",\n "-c",\n "/opt/crunchy/bin/postgres-liveness-check.sh"\n ]\n },\n "failureThreshold": 3,\n "initialDelaySeconds": 3,\n "periodSeconds": 10,\n "successThreshold": 1,\n "timeoutSeconds": 5\n },\n "name": "database",\n "ports": [\n {\n "containerPort": 5432,\n "name": "postgres",\n "protocol": "TCP"\n }\n ],\n "readinessProbe": {\n "exec": {\n "command": [\n "bash",\n "-c",\n "/opt/crunchy/bin/postgres-readiness-check.sh"\n ]\n },\n "failureThreshold": 3,\n "initialDelaySeconds": 3,\n "periodSeconds": 10,\n "successThreshold": 1,\n "timeoutSeconds": 5\n },\n "resources": {},\n "securityContext": {\n "allowPrivilegeEscalation": false,\n "capabilities": {\n "drop": [\n "ALL"\n ]\n },\n "privileged": false,\n "readOnlyRootFilesystem": true,\n "runAsNonRoot": true,\n "seccompProfile": {\n "type": "RuntimeDefault"\n }\n },\n "terminationMessagePath": "/dev/termination-log",\n "terminationMessagePolicy": "File",\n "volumeMounts": [\n {\n "mountPath": "/pgconf/tls",\n "name": "cert-volume",\n "readOnly": true\n },\n {\n "mountPath": "/pgdata",\n "name": "postgres-data"\n },\n {\n "mountPath": "/etc/database-containerinfo",\n "name": "database-containerinfo",\n "readOnly": true\n },\n {\n "mountPath": "/tablespaces/myts",\n "name": "tablespace-myts"\n },\n {\n "mountPath": "/pgwal",\n "name": "postgres-wal"\n },\n {\n "mountPath": "/pglogs",\n "name": "postgres-logs"\n },\n {\n "mountPath": "/etc/pgbackrest/conf.d",\n "name": "pgbackrest-config",\n "readOnly": true\n },\n {\n "mountPath": "/etc/patroni",\n "name": "patroni-config",\n "readOnly": true\n },\n {\n "mountPath": "/opt/crunchy",\n "name": "crunchy-bin"\n },\n {\n "mountPath": "/tmp",\n "name": "tmp"\n },\n {\n "mountPath": "/dev/shm",\n "name": "dshm"\n }\n ]\n },\n {\n "command": [\n "bash",\n "-ceu",\n "--",\n "monitor() {\\n# Parameters for curl when managing autogrow annotation.\\nAPISERVER=\\"https://kubernetes.default.svc\\"\\nSERVICEACCOUNT=\\"/var/run/secrets/kubernetes.io/serviceaccount\\"\\nNAMESPACE=$(cat ${SERVICEACCOUNT}/namespace)\\nTOKEN=$(cat ${SERVICEACCOUNT}/token)\\nCACERT=${SERVICEACCOUNT}/ca.crt\\n\\ndeclare -r directory=\\"/pgconf/tls\\"\\nexec {fd}\\u003c\\u003e \\u003c(:||:)\\nwhile read -r -t 5 -u \\"${fd}\\" ||:; do\\n # Manage replication certificate.\\n if [[ \\"${directory}\\" -nt \\"/proc/self/fd/${fd}\\" ]] \\u0026\\u0026\\n install -D --mode=0600 -t \\"/tmp/replication\\" \\"${directory}\\"/{replication/tls.crt,replication/tls.key,replication/ca.crt} \\u0026\\u0026\\n pkill -HUP --exact --parent=1 postgres\\n then\\n exec {fd}\\u003e\\u0026- \\u0026\\u0026 exec {fd}\\u003c\\u003e \\u003c(:||:)\\n stat --format=\'Loaded certificates dated %y\' \\"${directory}\\"\\n fi\\n\\ndone\\n}; export -f monitor; exec -a \\"$0\\" bash -ceu monitor",\n "replication-cert-copy"\n ],\n "image": "docker.io/perconalab/percona-postgresql-operator:main-ppg18-postgres",\n "imagePullPolicy": "Always",\n "name": "replication-cert-copy",\n "resources": {},\n "securityContext": {\n "allowPrivilegeEscalation": false,\n "capabilities": {\n "drop": [\n "ALL"\n ]\n },\n "privileged": false,\n "readOnlyRootFilesystem": true,\n "runAsNonRoot": true,\n "seccompProfile": {\n "type": "RuntimeDefault"\n }\n },\n "terminationMessagePath": "/dev/termination-log",\n "terminationMessagePolicy": "File",\n "volumeMounts": [\n {\n "mountPath": "/pgconf/tls",\n "name": "cert-volume",\n "readOnly": true\n },\n {\n "mountPath": "/pgdata",\n "name": "postgres-data"\n },\n {\n "mountPath": "/tmp",\n "name": "tmp"\n }\n ]\n },\n {\n "args": [\n "fluent-bit"\n ],\n "command": [\n "/opt/crunchy/logcollector/entrypoint.sh"\n ],\n "env": [\n {\n "name": "PG_LOG_DIR",\n "value": "/pgdata/pg18/log"\n },\n {\n "name": "PGBACKREST_LOG_DIR",\n "value": "/pgdata/pgbackrest/log"\n },\n {\n "name": "POD_NAMESPACE",\n "valueFrom": {\n "fieldRef": {\n "apiVersion": "v1",\n "fieldPath": "metadata.namespace"\n }\n }\n },\n {\n "name": "POD_NAME",\n "valueFrom": {\n "fieldRef": {\n "apiVersion": "v1",\n "fieldPath": "metadata.name"\n }\n }\n }\n ],\n "image": "docker.io/perconalab/fluentbit:main-logcollector",\n "imagePullPolicy": "IfNotPresent",\n "name": "logs",\n "resources": {},\n "securityContext": {\n "allowPrivilegeEscalation": false,\n "capabilities": {\n "drop": [\n "ALL"\n ]\n },\n "privileged": false,\n "runAsGroup": 26,\n "runAsNonRoot": true,\n "runAsUser": 26,\n "seccompProfile": {\n "type": "RuntimeDefault"\n }\n },\n "terminationMessagePath": "/dev/termination-log",\n "terminationMessagePolicy": "File",\n "volumeMounts": [\n {\n "mountPath": "/pgdata",\n "name": "postgres-data"\n },\n {\n "mountPath": "/opt/crunchy",\n "name": "crunchy-bin"\n },\n {\n "mountPath": "/tmp",\n "name": "tmp"\n }\n ]\n },\n {\n "args": [\n "logrotate"\n ],\n "command": [\n "/opt/crunchy/logcollector/entrypoint.sh"\n ],\n "env": [\n {\n "name": "POD_NAMESPACE",\n "valueFrom": {\n "fieldRef": {\n "apiVersion": "v1",\n "fieldPath": "metadata.namespace"\n }\n }\n },\n {\n "name": "POD_NAME",\n "valueFrom": {\n "fieldRef": {\n "apiVersion": "v1",\n "fieldPath": "metadata.name"\n }\n }\n },\n {\n "name": "LOGROTATE_SCHEDULE",\n "value": "0 0 * * *"\n },\n {\n "name": "LD_PRELOAD",\n "value": "/tmp/nss_wrapper/libnss_wrapper.so"\n },\n {\n "name": "NSS_WRAPPER_PASSWD",\n "value": "/tmp/nss_wrapper/postgres/passwd"\n },\n {\n "name": "NSS_WRAPPER_GROUP",\n "value": "/tmp/nss_wrapper/postgres/group"\n }\n ],\n "image": "docker.io/perconalab/fluentbit:main-logcollector",\n "imagePullPolicy": "IfNotPresent",\n "name": "logrotate",\n "resources": {},\n "securityContext": {\n "allowPrivilegeEscalation": false,\n "capabilities": {\n "drop": [\n "ALL"\n ]\n },\n "privileged": false,\n "runAsGroup": 26,\n "runAsNonRoot": true,\n "runAsUser": 26,\n "seccompProfile": {\n "type": "RuntimeDefault"\n }\n },\n "terminationMessagePath": "/dev/termination-log",\n "terminationMessagePolicy": "File",\n "volumeMounts": [\n {\n "mountPath": "/pgdata",\n "name": "postgres-data"\n },\n {\n "mountPath": "/opt/crunchy",\n "name": "crunchy-bin"\n },\n {\n "mountPath": "/tmp",\n "name": "tmp"\n }\n ]\n },\n {\n "command": [\n "pgbackrest",\n "server"\n ],\n "env": [\n {\n "name": "LD_PRELOAD",\n "value": "/usr/lib64/libnss_wrapper.so"\n },\n {\n "name": "NSS_WRAPPER_PASSWD",\n "value": "/tmp/nss_wrapper/postgres/passwd"\n },\n {\n "name": "NSS_WRAPPER_GROUP",\n "value": "/tmp/nss_wrapper/postgres/group"\n }\n ],\n "image": "docker.io/perconalab/percona-postgresql-operator:main-pgbackrest18",\n "imagePullPolicy": "Always",\n "livenessProbe": {\n "exec": {\n "command": [\n "pgbackrest",\n "server-ping"\n ]\n },\n "failureThreshold": 3,\n "periodSeconds": 10,\n "successThreshold": 1,\n "timeoutSeconds": 1\n },\n "name": "pgbackrest",\n "resources": {},\n "securityContext": {\n "allowPrivilegeEscalation": false,\n "capabilities": {\n "drop": [\n "ALL"\n ]\n },\n "privileged": false,\n "readOnlyRootFilesystem": true,\n "runAsNonRoot": true,\n "seccompProfile": {\n "type": "RuntimeDefault"\n }\n },\n "terminationMessagePath": "/dev/termination-log",\n "terminationMessagePolicy": "File",\n "volumeMounts": [\n {\n "mountPath": "/etc/pgbackrest/server",\n "name": "pgbackrest-server",\n "readOnly": true\n },\n {\n "mountPath": "/pgdata",\n "name": "postgres-data"\n },\n {\n "mountPath": "/tablespaces/myts",\n "name": "tablespace-myts"\n },\n {\n "mountPath": "/pgwal",\n "name": "postgres-wal"\n },\n {\n "mountPath": "/etc/pgbackrest/conf.d",\n "name": "pgbackrest-config",\n "readOnly": true\n },\n {\n "mountPath": "/tmp",\n "name": "tmp"\n }\n ]\n },\n {\n "command": [\n "bash",\n "-ceu",\n "--",\n "monitor() {\\nexec {fd}\\u003c\\u003e \\u003c(:||:)\\nuntil read -r -t 5 -u \\"${fd}\\"; do\\n if\\n [[ \\"${filename}\\" -nt \\"/proc/self/fd/${fd}\\" ]] \\u0026\\u0026\\n pkill -HUP --exact --parent=0 pgbackrest\\n then\\n exec {fd}\\u003e\\u0026- \\u0026\\u0026 exec {fd}\\u003c\\u003e \\u003c(:||:)\\n stat --dereference --format=\'Loaded configuration dated %y\' \\"${filename}\\"\\n elif\\n { [[ \\"${directory}\\" -nt \\"/proc/self/fd/${fd}\\" ]] ||\\n [[ \\"${authority}\\" -nt \\"/proc/self/fd/${fd}\\" ]]\\n } \\u0026\\u0026\\n pkill -HUP --exact --parent=0 pgbackrest\\n then\\n exec {fd}\\u003e\\u0026- \\u0026\\u0026 exec {fd}\\u003c\\u003e \\u003c(:||:)\\n stat --format=\'Loaded certificates dated %y\' \\"${directory}\\"\\n fi\\ndone\\n}; export directory=\\"$1\\" authority=\\"$2\\" filename=\\"$3\\"; export -f monitor; exec -a \\"$0\\" bash -ceu monitor",\n "pgbackrest-config",\n "/etc/pgbackrest/server",\n "/etc/pgbackrest/conf.d/~postgres-operator/tls-ca.crt",\n "/etc/pgbackrest/conf.d/~postgres-operator_server.conf"\n ],\n "image": "docker.io/perconalab/percona-postgresql-operator:main-pgbackrest18",\n "imagePullPolicy": "Always",\n "name": "pgbackrest-config",\n "resources": {},\n "securityContext": {\n "allowPrivilegeEscalation": false,\n "capabilities": {\n "drop": [\n "ALL"\n ]\n },\n "privileged": false,\n "readOnlyRootFilesystem": true,\n "runAsNonRoot": true,\n "seccompProfile": {\n "type": "RuntimeDefault"\n }\n },\n "terminationMessagePath": "/dev/termination-log",\n "terminationMessagePolicy": "File",\n "volumeMounts": [\n {\n "mountPath": "/etc/pgbackrest/server",\n "name": "pgbackrest-server",\n "readOnly": true\n },\n {\n "mountPath": "/etc/pgbackrest/conf.d",\n "name": "pgbackrest-config",\n "readOnly": true\n },\n {\n "mountPath": "/tmp",\n "name": "tmp"\n }\n ]\n }\n ],\n "dnsPolicy": "ClusterFirst",\n "enableServiceLinks": false,\n "initContainers": [\n {\n "command": [\n "/usr/local/bin/init-entrypoint.sh"\n ],\n "image": "docker.io/perconalab/percona-postgresql-operator:PR-1760-4947a0272",\n "imagePullPolicy": "Always",\n "name": "database-init",\n "resources": {},\n "securityContext": {\n "allowPrivilegeEscalation": false,\n "capabilities": {\n "drop": [\n "ALL"\n ]\n },\n "privileged": false,\n "readOnlyRootFilesystem": true,\n "runAsNonRoot": true,\n "seccompProfile": {\n "type": "RuntimeDefault"\n }\n },\n "terminationMessagePath": "/dev/termination-log",\n "terminationMessagePolicy": "File",\n "volumeMounts": [\n {\n "mountPath": "/opt/crunchy",\n "name": "crunchy-bin"\n },\n {\n "mountPath": "/tmp",\n "name": "tmp"\n }\n ]\n },\n {\n "command": [\n "bash",\n "-ceu",\n "--",\n "declare -r expected_major_version=\\"$1\\" pgwal_directory=\\"$2\\" pgbrLog_directory=\\"$3\\"\\npermissions() { while [[ -n \\"$1\\" ]]; do set \\"${1%/*}\\" \\"$@\\"; done; shift; stat -Lc \'%A %4u %4g %n\' \\"$@\\"; }\\nhalt() { local rc=$?; \\u003e\\u00262 echo \\"$@\\"; exit \\"${rc/#0/1}\\"; }\\nresults() { printf \'::postgres-operator: %s::%s\\\\n\' \\"$@\\"; }\\nrecreate() (\\n local tmp; tmp=$(mktemp -d -p \\"${1%/*}\\"); GLOBIGNORE=\'.:..\'; set -x\\n chmod \\"$2\\" \\"${tmp}\\"; mv \\"$1\\"/* \\"${tmp}\\"; rmdir \\"$1\\"; mv \\"${tmp}\\" \\"$1\\"\\n)\\nsafelink() (\\n local desired=\\"$1\\" name=\\"$2\\" current\\n current=$(realpath \\"${name}\\")\\n if [[ \\"${current}\\" == \\"${desired}\\" ]]; then return; fi\\n set -x; mv --no-target-directory \\"${current}\\" \\"${desired}\\"\\n ln --no-dereference --force --symbolic \\"${desired}\\" \\"${name}\\"\\n)\\necho Initializing ...\\nresults \'uid\' \\"$(id -u ||:)\\" \'gid\' \\"$(id -G ||:)\\"\\nif [[ \\"${pgwal_directory}\\" == *\\"pgwal/\\"* ]] \\u0026\\u0026 [[ ! -d \\"/pgwal/pgbackrest-spool\\" ]];then rm -rf \\"/pgdata/pgbackrest-spool\\" \\u0026\\u0026 mkdir -p \\"/pgwal/pgbackrest-spool\\" \\u0026\\u0026 ln --force --symbolic \\"/pgwal/pgbackrest-spool\\" \\"/pgdata/pgbackrest-spool\\";fi\\nif [[ ! -e \\"/pgdata/pgbackrest-spool\\" ]];then rm -rf /pgdata/pgbackrest-spool;fi\\nif [[ ! -e \\"/pgdata/logs/postgres\\" ]];then rm -rf \\"/pgdata/logs/postgres\\";fi\\nif [[ ! -e \\"${pgbrLog_directory}\\" ]];then rm -rf \\"${pgbrLog_directory}\\";fi\\nif [[ -d \\"/pglogs\\" ]];then install --directory --mode=0775 \\"/pglogs/postgres\\" \\"/pglogs/pgbackrest/log\\";if [[ ! -L \\"/pgdata/logs/postgres\\" ]];then mkdir -p \\"/pgdata/logs\\" \\u0026\\u0026 rm -rf \\"/pgdata/logs/postgres\\" \\u0026\\u0026 ln --symbolic \\"/pglogs/postgres\\" \\"/pgdata/logs/postgres\\";fi;if [[ ! -L \\"${pgbrLog_directory}\\" ]];then mkdir -p \\"${pgbrLog_directory%/*}\\" \\u0026\\u0026 rm -rf \\"${pgbrLog_directory}\\" \\u0026\\u0026 ln --symbolic \\"/pglogs/pgbackrest/log\\" \\"${pgbrLog_directory}\\";fi;fi\\nresults \'postgres path\' \\"$(command -v postgres ||:)\\"\\nresults \'postgres version\' \\"${postgres_version:=$(postgres --version ||:)}\\"\\n[[ \\"${postgres_version}\\" =~ \\") ${expected_major_version}\\"($|[^0-9]) ]] ||\\nhalt Expected PostgreSQL version \\"${expected_major_version}\\"\\nresults \'config directory\' \\"${PGDATA:?}\\"\\npostgres_data_directory=$([[ -d \\"${PGDATA}\\" ]] \\u0026\\u0026 postgres -C data_directory || echo \\"${PGDATA}\\")\\nresults \'data directory\' \\"${postgres_data_directory}\\"\\n[[ \\"${postgres_data_directory}\\" == \\"${PGDATA}\\" ]] ||\\nhalt Expected matching config and data directories\\nbootstrap_dir=\\"${postgres_data_directory}_bootstrap\\"\\n[[ -d \\"${bootstrap_dir}\\" ]] \\u0026\\u0026 results \'bootstrap directory\' \\"${bootstrap_dir}\\"\\n[[ -d \\"${bootstrap_dir}\\" ]] \\u0026\\u0026 postgres_data_directory=\\"${bootstrap_dir}\\"\\nif [[ ! -e \\"${postgres_data_directory}\\" || -O \\"${postgres_data_directory}\\" ]]; then\\ninstall --directory --mode=0700 \\"${postgres_data_directory}\\"\\nelif [[ -w \\"${postgres_data_directory}\\" \\u0026\\u0026 -g \\"${postgres_data_directory}\\" ]]; then\\nrecreate \\"${postgres_data_directory}\\" \'0700\'\\nelse (halt Permissions!); fi ||\\nhalt \\"$(permissions \\"${postgres_data_directory}\\" ||:)\\"\\nresults \'pgBackRest log directory\' \\"${pgbrLog_directory}\\"\\ninstall --directory --mode=0775 \\"${pgbrLog_directory}\\" ||\\nhalt \\"$(permissions \\"${pgbrLog_directory}\\" ||:)\\"\\ninstall -D --mode=0600 -t \\"/tmp/replication\\" \\"/pgconf/tls/replication\\"/{tls.crt,tls.key,ca.crt}\\n\\ntablespace_dir=/tablespaces/myts/data\\nif [[ ! -e \\"${tablespace_dir}\\" || -O \\"${tablespace_dir}\\" ]]; then\\ninstall --directory --mode=0700 \\"${tablespace_dir}\\"\\nelif [[ -w \\"${tablespace_dir}\\" \\u0026\\u0026 -g \\"${tablespace_dir}\\" ]]; then\\nrecreate \\"${tablespace_dir}\\" \'0700\'\\nelse (halt Permissions!); fi ||\\nhalt \\"$(permissions \\"${tablespace_dir}\\" ||:)\\"\\n[[ -f \\"${postgres_data_directory}/PG_VERSION\\" ]] || exit 0\\nresults \'data version\' \\"${postgres_data_version:=$(\\u003c \\"${postgres_data_directory}/PG_VERSION\\")}\\"\\n[[ \\"${postgres_data_version}\\" == \\"${expected_major_version}\\" ]] ||\\nhalt Expected PostgreSQL data version \\"${expected_major_version}\\"\\n[[ ! -f \\"${postgres_data_directory}/postgresql.conf\\" ]] \\u0026\\u0026\\ntouch \\"${postgres_data_directory}/postgresql.conf\\"\\nsafelink \\"${pgwal_directory}\\" \\"${postgres_data_directory}/pg_wal\\"\\nresults \'wal directory\' \\"$(realpath \\"${postgres_data_directory}/pg_wal\\" ||:)\\"\\nrm -f \\"${postgres_data_directory}/recovery.signal\\"",\n "startup",\n "18",\n "/pgwal/pg18_wal",\n "/pgdata/pgbackrest/log"\n ],\n "env": [\n {\n "name": "PGDATA",\n "value": "/pgdata/pg18"\n },\n {\n "name": "PGHOST",\n "value": "/tmp/postgres"\n },\n {\n "name": "PGPORT",\n "value": "5432"\n },\n {\n "name": "KRB5_CONFIG",\n "value": "/etc/postgres/krb5.conf"\n },\n {\n "name": "KRB5RCACHEDIR",\n "value": "/tmp"\n },\n {\n "name": "LDAPTLS_CACERT",\n "value": "/etc/postgres/ldap/ca.crt"\n },\n {\n "name": "LC_ALL",\n "value": "en_US.utf-8"\n },\n {\n "name": "LANG",\n "value": "en_US.utf-8"\n }\n ],\n "image": "docker.io/perconalab/percona-postgresql-operator:main-ppg18-postgres",\n "imagePullPolicy": "Always",\n "name": "postgres-startup",\n "resources": {},\n "securityContext": {\n "allowPrivilegeEscalation": false,\n "capabilities": {\n "drop": [\n "ALL"\n ]\n },\n "privileged": false,\n "readOnlyRootFilesystem": true,\n "runAsNonRoot": true,\n "seccompProfile": {\n "type": "RuntimeDefault"\n }\n },\n "terminationMessagePath": "/dev/termination-log",\n "terminationMessagePolicy": "File",\n "volumeMounts": [\n {\n "mountPath": "/pgconf/tls",\n "name": "cert-volume",\n "readOnly": true\n },\n {\n "mountPath": "/pgdata",\n "name": "postgres-data"\n },\n {\n "mountPath": "/tablespaces/myts",\n "name": "tablespace-myts"\n },\n {\n "mountPath": "/pgwal",\n "name": "postgres-wal"\n },\n {\n "mountPath": "/pglogs",\n "name": "postgres-logs"\n },\n {\n "mountPath": "/tmp",\n "name": "tmp"\n }\n ]\n },\n {\n "command": [\n "bash",\n "-c",\n "mkdir -p /tmp/nss_wrapper \\u0026\\u0026 { [[ -f /tmp/nss_wrapper/libnss_wrapper.so ]] || cp /usr/lib64/libnss_wrapper.so /tmp/nss_wrapper/libnss_wrapper.so; }"\n ],\n "image": "docker.io/perconalab/percona-postgresql-operator:main-ppg18-postgres",\n "imagePullPolicy": "Always",\n "name": "nss-wrapper-init-logcollector",\n "resources": {},\n "securityContext": {\n "allowPrivilegeEscalation": false,\n "capabilities": {\n "drop": [\n "ALL"\n ]\n },\n "privileged": false,\n "runAsGroup": 26,\n "runAsNonRoot": true,\n "runAsUser": 26,\n "seccompProfile": {\n "type": "RuntimeDefault"\n }\n },\n "terminationMessagePath": "/dev/termination-log",\n "terminationMessagePolicy": "File",\n "volumeMounts": [\n {\n "mountPath": "/tmp",\n "name": "tmp"\n }\n ]\n },\n {\n "command": [\n "bash",\n "-c",\n "export NSS_WRAPPER_SUBDIR=postgres CRUNCHY_NSS_USERNAME=postgres CRUNCHY_NSS_USER_DESC=\\"postgres\\" \\n# Define nss_wrapper directory and passwd \\u0026 group files that will be utilized by nss_wrapper. The\\n# nss_wrapper_env.sh script (which also sets these vars) isn\'t sourced here since the nss_wrapper\\n# has not yet been setup, and we therefore don\'t yet want the nss_wrapper vars in the environment.\\nmkdir -p /tmp/nss_wrapper\\nchmod g+rwx /tmp/nss_wrapper\\n\\nNSS_WRAPPER_DIR=\\"/tmp/nss_wrapper/${NSS_WRAPPER_SUBDIR}\\"\\nNSS_WRAPPER_PASSWD=\\"${NSS_WRAPPER_DIR}/passwd\\"\\nNSS_WRAPPER_GROUP=\\"${NSS_WRAPPER_DIR}/group\\"\\n\\n# create the nss_wrapper directory\\nmkdir -p \\"${NSS_WRAPPER_DIR}\\"\\n\\n# grab the current user ID and group ID\\nUSER_ID=$(id -u)\\nexport USER_ID\\nGROUP_ID=$(id -g)\\nexport GROUP_ID\\n\\n# get copies of the passwd and group files\\n[[ -f \\"${NSS_WRAPPER_PASSWD}\\" ]] || cp \\"/etc/passwd\\" \\"${NSS_WRAPPER_PASSWD}\\"\\n[[ -f \\"${NSS_WRAPPER_GROUP}\\" ]] || cp \\"/etc/group\\" \\"${NSS_WRAPPER_GROUP}\\"\\n\\n# if the username is missing from the passwd file, then add it\\nif [[ ! $(cat \\"${NSS_WRAPPER_PASSWD}\\") =~ ${CRUNCHY_NSS_USERNAME}:x:${USER_ID} ]]; then\\n echo \\"nss_wrapper: adding user\\"\\n passwd_tmp=\\"${NSS_WRAPPER_DIR}/passwd_tmp\\"\\n cp \\"${NSS_WRAPPER_PASSWD}\\" \\"${passwd_tmp}\\"\\n sed -i \\"/${CRUNCHY_NSS_USERNAME}:x:/d\\" \\"${passwd_tmp}\\"\\n # needed for OCP 4.x because crio updates /etc/passwd with an entry for USER_ID\\n sed -i \\"/${USER_ID}:x:/d\\" \\"${passwd_tmp}\\"\\n printf \'${CRUNCHY_NSS_USERNAME}:x:${USER_ID}:${GROUP_ID}:${CRUNCHY_NSS_USER_DESC}:${HOME}:/bin/bash\\\\n\' \\u003e\\u003e \\"${passwd_tmp}\\"\\n envsubst \\u003c \\"${passwd_tmp}\\" \\u003e \\"${NSS_WRAPPER_PASSWD}\\"\\n rm \\"${passwd_tmp}\\"\\nelse\\n echo \\"nss_wrapper: user exists\\"\\nfi\\n\\n# if the username (which will be the same as the group name) is missing from group file, then add it\\nif [[ ! $(cat \\"${NSS_WRAPPER_GROUP}\\") =~ ${CRUNCHY_NSS_USERNAME}:x:${USER_ID} ]]; then\\n echo \\"nss_wrapper: adding group\\"\\n group_tmp=\\"${NSS_WRAPPER_DIR}/group_tmp\\"\\n cp \\"${NSS_WRAPPER_GROUP}\\" \\"${group_tmp}\\"\\n sed -i \\"/${CRUNCHY_NSS_USERNAME}:x:/d\\" \\"${group_tmp}\\"\\n printf \'${CRUNCHY_NSS_USERNAME}:x:${USER_ID}:${CRUNCHY_NSS_USERNAME}\\\\n\' \\u003e\\u003e \\"${group_tmp}\\"\\n envsubst \\u003c \\"${group_tmp}\\" \\u003e \\"${NSS_WRAPPER_GROUP}\\"\\n rm \\"${group_tmp}\\"\\nelse\\n echo \\"nss_wrapper: group exists\\"\\nfi\\n\\n# export the nss_wrapper env vars\\n# define nss_wrapper directory and passwd \\u0026 group files that will be utilized by nss_wrapper\\nNSS_WRAPPER_DIR=\\"/tmp/nss_wrapper/${NSS_WRAPPER_SUBDIR}\\"\\nNSS_WRAPPER_PASSWD=\\"${NSS_WRAPPER_DIR}/passwd\\"\\nNSS_WRAPPER_GROUP=\\"${NSS_WRAPPER_DIR}/group\\"\\n\\nexport LD_PRELOAD=/usr/lib64/libnss_wrapper.so\\nexport NSS_WRAPPER_PASSWD=\\"${NSS_WRAPPER_PASSWD}\\"\\nexport NSS_WRAPPER_GROUP=\\"${NSS_WRAPPER_GROUP}\\"\\n\\necho \\"nss_wrapper: environment configured\\"\\n"\n ],\n "image": "docker.io/perconalab/percona-postgresql-operator:main-ppg18-postgres",\n "imagePullPolicy": "Always",\n "name": "nss-wrapper-init",\n "resources": {},\n "securityContext": {\n "allowPrivilegeEscalation": false,\n "capabilities": {\n "drop": [\n "ALL"\n ]\n },\n "privileged": false,\n "readOnlyRootFilesystem": true,\n "runAsNonRoot": true,\n "seccompProfile": {\n "type": "RuntimeDefault"\n }\n },\n "terminationMessagePath": "/dev/termination-log",\n "terminationMessagePolicy": "File",\n "volumeMounts": [\n {\n "mountPath": "/tmp",\n "name": "tmp"\n }\n ]\n }\n ],\n "restartPolicy": "Always",\n "schedulerName": "default-scheduler",\n "securityContext": {\n "fsGroup": 26,\n "fsGroupChangePolicy": "OnRootMismatch"\n },\n "serviceAccount": "additional-volumes-instance",\n "serviceAccountName": "additional-volumes-instance",\n "shareProcessNamespace": true,\n "terminationGracePeriodSeconds": 30,\n "topologySpreadConstraints": [\n {\n "labelSelector": {\n "matchExpressions": [\n {\n "key": "postgres-operator.crunchydata.com/data",\n "operator": "In",\n "values": [\n "postgres",\n "pgbackrest"\n ]\n }\n ],\n "matchLabels": {\n "postgres-operator.crunchydata.com/cluster": "additional-volumes"\n }\n },\n "maxSkew": 1,\n "topologyKey": "kubernetes.io/hostname",\n "whenUnsatisfiable": "ScheduleAnyway"\n },\n {\n "labelSelector": {\n "matchExpressions": [\n {\n "key": "postgres-operator.crunchydata.com/data",\n "operator": "In",\n "values": [\n "postgres",\n "pgbackrest"\n ]\n }\n ],\n "matchLabels": {\n "postgres-operator.crunchydata.com/cluster": "additional-volumes"\n }\n },\n "maxSkew": 1,\n "topologyKey": "topology.kubernetes.io/zone",\n "whenUnsatisfiable": "ScheduleAnyway"\n }\n ],\n "volumes": [\n {\n "name": "cert-volume",\n "projected": {\n "defaultMode": 384,\n "sources": [\n {\n "secret": {\n "items": [\n {\n "key": "tls.crt",\n "path": "tls.crt"\n },\n {\n "key": "tls.key",\n "path": "tls.key"\n },\n {\n "key": "ca.crt",\n "path": "ca.crt"\n }\n ],\n "name": "additional-volumes-cluster-cert"\n }\n },\n {\n "secret": {\n "items": [\n {\n "key": "tls.crt",\n "path": "replication/tls.crt"\n },\n {\n "key": "tls.key",\n "path": "replication/tls.key"\n },\n {\n "key": "ca.crt",\n "path": "replication/ca.crt"\n }\n ],\n "name": "additional-volumes-replication-cert"\n }\n }\n ]\n }\n },\n {\n "name": "postgres-data",\n "persistentVolumeClaim": {\n "claimName": "additional-volumes-instance1-24br-pgdata"\n }\n },\n {\n "downwardAPI": {\n "defaultMode": 420,\n "items": [\n {\n "path": "cpu_limit",\n "resourceFieldRef": {\n "containerName": "database",\n "divisor": "1m",\n "resource": "limits.cpu"\n }\n },\n {\n "path": "cpu_request",\n "resourceFieldRef": {\n "containerName": "database",\n "divisor": "1m",\n "resource": "requests.cpu"\n }\n },\n {\n "path": "mem_limit",\n "resourceFieldRef": {\n "containerName": "database",\n "divisor": "1Mi",\n "resource": "limits.memory"\n }\n },\n {\n "path": "mem_request",\n "resourceFieldRef": {\n "containerName": "database",\n "divisor": "1Mi",\n "resource": "requests.memory"\n }\n },\n {\n "fieldRef": {\n "apiVersion": "v1",\n "fieldPath": "metadata.labels"\n },\n "path": "labels"\n },\n {\n "fieldRef": {\n "apiVersion": "v1",\n "fieldPath": "metadata.annotations"\n },\n "path": "annotations"\n }\n ]\n },\n "name": "database-containerinfo"\n },\n {\n "name": "tablespace-myts",\n "persistentVolumeClaim": {\n "claimName": "additional-volumes-instance1-24br-myts-tablespace"\n }\n },\n {\n "name": "postgres-wal",\n "persistentVolumeClaim": {\n "claimName": "additional-volumes-instance1-24br-pgwal"\n }\n },\n {\n "name": "postgres-logs",\n "persistentVolumeClaim": {\n "claimName": "additional-volumes-instance1-24br-pglogs"\n }\n },\n {\n "name": "pgbackrest-server",\n "projected": {\n "defaultMode": 420,\n "sources": [\n {\n "secret": {\n "items": [\n {\n "key": "pgbackrest-server.crt",\n "path": "server-tls.crt"\n },\n {\n "key": "pgbackrest-server.key",\n "mode": 384,\n "path": "server-tls.key"\n }\n ],\n "name": "additional-volumes-instance1-24br-certs"\n }\n }\n ]\n }\n },\n {\n "name": "pgbackrest-config",\n "projected": {\n "defaultMode": 420,\n "sources": [\n {\n "configMap": {\n "items": [\n {\n "key": "pgbackrest_instance.conf",\n "path": "pgbackrest_instance.conf"\n },\n {\n "key": "config-hash",\n "path": "config-hash"\n },\n {\n "key": "pgbackrest-server.conf",\n "path": "~postgres-operator_server.conf"\n }\n ],\n "name": "additional-volumes-pgbackrest-config"\n }\n },\n {\n "secret": {\n "items": [\n {\n "key": "pgbackrest.ca-roots",\n "path": "~postgres-operator/tls-ca.crt"\n },\n {\n "key": "pgbackrest-client.crt",\n "path": "~postgres-operator/client-tls.crt"\n },\n {\n "key": "pgbackrest-client.key",\n "mode": 384,\n "path": "~postgres-operator/client-tls.key"\n }\n ],\n "name": "additional-volumes-pgbackrest"\n }\n }\n ]\n }\n },\n {\n "name": "patroni-config",\n "projected": {\n "defaultMode": 420,\n "sources": [\n {\n "configMap": {\n "items": [\n {\n "key": "patroni.yaml",\n "path": "~postgres-operator_cluster.yaml"\n }\n ],\n "name": "additional-volumes-config"\n }\n },\n {\n "configMap": {\n "items": [\n {\n "key": "patroni.yaml",\n "path": "~postgres-operator_instance.yaml"\n }\n ],\n "name": "additional-volumes-instance1-24br-config"\n }\n },\n {\n "secret": {\n "items": [\n {\n "key": "patroni.ca-roots",\n "path": "~postgres-operator/patroni.ca-roots"\n },\n {\n "key": "patroni.crt-combined",\n "path": "~postgres-operator/patroni.crt+key"\n }\n ],\n "name": "additional-volumes-instance1-24br-certs"\n }\n }\n ]\n }\n },\n {\n "emptyDir": {},\n "name": "crunchy-bin"\n },\n {\n "emptyDir": {\n "sizeLimit": "2Gi"\n },\n "name": "tmp"\n },\n {\n "emptyDir": {\n "medium": "Memory"\n },\n "name": "dshm"\n }\n ]\n }\n },\n "updateStrategy": {\n "type": "OnDelete"\n }\n },\n "status": {\n "availableReplicas": 1,\n "collisionCount": 0,\n "currentReplicas": 1,\n "currentRevision": "additional-volumes-instance1-24br-6849b5b674",\n "observedGeneration": 1,\n "readyReplicas": 1,\n "replicas": 1,\n "updateRevision": "additional-volumes-instance1-24br-6849b5b674",\n "updatedReplicas": 1\n }\n },\n {\n "apiVersion": "apps/v1",\n "kind": "StatefulSet",\n "metadata": {\n "annotations": {\n "pgv2.percona.com/logcollector-config-hash": "d9a116e02b828bdc02165325e92799d82961fb499041814c7c765d0ce263ce77"\n },\n "creationTimestamp": "2026-08-19T18:12:06Z",\n "generation": 1,\n "labels": {\n "app.kubernetes.io/component": "pg",\n "app.kubernetes.io/instance": "additional-volumes",\n "app.kubernetes.io/managed-by": "percona-postgresql-operator",\n "app.kubernetes.io/name": "percona-postgresql",\n "app.kubernetes.io/part-of": "percona-postgresql",\n "pgv2.percona.com/version": "3.2.0",\n "postgres-operator.crunchydata.com/cluster": "additional-volumes",\n "postgres-operator.crunchydata.com/data": "postgres",\n "postgres-operator.crunchydata.com/instance": "additional-volumes-instance1-n8pg",\n "postgres-operator.crunchydata.com/instance-set": "instance1"\n },\n "name": "additional-volumes-instance1-n8pg",\n "namespace": "kuttl-test-intimate-garfish",\n "ownerReferences": [\n {\n "apiVersion": "upstream.pgv2.percona.com/v1beta1",\n "blockOwnerDeletion": true,\n "controller": true,\n "kind": "PostgresCluster",\n "name": "additional-volumes",\n "uid": "b795649f-550b-4283-b2ef-eca573235e5a"\n }\n ],\n "resourceVersion": "1787163189863071003",\n "uid": "c2983a30-d942-42e2-9d6a-3e99691891fd"\n },\n "spec": {\n "persistentVolumeClaimRetentionPolicy": {\n "whenDeleted": "Retain",\n "whenScaled": "Retain"\n },\n "podManagementPolicy": "OrderedReady",\n "replicas": 1,\n "revisionHistoryLimit": 0,\n "selector": {\n "matchLabels": {\n "postgres-operator.crunchydata.com/cluster": "additional-volumes",\n "postgres-operator.crunchydata.com/instance": "additional-volumes-instance1-n8pg",\n "postgres-operator.crunchydata.com/instance-set": "instance1"\n }\n },\n "serviceName": "additional-volumes-pods",\n "template": {\n "metadata": {\n "annotations": {\n "kubectl.kubernetes.io/default-container": "database",\n "pgv2.percona.com/logcollector-config-hash": "d9a116e02b828bdc02165325e92799d82961fb499041814c7c765d0ce263ce77"\n },\n "creationTimestamp": null,\n "labels": {\n "app.kubernetes.io/component": "pg",\n "app.kubernetes.io/instance": "additional-volumes",\n "app.kubernetes.io/managed-by": "percona-postgresql-operator",\n "app.kubernetes.io/name": "percona-postgresql",\n "app.kubernetes.io/part-of": "percona-postgresql",\n "pgv2.percona.com/version": "3.2.0",\n "postgres-operator.crunchydata.com/cluster": "additional-volumes",\n "postgres-operator.crunchydata.com/data": "postgres",\n "postgres-operator.crunchydata.com/instance": "additional-volumes-instance1-n8pg",\n "postgres-operator.crunchydata.com/instance-set": "instance1",\n "postgres-operator.crunchydata.com/patroni": "additional-volumes-ha"\n }\n },\n "spec": {\n "affinity": {\n "podAntiAffinity": {\n "preferredDuringSchedulingIgnoredDuringExecution": [\n {\n "podAffinityTerm": {\n "labelSelector": {\n "matchLabels": {\n "postgres-operator.crunchydata.com/data": "postgres"\n }\n },\n "topologyKey": "kubernetes.io/hostname"\n },\n "weight": 1\n }\n ]\n }\n },\n "containers": [\n {\n "command": [\n "/opt/crunchy/bin/postgres-entrypoint.sh",\n "patroni",\n "/etc/patroni"\n ],\n "env": [\n {\n "name": "PGDATA",\n "value": "/pgdata/pg18"\n },\n {\n "name": "PGHOST",\n "value": "/tmp/postgres"\n },\n {\n "name": "PGPORT",\n "value": "5432"\n },\n {\n "name": "KRB5_CONFIG",\n "value": "/etc/postgres/krb5.conf"\n },\n {\n "name": "KRB5RCACHEDIR",\n "value": "/tmp"\n },\n {\n "name": "LDAPTLS_CACERT",\n "value": "/etc/postgres/ldap/ca.crt"\n },\n {\n "name": "LC_ALL",\n "value": "en_US.utf-8"\n },\n {\n "name": "LANG",\n "value": "en_US.utf-8"\n },\n {\n "name": "PATRONI_NAME",\n "valueFrom": {\n "fieldRef": {\n "apiVersion": "v1",\n "fieldPath": "metadata.name"\n }\n }\n },\n {\n "name": "PATRONI_KUBERNETES_POD_IP",\n "valueFrom": {\n "fieldRef": {\n "apiVersion": "v1",\n "fieldPath": "status.podIP"\n }\n }\n },\n {\n "name": "PATRONI_KUBERNETES_PORTS",\n "value": "- name: postgres\\n port: 5432\\n protocol: TCP\\n"\n },\n {\n "name": "PATRONI_POSTGRESQL_CONNECT_ADDRESS",\n "value": "$(PATRONI_NAME).additional-volumes-pods:5432"\n },\n {\n "name": "PATRONI_POSTGRESQL_LISTEN",\n "value": "*:5432"\n },\n {\n "name": "PATRONI_POSTGRESQL_CONFIG_DIR",\n "value": "/pgdata/pg18"\n },\n {\n "name": "PATRONI_POSTGRESQL_DATA_DIR",\n "value": "/pgdata/pg18"\n },\n {\n "name": "PATRONI_RESTAPI_CONNECT_ADDRESS",\n "value": "$(PATRONI_NAME).additional-volumes-pods:8008"\n },\n {\n "name": "PATRONI_RESTAPI_LISTEN",\n "value": "*:8008"\n },\n {\n "name": "PATRONICTL_CONFIG_FILE",\n "value": "/etc/patroni"\n },\n {\n "name": "LD_PRELOAD",\n "value": "/usr/lib64/libnss_wrapper.so"\n },\n {\n "name": "NSS_WRAPPER_PASSWD",\n "value": "/tmp/nss_wrapper/postgres/passwd"\n },\n {\n "name": "NSS_WRAPPER_GROUP",\n "value": "/tmp/nss_wrapper/postgres/group"\n }\n ],\n "image": "docker.io/perconalab/percona-postgresql-operator:main-ppg18-postgres",\n "imagePullPolicy": "Always",\n "livenessProbe": {\n "exec": {\n "command": [\n "bash",\n "-c",\n "/opt/crunchy/bin/postgres-liveness-check.sh"\n ]\n },\n "failureThreshold": 3,\n "initialDelaySeconds": 3,\n "periodSeconds": 10,\n "successThreshold": 1,\n "timeoutSeconds": 5\n },\n "name": "database",\n "ports": [\n {\n "containerPort": 5432,\n "name": "postgres",\n "protocol": "TCP"\n }\n ],\n "readinessProbe": {\n "exec": {\n "command": [\n "bash",\n "-c",\n "/opt/crunchy/bin/postgres-readiness-check.sh"\n ]\n },\n "failureThreshold": 3,\n "initialDelaySeconds": 3,\n "periodSeconds": 10,\n "successThreshold": 1,\n "timeoutSeconds": 5\n },\n "resources": {},\n "securityContext": {\n "allowPrivilegeEscalation": false,\n "capabilities": {\n "drop": [\n "ALL"\n ]\n },\n "privileged": false,\n "readOnlyRootFilesystem": true,\n "runAsNonRoot": true,\n "seccompProfile": {\n "type": "RuntimeDefault"\n }\n },\n "terminationMessagePath": "/dev/termination-log",\n "terminationMessagePolicy": "File",\n "volumeMounts": [\n {\n "mountPath": "/pgconf/tls",\n "name": "cert-volume",\n "readOnly": true\n },\n {\n "mountPath": "/pgdata",\n "name": "postgres-data"\n },\n {\n "mountPath": "/etc/database-containerinfo",\n "name": "database-containerinfo",\n "readOnly": true\n },\n {\n "mountPath": "/tablespaces/myts",\n "name": "tablespace-myts"\n },\n {\n "mountPath": "/pgwal",\n "name": "postgres-wal"\n },\n {\n "mountPath": "/pglogs",\n "name": "postgres-logs"\n },\n {\n "mountPath": "/etc/pgbackrest/conf.d",\n "name": "pgbackrest-config",\n "readOnly": true\n },\n {\n "mountPath": "/etc/patroni",\n "name": "patroni-config",\n "readOnly": true\n },\n {\n "mountPath": "/opt/crunchy",\n "name": "crunchy-bin"\n },\n {\n "mountPath": "/tmp",\n "name": "tmp"\n },\n {\n "mountPath": "/dev/shm",\n "name": "dshm"\n }\n ]\n },\n {\n "command": [\n "bash",\n "-ceu",\n "--",\n "monitor() {\\n# Parameters for curl when managing autogrow annotation.\\nAPISERVER=\\"https://kubernetes.default.svc\\"\\nSERVICEACCOUNT=\\"/var/run/secrets/kubernetes.io/serviceaccount\\"\\nNAMESPACE=$(cat ${SERVICEACCOUNT}/namespace)\\nTOKEN=$(cat ${SERVICEACCOUNT}/token)\\nCACERT=${SERVICEACCOUNT}/ca.crt\\n\\ndeclare -r directory=\\"/pgconf/tls\\"\\nexec {fd}\\u003c\\u003e \\u003c(:||:)\\nwhile read -r -t 5 -u \\"${fd}\\" ||:; do\\n # Manage replication certificate.\\n if [[ \\"${directory}\\" -nt \\"/proc/self/fd/${fd}\\" ]] \\u0026\\u0026\\n install -D --mode=0600 -t \\"/tmp/replication\\" \\"${directory}\\"/{replication/tls.crt,replication/tls.key,replication/ca.crt} \\u0026\\u0026\\n pkill -HUP --exact --parent=1 postgres\\n then\\n exec {fd}\\u003e\\u0026- \\u0026\\u0026 exec {fd}\\u003c\\u003e \\u003c(:||:)\\n stat --format=\'Loaded certificates dated %y\' \\"${directory}\\"\\n fi\\n\\ndone\\n}; export -f monitor; exec -a \\"$0\\" bash -ceu monitor",\n "replication-cert-copy"\n ],\n "image": "docker.io/perconalab/percona-postgresql-operator:main-ppg18-postgres",\n "imagePullPolicy": "Always",\n "name": "replication-cert-copy",\n "resources": {},\n "securityContext": {\n "allowPrivilegeEscalation": false,\n "capabilities": {\n "drop": [\n "ALL"\n ]\n },\n "privileged": false,\n "readOnlyRootFilesystem": true,\n "runAsNonRoot": true,\n "seccompProfile": {\n "type": "RuntimeDefault"\n }\n },\n "terminationMessagePath": "/dev/termination-log",\n "terminationMessagePolicy": "File",\n "volumeMounts": [\n {\n "mountPath": "/pgconf/tls",\n "name": "cert-volume",\n "readOnly": true\n },\n {\n "mountPath": "/pgdata",\n "name": "postgres-data"\n },\n {\n "mountPath": "/tmp",\n "name": "tmp"\n }\n ]\n },\n {\n "args": [\n "fluent-bit"\n ],\n "command": [\n "/opt/crunchy/logcollector/entrypoint.sh"\n ],\n "env": [\n {\n "name": "PG_LOG_DIR",\n "value": "/pgdata/pg18/log"\n },\n {\n "name": "PGBACKREST_LOG_DIR",\n "value": "/pgdata/pgbackrest/log"\n },\n {\n "name": "POD_NAMESPACE",\n "valueFrom": {\n "fieldRef": {\n "apiVersion": "v1",\n "fieldPath": "metadata.namespace"\n }\n }\n },\n {\n "name": "POD_NAME",\n "valueFrom": {\n "fieldRef": {\n "apiVersion": "v1",\n "fieldPath": "metadata.name"\n }\n }\n }\n ],\n "image": "docker.io/perconalab/fluentbit:main-logcollector",\n "imagePullPolicy": "IfNotPresent",\n "name": "logs",\n "resources": {},\n "securityContext": {\n "allowPrivilegeEscalation": false,\n "capabilities": {\n "drop": [\n "ALL"\n ]\n },\n "privileged": false,\n "runAsGroup": 26,\n "runAsNonRoot": true,\n "runAsUser": 26,\n "seccompProfile": {\n "type": "RuntimeDefault"\n }\n },\n "terminationMessagePath": "/dev/termination-log",\n "terminationMessagePolicy": "File",\n "volumeMounts": [\n {\n "mountPath": "/pgdata",\n "name": "postgres-data"\n },\n {\n "mountPath": "/opt/crunchy",\n "name": "crunchy-bin"\n },\n {\n "mountPath": "/tmp",\n "name": "tmp"\n }\n ]\n },\n {\n "args": [\n "logrotate"\n ],\n "command": [\n "/opt/crunchy/logcollector/entrypoint.sh"\n ],\n "env": [\n {\n "name": "POD_NAMESPACE",\n "valueFrom": {\n "fieldRef": {\n "apiVersion": "v1",\n "fieldPath": "metadata.namespace"\n }\n }\n },\n {\n "name": "POD_NAME",\n "valueFrom": {\n "fieldRef": {\n "apiVersion": "v1",\n "fieldPath": "metadata.name"\n }\n }\n },\n {\n "name": "LOGROTATE_SCHEDULE",\n "value": "0 0 * * *"\n },\n {\n "name": "LD_PRELOAD",\n "value": "/tmp/nss_wrapper/libnss_wrapper.so"\n },\n {\n "name": "NSS_WRAPPER_PASSWD",\n "value": "/tmp/nss_wrapper/postgres/passwd"\n },\n {\n "name": "NSS_WRAPPER_GROUP",\n "value": "/tmp/nss_wrapper/postgres/group"\n }\n ],\n "image": "docker.io/perconalab/fluentbit:main-logcollector",\n "imagePullPolicy": "IfNotPresent",\n "name": "logrotate",\n "resources": {},\n "securityContext": {\n "allowPrivilegeEscalation": false,\n "capabilities": {\n "drop": [\n "ALL"\n ]\n },\n "privileged": false,\n "runAsGroup": 26,\n "runAsNonRoot": true,\n "runAsUser": 26,\n "seccompProfile": {\n "type": "RuntimeDefault"\n }\n },\n "terminationMessagePath": "/dev/termination-log",\n "terminationMessagePolicy": "File",\n "volumeMounts": [\n {\n "mountPath": "/pgdata",\n "name": "postgres-data"\n },\n {\n "mountPath": "/opt/crunchy",\n "name": "crunchy-bin"\n },\n {\n "mountPath": "/tmp",\n "name": "tmp"\n }\n ]\n },\n {\n "command": [\n "pgbackrest",\n "server"\n ],\n "env": [\n {\n "name": "LD_PRELOAD",\n "value": "/usr/lib64/libnss_wrapper.so"\n },\n {\n "name": "NSS_WRAPPER_PASSWD",\n "value": "/tmp/nss_wrapper/postgres/passwd"\n },\n {\n "name": "NSS_WRAPPER_GROUP",\n "value": "/tmp/nss_wrapper/postgres/group"\n }\n ],\n "image": "docker.io/perconalab/percona-postgresql-operator:main-pgbackrest18",\n "imagePullPolicy": "Always",\n "livenessProbe": {\n "exec": {\n "command": [\n "pgbackrest",\n "server-ping"\n ]\n },\n "failureThreshold": 3,\n "periodSeconds": 10,\n "successThreshold": 1,\n "timeoutSeconds": 1\n },\n "name": "pgbackrest",\n "resources": {},\n "securityContext": {\n "allowPrivilegeEscalation": false,\n "capabilities": {\n "drop": [\n "ALL"\n ]\n },\n "privileged": false,\n "readOnlyRootFilesystem": true,\n "runAsNonRoot": true,\n "seccompProfile": {\n "type": "RuntimeDefault"\n }\n },\n "terminationMessagePath": "/dev/termination-log",\n "terminationMessagePolicy": "File",\n "volumeMounts": [\n {\n "mountPath": "/etc/pgbackrest/server",\n "name": "pgbackrest-server",\n "readOnly": true\n },\n {\n "mountPath": "/pgdata",\n "name": "postgres-data"\n },\n {\n "mountPath": "/tablespaces/myts",\n "name": "tablespace-myts"\n },\n {\n "mountPath": "/pgwal",\n "name": "postgres-wal"\n },\n {\n "mountPath": "/etc/pgbackrest/conf.d",\n "name": "pgbackrest-config",\n "readOnly": true\n },\n {\n "mountPath": "/tmp",\n "name": "tmp"\n }\n ]\n },\n {\n "command": [\n "bash",\n "-ceu",\n "--",\n "monitor() {\\nexec {fd}\\u003c\\u003e \\u003c(:||:)\\nuntil read -r -t 5 -u \\"${fd}\\"; do\\n if\\n [[ \\"${filename}\\" -nt \\"/proc/self/fd/${fd}\\" ]] \\u0026\\u0026\\n pkill -HUP --exact --parent=0 pgbackrest\\n then\\n exec {fd}\\u003e\\u0026- \\u0026\\u0026 exec {fd}\\u003c\\u003e \\u003c(:||:)\\n stat --dereference --format=\'Loaded configuration dated %y\' \\"${filename}\\"\\n elif\\n { [[ \\"${directory}\\" -nt \\"/proc/self/fd/${fd}\\" ]] ||\\n [[ \\"${authority}\\" -nt \\"/proc/self/fd/${fd}\\" ]]\\n } \\u0026\\u0026\\n pkill -HUP --exact --parent=0 pgbackrest\\n then\\n exec {fd}\\u003e\\u0026- \\u0026\\u0026 exec {fd}\\u003c\\u003e \\u003c(:||:)\\n stat --format=\'Loaded certificates dated %y\' \\"${directory}\\"\\n fi\\ndone\\n}; export directory=\\"$1\\" authority=\\"$2\\" filename=\\"$3\\"; export -f monitor; exec -a \\"$0\\" bash -ceu monitor",\n "pgbackrest-config",\n "/etc/pgbackrest/server",\n "/etc/pgbackrest/conf.d/~postgres-operator/tls-ca.crt",\n "/etc/pgbackrest/conf.d/~postgres-operator_server.conf"\n ],\n "image": "docker.io/perconalab/percona-postgresql-operator:main-pgbackrest18",\n "imagePullPolicy": "Always",\n "name": "pgbackrest-config",\n "resources": {},\n "securityContext": {\n "allowPrivilegeEscalation": false,\n "capabilities": {\n "drop": [\n "ALL"\n ]\n },\n "privileged": false,\n "readOnlyRootFilesystem": true,\n "runAsNonRoot": true,\n "seccompProfile": {\n "type": "RuntimeDefault"\n }\n },\n "terminationMessagePath": "/dev/termination-log",\n "terminationMessagePolicy": "File",\n "volumeMounts": [\n {\n "mountPath": "/etc/pgbackrest/server",\n "name": "pgbackrest-server",\n "readOnly": true\n },\n {\n "mountPath": "/etc/pgbackrest/conf.d",\n "name": "pgbackrest-config",\n "readOnly": true\n },\n {\n "mountPath": "/tmp",\n "name": "tmp"\n }\n ]\n }\n ],\n "dnsPolicy": "ClusterFirst",\n "enableServiceLinks": false,\n "initContainers": [\n {\n "command": [\n "/usr/local/bin/init-entrypoint.sh"\n ],\n "image": "docker.io/perconalab/percona-postgresql-operator:PR-1760-4947a0272",\n "imagePullPolicy": "Always",\n "name": "database-init",\n "resources": {},\n "securityContext": {\n "allowPrivilegeEscalation": false,\n "capabilities": {\n "drop": [\n "ALL"\n ]\n },\n "privileged": false,\n "readOnlyRootFilesystem": true,\n "runAsNonRoot": true,\n "seccompProfile": {\n "type": "RuntimeDefault"\n }\n },\n "terminationMessagePath": "/dev/termination-log",\n "terminationMessagePolicy": "File",\n "volumeMounts": [\n {\n "mountPath": "/opt/crunchy",\n "name": "crunchy-bin"\n },\n {\n "mountPath": "/tmp",\n "name": "tmp"\n }\n ]\n },\n {\n "command": [\n "bash",\n "-ceu",\n "--",\n "declare -r expected_major_version=\\"$1\\" pgwal_directory=\\"$2\\" pgbrLog_directory=\\"$3\\"\\npermissions() { while [[ -n \\"$1\\" ]]; do set \\"${1%/*}\\" \\"$@\\"; done; shift; stat -Lc \'%A %4u %4g %n\' \\"$@\\"; }\\nhalt() { local rc=$?; \\u003e\\u00262 echo \\"$@\\"; exit \\"${rc/#0/1}\\"; }\\nresults() { printf \'::postgres-operator: %s::%s\\\\n\' \\"$@\\"; }\\nrecreate() (\\n local tmp; tmp=$(mktemp -d -p \\"${1%/*}\\"); GLOBIGNORE=\'.:..\'; set -x\\n chmod \\"$2\\" \\"${tmp}\\"; mv \\"$1\\"/* \\"${tmp}\\"; rmdir \\"$1\\"; mv \\"${tmp}\\" \\"$1\\"\\n)\\nsafelink() (\\n local desired=\\"$1\\" name=\\"$2\\" current\\n current=$(realpath \\"${name}\\")\\n if [[ \\"${current}\\" == \\"${desired}\\" ]]; then return; fi\\n set -x; mv --no-target-directory \\"${current}\\" \\"${desired}\\"\\n ln --no-dereference --force --symbolic \\"${desired}\\" \\"${name}\\"\\n)\\necho Initializing ...\\nresults \'uid\' \\"$(id -u ||:)\\" \'gid\' \\"$(id -G ||:)\\"\\nif [[ \\"${pgwal_directory}\\" == *\\"pgwal/\\"* ]] \\u0026\\u0026 [[ ! -d \\"/pgwal/pgbackrest-spool\\" ]];then rm -rf \\"/pgdata/pgbackrest-spool\\" \\u0026\\u0026 mkdir -p \\"/pgwal/pgbackrest-spool\\" \\u0026\\u0026 ln --force --symbolic \\"/pgwal/pgbackrest-spool\\" \\"/pgdata/pgbackrest-spool\\";fi\\nif [[ ! -e \\"/pgdata/pgbackrest-spool\\" ]];then rm -rf /pgdata/pgbackrest-spool;fi\\nif [[ ! -e \\"/pgdata/logs/postgres\\" ]];then rm -rf \\"/pgdata/logs/postgres\\";fi\\nif [[ ! -e \\"${pgbrLog_directory}\\" ]];then rm -rf \\"${pgbrLog_directory}\\";fi\\nif [[ -d \\"/pglogs\\" ]];then install --directory --mode=0775 \\"/pglogs/postgres\\" \\"/pglogs/pgbackrest/log\\";if [[ ! -L \\"/pgdata/logs/postgres\\" ]];then mkdir -p \\"/pgdata/logs\\" \\u0026\\u0026 rm -rf \\"/pgdata/logs/postgres\\" \\u0026\\u0026 ln --symbolic \\"/pglogs/postgres\\" \\"/pgdata/logs/postgres\\";fi;if [[ ! -L \\"${pgbrLog_directory}\\" ]];then mkdir -p \\"${pgbrLog_directory%/*}\\" \\u0026\\u0026 rm -rf \\"${pgbrLog_directory}\\" \\u0026\\u0026 ln --symbolic \\"/pglogs/pgbackrest/log\\" \\"${pgbrLog_directory}\\";fi;fi\\nresults \'postgres path\' \\"$(command -v postgres ||:)\\"\\nresults \'postgres version\' \\"${postgres_version:=$(postgres --version ||:)}\\"\\n[[ \\"${postgres_version}\\" =~ \\") ${expected_major_version}\\"($|[^0-9]) ]] ||\\nhalt Expected PostgreSQL version \\"${expected_major_version}\\"\\nresults \'config directory\' \\"${PGDATA:?}\\"\\npostgres_data_directory=$([[ -d \\"${PGDATA}\\" ]] \\u0026\\u0026 postgres -C data_directory || echo \\"${PGDATA}\\")\\nresults \'data directory\' \\"${postgres_data_directory}\\"\\n[[ \\"${postgres_data_directory}\\" == \\"${PGDATA}\\" ]] ||\\nhalt Expected matching config and data directories\\nbootstrap_dir=\\"${postgres_data_directory}_bootstrap\\"\\n[[ -d \\"${bootstrap_dir}\\" ]] \\u0026\\u0026 results \'bootstrap directory\' \\"${bootstrap_dir}\\"\\n[[ -d \\"${bootstrap_dir}\\" ]] \\u0026\\u0026 postgres_data_directory=\\"${bootstrap_dir}\\"\\nif [[ ! -e \\"${postgres_data_directory}\\" || -O \\"${postgres_data_directory}\\" ]]; then\\ninstall --directory --mode=0700 \\"${postgres_data_directory}\\"\\nelif [[ -w \\"${postgres_data_directory}\\" \\u0026\\u0026 -g \\"${postgres_data_directory}\\" ]]; then\\nrecreate \\"${postgres_data_directory}\\" \'0700\'\\nelse (halt Permissions!); fi ||\\nhalt \\"$(permissions \\"${postgres_data_directory}\\" ||:)\\"\\nresults \'pgBackRest log directory\' \\"${pgbrLog_directory}\\"\\ninstall --directory --mode=0775 \\"${pgbrLog_directory}\\" ||\\nhalt \\"$(permissions \\"${pgbrLog_directory}\\" ||:)\\"\\ninstall -D --mode=0600 -t \\"/tmp/replication\\" \\"/pgconf/tls/replication\\"/{tls.crt,tls.key,ca.crt}\\n\\ntablespace_dir=/tablespaces/myts/data\\nif [[ ! -e \\"${tablespace_dir}\\" || -O \\"${tablespace_dir}\\" ]]; then\\ninstall --directory --mode=0700 \\"${tablespace_dir}\\"\\nelif [[ -w \\"${tablespace_dir}\\" \\u0026\\u0026 -g \\"${tablespace_dir}\\" ]]; then\\nrecreate \\"${tablespace_dir}\\" \'0700\'\\nelse (halt Permissions!); fi ||\\nhalt \\"$(permissions \\"${tablespace_dir}\\" ||:)\\"\\n[[ -f \\"${postgres_data_directory}/PG_VERSION\\" ]] || exit 0\\nresults \'data version\' \\"${postgres_data_version:=$(\\u003c \\"${postgres_data_directory}/PG_VERSION\\")}\\"\\n[[ \\"${postgres_data_version}\\" == \\"${expected_major_version}\\" ]] ||\\nhalt Expected PostgreSQL data version \\"${expected_major_version}\\"\\n[[ ! -f \\"${postgres_data_directory}/postgresql.conf\\" ]] \\u0026\\u0026\\ntouch \\"${postgres_data_directory}/postgresql.conf\\"\\nsafelink \\"${pgwal_directory}\\" \\"${postgres_data_directory}/pg_wal\\"\\nresults \'wal directory\' \\"$(realpath \\"${postgres_data_directory}/pg_wal\\" ||:)\\"\\nrm -f \\"${postgres_data_directory}/recovery.signal\\"",\n "startup",\n "18",\n "/pgwal/pg18_wal",\n "/pgdata/pgbackrest/log"\n ],\n "env": [\n {\n "name": "PGDATA",\n "value": "/pgdata/pg18"\n },\n {\n "name": "PGHOST",\n "value": "/tmp/postgres"\n },\n {\n "name": "PGPORT",\n "value": "5432"\n },\n {\n "name": "KRB5_CONFIG",\n "value": "/etc/postgres/krb5.conf"\n },\n {\n "name": "KRB5RCACHEDIR",\n "value": "/tmp"\n },\n {\n "name": "LDAPTLS_CACERT",\n "value": "/etc/postgres/ldap/ca.crt"\n },\n {\n "name": "LC_ALL",\n "value": "en_US.utf-8"\n },\n {\n "name": "LANG",\n "value": "en_US.utf-8"\n }\n ],\n "image": "docker.io/perconalab/percona-postgresql-operator:main-ppg18-postgres",\n "imagePullPolicy": "Always",\n "name": "postgres-startup",\n "resources": {},\n "securityContext": {\n "allowPrivilegeEscalation": false,\n "capabilities": {\n "drop": [\n "ALL"\n ]\n },\n "privileged": false,\n "readOnlyRootFilesystem": true,\n "runAsNonRoot": true,\n "seccompProfile": {\n "type": "RuntimeDefault"\n }\n },\n "terminationMessagePath": "/dev/termination-log",\n "terminationMessagePolicy": "File",\n "volumeMounts": [\n {\n "mountPath": "/pgconf/tls",\n "name": "cert-volume",\n "readOnly": true\n },\n {\n "mountPath": "/pgdata",\n "name": "postgres-data"\n },\n {\n "mountPath": "/tablespaces/myts",\n "name": "tablespace-myts"\n },\n {\n "mountPath": "/pgwal",\n "name": "postgres-wal"\n },\n {\n "mountPath": "/pglogs",\n "name": "postgres-logs"\n },\n {\n "mountPath": "/tmp",\n "name": "tmp"\n }\n ]\n },\n {\n "command": [\n "bash",\n "-c",\n "mkdir -p /tmp/nss_wrapper \\u0026\\u0026 { [[ -f /tmp/nss_wrapper/libnss_wrapper.so ]] || cp /usr/lib64/libnss_wrapper.so /tmp/nss_wrapper/libnss_wrapper.so; }"\n ],\n "image": "docker.io/perconalab/percona-postgresql-operator:main-ppg18-postgres",\n "imagePullPolicy": "Always",\n "name": "nss-wrapper-init-logcollector",\n "resources": {},\n "securityContext": {\n "allowPrivilegeEscalation": false,\n "capabilities": {\n "drop": [\n "ALL"\n ]\n },\n "privileged": false,\n "runAsGroup": 26,\n "runAsNonRoot": true,\n "runAsUser": 26,\n "seccompProfile": {\n "type": "RuntimeDefault"\n }\n },\n "terminationMessagePath": "/dev/termination-log",\n "terminationMessagePolicy": "File",\n "volumeMounts": [\n {\n "mountPath": "/tmp",\n "name": "tmp"\n }\n ]\n },\n {\n "command": [\n "bash",\n "-c",\n "export NSS_WRAPPER_SUBDIR=postgres CRUNCHY_NSS_USERNAME=postgres CRUNCHY_NSS_USER_DESC=\\"postgres\\" \\n# Define nss_wrapper directory and passwd \\u0026 group files that will be utilized by nss_wrapper. The\\n# nss_wrapper_env.sh script (which also sets these vars) isn\'t sourced here since the nss_wrapper\\n# has not yet been setup, and we therefore don\'t yet want the nss_wrapper vars in the environment.\\nmkdir -p /tmp/nss_wrapper\\nchmod g+rwx /tmp/nss_wrapper\\n\\nNSS_WRAPPER_DIR=\\"/tmp/nss_wrapper/${NSS_WRAPPER_SUBDIR}\\"\\nNSS_WRAPPER_PASSWD=\\"${NSS_WRAPPER_DIR}/passwd\\"\\nNSS_WRAPPER_GROUP=\\"${NSS_WRAPPER_DIR}/group\\"\\n\\n# create the nss_wrapper directory\\nmkdir -p \\"${NSS_WRAPPER_DIR}\\"\\n\\n# grab the current user ID and group ID\\nUSER_ID=$(id -u)\\nexport USER_ID\\nGROUP_ID=$(id -g)\\nexport GROUP_ID\\n\\n# get copies of the passwd and group files\\n[[ -f \\"${NSS_WRAPPER_PASSWD}\\" ]] || cp \\"/etc/passwd\\" \\"${NSS_WRAPPER_PASSWD}\\"\\n[[ -f \\"${NSS_WRAPPER_GROUP}\\" ]] || cp \\"/etc/group\\" \\"${NSS_WRAPPER_GROUP}\\"\\n\\n# if the username is missing from the passwd file, then add it\\nif [[ ! $(cat \\"${NSS_WRAPPER_PASSWD}\\") =~ ${CRUNCHY_NSS_USERNAME}:x:${USER_ID} ]]; then\\n echo \\"nss_wrapper: adding user\\"\\n passwd_tmp=\\"${NSS_WRAPPER_DIR}/passwd_tmp\\"\\n cp \\"${NSS_WRAPPER_PASSWD}\\" \\"${passwd_tmp}\\"\\n sed -i \\"/${CRUNCHY_NSS_USERNAME}:x:/d\\" \\"${passwd_tmp}\\"\\n # needed for OCP 4.x because crio updates /etc/passwd with an entry for USER_ID\\n sed -i \\"/${USER_ID}:x:/d\\" \\"${passwd_tmp}\\"\\n printf \'${CRUNCHY_NSS_USERNAME}:x:${USER_ID}:${GROUP_ID}:${CRUNCHY_NSS_USER_DESC}:${HOME}:/bin/bash\\\\n\' \\u003e\\u003e \\"${passwd_tmp}\\"\\n envsubst \\u003c \\"${passwd_tmp}\\" \\u003e \\"${NSS_WRAPPER_PASSWD}\\"\\n rm \\"${passwd_tmp}\\"\\nelse\\n echo \\"nss_wrapper: user exists\\"\\nfi\\n\\n# if the username (which will be the same as the group name) is missing from group file, then add it\\nif [[ ! $(cat \\"${NSS_WRAPPER_GROUP}\\") =~ ${CRUNCHY_NSS_USERNAME}:x:${USER_ID} ]]; then\\n echo \\"nss_wrapper: adding group\\"\\n group_tmp=\\"${NSS_WRAPPER_DIR}/group_tmp\\"\\n cp \\"${NSS_WRAPPER_GROUP}\\" \\"${group_tmp}\\"\\n sed -i \\"/${CRUNCHY_NSS_USERNAME}:x:/d\\" \\"${group_tmp}\\"\\n printf \'${CRUNCHY_NSS_USERNAME}:x:${USER_ID}:${CRUNCHY_NSS_USERNAME}\\\\n\' \\u003e\\u003e \\"${group_tmp}\\"\\n envsubst \\u003c \\"${group_tmp}\\" \\u003e \\"${NSS_WRAPPER_GROUP}\\"\\n rm \\"${group_tmp}\\"\\nelse\\n echo \\"nss_wrapper: group exists\\"\\nfi\\n\\n# export the nss_wrapper env vars\\n# define nss_wrapper directory and passwd \\u0026 group files that will be utilized by nss_wrapper\\nNSS_WRAPPER_DIR=\\"/tmp/nss_wrapper/${NSS_WRAPPER_SUBDIR}\\"\\nNSS_WRAPPER_PASSWD=\\"${NSS_WRAPPER_DIR}/passwd\\"\\nNSS_WRAPPER_GROUP=\\"${NSS_WRAPPER_DIR}/group\\"\\n\\nexport LD_PRELOAD=/usr/lib64/libnss_wrapper.so\\nexport NSS_WRAPPER_PASSWD=\\"${NSS_WRAPPER_PASSWD}\\"\\nexport NSS_WRAPPER_GROUP=\\"${NSS_WRAPPER_GROUP}\\"\\n\\necho \\"nss_wrapper: environment configured\\"\\n"\n ],\n "image": "docker.io/perconalab/percona-postgresql-operator:main-ppg18-postgres",\n "imagePullPolicy": "Always",\n "name": "nss-wrapper-init",\n "resources": {},\n "securityContext": {\n "allowPrivilegeEscalation": false,\n "capabilities": {\n "drop": [\n "ALL"\n ]\n },\n "privileged": false,\n "readOnlyRootFilesystem": true,\n "runAsNonRoot": true,\n "seccompProfile": {\n "type": "RuntimeDefault"\n }\n },\n "terminationMessagePath": "/dev/termination-log",\n "terminationMessagePolicy": "File",\n "volumeMounts": [\n {\n "mountPath": "/tmp",\n "name": "tmp"\n }\n ]\n }\n ],\n "restartPolicy": "Always",\n "schedulerName": "default-scheduler",\n "securityContext": {\n "fsGroup": 26,\n "fsGroupChangePolicy": "OnRootMismatch"\n },\n "serviceAccount": "additional-volumes-instance",\n "serviceAccountName": "additional-volumes-instance",\n "shareProcessNamespace": true,\n "terminationGracePeriodSeconds": 30,\n "topologySpreadConstraints": [\n {\n "labelSelector": {\n "matchExpressions": [\n {\n "key": "postgres-operator.crunchydata.com/data",\n "operator": "In",\n "values": [\n "postgres",\n "pgbackrest"\n ]\n }\n ],\n "matchLabels": {\n "postgres-operator.crunchydata.com/cluster": "additional-volumes"\n }\n },\n "maxSkew": 1,\n "topologyKey": "kubernetes.io/hostname",\n "whenUnsatisfiable": "ScheduleAnyway"\n },\n {\n "labelSelector": {\n "matchExpressions": [\n {\n "key": "postgres-operator.crunchydata.com/data",\n "operator": "In",\n "values": [\n "postgres",\n "pgbackrest"\n ]\n }\n ],\n "matchLabels": {\n "postgres-operator.crunchydata.com/cluster": "additional-volumes"\n }\n },\n "maxSkew": 1,\n "topologyKey": "topology.kubernetes.io/zone",\n "whenUnsatisfiable": "ScheduleAnyway"\n }\n ],\n "volumes": [\n {\n "name": "cert-volume",\n "projected": {\n "defaultMode": 384,\n "sources": [\n {\n "secret": {\n "items": [\n {\n "key": "tls.crt",\n "path": "tls.crt"\n },\n {\n "key": "tls.key",\n "path": "tls.key"\n },\n {\n "key": "ca.crt",\n "path": "ca.crt"\n }\n ],\n "name": "additional-volumes-cluster-cert"\n }\n },\n {\n "secret": {\n "items": [\n {\n "key": "tls.crt",\n "path": "replication/tls.crt"\n },\n {\n "key": "tls.key",\n "path": "replication/tls.key"\n },\n {\n "key": "ca.crt",\n "path": "replication/ca.crt"\n }\n ],\n "name": "additional-volumes-replication-cert"\n }\n }\n ]\n }\n },\n {\n "name": "postgres-data",\n "persistentVolumeClaim": {\n "claimName": "additional-volumes-instance1-n8pg-pgdata"\n }\n },\n {\n "downwardAPI": {\n "defaultMode": 420,\n "items": [\n {\n "path": "cpu_limit",\n "resourceFieldRef": {\n "containerName": "database",\n "divisor": "1m",\n "resource": "limits.cpu"\n }\n },\n {\n "path": "cpu_request",\n "resourceFieldRef": {\n "containerName": "database",\n "divisor": "1m",\n "resource": "requests.cpu"\n }\n },\n {\n "path": "mem_limit",\n "resourceFieldRef": {\n "containerName": "database",\n "divisor": "1Mi",\n "resource": "limits.memory"\n }\n },\n {\n "path": "mem_request",\n "resourceFieldRef": {\n "containerName": "database",\n "divisor": "1Mi",\n "resource": "requests.memory"\n }\n },\n {\n "fieldRef": {\n "apiVersion": "v1",\n "fieldPath": "metadata.labels"\n },\n "path": "labels"\n },\n {\n "fieldRef": {\n "apiVersion": "v1",\n "fieldPath": "metadata.annotations"\n },\n "path": "annotations"\n }\n ]\n },\n "name": "database-containerinfo"\n },\n {\n "name": "tablespace-myts",\n "persistentVolumeClaim": {\n "claimName": "additional-volumes-instance1-n8pg-myts-tablespace"\n }\n },\n {\n "name": "postgres-wal",\n "persistentVolumeClaim": {\n "claimName": "additional-volumes-instance1-n8pg-pgwal"\n }\n },\n {\n "name": "postgres-logs",\n "persistentVolumeClaim": {\n "claimName": "additional-volumes-instance1-n8pg-pglogs"\n }\n },\n {\n "name": "pgbackrest-server",\n "projected": {\n "defaultMode": 420,\n "sources": [\n {\n "secret": {\n "items": [\n {\n "key": "pgbackrest-server.crt",\n "path": "server-tls.crt"\n },\n {\n "key": "pgbackrest-server.key",\n "mode": 384,\n "path": "server-tls.key"\n }\n ],\n "name": "additional-volumes-instance1-n8pg-certs"\n }\n }\n ]\n }\n },\n {\n "name": "pgbackrest-config",\n "projected": {\n "defaultMode": 420,\n "sources": [\n {\n "configMap": {\n "items": [\n {\n "key": "pgbackrest_instance.conf",\n "path": "pgbackrest_instance.conf"\n },\n {\n "key": "config-hash",\n "path": "config-hash"\n },\n {\n "key": "pgbackrest-server.conf",\n "path": "~postgres-operator_server.conf"\n }\n ],\n "name": "additional-volumes-pgbackrest-config"\n }\n },\n {\n "secret": {\n "items": [\n {\n "key": "pgbackrest.ca-roots",\n "path": "~postgres-operator/tls-ca.crt"\n },\n {\n "key": "pgbackrest-client.crt",\n "path": "~postgres-operator/client-tls.crt"\n },\n {\n "key": "pgbackrest-client.key",\n "mode": 384,\n "path": "~postgres-operator/client-tls.key"\n }\n ],\n "name": "additional-volumes-pgbackrest"\n }\n }\n ]\n }\n },\n {\n "name": "patroni-config",\n "projected": {\n "defaultMode": 420,\n "sources": [\n {\n "configMap": {\n "items": [\n {\n "key": "patroni.yaml",\n "path": "~postgres-operator_cluster.yaml"\n }\n ],\n "name": "additional-volumes-config"\n }\n },\n {\n "configMap": {\n "items": [\n {\n "key": "patroni.yaml",\n "path": "~postgres-operator_instance.yaml"\n }\n ],\n "name": "additional-volumes-instance1-n8pg-config"\n }\n },\n {\n "secret": {\n "items": [\n {\n "key": "patroni.ca-roots",\n "path": "~postgres-operator/patroni.ca-roots"\n },\n {\n "key": "patroni.crt-combined",\n "path": "~postgres-operator/patroni.crt+key"\n }\n ],\n "name": "additional-volumes-instance1-n8pg-certs"\n }\n }\n ]\n }\n },\n {\n "emptyDir": {},\n "name": "crunchy-bin"\n },\n {\n "emptyDir": {\n "sizeLimit": "2Gi"\n },\n "name": "tmp"\n },\n {\n "emptyDir": {\n "medium": "Memory"\n },\n "name": "dshm"\n }\n ]\n }\n },\n "updateStrategy": {\n "type": "OnDelete"\n }\n },\n "status": {\n "availableReplicas": 1,\n "collisionCount": 0,\n "currentReplicas": 1,\n "currentRevision": "additional-volumes-instance1-n8pg-7f58bcfdb6",\n "observedGeneration": 1,\n "readyReplicas": 1,\n "replicas": 1,\n "updateRevision": "additional-volumes-instance1-n8pg-7f58bcfdb6",\n "updatedReplicas": 1\n }\n },\n {\n "apiVersion": "apps/v1",\n "kind": "StatefulSet",\n "metadata": {\n "annotations": {\n "pgv2.percona.com/logcollector-config-hash": "d9a116e02b828bdc02165325e92799d82961fb499041814c7c765d0ce263ce77"\n },\n "creationTimestamp": "2026-08-19T18:12:05Z",\n "generation": 1,\n "labels": {\n "app.kubernetes.io/component": "pg",\n "app.kubernetes.io/instance": "additional-volumes",\n "app.kubernetes.io/managed-by": "percona-postgresql-operator",\n "app.kubernetes.io/name": "percona-postgresql",\n "app.kubernetes.io/part-of": "percona-postgresql",\n "pgv2.percona.com/version": "3.2.0",\n "postgres-operator.crunchydata.com/cluster": "additional-volumes",\n "postgres-operator.crunchydata.com/data": "postgres",\n "postgres-operator.crunchydata.com/instance": "additional-volumes-instance1-xvbw",\n "postgres-operator.crunchydata.com/instance-set": "instance1"\n },\n "name": "additional-volumes-instance1-xvbw",\n "namespace": "kuttl-test-intimate-garfish",\n "ownerReferences": [\n {\n "apiVersion": "upstream.pgv2.percona.com/v1beta1",\n "blockOwnerDeletion": true,\n "controller": true,\n "kind": "PostgresCluster",\n "name": "additional-volumes",\n "uid": "b795649f-550b-4283-b2ef-eca573235e5a"\n }\n ],\n "resourceVersion": "1787163193859951017",\n "uid": "ff0eabc4-a14f-43d4-85da-3372e3c9c0da"\n },\n "spec": {\n "persistentVolumeClaimRetentionPolicy": {\n "whenDeleted": "Retain",\n "whenScaled": "Retain"\n },\n "podManagementPolicy": "OrderedReady",\n "replicas": 1,\n "revisionHistoryLimit": 0,\n "selector": {\n "matchLabels": {\n "postgres-operator.crunchydata.com/cluster": "additional-volumes",\n "postgres-operator.crunchydata.com/instance": "additional-volumes-instance1-xvbw",\n "postgres-operator.crunchydata.com/instance-set": "instance1"\n }\n },\n "serviceName": "additional-volumes-pods",\n "template": {\n "metadata": {\n "annotations": {\n "kubectl.kubernetes.io/default-container": "database",\n "pgv2.percona.com/logcollector-config-hash": "d9a116e02b828bdc02165325e92799d82961fb499041814c7c765d0ce263ce77"\n },\n "creationTimestamp": null,\n "labels": {\n "app.kubernetes.io/component": "pg",\n "app.kubernetes.io/instance": "additional-volumes",\n "app.kubernetes.io/managed-by": "percona-postgresql-operator",\n "app.kubernetes.io/name": "percona-postgresql",\n "app.kubernetes.io/part-of": "percona-postgresql",\n "pgv2.percona.com/version": "3.2.0",\n "postgres-operator.crunchydata.com/cluster": "additional-volumes",\n "postgres-operator.crunchydata.com/data": "postgres",\n "postgres-operator.crunchydata.com/instance": "additional-volumes-instance1-xvbw",\n "postgres-operator.crunchydata.com/instance-set": "instance1",\n "postgres-operator.crunchydata.com/patroni": "additional-volumes-ha"\n }\n },\n "spec": {\n "affinity": {\n "podAntiAffinity": {\n "preferredDuringSchedulingIgnoredDuringExecution": [\n {\n "podAffinityTerm": {\n "labelSelector": {\n "matchLabels": {\n "postgres-operator.crunchydata.com/data": "postgres"\n }\n },\n "topologyKey": "kubernetes.io/hostname"\n },\n "weight": 1\n }\n ]\n }\n },\n "containers": [\n {\n "command": [\n "/opt/crunchy/bin/postgres-entrypoint.sh",\n "patroni",\n "/etc/patroni"\n ],\n "env": [\n {\n "name": "PGDATA",\n "value": "/pgdata/pg18"\n },\n {\n "name": "PGHOST",\n "value": "/tmp/postgres"\n },\n {\n "name": "PGPORT",\n "value": "5432"\n },\n {\n "name": "KRB5_CONFIG",\n "value": "/etc/postgres/krb5.conf"\n },\n {\n "name": "KRB5RCACHEDIR",\n "value": "/tmp"\n },\n {\n "name": "LDAPTLS_CACERT",\n "value": "/etc/postgres/ldap/ca.crt"\n },\n {\n "name": "LC_ALL",\n "value": "en_US.utf-8"\n },\n {\n "name": "LANG",\n "value": "en_US.utf-8"\n },\n {\n "name": "PATRONI_NAME",\n "valueFrom": {\n "fieldRef": {\n "apiVersion": "v1",\n "fieldPath": "metadata.name"\n }\n }\n },\n {\n "name": "PATRONI_KUBERNETES_POD_IP",\n "valueFrom": {\n "fieldRef": {\n "apiVersion": "v1",\n "fieldPath": "status.podIP"\n }\n }\n },\n {\n "name": "PATRONI_KUBERNETES_PORTS",\n "value": "- name: postgres\\n port: 5432\\n protocol: TCP\\n"\n },\n {\n "name": "PATRONI_POSTGRESQL_CONNECT_ADDRESS",\n "value": "$(PATRONI_NAME).additional-volumes-pods:5432"\n },\n {\n "name": "PATRONI_POSTGRESQL_LISTEN",\n "value": "*:5432"\n },\n {\n "name": "PATRONI_POSTGRESQL_CONFIG_DIR",\n "value": "/pgdata/pg18"\n },\n {\n "name": "PATRONI_POSTGRESQL_DATA_DIR",\n "value": "/pgdata/pg18"\n },\n {\n "name": "PATRONI_RESTAPI_CONNECT_ADDRESS",\n "value": "$(PATRONI_NAME).additional-volumes-pods:8008"\n },\n {\n "name": "PATRONI_RESTAPI_LISTEN",\n "value": "*:8008"\n },\n {\n "name": "PATRONICTL_CONFIG_FILE",\n "value": "/etc/patroni"\n },\n {\n "name": "LD_PRELOAD",\n "value": "/usr/lib64/libnss_wrapper.so"\n },\n {\n "name": "NSS_WRAPPER_PASSWD",\n "value": "/tmp/nss_wrapper/postgres/passwd"\n },\n {\n "name": "NSS_WRAPPER_GROUP",\n "value": "/tmp/nss_wrapper/postgres/group"\n }\n ],\n "image": "docker.io/perconalab/percona-postgresql-operator:main-ppg18-postgres",\n "imagePullPolicy": "Always",\n "livenessProbe": {\n "exec": {\n "command": [\n "bash",\n "-c",\n "/opt/crunchy/bin/postgres-liveness-check.sh"\n ]\n },\n "failureThreshold": 3,\n "initialDelaySeconds": 3,\n "periodSeconds": 10,\n "successThreshold": 1,\n "timeoutSeconds": 5\n },\n "name": "database",\n "ports": [\n {\n "containerPort": 5432,\n "name": "postgres",\n "protocol": "TCP"\n }\n ],\n "readinessProbe": {\n "exec": {\n "command": [\n "bash",\n "-c",\n "/opt/crunchy/bin/postgres-readiness-check.sh"\n ]\n },\n "failureThreshold": 3,\n "initialDelaySeconds": 3,\n "periodSeconds": 10,\n "successThreshold": 1,\n "timeoutSeconds": 5\n },\n "resources": {},\n "securityContext": {\n "allowPrivilegeEscalation": false,\n "capabilities": {\n "drop": [\n "ALL"\n ]\n },\n "privileged": false,\n "readOnlyRootFilesystem": true,\n "runAsNonRoot": true,\n "seccompProfile": {\n "type": "RuntimeDefault"\n }\n },\n "terminationMessagePath": "/dev/termination-log",\n "terminationMessagePolicy": "File",\n "volumeMounts": [\n {\n "mountPath": "/pgconf/tls",\n "name": "cert-volume",\n "readOnly": true\n },\n {\n "mountPath": "/pgdata",\n "name": "postgres-data"\n },\n {\n "mountPath": "/etc/database-containerinfo",\n "name": "database-containerinfo",\n "readOnly": true\n },\n {\n "mountPath": "/tablespaces/myts",\n "name": "tablespace-myts"\n },\n {\n "mountPath": "/pgwal",\n "name": "postgres-wal"\n },\n {\n "mountPath": "/pglogs",\n "name": "postgres-logs"\n },\n {\n "mountPath": "/etc/pgbackrest/conf.d",\n "name": "pgbackrest-config",\n "readOnly": true\n },\n {\n "mountPath": "/etc/patroni",\n "name": "patroni-config",\n "readOnly": true\n },\n {\n "mountPath": "/opt/crunchy",\n "name": "crunchy-bin"\n },\n {\n "mountPath": "/tmp",\n "name": "tmp"\n },\n {\n "mountPath": "/dev/shm",\n "name": "dshm"\n }\n ]\n },\n {\n "command": [\n "bash",\n "-ceu",\n "--",\n "monitor() {\\n# Parameters for curl when managing autogrow annotation.\\nAPISERVER=\\"https://kubernetes.default.svc\\"\\nSERVICEACCOUNT=\\"/var/run/secrets/kubernetes.io/serviceaccount\\"\\nNAMESPACE=$(cat ${SERVICEACCOUNT}/namespace)\\nTOKEN=$(cat ${SERVICEACCOUNT}/token)\\nCACERT=${SERVICEACCOUNT}/ca.crt\\n\\ndeclare -r directory=\\"/pgconf/tls\\"\\nexec {fd}\\u003c\\u003e \\u003c(:||:)\\nwhile read -r -t 5 -u \\"${fd}\\" ||:; do\\n # Manage replication certificate.\\n if [[ \\"${directory}\\" -nt \\"/proc/self/fd/${fd}\\" ]] \\u0026\\u0026\\n install -D --mode=0600 -t \\"/tmp/replication\\" \\"${directory}\\"/{replication/tls.crt,replication/tls.key,replication/ca.crt} \\u0026\\u0026\\n pkill -HUP --exact --parent=1 postgres\\n then\\n exec {fd}\\u003e\\u0026- \\u0026\\u0026 exec {fd}\\u003c\\u003e \\u003c(:||:)\\n stat --format=\'Loaded certificates dated %y\' \\"${directory}\\"\\n fi\\n\\ndone\\n}; export -f monitor; exec -a \\"$0\\" bash -ceu monitor",\n "replication-cert-copy"\n ],\n "image": "docker.io/perconalab/percona-postgresql-operator:main-ppg18-postgres",\n "imagePullPolicy": "Always",\n "name": "replication-cert-copy",\n "resources": {},\n "securityContext": {\n "allowPrivilegeEscalation": false,\n "capabilities": {\n "drop": [\n "ALL"\n ]\n },\n "privileged": false,\n "readOnlyRootFilesystem": true,\n "runAsNonRoot": true,\n "seccompProfile": {\n "type": "RuntimeDefault"\n }\n },\n "terminationMessagePath": "/dev/termination-log",\n "terminationMessagePolicy": "File",\n "volumeMounts": [\n {\n "mountPath": "/pgconf/tls",\n "name": "cert-volume",\n "readOnly": true\n },\n {\n "mountPath": "/pgdata",\n "name": "postgres-data"\n },\n {\n "mountPath": "/tmp",\n "name": "tmp"\n }\n ]\n },\n {\n "args": [\n "fluent-bit"\n ],\n "command": [\n "/opt/crunchy/logcollector/entrypoint.sh"\n ],\n "env": [\n {\n "name": "PG_LOG_DIR",\n "value": "/pgdata/pg18/log"\n },\n {\n "name": "PGBACKREST_LOG_DIR",\n "value": "/pgdata/pgbackrest/log"\n },\n {\n "name": "POD_NAMESPACE",\n "valueFrom": {\n "fieldRef": {\n "apiVersion": "v1",\n "fieldPath": "metadata.namespace"\n }\n }\n },\n {\n "name": "POD_NAME",\n "valueFrom": {\n "fieldRef": {\n "apiVersion": "v1",\n "fieldPath": "metadata.name"\n }\n }\n }\n ],\n "image": "docker.io/perconalab/fluentbit:main-logcollector",\n "imagePullPolicy": "IfNotPresent",\n "name": "logs",\n "resources": {},\n "securityContext": {\n "allowPrivilegeEscalation": false,\n "capabilities": {\n "drop": [\n "ALL"\n ]\n },\n "privileged": false,\n "runAsGroup": 26,\n "runAsNonRoot": true,\n "runAsUser": 26,\n "seccompProfile": {\n "type": "RuntimeDefault"\n }\n },\n "terminationMessagePath": "/dev/termination-log",\n "terminationMessagePolicy": "File",\n "volumeMounts": [\n {\n "mountPath": "/pgdata",\n "name": "postgres-data"\n },\n {\n "mountPath": "/opt/crunchy",\n "name": "crunchy-bin"\n },\n {\n "mountPath": "/tmp",\n "name": "tmp"\n }\n ]\n },\n {\n "args": [\n "logrotate"\n ],\n "command": [\n "/opt/crunchy/logcollector/entrypoint.sh"\n ],\n "env": [\n {\n "name": "POD_NAMESPACE",\n "valueFrom": {\n "fieldRef": {\n "apiVersion": "v1",\n "fieldPath": "metadata.namespace"\n }\n }\n },\n {\n "name": "POD_NAME",\n "valueFrom": {\n "fieldRef": {\n "apiVersion": "v1",\n "fieldPath": "metadata.name"\n }\n }\n },\n {\n "name": "LOGROTATE_SCHEDULE",\n "value": "0 0 * * *"\n },\n {\n "name": "LD_PRELOAD",\n "value": "/tmp/nss_wrapper/libnss_wrapper.so"\n },\n {\n "name": "NSS_WRAPPER_PASSWD",\n "value": "/tmp/nss_wrapper/postgres/passwd"\n },\n {\n "name": "NSS_WRAPPER_GROUP",\n "value": "/tmp/nss_wrapper/postgres/group"\n }\n ],\n "image": "docker.io/perconalab/fluentbit:main-logcollector",\n "imagePullPolicy": "IfNotPresent",\n "name": "logrotate",\n "resources": {},\n "securityContext": {\n "allowPrivilegeEscalation": false,\n "capabilities": {\n "drop": [\n "ALL"\n ]\n },\n "privileged": false,\n "runAsGroup": 26,\n "runAsNonRoot": true,\n "runAsUser": 26,\n "seccompProfile": {\n "type": "RuntimeDefault"\n }\n },\n "terminationMessagePath": "/dev/termination-log",\n "terminationMessagePolicy": "File",\n "volumeMounts": [\n {\n "mountPath": "/pgdata",\n "name": "postgres-data"\n },\n {\n "mountPath": "/opt/crunchy",\n "name": "crunchy-bin"\n },\n {\n "mountPath": "/tmp",\n "name": "tmp"\n }\n ]\n },\n {\n "command": [\n "pgbackrest",\n "server"\n ],\n "env": [\n {\n "name": "LD_PRELOAD",\n "value": "/usr/lib64/libnss_wrapper.so"\n },\n {\n "name": "NSS_WRAPPER_PASSWD",\n "value": "/tmp/nss_wrapper/postgres/passwd"\n },\n {\n "name": "NSS_WRAPPER_GROUP",\n "value": "/tmp/nss_wrapper/postgres/group"\n }\n ],\n "image": "docker.io/perconalab/percona-postgresql-operator:main-pgbackrest18",\n "imagePullPolicy": "Always",\n "livenessProbe": {\n "exec": {\n "command": [\n "pgbackrest",\n "server-ping"\n ]\n },\n "failureThreshold": 3,\n "periodSeconds": 10,\n "successThreshold": 1,\n "timeoutSeconds": 1\n },\n "name": "pgbackrest",\n "resources": {},\n "securityContext": {\n "allowPrivilegeEscalation": false,\n "capabilities": {\n "drop": [\n "ALL"\n ]\n },\n "privileged": false,\n "readOnlyRootFilesystem": true,\n "runAsNonRoot": true,\n "seccompProfile": {\n "type": "RuntimeDefault"\n }\n },\n "terminationMessagePath": "/dev/termination-log",\n "terminationMessagePolicy": "File",\n "volumeMounts": [\n {\n "mountPath": "/etc/pgbackrest/server",\n "name": "pgbackrest-server",\n "readOnly": true\n },\n {\n "mountPath": "/pgdata",\n "name": "postgres-data"\n },\n {\n "mountPath": "/tablespaces/myts",\n "name": "tablespace-myts"\n },\n {\n "mountPath": "/pgwal",\n "name": "postgres-wal"\n },\n {\n "mountPath": "/etc/pgbackrest/conf.d",\n "name": "pgbackrest-config",\n "readOnly": true\n },\n {\n "mountPath": "/tmp",\n "name": "tmp"\n }\n ]\n },\n {\n "command": [\n "bash",\n "-ceu",\n "--",\n "monitor() {\\nexec {fd}\\u003c\\u003e \\u003c(:||:)\\nuntil read -r -t 5 -u \\"${fd}\\"; do\\n if\\n [[ \\"${filename}\\" -nt \\"/proc/self/fd/${fd}\\" ]] \\u0026\\u0026\\n pkill -HUP --exact --parent=0 pgbackrest\\n then\\n exec {fd}\\u003e\\u0026- \\u0026\\u0026 exec {fd}\\u003c\\u003e \\u003c(:||:)\\n stat --dereference --format=\'Loaded configuration dated %y\' \\"${filename}\\"\\n elif\\n { [[ \\"${directory}\\" -nt \\"/proc/self/fd/${fd}\\" ]] ||\\n [[ \\"${authority}\\" -nt \\"/proc/self/fd/${fd}\\" ]]\\n } \\u0026\\u0026\\n pkill -HUP --exact --parent=0 pgbackrest\\n then\\n exec {fd}\\u003e\\u0026- \\u0026\\u0026 exec {fd}\\u003c\\u003e \\u003c(:||:)\\n stat --format=\'Loaded certificates dated %y\' \\"${directory}\\"\\n fi\\ndone\\n}; export directory=\\"$1\\" authority=\\"$2\\" filename=\\"$3\\"; export -f monitor; exec -a \\"$0\\" bash -ceu monitor",\n "pgbackrest-config",\n "/etc/pgbackrest/server",\n "/etc/pgbackrest/conf.d/~postgres-operator/tls-ca.crt",\n "/etc/pgbackrest/conf.d/~postgres-operator_server.conf"\n ],\n "image": "docker.io/perconalab/percona-postgresql-operator:main-pgbackrest18",\n "imagePullPolicy": "Always",\n "name": "pgbackrest-config",\n "resources": {},\n "securityContext": {\n "allowPrivilegeEscalation": false,\n "capabilities": {\n "drop": [\n "ALL"\n ]\n },\n "privileged": false,\n "readOnlyRootFilesystem": true,\n "runAsNonRoot": true,\n "seccompProfile": {\n "type": "RuntimeDefault"\n }\n },\n "terminationMessagePath": "/dev/termination-log",\n "terminationMessagePolicy": "File",\n "volumeMounts": [\n {\n "mountPath": "/etc/pgbackrest/server",\n "name": "pgbackrest-server",\n "readOnly": true\n },\n {\n "mountPath": "/etc/pgbackrest/conf.d",\n "name": "pgbackrest-config",\n "readOnly": true\n },\n {\n "mountPath": "/tmp",\n "name": "tmp"\n }\n ]\n }\n ],\n "dnsPolicy": "ClusterFirst",\n "enableServiceLinks": false,\n "initContainers": [\n {\n "command": [\n "/usr/local/bin/init-entrypoint.sh"\n ],\n "image": "docker.io/perconalab/percona-postgresql-operator:PR-1760-4947a0272",\n "imagePullPolicy": "Always",\n "name": "database-init",\n "resources": {},\n "securityContext": {\n "allowPrivilegeEscalation": false,\n "capabilities": {\n "drop": [\n "ALL"\n ]\n },\n "privileged": false,\n "readOnlyRootFilesystem": true,\n "runAsNonRoot": true,\n "seccompProfile": {\n "type": "RuntimeDefault"\n }\n },\n "terminationMessagePath": "/dev/termination-log",\n "terminationMessagePolicy": "File",\n "volumeMounts": [\n {\n "mountPath": "/opt/crunchy",\n "name": "crunchy-bin"\n },\n {\n "mountPath": "/tmp",\n "name": "tmp"\n }\n ]\n },\n {\n "command": [\n "bash",\n "-ceu",\n "--",\n "declare -r expected_major_version=\\"$1\\" pgwal_directory=\\"$2\\" pgbrLog_directory=\\"$3\\"\\npermissions() { while [[ -n \\"$1\\" ]]; do set \\"${1%/*}\\" \\"$@\\"; done; shift; stat -Lc \'%A %4u %4g %n\' \\"$@\\"; }\\nhalt() { local rc=$?; \\u003e\\u00262 echo \\"$@\\"; exit \\"${rc/#0/1}\\"; }\\nresults() { printf \'::postgres-operator: %s::%s\\\\n\' \\"$@\\"; }\\nrecreate() (\\n local tmp; tmp=$(mktemp -d -p \\"${1%/*}\\"); GLOBIGNORE=\'.:..\'; set -x\\n chmod \\"$2\\" \\"${tmp}\\"; mv \\"$1\\"/* \\"${tmp}\\"; rmdir \\"$1\\"; mv \\"${tmp}\\" \\"$1\\"\\n)\\nsafelink() (\\n local desired=\\"$1\\" name=\\"$2\\" current\\n current=$(realpath \\"${name}\\")\\n if [[ \\"${current}\\" == \\"${desired}\\" ]]; then return; fi\\n set -x; mv --no-target-directory \\"${current}\\" \\"${desired}\\"\\n ln --no-dereference --force --symbolic \\"${desired}\\" \\"${name}\\"\\n)\\necho Initializing ...\\nresults \'uid\' \\"$(id -u ||:)\\" \'gid\' \\"$(id -G ||:)\\"\\nif [[ \\"${pgwal_directory}\\" == *\\"pgwal/\\"* ]] \\u0026\\u0026 [[ ! -d \\"/pgwal/pgbackrest-spool\\" ]];then rm -rf \\"/pgdata/pgbackrest-spool\\" \\u0026\\u0026 mkdir -p \\"/pgwal/pgbackrest-spool\\" \\u0026\\u0026 ln --force --symbolic \\"/pgwal/pgbackrest-spool\\" \\"/pgdata/pgbackrest-spool\\";fi\\nif [[ ! -e \\"/pgdata/pgbackrest-spool\\" ]];then rm -rf /pgdata/pgbackrest-spool;fi\\nif [[ ! -e \\"/pgdata/logs/postgres\\" ]];then rm -rf \\"/pgdata/logs/postgres\\";fi\\nif [[ ! -e \\"${pgbrLog_directory}\\" ]];then rm -rf \\"${pgbrLog_directory}\\";fi\\nif [[ -d \\"/pglogs\\" ]];then install --directory --mode=0775 \\"/pglogs/postgres\\" \\"/pglogs/pgbackrest/log\\";if [[ ! -L \\"/pgdata/logs/postgres\\" ]];then mkdir -p \\"/pgdata/logs\\" \\u0026\\u0026 rm -rf \\"/pgdata/logs/postgres\\" \\u0026\\u0026 ln --symbolic \\"/pglogs/postgres\\" \\"/pgdata/logs/postgres\\";fi;if [[ ! -L \\"${pgbrLog_directory}\\" ]];then mkdir -p \\"${pgbrLog_directory%/*}\\" \\u0026\\u0026 rm -rf \\"${pgbrLog_directory}\\" \\u0026\\u0026 ln --symbolic \\"/pglogs/pgbackrest/log\\" \\"${pgbrLog_directory}\\";fi;fi\\nresults \'postgres path\' \\"$(command -v postgres ||:)\\"\\nresults \'postgres version\' \\"${postgres_version:=$(postgres --version ||:)}\\"\\n[[ \\"${postgres_version}\\" =~ \\") ${expected_major_version}\\"($|[^0-9]) ]] ||\\nhalt Expected PostgreSQL version \\"${expected_major_version}\\"\\nresults \'config directory\' \\"${PGDATA:?}\\"\\npostgres_data_directory=$([[ -d \\"${PGDATA}\\" ]] \\u0026\\u0026 postgres -C data_directory || echo \\"${PGDATA}\\")\\nresults \'data directory\' \\"${postgres_data_directory}\\"\\n[[ \\"${postgres_data_directory}\\" == \\"${PGDATA}\\" ]] ||\\nhalt Expected matching config and data directories\\nbootstrap_dir=\\"${postgres_data_directory}_bootstrap\\"\\n[[ -d \\"${bootstrap_dir}\\" ]] \\u0026\\u0026 results \'bootstrap directory\' \\"${bootstrap_dir}\\"\\n[[ -d \\"${bootstrap_dir}\\" ]] \\u0026\\u0026 postgres_data_directory=\\"${bootstrap_dir}\\"\\nif [[ ! -e \\"${postgres_data_directory}\\" || -O \\"${postgres_data_directory}\\" ]]; then\\ninstall --directory --mode=0700 \\"${postgres_data_directory}\\"\\nelif [[ -w \\"${postgres_data_directory}\\" \\u0026\\u0026 -g \\"${postgres_data_directory}\\" ]]; then\\nrecreate \\"${postgres_data_directory}\\" \'0700\'\\nelse (halt Permissions!); fi ||\\nhalt \\"$(permissions \\"${postgres_data_directory}\\" ||:)\\"\\nresults \'pgBackRest log directory\' \\"${pgbrLog_directory}\\"\\ninstall --directory --mode=0775 \\"${pgbrLog_directory}\\" ||\\nhalt \\"$(permissions \\"${pgbrLog_directory}\\" ||:)\\"\\ninstall -D --mode=0600 -t \\"/tmp/replication\\" \\"/pgconf/tls/replication\\"/{tls.crt,tls.key,ca.crt}\\n\\ntablespace_dir=/tablespaces/myts/data\\nif [[ ! -e \\"${tablespace_dir}\\" || -O \\"${tablespace_dir}\\" ]]; then\\ninstall --directory --mode=0700 \\"${tablespace_dir}\\"\\nelif [[ -w \\"${tablespace_dir}\\" \\u0026\\u0026 -g \\"${tablespace_dir}\\" ]]; then\\nrecreate \\"${tablespace_dir}\\" \'0700\'\\nelse (halt Permissions!); fi ||\\nhalt \\"$(permissions \\"${tablespace_dir}\\" ||:)\\"\\n[[ -f \\"${postgres_data_directory}/PG_VERSION\\" ]] || exit 0\\nresults \'data version\' \\"${postgres_data_version:=$(\\u003c \\"${postgres_data_directory}/PG_VERSION\\")}\\"\\n[[ \\"${postgres_data_version}\\" == \\"${expected_major_version}\\" ]] ||\\nhalt Expected PostgreSQL data version \\"${expected_major_version}\\"\\n[[ ! -f \\"${postgres_data_directory}/postgresql.conf\\" ]] \\u0026\\u0026\\ntouch \\"${postgres_data_directory}/postgresql.conf\\"\\nsafelink \\"${pgwal_directory}\\" \\"${postgres_data_directory}/pg_wal\\"\\nresults \'wal directory\' \\"$(realpath \\"${postgres_data_directory}/pg_wal\\" ||:)\\"\\nrm -f \\"${postgres_data_directory}/recovery.signal\\"",\n "startup",\n "18",\n "/pgwal/pg18_wal",\n "/pgdata/pgbackrest/log"\n ],\n "env": [\n {\n "name": "PGDATA",\n "value": "/pgdata/pg18"\n },\n {\n "name": "PGHOST",\n "value": "/tmp/postgres"\n },\n {\n "name": "PGPORT",\n "value": "5432"\n },\n {\n "name": "KRB5_CONFIG",\n "value": "/etc/postgres/krb5.conf"\n },\n {\n "name": "KRB5RCACHEDIR",\n "value": "/tmp"\n },\n {\n "name": "LDAPTLS_CACERT",\n "value": "/etc/postgres/ldap/ca.crt"\n },\n {\n "name": "LC_ALL",\n "value": "en_US.utf-8"\n },\n {\n "name": "LANG",\n "value": "en_US.utf-8"\n }\n ],\n "image": "docker.io/perconalab/percona-postgresql-operator:main-ppg18-postgres",\n "imagePullPolicy": "Always",\n "name": "postgres-startup",\n "resources": {},\n "securityContext": {\n "allowPrivilegeEscalation": false,\n "capabilities": {\n "drop": [\n "ALL"\n ]\n },\n "privileged": false,\n "readOnlyRootFilesystem": true,\n "runAsNonRoot": true,\n "seccompProfile": {\n "type": "RuntimeDefault"\n }\n },\n "terminationMessagePath": "/dev/termination-log",\n "terminationMessagePolicy": "File",\n "volumeMounts": [\n {\n "mountPath": "/pgconf/tls",\n "name": "cert-volume",\n "readOnly": true\n },\n {\n "mountPath": "/pgdata",\n "name": "postgres-data"\n },\n {\n "mountPath": "/tablespaces/myts",\n "name": "tablespace-myts"\n },\n {\n "mountPath": "/pgwal",\n "name": "postgres-wal"\n },\n {\n "mountPath": "/pglogs",\n "name": "postgres-logs"\n },\n {\n "mountPath": "/tmp",\n "name": "tmp"\n }\n ]\n },\n {\n "command": [\n "bash",\n "-c",\n "mkdir -p /tmp/nss_wrapper \\u0026\\u0026 { [[ -f /tmp/nss_wrapper/libnss_wrapper.so ]] || cp /usr/lib64/libnss_wrapper.so /tmp/nss_wrapper/libnss_wrapper.so; }"\n ],\n "image": "docker.io/perconalab/percona-postgresql-operator:main-ppg18-postgres",\n "imagePullPolicy": "Always",\n "name": "nss-wrapper-init-logcollector",\n "resources": {},\n "securityContext": {\n "allowPrivilegeEscalation": false,\n "capabilities": {\n "drop": [\n "ALL"\n ]\n },\n "privileged": false,\n "runAsGroup": 26,\n "runAsNonRoot": true,\n "runAsUser": 26,\n "seccompProfile": {\n "type": "RuntimeDefault"\n }\n },\n "terminationMessagePath": "/dev/termination-log",\n "terminationMessagePolicy": "File",\n "volumeMounts": [\n {\n "mountPath": "/tmp",\n "name": "tmp"\n }\n ]\n },\n {\n "command": [\n "bash",\n "-c",\n "export NSS_WRAPPER_SUBDIR=postgres CRUNCHY_NSS_USERNAME=postgres CRUNCHY_NSS_USER_DESC=\\"postgres\\" \\n# Define nss_wrapper directory and passwd \\u0026 group files that will be utilized by nss_wrapper. The\\n# nss_wrapper_env.sh script (which also sets these vars) isn\'t sourced here since the nss_wrapper\\n# has not yet been setup, and we therefore don\'t yet want the nss_wrapper vars in the environment.\\nmkdir -p /tmp/nss_wrapper\\nchmod g+rwx /tmp/nss_wrapper\\n\\nNSS_WRAPPER_DIR=\\"/tmp/nss_wrapper/${NSS_WRAPPER_SUBDIR}\\"\\nNSS_WRAPPER_PASSWD=\\"${NSS_WRAPPER_DIR}/passwd\\"\\nNSS_WRAPPER_GROUP=\\"${NSS_WRAPPER_DIR}/group\\"\\n\\n# create the nss_wrapper directory\\nmkdir -p \\"${NSS_WRAPPER_DIR}\\"\\n\\n# grab the current user ID and group ID\\nUSER_ID=$(id -u)\\nexport USER_ID\\nGROUP_ID=$(id -g)\\nexport GROUP_ID\\n\\n# get copies of the passwd and group files\\n[[ -f \\"${NSS_WRAPPER_PASSWD}\\" ]] || cp \\"/etc/passwd\\" \\"${NSS_WRAPPER_PASSWD}\\"\\n[[ -f \\"${NSS_WRAPPER_GROUP}\\" ]] || cp \\"/etc/group\\" \\"${NSS_WRAPPER_GROUP}\\"\\n\\n# if the username is missing from the passwd file, then add it\\nif [[ ! $(cat \\"${NSS_WRAPPER_PASSWD}\\") =~ ${CRUNCHY_NSS_USERNAME}:x:${USER_ID} ]]; then\\n echo \\"nss_wrapper: adding user\\"\\n passwd_tmp=\\"${NSS_WRAPPER_DIR}/passwd_tmp\\"\\n cp \\"${NSS_WRAPPER_PASSWD}\\" \\"${passwd_tmp}\\"\\n sed -i \\"/${CRUNCHY_NSS_USERNAME}:x:/d\\" \\"${passwd_tmp}\\"\\n # needed for OCP 4.x because crio updates /etc/passwd with an entry for USER_ID\\n sed -i \\"/${USER_ID}:x:/d\\" \\"${passwd_tmp}\\"\\n printf \'${CRUNCHY_NSS_USERNAME}:x:${USER_ID}:${GROUP_ID}:${CRUNCHY_NSS_USER_DESC}:${HOME}:/bin/bash\\\\n\' \\u003e\\u003e \\"${passwd_tmp}\\"\\n envsubst \\u003c \\"${passwd_tmp}\\" \\u003e \\"${NSS_WRAPPER_PASSWD}\\"\\n rm \\"${passwd_tmp}\\"\\nelse\\n echo \\"nss_wrapper: user exists\\"\\nfi\\n\\n# if the username (which will be the same as the group name) is missing from group file, then add it\\nif [[ ! $(cat \\"${NSS_WRAPPER_GROUP}\\") =~ ${CRUNCHY_NSS_USERNAME}:x:${USER_ID} ]]; then\\n echo \\"nss_wrapper: adding group\\"\\n group_tmp=\\"${NSS_WRAPPER_DIR}/group_tmp\\"\\n cp \\"${NSS_WRAPPER_GROUP}\\" \\"${group_tmp}\\"\\n sed -i \\"/${CRUNCHY_NSS_USERNAME}:x:/d\\" \\"${group_tmp}\\"\\n printf \'${CRUNCHY_NSS_USERNAME}:x:${USER_ID}:${CRUNCHY_NSS_USERNAME}\\\\n\' \\u003e\\u003e \\"${group_tmp}\\"\\n envsubst \\u003c \\"${group_tmp}\\" \\u003e \\"${NSS_WRAPPER_GROUP}\\"\\n rm \\"${group_tmp}\\"\\nelse\\n echo \\"nss_wrapper: group exists\\"\\nfi\\n\\n# export the nss_wrapper env vars\\n# define nss_wrapper directory and passwd \\u0026 group files that will be utilized by nss_wrapper\\nNSS_WRAPPER_DIR=\\"/tmp/nss_wrapper/${NSS_WRAPPER_SUBDIR}\\"\\nNSS_WRAPPER_PASSWD=\\"${NSS_WRAPPER_DIR}/passwd\\"\\nNSS_WRAPPER_GROUP=\\"${NSS_WRAPPER_DIR}/group\\"\\n\\nexport LD_PRELOAD=/usr/lib64/libnss_wrapper.so\\nexport NSS_WRAPPER_PASSWD=\\"${NSS_WRAPPER_PASSWD}\\"\\nexport NSS_WRAPPER_GROUP=\\"${NSS_WRAPPER_GROUP}\\"\\n\\necho \\"nss_wrapper: environment configured\\"\\n"\n ],\n "image": "docker.io/perconalab/percona-postgresql-operator:main-ppg18-postgres",\n "imagePullPolicy": "Always",\n "name": "nss-wrapper-init",\n "resources": {},\n "securityContext": {\n "allowPrivilegeEscalation": false,\n "capabilities": {\n "drop": [\n "ALL"\n ]\n },\n "privileged": false,\n "readOnlyRootFilesystem": true,\n "runAsNonRoot": true,\n "seccompProfile": {\n "type": "RuntimeDefault"\n }\n },\n "terminationMessagePath": "/dev/termination-log",\n "terminationMessagePolicy": "File",\n "volumeMounts": [\n {\n "mountPath": "/tmp",\n "name": "tmp"\n }\n ]\n }\n ],\n "restartPolicy": "Always",\n "schedulerName": "default-scheduler",\n "securityContext": {\n "fsGroup": 26,\n "fsGroupChangePolicy": "OnRootMismatch"\n },\n "serviceAccount": "additional-volumes-instance",\n "serviceAccountName": "additional-volumes-instance",\n "shareProcessNamespace": true,\n "terminationGracePeriodSeconds": 30,\n "topologySpreadConstraints": [\n {\n "labelSelector": {\n "matchExpressions": [\n {\n "key": "postgres-operator.crunchydata.com/data",\n "operator": "In",\n "values": [\n "postgres",\n "pgbackrest"\n ]\n }\n ],\n "matchLabels": {\n "postgres-operator.crunchydata.com/cluster": "additional-volumes"\n }\n },\n "maxSkew": 1,\n "topologyKey": "kubernetes.io/hostname",\n "whenUnsatisfiable": "ScheduleAnyway"\n },\n {\n "labelSelector": {\n "matchExpressions": [\n {\n "key": "postgres-operator.crunchydata.com/data",\n "operator": "In",\n "values": [\n "postgres",\n "pgbackrest"\n ]\n }\n ],\n "matchLabels": {\n "postgres-operator.crunchydata.com/cluster": "additional-volumes"\n }\n },\n "maxSkew": 1,\n "topologyKey": "topology.kubernetes.io/zone",\n "whenUnsatisfiable": "ScheduleAnyway"\n }\n ],\n "volumes": [\n {\n "name": "cert-volume",\n "projected": {\n "defaultMode": 384,\n "sources": [\n {\n "secret": {\n "items": [\n {\n "key": "tls.crt",\n "path": "tls.crt"\n },\n {\n "key": "tls.key",\n "path": "tls.key"\n },\n {\n "key": "ca.crt",\n "path": "ca.crt"\n }\n ],\n "name": "additional-volumes-cluster-cert"\n }\n },\n {\n "secret": {\n "items": [\n {\n "key": "tls.crt",\n "path": "replication/tls.crt"\n },\n {\n "key": "tls.key",\n "path": "replication/tls.key"\n },\n {\n "key": "ca.crt",\n "path": "replication/ca.crt"\n }\n ],\n "name": "additional-volumes-replication-cert"\n }\n }\n ]\n }\n },\n {\n "name": "postgres-data",\n "persistentVolumeClaim": {\n "claimName": "additional-volumes-instance1-xvbw-pgdata"\n }\n },\n {\n "downwardAPI": {\n "defaultMode": 420,\n "items": [\n {\n "path": "cpu_limit",\n "resourceFieldRef": {\n "containerName": "database",\n "divisor": "1m",\n "resource": "limits.cpu"\n }\n },\n {\n "path": "cpu_request",\n "resourceFieldRef": {\n "containerName": "database",\n "divisor": "1m",\n "resource": "requests.cpu"\n }\n },\n {\n "path": "mem_limit",\n "resourceFieldRef": {\n "containerName": "database",\n "divisor": "1Mi",\n "resource": "limits.memory"\n }\n },\n {\n "path": "mem_request",\n "resourceFieldRef": {\n "containerName": "database",\n "divisor": "1Mi",\n "resource": "requests.memory"\n }\n },\n {\n "fieldRef": {\n "apiVersion": "v1",\n "fieldPath": "metadata.labels"\n },\n "path": "labels"\n },\n {\n "fieldRef": {\n "apiVersion": "v1",\n "fieldPath": "metadata.annotations"\n },\n "path": "annotations"\n }\n ]\n },\n "name": "database-containerinfo"\n },\n {\n "name": "tablespace-myts",\n "persistentVolumeClaim": {\n "claimName": "additional-volumes-instance1-xvbw-myts-tablespace"\n }\n },\n {\n "name": "postgres-wal",\n "persistentVolumeClaim": {\n "claimName": "additional-volumes-instance1-xvbw-pgwal"\n }\n },\n {\n "name": "postgres-logs",\n "persistentVolumeClaim": {\n "claimName": "additional-volumes-instance1-xvbw-pglogs"\n }\n },\n {\n "name": "pgbackrest-server",\n "projected": {\n "defaultMode": 420,\n "sources": [\n {\n "secret": {\n "items": [\n {\n "key": "pgbackrest-server.crt",\n "path": "server-tls.crt"\n },\n {\n "key": "pgbackrest-server.key",\n "mode": 384,\n "path": "server-tls.key"\n }\n ],\n "name": "additional-volumes-instance1-xvbw-certs"\n }\n }\n ]\n }\n },\n {\n "name": "pgbackrest-config",\n "projected": {\n "defaultMode": 420,\n "sources": [\n {\n "configMap": {\n "items": [\n {\n "key": "pgbackrest_instance.conf",\n "path": "pgbackrest_instance.conf"\n },\n {\n "key": "config-hash",\n "path": "config-hash"\n },\n {\n "key": "pgbackrest-server.conf",\n "path": "~postgres-operator_server.conf"\n }\n ],\n "name": "additional-volumes-pgbackrest-config"\n }\n },\n {\n "secret": {\n "items": [\n {\n "key": "pgbackrest.ca-roots",\n "path": "~postgres-operator/tls-ca.crt"\n },\n {\n "key": "pgbackrest-client.crt",\n "path": "~postgres-operator/client-tls.crt"\n },\n {\n "key": "pgbackrest-client.key",\n "mode": 384,\n "path": "~postgres-operator/client-tls.key"\n }\n ],\n "name": "additional-volumes-pgbackrest"\n }\n }\n ]\n }\n },\n {\n "name": "patroni-config",\n "projected": {\n "defaultMode": 420,\n "sources": [\n {\n "configMap": {\n "items": [\n {\n "key": "patroni.yaml",\n "path": "~postgres-operator_cluster.yaml"\n }\n ],\n "name": "additional-volumes-config"\n }\n },\n {\n "configMap": {\n "items": [\n {\n "key": "patroni.yaml",\n "path": "~postgres-operator_instance.yaml"\n }\n ],\n "name": "additional-volumes-instance1-xvbw-config"\n }\n },\n {\n "secret": {\n "items": [\n {\n "key": "patroni.ca-roots",\n "path": "~postgres-operator/patroni.ca-roots"\n },\n {\n "key": "patroni.crt-combined",\n "path": "~postgres-operator/patroni.crt+key"\n }\n ],\n "name": "additional-volumes-instance1-xvbw-certs"\n }\n }\n ]\n }\n },\n {\n "emptyDir": {},\n "name": "crunchy-bin"\n },\n {\n "emptyDir": {\n "sizeLimit": "2Gi"\n },\n "name": "tmp"\n },\n {\n "emptyDir": {\n "medium": "Memory"\n },\n "name": "dshm"\n }\n ]\n }\n },\n "updateStrategy": {\n "type": "OnDelete"\n }\n },\n "status": {\n "availableReplicas": 1,\n "collisionCount": 0,\n "currentReplicas": 1,\n "currentRevision": "additional-volumes-instance1-xvbw-7dcb456674",\n "observedGeneration": 1,\n "readyReplicas": 1,\n "replicas": 1,\n "updateRevision": "additional-volumes-instance1-xvbw-7dcb456674",\n "updatedReplicas": 1\n }\n }\n ],\n "kind": "List",\n "metadata": {\n "resourceVersion": ""\n }\n}' logger.go:42: 18:13:50 | additional-volumes/2-verify-volumes | + jq -e --arg p /pgwal $'.items[0].spec.template.spec.containers[]\n | select(.name == "database") | .volumeMounts[]\n | select(.mountPath == $p)' logger.go:42: 18:13:51 | additional-volumes/2-verify-volumes | + printf '%s\n' $'{\n "apiVersion": "v1",\n "items": [\n {\n "apiVersion": "apps/v1",\n "kind": "StatefulSet",\n "metadata": {\n "annotations": {\n "pgv2.percona.com/logcollector-config-hash": "d9a116e02b828bdc02165325e92799d82961fb499041814c7c765d0ce263ce77"\n },\n "creationTimestamp": "2026-08-19T18:12:04Z",\n "generation": 1,\n "labels": {\n "app.kubernetes.io/component": "pg",\n "app.kubernetes.io/instance": "additional-volumes",\n "app.kubernetes.io/managed-by": "percona-postgresql-operator",\n "app.kubernetes.io/name": "percona-postgresql",\n "app.kubernetes.io/part-of": "percona-postgresql",\n "pgv2.percona.com/version": "3.2.0",\n "postgres-operator.crunchydata.com/cluster": "additional-volumes",\n "postgres-operator.crunchydata.com/data": "postgres",\n "postgres-operator.crunchydata.com/instance": "additional-volumes-instance1-24br",\n "postgres-operator.crunchydata.com/instance-set": "instance1"\n },\n "name": "additional-volumes-instance1-24br",\n "namespace": "kuttl-test-intimate-garfish",\n "ownerReferences": [\n {\n "apiVersion": "upstream.pgv2.percona.com/v1beta1",\n "blockOwnerDeletion": true,\n "controller": true,\n "kind": "PostgresCluster",\n "name": "additional-volumes",\n "uid": "b795649f-550b-4283-b2ef-eca573235e5a"\n }\n ],\n "resourceVersion": "1787163196013855005",\n "uid": "471c7b02-6f1c-4f53-a6b2-557d95701703"\n },\n "spec": {\n "persistentVolumeClaimRetentionPolicy": {\n "whenDeleted": "Retain",\n "whenScaled": "Retain"\n },\n "podManagementPolicy": "OrderedReady",\n "replicas": 1,\n "revisionHistoryLimit": 0,\n "selector": {\n "matchLabels": {\n "postgres-operator.crunchydata.com/cluster": "additional-volumes",\n "postgres-operator.crunchydata.com/instance": "additional-volumes-instance1-24br",\n "postgres-operator.crunchydata.com/instance-set": "instance1"\n }\n },\n "serviceName": "additional-volumes-pods",\n "template": {\n "metadata": {\n "annotations": {\n "kubectl.kubernetes.io/default-container": "database",\n "pgv2.percona.com/logcollector-config-hash": "d9a116e02b828bdc02165325e92799d82961fb499041814c7c765d0ce263ce77"\n },\n "creationTimestamp": null,\n "labels": {\n "app.kubernetes.io/component": "pg",\n "app.kubernetes.io/instance": "additional-volumes",\n "app.kubernetes.io/managed-by": "percona-postgresql-operator",\n "app.kubernetes.io/name": "percona-postgresql",\n "app.kubernetes.io/part-of": "percona-postgresql",\n "pgv2.percona.com/version": "3.2.0",\n "postgres-operator.crunchydata.com/cluster": "additional-volumes",\n "postgres-operator.crunchydata.com/data": "postgres",\n "postgres-operator.crunchydata.com/instance": "additional-volumes-instance1-24br",\n "postgres-operator.crunchydata.com/instance-set": "instance1",\n "postgres-operator.crunchydata.com/patroni": "additional-volumes-ha"\n }\n },\n "spec": {\n "affinity": {\n "podAntiAffinity": {\n "preferredDuringSchedulingIgnoredDuringExecution": [\n {\n "podAffinityTerm": {\n "labelSelector": {\n "matchLabels": {\n "postgres-operator.crunchydata.com/data": "postgres"\n }\n },\n "topologyKey": "kubernetes.io/hostname"\n },\n "weight": 1\n }\n ]\n }\n },\n "containers": [\n {\n "command": [\n "/opt/crunchy/bin/postgres-entrypoint.sh",\n "patroni",\n "/etc/patroni"\n ],\n "env": [\n {\n "name": "PGDATA",\n "value": "/pgdata/pg18"\n },\n {\n "name": "PGHOST",\n "value": "/tmp/postgres"\n },\n {\n "name": "PGPORT",\n "value": "5432"\n },\n {\n "name": "KRB5_CONFIG",\n "value": "/etc/postgres/krb5.conf"\n },\n {\n "name": "KRB5RCACHEDIR",\n "value": "/tmp"\n },\n {\n "name": "LDAPTLS_CACERT",\n "value": "/etc/postgres/ldap/ca.crt"\n },\n {\n "name": "LC_ALL",\n "value": "en_US.utf-8"\n },\n {\n "name": "LANG",\n "value": "en_US.utf-8"\n },\n {\n "name": "PATRONI_NAME",\n "valueFrom": {\n "fieldRef": {\n "apiVersion": "v1",\n "fieldPath": "metadata.name"\n }\n }\n },\n {\n "name": "PATRONI_KUBERNETES_POD_IP",\n "valueFrom": {\n "fieldRef": {\n "apiVersion": "v1",\n "fieldPath": "status.podIP"\n }\n }\n },\n {\n "name": "PATRONI_KUBERNETES_PORTS",\n "value": "- name: postgres\\n port: 5432\\n protocol: TCP\\n"\n },\n {\n "name": "PATRONI_POSTGRESQL_CONNECT_ADDRESS",\n "value": "$(PATRONI_NAME).additional-volumes-pods:5432"\n },\n {\n "name": "PATRONI_POSTGRESQL_LISTEN",\n "value": "*:5432"\n },\n {\n "name": "PATRONI_POSTGRESQL_CONFIG_DIR",\n "value": "/pgdata/pg18"\n },\n {\n "name": "PATRONI_POSTGRESQL_DATA_DIR",\n "value": "/pgdata/pg18"\n },\n {\n "name": "PATRONI_RESTAPI_CONNECT_ADDRESS",\n "value": "$(PATRONI_NAME).additional-volumes-pods:8008"\n },\n {\n "name": "PATRONI_RESTAPI_LISTEN",\n "value": "*:8008"\n },\n {\n "name": "PATRONICTL_CONFIG_FILE",\n "value": "/etc/patroni"\n },\n {\n "name": "LD_PRELOAD",\n "value": "/usr/lib64/libnss_wrapper.so"\n },\n {\n "name": "NSS_WRAPPER_PASSWD",\n "value": "/tmp/nss_wrapper/postgres/passwd"\n },\n {\n "name": "NSS_WRAPPER_GROUP",\n "value": "/tmp/nss_wrapper/postgres/group"\n }\n ],\n "image": "docker.io/perconalab/percona-postgresql-operator:main-ppg18-postgres",\n "imagePullPolicy": "Always",\n "livenessProbe": {\n "exec": {\n "command": [\n "bash",\n "-c",\n "/opt/crunchy/bin/postgres-liveness-check.sh"\n ]\n },\n "failureThreshold": 3,\n "initialDelaySeconds": 3,\n "periodSeconds": 10,\n "successThreshold": 1,\n "timeoutSeconds": 5\n },\n "name": "database",\n "ports": [\n {\n "containerPort": 5432,\n "name": "postgres",\n "protocol": "TCP"\n }\n ],\n "readinessProbe": {\n "exec": {\n "command": [\n "bash",\n "-c",\n "/opt/crunchy/bin/postgres-readiness-check.sh"\n ]\n },\n "failureThreshold": 3,\n "initialDelaySeconds": 3,\n "periodSeconds": 10,\n "successThreshold": 1,\n "timeoutSeconds": 5\n },\n "resources": {},\n "securityContext": {\n "allowPrivilegeEscalation": false,\n "capabilities": {\n "drop": [\n "ALL"\n ]\n },\n "privileged": false,\n "readOnlyRootFilesystem": true,\n "runAsNonRoot": true,\n "seccompProfile": {\n "type": "RuntimeDefault"\n }\n },\n "terminationMessagePath": "/dev/termination-log",\n "terminationMessagePolicy": "File",\n "volumeMounts": [\n {\n "mountPath": "/pgconf/tls",\n "name": "cert-volume",\n "readOnly": true\n },\n {\n "mountPath": "/pgdata",\n "name": "postgres-data"\n },\n {\n "mountPath": "/etc/database-containerinfo",\n "name": "database-containerinfo",\n "readOnly": true\n },\n {\n "mountPath": "/tablespaces/myts",\n "name": "tablespace-myts"\n },\n {\n "mountPath": "/pgwal",\n "name": "postgres-wal"\n },\n {\n "mountPath": "/pglogs",\n "name": "postgres-logs"\n },\n {\n "mountPath": "/etc/pgbackrest/conf.d",\n "name": "pgbackrest-config",\n "readOnly": true\n },\n {\n "mountPath": "/etc/patroni",\n "name": "patroni-config",\n "readOnly": true\n },\n {\n "mountPath": "/opt/crunchy",\n "name": "crunchy-bin"\n },\n {\n "mountPath": "/tmp",\n "name": "tmp"\n },\n {\n "mountPath": "/dev/shm",\n "name": "dshm"\n }\n ]\n },\n {\n "command": [\n "bash",\n "-ceu",\n "--",\n "monitor() {\\n# Parameters for curl when managing autogrow annotation.\\nAPISERVER=\\"https://kubernetes.default.svc\\"\\nSERVICEACCOUNT=\\"/var/run/secrets/kubernetes.io/serviceaccount\\"\\nNAMESPACE=$(cat ${SERVICEACCOUNT}/namespace)\\nTOKEN=$(cat ${SERVICEACCOUNT}/token)\\nCACERT=${SERVICEACCOUNT}/ca.crt\\n\\ndeclare -r directory=\\"/pgconf/tls\\"\\nexec {fd}\\u003c\\u003e \\u003c(:||:)\\nwhile read -r -t 5 -u \\"${fd}\\" ||:; do\\n # Manage replication certificate.\\n if [[ \\"${directory}\\" -nt \\"/proc/self/fd/${fd}\\" ]] \\u0026\\u0026\\n install -D --mode=0600 -t \\"/tmp/replication\\" \\"${directory}\\"/{replication/tls.crt,replication/tls.key,replication/ca.crt} \\u0026\\u0026\\n pkill -HUP --exact --parent=1 postgres\\n then\\n exec {fd}\\u003e\\u0026- \\u0026\\u0026 exec {fd}\\u003c\\u003e \\u003c(:||:)\\n stat --format=\'Loaded certificates dated %y\' \\"${directory}\\"\\n fi\\n\\ndone\\n}; export -f monitor; exec -a \\"$0\\" bash -ceu monitor",\n "replication-cert-copy"\n ],\n "image": "docker.io/perconalab/percona-postgresql-operator:main-ppg18-postgres",\n "imagePullPolicy": "Always",\n "name": "replication-cert-copy",\n "resources": {},\n "securityContext": {\n "allowPrivilegeEscalation": false,\n "capabilities": {\n "drop": [\n "ALL"\n ]\n },\n "privileged": false,\n "readOnlyRootFilesystem": true,\n "runAsNonRoot": true,\n "seccompProfile": {\n "type": "RuntimeDefault"\n }\n },\n "terminationMessagePath": "/dev/termination-log",\n "terminationMessagePolicy": "File",\n "volumeMounts": [\n {\n "mountPath": "/pgconf/tls",\n "name": "cert-volume",\n "readOnly": true\n },\n {\n "mountPath": "/pgdata",\n "name": "postgres-data"\n },\n {\n "mountPath": "/tmp",\n "name": "tmp"\n }\n ]\n },\n {\n "args": [\n "fluent-bit"\n ],\n "command": [\n "/opt/crunchy/logcollector/entrypoint.sh"\n ],\n "env": [\n {\n "name": "PG_LOG_DIR",\n "value": "/pgdata/pg18/log"\n },\n {\n "name": "PGBACKREST_LOG_DIR",\n "value": "/pgdata/pgbackrest/log"\n },\n {\n "name": "POD_NAMESPACE",\n "valueFrom": {\n "fieldRef": {\n "apiVersion": "v1",\n "fieldPath": "metadata.namespace"\n }\n }\n },\n {\n "name": "POD_NAME",\n "valueFrom": {\n "fieldRef": {\n "apiVersion": "v1",\n "fieldPath": "metadata.name"\n }\n }\n }\n ],\n "image": "docker.io/perconalab/fluentbit:main-logcollector",\n "imagePullPolicy": "IfNotPresent",\n "name": "logs",\n "resources": {},\n "securityContext": {\n "allowPrivilegeEscalation": false,\n "capabilities": {\n "drop": [\n "ALL"\n ]\n },\n "privileged": false,\n "runAsGroup": 26,\n "runAsNonRoot": true,\n "runAsUser": 26,\n "seccompProfile": {\n "type": "RuntimeDefault"\n }\n },\n "terminationMessagePath": "/dev/termination-log",\n "terminationMessagePolicy": "File",\n "volumeMounts": [\n {\n "mountPath": "/pgdata",\n "name": "postgres-data"\n },\n {\n "mountPath": "/opt/crunchy",\n "name": "crunchy-bin"\n },\n {\n "mountPath": "/tmp",\n "name": "tmp"\n }\n ]\n },\n {\n "args": [\n "logrotate"\n ],\n "command": [\n "/opt/crunchy/logcollector/entrypoint.sh"\n ],\n "env": [\n {\n "name": "POD_NAMESPACE",\n "valueFrom": {\n "fieldRef": {\n "apiVersion": "v1",\n "fieldPath": "metadata.namespace"\n }\n }\n },\n {\n "name": "POD_NAME",\n "valueFrom": {\n "fieldRef": {\n "apiVersion": "v1",\n "fieldPath": "metadata.name"\n }\n }\n },\n {\n "name": "LOGROTATE_SCHEDULE",\n "value": "0 0 * * *"\n },\n {\n "name": "LD_PRELOAD",\n "value": "/tmp/nss_wrapper/libnss_wrapper.so"\n },\n {\n "name": "NSS_WRAPPER_PASSWD",\n "value": "/tmp/nss_wrapper/postgres/passwd"\n },\n {\n "name": "NSS_WRAPPER_GROUP",\n "value": "/tmp/nss_wrapper/postgres/group"\n }\n ],\n "image": "docker.io/perconalab/fluentbit:main-logcollector",\n "imagePullPolicy": "IfNotPresent",\n "name": "logrotate",\n "resources": {},\n "securityContext": {\n "allowPrivilegeEscalation": false,\n "capabilities": {\n "drop": [\n "ALL"\n ]\n },\n "privileged": false,\n "runAsGroup": 26,\n "runAsNonRoot": true,\n "runAsUser": 26,\n "seccompProfile": {\n "type": "RuntimeDefault"\n }\n },\n "terminationMessagePath": "/dev/termination-log",\n "terminationMessagePolicy": "File",\n "volumeMounts": [\n {\n "mountPath": "/pgdata",\n "name": "postgres-data"\n },\n {\n "mountPath": "/opt/crunchy",\n "name": "crunchy-bin"\n },\n {\n "mountPath": "/tmp",\n "name": "tmp"\n }\n ]\n },\n {\n "command": [\n "pgbackrest",\n "server"\n ],\n "env": [\n {\n "name": "LD_PRELOAD",\n "value": "/usr/lib64/libnss_wrapper.so"\n },\n {\n "name": "NSS_WRAPPER_PASSWD",\n "value": "/tmp/nss_wrapper/postgres/passwd"\n },\n {\n "name": "NSS_WRAPPER_GROUP",\n "value": "/tmp/nss_wrapper/postgres/group"\n }\n ],\n "image": "docker.io/perconalab/percona-postgresql-operator:main-pgbackrest18",\n "imagePullPolicy": "Always",\n "livenessProbe": {\n "exec": {\n "command": [\n "pgbackrest",\n "server-ping"\n ]\n },\n "failureThreshold": 3,\n "periodSeconds": 10,\n "successThreshold": 1,\n "timeoutSeconds": 1\n },\n "name": "pgbackrest",\n "resources": {},\n "securityContext": {\n "allowPrivilegeEscalation": false,\n "capabilities": {\n "drop": [\n "ALL"\n ]\n },\n "privileged": false,\n "readOnlyRootFilesystem": true,\n "runAsNonRoot": true,\n "seccompProfile": {\n "type": "RuntimeDefault"\n }\n },\n "terminationMessagePath": "/dev/termination-log",\n "terminationMessagePolicy": "File",\n "volumeMounts": [\n {\n "mountPath": "/etc/pgbackrest/server",\n "name": "pgbackrest-server",\n "readOnly": true\n },\n {\n "mountPath": "/pgdata",\n "name": "postgres-data"\n },\n {\n "mountPath": "/tablespaces/myts",\n "name": "tablespace-myts"\n },\n {\n "mountPath": "/pgwal",\n "name": "postgres-wal"\n },\n {\n "mountPath": "/etc/pgbackrest/conf.d",\n "name": "pgbackrest-config",\n "readOnly": true\n },\n {\n "mountPath": "/tmp",\n "name": "tmp"\n }\n ]\n },\n {\n "command": [\n "bash",\n "-ceu",\n "--",\n "monitor() {\\nexec {fd}\\u003c\\u003e \\u003c(:||:)\\nuntil read -r -t 5 -u \\"${fd}\\"; do\\n if\\n [[ \\"${filename}\\" -nt \\"/proc/self/fd/${fd}\\" ]] \\u0026\\u0026\\n pkill -HUP --exact --parent=0 pgbackrest\\n then\\n exec {fd}\\u003e\\u0026- \\u0026\\u0026 exec {fd}\\u003c\\u003e \\u003c(:||:)\\n stat --dereference --format=\'Loaded configuration dated %y\' \\"${filename}\\"\\n elif\\n { [[ \\"${directory}\\" -nt \\"/proc/self/fd/${fd}\\" ]] ||\\n [[ \\"${authority}\\" -nt \\"/proc/self/fd/${fd}\\" ]]\\n } \\u0026\\u0026\\n pkill -HUP --exact --parent=0 pgbackrest\\n then\\n exec {fd}\\u003e\\u0026- \\u0026\\u0026 exec {fd}\\u003c\\u003e \\u003c(:||:)\\n stat --format=\'Loaded certificates dated %y\' \\"${directory}\\"\\n fi\\ndone\\n}; export directory=\\"$1\\" authority=\\"$2\\" filename=\\"$3\\"; export -f monitor; exec -a \\"$0\\" bash -ceu monitor",\n "pgbackrest-config",\n "/etc/pgbackrest/server",\n "/etc/pgbackrest/conf.d/~postgres-operator/tls-ca.crt",\n "/etc/pgbackrest/conf.d/~postgres-operator_server.conf"\n ],\n "image": "docker.io/perconalab/percona-postgresql-operator:main-pgbackrest18",\n "imagePullPolicy": "Always",\n "name": "pgbackrest-config",\n "resources": {},\n "securityContext": {\n "allowPrivilegeEscalation": false,\n "capabilities": {\n "drop": [\n "ALL"\n ]\n },\n "privileged": false,\n "readOnlyRootFilesystem": true,\n "runAsNonRoot": true,\n "seccompProfile": {\n "type": "RuntimeDefault"\n }\n },\n "terminationMessagePath": "/dev/termination-log",\n "terminationMessagePolicy": "File",\n "volumeMounts": [\n {\n "mountPath": "/etc/pgbackrest/server",\n "name": "pgbackrest-server",\n "readOnly": true\n },\n {\n "mountPath": "/etc/pgbackrest/conf.d",\n "name": "pgbackrest-config",\n "readOnly": true\n },\n {\n "mountPath": "/tmp",\n "name": "tmp"\n }\n ]\n }\n ],\n "dnsPolicy": "ClusterFirst",\n "enableServiceLinks": false,\n "initContainers": [\n {\n "command": [\n "/usr/local/bin/init-entrypoint.sh"\n ],\n "image": "docker.io/perconalab/percona-postgresql-operator:PR-1760-4947a0272",\n "imagePullPolicy": "Always",\n "name": "database-init",\n "resources": {},\n "securityContext": {\n "allowPrivilegeEscalation": false,\n "capabilities": {\n "drop": [\n "ALL"\n ]\n },\n "privileged": false,\n "readOnlyRootFilesystem": true,\n "runAsNonRoot": true,\n "seccompProfile": {\n "type": "RuntimeDefault"\n }\n },\n "terminationMessagePath": "/dev/termination-log",\n "terminationMessagePolicy": "File",\n "volumeMounts": [\n {\n "mountPath": "/opt/crunchy",\n "name": "crunchy-bin"\n },\n {\n "mountPath": "/tmp",\n "name": "tmp"\n }\n ]\n },\n {\n "command": [\n "bash",\n "-ceu",\n "--",\n "declare -r expected_major_version=\\"$1\\" pgwal_directory=\\"$2\\" pgbrLog_directory=\\"$3\\"\\npermissions() { while [[ -n \\"$1\\" ]]; do set \\"${1%/*}\\" \\"$@\\"; done; shift; stat -Lc \'%A %4u %4g %n\' \\"$@\\"; }\\nhalt() { local rc=$?; \\u003e\\u00262 echo \\"$@\\"; exit \\"${rc/#0/1}\\"; }\\nresults() { printf \'::postgres-operator: %s::%s\\\\n\' \\"$@\\"; }\\nrecreate() (\\n local tmp; tmp=$(mktemp -d -p \\"${1%/*}\\"); GLOBIGNORE=\'.:..\'; set -x\\n chmod \\"$2\\" \\"${tmp}\\"; mv \\"$1\\"/* \\"${tmp}\\"; rmdir \\"$1\\"; mv \\"${tmp}\\" \\"$1\\"\\n)\\nsafelink() (\\n local desired=\\"$1\\" name=\\"$2\\" current\\n current=$(realpath \\"${name}\\")\\n if [[ \\"${current}\\" == \\"${desired}\\" ]]; then return; fi\\n set -x; mv --no-target-directory \\"${current}\\" \\"${desired}\\"\\n ln --no-dereference --force --symbolic \\"${desired}\\" \\"${name}\\"\\n)\\necho Initializing ...\\nresults \'uid\' \\"$(id -u ||:)\\" \'gid\' \\"$(id -G ||:)\\"\\nif [[ \\"${pgwal_directory}\\" == *\\"pgwal/\\"* ]] \\u0026\\u0026 [[ ! -d \\"/pgwal/pgbackrest-spool\\" ]];then rm -rf \\"/pgdata/pgbackrest-spool\\" \\u0026\\u0026 mkdir -p \\"/pgwal/pgbackrest-spool\\" \\u0026\\u0026 ln --force --symbolic \\"/pgwal/pgbackrest-spool\\" \\"/pgdata/pgbackrest-spool\\";fi\\nif [[ ! -e \\"/pgdata/pgbackrest-spool\\" ]];then rm -rf /pgdata/pgbackrest-spool;fi\\nif [[ ! -e \\"/pgdata/logs/postgres\\" ]];then rm -rf \\"/pgdata/logs/postgres\\";fi\\nif [[ ! -e \\"${pgbrLog_directory}\\" ]];then rm -rf \\"${pgbrLog_directory}\\";fi\\nif [[ -d \\"/pglogs\\" ]];then install --directory --mode=0775 \\"/pglogs/postgres\\" \\"/pglogs/pgbackrest/log\\";if [[ ! -L \\"/pgdata/logs/postgres\\" ]];then mkdir -p \\"/pgdata/logs\\" \\u0026\\u0026 rm -rf \\"/pgdata/logs/postgres\\" \\u0026\\u0026 ln --symbolic \\"/pglogs/postgres\\" \\"/pgdata/logs/postgres\\";fi;if [[ ! -L \\"${pgbrLog_directory}\\" ]];then mkdir -p \\"${pgbrLog_directory%/*}\\" \\u0026\\u0026 rm -rf \\"${pgbrLog_directory}\\" \\u0026\\u0026 ln --symbolic \\"/pglogs/pgbackrest/log\\" \\"${pgbrLog_directory}\\";fi;fi\\nresults \'postgres path\' \\"$(command -v postgres ||:)\\"\\nresults \'postgres version\' \\"${postgres_version:=$(postgres --version ||:)}\\"\\n[[ \\"${postgres_version}\\" =~ \\") ${expected_major_version}\\"($|[^0-9]) ]] ||\\nhalt Expected PostgreSQL version \\"${expected_major_version}\\"\\nresults \'config directory\' \\"${PGDATA:?}\\"\\npostgres_data_directory=$([[ -d \\"${PGDATA}\\" ]] \\u0026\\u0026 postgres -C data_directory || echo \\"${PGDATA}\\")\\nresults \'data directory\' \\"${postgres_data_directory}\\"\\n[[ \\"${postgres_data_directory}\\" == \\"${PGDATA}\\" ]] ||\\nhalt Expected matching config and data directories\\nbootstrap_dir=\\"${postgres_data_directory}_bootstrap\\"\\n[[ -d \\"${bootstrap_dir}\\" ]] \\u0026\\u0026 results \'bootstrap directory\' \\"${bootstrap_dir}\\"\\n[[ -d \\"${bootstrap_dir}\\" ]] \\u0026\\u0026 postgres_data_directory=\\"${bootstrap_dir}\\"\\nif [[ ! -e \\"${postgres_data_directory}\\" || -O \\"${postgres_data_directory}\\" ]]; then\\ninstall --directory --mode=0700 \\"${postgres_data_directory}\\"\\nelif [[ -w \\"${postgres_data_directory}\\" \\u0026\\u0026 -g \\"${postgres_data_directory}\\" ]]; then\\nrecreate \\"${postgres_data_directory}\\" \'0700\'\\nelse (halt Permissions!); fi ||\\nhalt \\"$(permissions \\"${postgres_data_directory}\\" ||:)\\"\\nresults \'pgBackRest log directory\' \\"${pgbrLog_directory}\\"\\ninstall --directory --mode=0775 \\"${pgbrLog_directory}\\" ||\\nhalt \\"$(permissions \\"${pgbrLog_directory}\\" ||:)\\"\\ninstall -D --mode=0600 -t \\"/tmp/replication\\" \\"/pgconf/tls/replication\\"/{tls.crt,tls.key,ca.crt}\\n\\ntablespace_dir=/tablespaces/myts/data\\nif [[ ! -e \\"${tablespace_dir}\\" || -O \\"${tablespace_dir}\\" ]]; then\\ninstall --directory --mode=0700 \\"${tablespace_dir}\\"\\nelif [[ -w \\"${tablespace_dir}\\" \\u0026\\u0026 -g \\"${tablespace_dir}\\" ]]; then\\nrecreate \\"${tablespace_dir}\\" \'0700\'\\nelse (halt Permissions!); fi ||\\nhalt \\"$(permissions \\"${tablespace_dir}\\" ||:)\\"\\n[[ -f \\"${postgres_data_directory}/PG_VERSION\\" ]] || exit 0\\nresults \'data version\' \\"${postgres_data_version:=$(\\u003c \\"${postgres_data_directory}/PG_VERSION\\")}\\"\\n[[ \\"${postgres_data_version}\\" == \\"${expected_major_version}\\" ]] ||\\nhalt Expected PostgreSQL data version \\"${expected_major_version}\\"\\n[[ ! -f \\"${postgres_data_directory}/postgresql.conf\\" ]] \\u0026\\u0026\\ntouch \\"${postgres_data_directory}/postgresql.conf\\"\\nsafelink \\"${pgwal_directory}\\" \\"${postgres_data_directory}/pg_wal\\"\\nresults \'wal directory\' \\"$(realpath \\"${postgres_data_directory}/pg_wal\\" ||:)\\"\\nrm -f \\"${postgres_data_directory}/recovery.signal\\"",\n "startup",\n "18",\n "/pgwal/pg18_wal",\n "/pgdata/pgbackrest/log"\n ],\n "env": [\n {\n "name": "PGDATA",\n "value": "/pgdata/pg18"\n },\n {\n "name": "PGHOST",\n "value": "/tmp/postgres"\n },\n {\n "name": "PGPORT",\n "value": "5432"\n },\n {\n "name": "KRB5_CONFIG",\n "value": "/etc/postgres/krb5.conf"\n },\n {\n "name": "KRB5RCACHEDIR",\n "value": "/tmp"\n },\n {\n "name": "LDAPTLS_CACERT",\n "value": "/etc/postgres/ldap/ca.crt"\n },\n {\n "name": "LC_ALL",\n "value": "en_US.utf-8"\n },\n {\n "name": "LANG",\n "value": "en_US.utf-8"\n }\n ],\n "image": "docker.io/perconalab/percona-postgresql-operator:main-ppg18-postgres",\n "imagePullPolicy": "Always",\n "name": "postgres-startup",\n "resources": {},\n "securityContext": {\n "allowPrivilegeEscalation": false,\n "capabilities": {\n "drop": [\n "ALL"\n ]\n },\n "privileged": false,\n "readOnlyRootFilesystem": true,\n "runAsNonRoot": true,\n "seccompProfile": {\n "type": "RuntimeDefault"\n }\n },\n "terminationMessagePath": "/dev/termination-log",\n "terminationMessagePolicy": "File",\n "volumeMounts": [\n {\n "mountPath": "/pgconf/tls",\n "name": "cert-volume",\n "readOnly": true\n },\n {\n "mountPath": "/pgdata",\n "name": "postgres-data"\n },\n {\n "mountPath": "/tablespaces/myts",\n "name": "tablespace-myts"\n },\n {\n "mountPath": "/pgwal",\n "name": "postgres-wal"\n },\n {\n "mountPath": "/pglogs",\n "name": "postgres-logs"\n },\n {\n "mountPath": "/tmp",\n "name": "tmp"\n }\n ]\n },\n {\n "command": [\n "bash",\n "-c",\n "mkdir -p /tmp/nss_wrapper \\u0026\\u0026 { [[ -f /tmp/nss_wrapper/libnss_wrapper.so ]] || cp /usr/lib64/libnss_wrapper.so /tmp/nss_wrapper/libnss_wrapper.so; }"\n ],\n "image": "docker.io/perconalab/percona-postgresql-operator:main-ppg18-postgres",\n "imagePullPolicy": "Always",\n "name": "nss-wrapper-init-logcollector",\n "resources": {},\n "securityContext": {\n "allowPrivilegeEscalation": false,\n "capabilities": {\n "drop": [\n "ALL"\n ]\n },\n "privileged": false,\n "runAsGroup": 26,\n "runAsNonRoot": true,\n "runAsUser": 26,\n "seccompProfile": {\n "type": "RuntimeDefault"\n }\n },\n "terminationMessagePath": "/dev/termination-log",\n "terminationMessagePolicy": "File",\n "volumeMounts": [\n {\n "mountPath": "/tmp",\n "name": "tmp"\n }\n ]\n },\n {\n "command": [\n "bash",\n "-c",\n "export NSS_WRAPPER_SUBDIR=postgres CRUNCHY_NSS_USERNAME=postgres CRUNCHY_NSS_USER_DESC=\\"postgres\\" \\n# Define nss_wrapper directory and passwd \\u0026 group files that will be utilized by nss_wrapper. The\\n# nss_wrapper_env.sh script (which also sets these vars) isn\'t sourced here since the nss_wrapper\\n# has not yet been setup, and we therefore don\'t yet want the nss_wrapper vars in the environment.\\nmkdir -p /tmp/nss_wrapper\\nchmod g+rwx /tmp/nss_wrapper\\n\\nNSS_WRAPPER_DIR=\\"/tmp/nss_wrapper/${NSS_WRAPPER_SUBDIR}\\"\\nNSS_WRAPPER_PASSWD=\\"${NSS_WRAPPER_DIR}/passwd\\"\\nNSS_WRAPPER_GROUP=\\"${NSS_WRAPPER_DIR}/group\\"\\n\\n# create the nss_wrapper directory\\nmkdir -p \\"${NSS_WRAPPER_DIR}\\"\\n\\n# grab the current user ID and group ID\\nUSER_ID=$(id -u)\\nexport USER_ID\\nGROUP_ID=$(id -g)\\nexport GROUP_ID\\n\\n# get copies of the passwd and group files\\n[[ -f \\"${NSS_WRAPPER_PASSWD}\\" ]] || cp \\"/etc/passwd\\" \\"${NSS_WRAPPER_PASSWD}\\"\\n[[ -f \\"${NSS_WRAPPER_GROUP}\\" ]] || cp \\"/etc/group\\" \\"${NSS_WRAPPER_GROUP}\\"\\n\\n# if the username is missing from the passwd file, then add it\\nif [[ ! $(cat \\"${NSS_WRAPPER_PASSWD}\\") =~ ${CRUNCHY_NSS_USERNAME}:x:${USER_ID} ]]; then\\n echo \\"nss_wrapper: adding user\\"\\n passwd_tmp=\\"${NSS_WRAPPER_DIR}/passwd_tmp\\"\\n cp \\"${NSS_WRAPPER_PASSWD}\\" \\"${passwd_tmp}\\"\\n sed -i \\"/${CRUNCHY_NSS_USERNAME}:x:/d\\" \\"${passwd_tmp}\\"\\n # needed for OCP 4.x because crio updates /etc/passwd with an entry for USER_ID\\n sed -i \\"/${USER_ID}:x:/d\\" \\"${passwd_tmp}\\"\\n printf \'${CRUNCHY_NSS_USERNAME}:x:${USER_ID}:${GROUP_ID}:${CRUNCHY_NSS_USER_DESC}:${HOME}:/bin/bash\\\\n\' \\u003e\\u003e \\"${passwd_tmp}\\"\\n envsubst \\u003c \\"${passwd_tmp}\\" \\u003e \\"${NSS_WRAPPER_PASSWD}\\"\\n rm \\"${passwd_tmp}\\"\\nelse\\n echo \\"nss_wrapper: user exists\\"\\nfi\\n\\n# if the username (which will be the same as the group name) is missing from group file, then add it\\nif [[ ! $(cat \\"${NSS_WRAPPER_GROUP}\\") =~ ${CRUNCHY_NSS_USERNAME}:x:${USER_ID} ]]; then\\n echo \\"nss_wrapper: adding group\\"\\n group_tmp=\\"${NSS_WRAPPER_DIR}/group_tmp\\"\\n cp \\"${NSS_WRAPPER_GROUP}\\" \\"${group_tmp}\\"\\n sed -i \\"/${CRUNCHY_NSS_USERNAME}:x:/d\\" \\"${group_tmp}\\"\\n printf \'${CRUNCHY_NSS_USERNAME}:x:${USER_ID}:${CRUNCHY_NSS_USERNAME}\\\\n\' \\u003e\\u003e \\"${group_tmp}\\"\\n envsubst \\u003c \\"${group_tmp}\\" \\u003e \\"${NSS_WRAPPER_GROUP}\\"\\n rm \\"${group_tmp}\\"\\nelse\\n echo \\"nss_wrapper: group exists\\"\\nfi\\n\\n# export the nss_wrapper env vars\\n# define nss_wrapper directory and passwd \\u0026 group files that will be utilized by nss_wrapper\\nNSS_WRAPPER_DIR=\\"/tmp/nss_wrapper/${NSS_WRAPPER_SUBDIR}\\"\\nNSS_WRAPPER_PASSWD=\\"${NSS_WRAPPER_DIR}/passwd\\"\\nNSS_WRAPPER_GROUP=\\"${NSS_WRAPPER_DIR}/group\\"\\n\\nexport LD_PRELOAD=/usr/lib64/libnss_wrapper.so\\nexport NSS_WRAPPER_PASSWD=\\"${NSS_WRAPPER_PASSWD}\\"\\nexport NSS_WRAPPER_GROUP=\\"${NSS_WRAPPER_GROUP}\\"\\n\\necho \\"nss_wrapper: environment configured\\"\\n"\n ],\n "image": "docker.io/perconalab/percona-postgresql-operator:main-ppg18-postgres",\n "imagePullPolicy": "Always",\n "name": "nss-wrapper-init",\n "resources": {},\n "securityContext": {\n "allowPrivilegeEscalation": false,\n "capabilities": {\n "drop": [\n "ALL"\n ]\n },\n "privileged": false,\n "readOnlyRootFilesystem": true,\n "runAsNonRoot": true,\n "seccompProfile": {\n "type": "RuntimeDefault"\n }\n },\n "terminationMessagePath": "/dev/termination-log",\n "terminationMessagePolicy": "File",\n "volumeMounts": [\n {\n "mountPath": "/tmp",\n "name": "tmp"\n }\n ]\n }\n ],\n "restartPolicy": "Always",\n "schedulerName": "default-scheduler",\n "securityContext": {\n "fsGroup": 26,\n "fsGroupChangePolicy": "OnRootMismatch"\n },\n "serviceAccount": "additional-volumes-instance",\n "serviceAccountName": "additional-volumes-instance",\n "shareProcessNamespace": true,\n "terminationGracePeriodSeconds": 30,\n "topologySpreadConstraints": [\n {\n "labelSelector": {\n "matchExpressions": [\n {\n "key": "postgres-operator.crunchydata.com/data",\n "operator": "In",\n "values": [\n "postgres",\n "pgbackrest"\n ]\n }\n ],\n "matchLabels": {\n "postgres-operator.crunchydata.com/cluster": "additional-volumes"\n }\n },\n "maxSkew": 1,\n "topologyKey": "kubernetes.io/hostname",\n "whenUnsatisfiable": "ScheduleAnyway"\n },\n {\n "labelSelector": {\n "matchExpressions": [\n {\n "key": "postgres-operator.crunchydata.com/data",\n "operator": "In",\n "values": [\n "postgres",\n "pgbackrest"\n ]\n }\n ],\n "matchLabels": {\n "postgres-operator.crunchydata.com/cluster": "additional-volumes"\n }\n },\n "maxSkew": 1,\n "topologyKey": "topology.kubernetes.io/zone",\n "whenUnsatisfiable": "ScheduleAnyway"\n }\n ],\n "volumes": [\n {\n "name": "cert-volume",\n "projected": {\n "defaultMode": 384,\n "sources": [\n {\n "secret": {\n "items": [\n {\n "key": "tls.crt",\n "path": "tls.crt"\n },\n {\n "key": "tls.key",\n "path": "tls.key"\n },\n {\n "key": "ca.crt",\n "path": "ca.crt"\n }\n ],\n "name": "additional-volumes-cluster-cert"\n }\n },\n {\n "secret": {\n "items": [\n {\n "key": "tls.crt",\n "path": "replication/tls.crt"\n },\n {\n "key": "tls.key",\n "path": "replication/tls.key"\n },\n {\n "key": "ca.crt",\n "path": "replication/ca.crt"\n }\n ],\n "name": "additional-volumes-replication-cert"\n }\n }\n ]\n }\n },\n {\n "name": "postgres-data",\n "persistentVolumeClaim": {\n "claimName": "additional-volumes-instance1-24br-pgdata"\n }\n },\n {\n "downwardAPI": {\n "defaultMode": 420,\n "items": [\n {\n "path": "cpu_limit",\n "resourceFieldRef": {\n "containerName": "database",\n "divisor": "1m",\n "resource": "limits.cpu"\n }\n },\n {\n "path": "cpu_request",\n "resourceFieldRef": {\n "containerName": "database",\n "divisor": "1m",\n "resource": "requests.cpu"\n }\n },\n {\n "path": "mem_limit",\n "resourceFieldRef": {\n "containerName": "database",\n "divisor": "1Mi",\n "resource": "limits.memory"\n }\n },\n {\n "path": "mem_request",\n "resourceFieldRef": {\n "containerName": "database",\n "divisor": "1Mi",\n "resource": "requests.memory"\n }\n },\n {\n "fieldRef": {\n "apiVersion": "v1",\n "fieldPath": "metadata.labels"\n },\n "path": "labels"\n },\n {\n "fieldRef": {\n "apiVersion": "v1",\n "fieldPath": "metadata.annotations"\n },\n "path": "annotations"\n }\n ]\n },\n "name": "database-containerinfo"\n },\n {\n "name": "tablespace-myts",\n "persistentVolumeClaim": {\n "claimName": "additional-volumes-instance1-24br-myts-tablespace"\n }\n },\n {\n "name": "postgres-wal",\n "persistentVolumeClaim": {\n "claimName": "additional-volumes-instance1-24br-pgwal"\n }\n },\n {\n "name": "postgres-logs",\n "persistentVolumeClaim": {\n "claimName": "additional-volumes-instance1-24br-pglogs"\n }\n },\n {\n "name": "pgbackrest-server",\n "projected": {\n "defaultMode": 420,\n "sources": [\n {\n "secret": {\n "items": [\n {\n "key": "pgbackrest-server.crt",\n "path": "server-tls.crt"\n },\n {\n "key": "pgbackrest-server.key",\n "mode": 384,\n "path": "server-tls.key"\n }\n ],\n "name": "additional-volumes-instance1-24br-certs"\n }\n }\n ]\n }\n },\n {\n "name": "pgbackrest-config",\n "projected": {\n "defaultMode": 420,\n "sources": [\n {\n "configMap": {\n "items": [\n {\n "key": "pgbackrest_instance.conf",\n "path": "pgbackrest_instance.conf"\n },\n {\n "key": "config-hash",\n "path": "config-hash"\n },\n {\n "key": "pgbackrest-server.conf",\n "path": "~postgres-operator_server.conf"\n }\n ],\n "name": "additional-volumes-pgbackrest-config"\n }\n },\n {\n "secret": {\n "items": [\n {\n "key": "pgbackrest.ca-roots",\n "path": "~postgres-operator/tls-ca.crt"\n },\n {\n "key": "pgbackrest-client.crt",\n "path": "~postgres-operator/client-tls.crt"\n },\n {\n "key": "pgbackrest-client.key",\n "mode": 384,\n "path": "~postgres-operator/client-tls.key"\n }\n ],\n "name": "additional-volumes-pgbackrest"\n }\n }\n ]\n }\n },\n {\n "name": "patroni-config",\n "projected": {\n "defaultMode": 420,\n "sources": [\n {\n "configMap": {\n "items": [\n {\n "key": "patroni.yaml",\n "path": "~postgres-operator_cluster.yaml"\n }\n ],\n "name": "additional-volumes-config"\n }\n },\n {\n "configMap": {\n "items": [\n {\n "key": "patroni.yaml",\n "path": "~postgres-operator_instance.yaml"\n }\n ],\n "name": "additional-volumes-instance1-24br-config"\n }\n },\n {\n "secret": {\n "items": [\n {\n "key": "patroni.ca-roots",\n "path": "~postgres-operator/patroni.ca-roots"\n },\n {\n "key": "patroni.crt-combined",\n "path": "~postgres-operator/patroni.crt+key"\n }\n ],\n "name": "additional-volumes-instance1-24br-certs"\n }\n }\n ]\n }\n },\n {\n "emptyDir": {},\n "name": "crunchy-bin"\n },\n {\n "emptyDir": {\n "sizeLimit": "2Gi"\n },\n "name": "tmp"\n },\n {\n "emptyDir": {\n "medium": "Memory"\n },\n "name": "dshm"\n }\n ]\n }\n },\n "updateStrategy": {\n "type": "OnDelete"\n }\n },\n "status": {\n "availableReplicas": 1,\n "collisionCount": 0,\n "currentReplicas": 1,\n "currentRevision": "additional-volumes-instance1-24br-6849b5b674",\n "observedGeneration": 1,\n "readyReplicas": 1,\n "replicas": 1,\n "updateRevision": "additional-volumes-instance1-24br-6849b5b674",\n "updatedReplicas": 1\n }\n },\n {\n "apiVersion": "apps/v1",\n "kind": "StatefulSet",\n "metadata": {\n "annotations": {\n "pgv2.percona.com/logcollector-config-hash": "d9a116e02b828bdc02165325e92799d82961fb499041814c7c765d0ce263ce77"\n },\n "creationTimestamp": "2026-08-19T18:12:06Z",\n "generation": 1,\n "labels": {\n "app.kubernetes.io/component": "pg",\n "app.kubernetes.io/instance": "additional-volumes",\n "app.kubernetes.io/managed-by": "percona-postgresql-operator",\n "app.kubernetes.io/name": "percona-postgresql",\n "app.kubernetes.io/part-of": "percona-postgresql",\n "pgv2.percona.com/version": "3.2.0",\n "postgres-operator.crunchydata.com/cluster": "additional-volumes",\n "postgres-operator.crunchydata.com/data": "postgres",\n "postgres-operator.crunchydata.com/instance": "additional-volumes-instance1-n8pg",\n "postgres-operator.crunchydata.com/instance-set": "instance1"\n },\n "name": "additional-volumes-instance1-n8pg",\n "namespace": "kuttl-test-intimate-garfish",\n "ownerReferences": [\n {\n "apiVersion": "upstream.pgv2.percona.com/v1beta1",\n "blockOwnerDeletion": true,\n "controller": true,\n "kind": "PostgresCluster",\n "name": "additional-volumes",\n "uid": "b795649f-550b-4283-b2ef-eca573235e5a"\n }\n ],\n "resourceVersion": "1787163189863071003",\n "uid": "c2983a30-d942-42e2-9d6a-3e99691891fd"\n },\n "spec": {\n "persistentVolumeClaimRetentionPolicy": {\n "whenDeleted": "Retain",\n "whenScaled": "Retain"\n },\n "podManagementPolicy": "OrderedReady",\n "replicas": 1,\n "revisionHistoryLimit": 0,\n "selector": {\n "matchLabels": {\n "postgres-operator.crunchydata.com/cluster": "additional-volumes",\n "postgres-operator.crunchydata.com/instance": "additional-volumes-instance1-n8pg",\n "postgres-operator.crunchydata.com/instance-set": "instance1"\n }\n },\n "serviceName": "additional-volumes-pods",\n "template": {\n "metadata": {\n "annotations": {\n "kubectl.kubernetes.io/default-container": "database",\n "pgv2.percona.com/logcollector-config-hash": "d9a116e02b828bdc02165325e92799d82961fb499041814c7c765d0ce263ce77"\n },\n "creationTimestamp": null,\n "labels": {\n "app.kubernetes.io/component": "pg",\n "app.kubernetes.io/instance": "additional-volumes",\n "app.kubernetes.io/managed-by": "percona-postgresql-operator",\n "app.kubernetes.io/name": "percona-postgresql",\n "app.kubernetes.io/part-of": "percona-postgresql",\n "pgv2.percona.com/version": "3.2.0",\n "postgres-operator.crunchydata.com/cluster": "additional-volumes",\n "postgres-operator.crunchydata.com/data": "postgres",\n "postgres-operator.crunchydata.com/instance": "additional-volumes-instance1-n8pg",\n "postgres-operator.crunchydata.com/instance-set": "instance1",\n "postgres-operator.crunchydata.com/patroni": "additional-volumes-ha"\n }\n },\n "spec": {\n "affinity": {\n "podAntiAffinity": {\n "preferredDuringSchedulingIgnoredDuringExecution": [\n {\n "podAffinityTerm": {\n "labelSelector": {\n "matchLabels": {\n "postgres-operator.crunchydata.com/data": "postgres"\n }\n },\n "topologyKey": "kubernetes.io/hostname"\n },\n "weight": 1\n }\n ]\n }\n },\n "containers": [\n {\n "command": [\n "/opt/crunchy/bin/postgres-entrypoint.sh",\n "patroni",\n "/etc/patroni"\n ],\n "env": [\n {\n "name": "PGDATA",\n "value": "/pgdata/pg18"\n },\n {\n "name": "PGHOST",\n "value": "/tmp/postgres"\n },\n {\n "name": "PGPORT",\n "value": "5432"\n },\n {\n "name": "KRB5_CONFIG",\n "value": "/etc/postgres/krb5.conf"\n },\n {\n "name": "KRB5RCACHEDIR",\n "value": "/tmp"\n },\n {\n "name": "LDAPTLS_CACERT",\n "value": "/etc/postgres/ldap/ca.crt"\n },\n {\n "name": "LC_ALL",\n "value": "en_US.utf-8"\n },\n {\n "name": "LANG",\n "value": "en_US.utf-8"\n },\n {\n "name": "PATRONI_NAME",\n "valueFrom": {\n "fieldRef": {\n "apiVersion": "v1",\n "fieldPath": "metadata.name"\n }\n }\n },\n {\n "name": "PATRONI_KUBERNETES_POD_IP",\n "valueFrom": {\n "fieldRef": {\n "apiVersion": "v1",\n "fieldPath": "status.podIP"\n }\n }\n },\n {\n "name": "PATRONI_KUBERNETES_PORTS",\n "value": "- name: postgres\\n port: 5432\\n protocol: TCP\\n"\n },\n {\n "name": "PATRONI_POSTGRESQL_CONNECT_ADDRESS",\n "value": "$(PATRONI_NAME).additional-volumes-pods:5432"\n },\n {\n "name": "PATRONI_POSTGRESQL_LISTEN",\n "value": "*:5432"\n },\n {\n "name": "PATRONI_POSTGRESQL_CONFIG_DIR",\n "value": "/pgdata/pg18"\n },\n {\n "name": "PATRONI_POSTGRESQL_DATA_DIR",\n "value": "/pgdata/pg18"\n },\n {\n "name": "PATRONI_RESTAPI_CONNECT_ADDRESS",\n "value": "$(PATRONI_NAME).additional-volumes-pods:8008"\n },\n {\n "name": "PATRONI_RESTAPI_LISTEN",\n "value": "*:8008"\n },\n {\n "name": "PATRONICTL_CONFIG_FILE",\n "value": "/etc/patroni"\n },\n {\n "name": "LD_PRELOAD",\n "value": "/usr/lib64/libnss_wrapper.so"\n },\n {\n "name": "NSS_WRAPPER_PASSWD",\n "value": "/tmp/nss_wrapper/postgres/passwd"\n },\n {\n "name": "NSS_WRAPPER_GROUP",\n "value": "/tmp/nss_wrapper/postgres/group"\n }\n ],\n "image": "docker.io/perconalab/percona-postgresql-operator:main-ppg18-postgres",\n "imagePullPolicy": "Always",\n "livenessProbe": {\n "exec": {\n "command": [\n "bash",\n "-c",\n "/opt/crunchy/bin/postgres-liveness-check.sh"\n ]\n },\n "failureThreshold": 3,\n "initialDelaySeconds": 3,\n "periodSeconds": 10,\n "successThreshold": 1,\n "timeoutSeconds": 5\n },\n "name": "database",\n "ports": [\n {\n "containerPort": 5432,\n "name": "postgres",\n "protocol": "TCP"\n }\n ],\n "readinessProbe": {\n "exec": {\n "command": [\n "bash",\n "-c",\n "/opt/crunchy/bin/postgres-readiness-check.sh"\n ]\n },\n "failureThreshold": 3,\n "initialDelaySeconds": 3,\n "periodSeconds": 10,\n "successThreshold": 1,\n "timeoutSeconds": 5\n },\n "resources": {},\n "securityContext": {\n "allowPrivilegeEscalation": false,\n "capabilities": {\n "drop": [\n "ALL"\n ]\n },\n "privileged": false,\n "readOnlyRootFilesystem": true,\n "runAsNonRoot": true,\n "seccompProfile": {\n "type": "RuntimeDefault"\n }\n },\n "terminationMessagePath": "/dev/termination-log",\n "terminationMessagePolicy": "File",\n "volumeMounts": [\n {\n "mountPath": "/pgconf/tls",\n "name": "cert-volume",\n "readOnly": true\n },\n {\n "mountPath": "/pgdata",\n "name": "postgres-data"\n },\n {\n "mountPath": "/etc/database-containerinfo",\n "name": "database-containerinfo",\n "readOnly": true\n },\n {\n "mountPath": "/tablespaces/myts",\n "name": "tablespace-myts"\n },\n {\n "mountPath": "/pgwal",\n "name": "postgres-wal"\n },\n {\n "mountPath": "/pglogs",\n "name": "postgres-logs"\n },\n {\n "mountPath": "/etc/pgbackrest/conf.d",\n "name": "pgbackrest-config",\n "readOnly": true\n },\n {\n "mountPath": "/etc/patroni",\n "name": "patroni-config",\n "readOnly": true\n },\n {\n "mountPath": "/opt/crunchy",\n "name": "crunchy-bin"\n },\n {\n "mountPath": "/tmp",\n "name": "tmp"\n },\n {\n "mountPath": "/dev/shm",\n "name": "dshm"\n }\n ]\n },\n {\n "command": [\n "bash",\n "-ceu",\n "--",\n "monitor() {\\n# Parameters for curl when managing autogrow annotation.\\nAPISERVER=\\"https://kubernetes.default.svc\\"\\nSERVICEACCOUNT=\\"/var/run/secrets/kubernetes.io/serviceaccount\\"\\nNAMESPACE=$(cat ${SERVICEACCOUNT}/namespace)\\nTOKEN=$(cat ${SERVICEACCOUNT}/token)\\nCACERT=${SERVICEACCOUNT}/ca.crt\\n\\ndeclare -r directory=\\"/pgconf/tls\\"\\nexec {fd}\\u003c\\u003e \\u003c(:||:)\\nwhile read -r -t 5 -u \\"${fd}\\" ||:; do\\n # Manage replication certificate.\\n if [[ \\"${directory}\\" -nt \\"/proc/self/fd/${fd}\\" ]] \\u0026\\u0026\\n install -D --mode=0600 -t \\"/tmp/replication\\" \\"${directory}\\"/{replication/tls.crt,replication/tls.key,replication/ca.crt} \\u0026\\u0026\\n pkill -HUP --exact --parent=1 postgres\\n then\\n exec {fd}\\u003e\\u0026- \\u0026\\u0026 exec {fd}\\u003c\\u003e \\u003c(:||:)\\n stat --format=\'Loaded certificates dated %y\' \\"${directory}\\"\\n fi\\n\\ndone\\n}; export -f monitor; exec -a \\"$0\\" bash -ceu monitor",\n "replication-cert-copy"\n ],\n "image": "docker.io/perconalab/percona-postgresql-operator:main-ppg18-postgres",\n "imagePullPolicy": "Always",\n "name": "replication-cert-copy",\n "resources": {},\n "securityContext": {\n "allowPrivilegeEscalation": false,\n "capabilities": {\n "drop": [\n "ALL"\n ]\n },\n "privileged": false,\n "readOnlyRootFilesystem": true,\n "runAsNonRoot": true,\n "seccompProfile": {\n "type": "RuntimeDefault"\n }\n },\n "terminationMessagePath": "/dev/termination-log",\n "terminationMessagePolicy": "File",\n "volumeMounts": [\n {\n "mountPath": "/pgconf/tls",\n "name": "cert-volume",\n "readOnly": true\n },\n {\n "mountPath": "/pgdata",\n "name": "postgres-data"\n },\n {\n "mountPath": "/tmp",\n "name": "tmp"\n }\n ]\n },\n {\n "args": [\n "fluent-bit"\n ],\n "command": [\n "/opt/crunchy/logcollector/entrypoint.sh"\n ],\n "env": [\n {\n "name": "PG_LOG_DIR",\n "value": "/pgdata/pg18/log"\n },\n {\n "name": "PGBACKREST_LOG_DIR",\n "value": "/pgdata/pgbackrest/log"\n },\n {\n "name": "POD_NAMESPACE",\n "valueFrom": {\n "fieldRef": {\n "apiVersion": "v1",\n "fieldPath": "metadata.namespace"\n }\n }\n },\n {\n "name": "POD_NAME",\n "valueFrom": {\n "fieldRef": {\n "apiVersion": "v1",\n "fieldPath": "metadata.name"\n }\n }\n }\n ],\n "image": "docker.io/perconalab/fluentbit:main-logcollector",\n "imagePullPolicy": "IfNotPresent",\n "name": "logs",\n "resources": {},\n "securityContext": {\n "allowPrivilegeEscalation": false,\n "capabilities": {\n "drop": [\n "ALL"\n ]\n },\n "privileged": false,\n "runAsGroup": 26,\n "runAsNonRoot": true,\n "runAsUser": 26,\n "seccompProfile": {\n "type": "RuntimeDefault"\n }\n },\n "terminationMessagePath": "/dev/termination-log",\n "terminationMessagePolicy": "File",\n "volumeMounts": [\n {\n "mountPath": "/pgdata",\n "name": "postgres-data"\n },\n {\n "mountPath": "/opt/crunchy",\n "name": "crunchy-bin"\n },\n {\n "mountPath": "/tmp",\n "name": "tmp"\n }\n ]\n },\n {\n "args": [\n "logrotate"\n ],\n "command": [\n "/opt/crunchy/logcollector/entrypoint.sh"\n ],\n "env": [\n {\n "name": "POD_NAMESPACE",\n "valueFrom": {\n "fieldRef": {\n "apiVersion": "v1",\n "fieldPath": "metadata.namespace"\n }\n }\n },\n {\n "name": "POD_NAME",\n "valueFrom": {\n "fieldRef": {\n "apiVersion": "v1",\n "fieldPath": "metadata.name"\n }\n }\n },\n {\n "name": "LOGROTATE_SCHEDULE",\n "value": "0 0 * * *"\n },\n {\n "name": "LD_PRELOAD",\n "value": "/tmp/nss_wrapper/libnss_wrapper.so"\n },\n {\n "name": "NSS_WRAPPER_PASSWD",\n "value": "/tmp/nss_wrapper/postgres/passwd"\n },\n {\n "name": "NSS_WRAPPER_GROUP",\n "value": "/tmp/nss_wrapper/postgres/group"\n }\n ],\n "image": "docker.io/perconalab/fluentbit:main-logcollector",\n "imagePullPolicy": "IfNotPresent",\n "name": "logrotate",\n "resources": {},\n "securityContext": {\n "allowPrivilegeEscalation": false,\n "capabilities": {\n "drop": [\n "ALL"\n ]\n },\n "privileged": false,\n "runAsGroup": 26,\n "runAsNonRoot": true,\n "runAsUser": 26,\n "seccompProfile": {\n "type": "RuntimeDefault"\n }\n },\n "terminationMessagePath": "/dev/termination-log",\n "terminationMessagePolicy": "File",\n "volumeMounts": [\n {\n "mountPath": "/pgdata",\n "name": "postgres-data"\n },\n {\n "mountPath": "/opt/crunchy",\n "name": "crunchy-bin"\n },\n {\n "mountPath": "/tmp",\n "name": "tmp"\n }\n ]\n },\n {\n "command": [\n "pgbackrest",\n "server"\n ],\n "env": [\n {\n "name": "LD_PRELOAD",\n "value": "/usr/lib64/libnss_wrapper.so"\n },\n {\n "name": "NSS_WRAPPER_PASSWD",\n "value": "/tmp/nss_wrapper/postgres/passwd"\n },\n {\n "name": "NSS_WRAPPER_GROUP",\n "value": "/tmp/nss_wrapper/postgres/group"\n }\n ],\n "image": "docker.io/perconalab/percona-postgresql-operator:main-pgbackrest18",\n "imagePullPolicy": "Always",\n "livenessProbe": {\n "exec": {\n "command": [\n "pgbackrest",\n "server-ping"\n ]\n },\n "failureThreshold": 3,\n "periodSeconds": 10,\n "successThreshold": 1,\n "timeoutSeconds": 1\n },\n "name": "pgbackrest",\n "resources": {},\n "securityContext": {\n "allowPrivilegeEscalation": false,\n "capabilities": {\n "drop": [\n "ALL"\n ]\n },\n "privileged": false,\n "readOnlyRootFilesystem": true,\n "runAsNonRoot": true,\n "seccompProfile": {\n "type": "RuntimeDefault"\n }\n },\n "terminationMessagePath": "/dev/termination-log",\n "terminationMessagePolicy": "File",\n "volumeMounts": [\n {\n "mountPath": "/etc/pgbackrest/server",\n "name": "pgbackrest-server",\n "readOnly": true\n },\n {\n "mountPath": "/pgdata",\n "name": "postgres-data"\n },\n {\n "mountPath": "/tablespaces/myts",\n "name": "tablespace-myts"\n },\n {\n "mountPath": "/pgwal",\n "name": "postgres-wal"\n },\n {\n "mountPath": "/etc/pgbackrest/conf.d",\n "name": "pgbackrest-config",\n "readOnly": true\n },\n {\n "mountPath": "/tmp",\n "name": "tmp"\n }\n ]\n },\n {\n "command": [\n "bash",\n "-ceu",\n "--",\n "monitor() {\\nexec {fd}\\u003c\\u003e \\u003c(:||:)\\nuntil read -r -t 5 -u \\"${fd}\\"; do\\n if\\n [[ \\"${filename}\\" -nt \\"/proc/self/fd/${fd}\\" ]] \\u0026\\u0026\\n pkill -HUP --exact --parent=0 pgbackrest\\n then\\n exec {fd}\\u003e\\u0026- \\u0026\\u0026 exec {fd}\\u003c\\u003e \\u003c(:||:)\\n stat --dereference --format=\'Loaded configuration dated %y\' \\"${filename}\\"\\n elif\\n { [[ \\"${directory}\\" -nt \\"/proc/self/fd/${fd}\\" ]] ||\\n [[ \\"${authority}\\" -nt \\"/proc/self/fd/${fd}\\" ]]\\n } \\u0026\\u0026\\n pkill -HUP --exact --parent=0 pgbackrest\\n then\\n exec {fd}\\u003e\\u0026- \\u0026\\u0026 exec {fd}\\u003c\\u003e \\u003c(:||:)\\n stat --format=\'Loaded certificates dated %y\' \\"${directory}\\"\\n fi\\ndone\\n}; export directory=\\"$1\\" authority=\\"$2\\" filename=\\"$3\\"; export -f monitor; exec -a \\"$0\\" bash -ceu monitor",\n "pgbackrest-config",\n "/etc/pgbackrest/server",\n "/etc/pgbackrest/conf.d/~postgres-operator/tls-ca.crt",\n "/etc/pgbackrest/conf.d/~postgres-operator_server.conf"\n ],\n "image": "docker.io/perconalab/percona-postgresql-operator:main-pgbackrest18",\n "imagePullPolicy": "Always",\n "name": "pgbackrest-config",\n "resources": {},\n "securityContext": {\n "allowPrivilegeEscalation": false,\n "capabilities": {\n "drop": [\n "ALL"\n ]\n },\n "privileged": false,\n "readOnlyRootFilesystem": true,\n "runAsNonRoot": true,\n "seccompProfile": {\n "type": "RuntimeDefault"\n }\n },\n "terminationMessagePath": "/dev/termination-log",\n "terminationMessagePolicy": "File",\n "volumeMounts": [\n {\n "mountPath": "/etc/pgbackrest/server",\n "name": "pgbackrest-server",\n "readOnly": true\n },\n {\n "mountPath": "/etc/pgbackrest/conf.d",\n "name": "pgbackrest-config",\n "readOnly": true\n },\n {\n "mountPath": "/tmp",\n "name": "tmp"\n }\n ]\n }\n ],\n "dnsPolicy": "ClusterFirst",\n "enableServiceLinks": false,\n "initContainers": [\n {\n "command": [\n "/usr/local/bin/init-entrypoint.sh"\n ],\n "image": "docker.io/perconalab/percona-postgresql-operator:PR-1760-4947a0272",\n "imagePullPolicy": "Always",\n "name": "database-init",\n "resources": {},\n "securityContext": {\n "allowPrivilegeEscalation": false,\n "capabilities": {\n "drop": [\n "ALL"\n ]\n },\n "privileged": false,\n "readOnlyRootFilesystem": true,\n "runAsNonRoot": true,\n "seccompProfile": {\n "type": "RuntimeDefault"\n }\n },\n "terminationMessagePath": "/dev/termination-log",\n "terminationMessagePolicy": "File",\n "volumeMounts": [\n {\n "mountPath": "/opt/crunchy",\n "name": "crunchy-bin"\n },\n {\n "mountPath": "/tmp",\n "name": "tmp"\n }\n ]\n },\n {\n "command": [\n "bash",\n "-ceu",\n "--",\n "declare -r expected_major_version=\\"$1\\" pgwal_directory=\\"$2\\" pgbrLog_directory=\\"$3\\"\\npermissions() { while [[ -n \\"$1\\" ]]; do set \\"${1%/*}\\" \\"$@\\"; done; shift; stat -Lc \'%A %4u %4g %n\' \\"$@\\"; }\\nhalt() { local rc=$?; \\u003e\\u00262 echo \\"$@\\"; exit \\"${rc/#0/1}\\"; }\\nresults() { printf \'::postgres-operator: %s::%s\\\\n\' \\"$@\\"; }\\nrecreate() (\\n local tmp; tmp=$(mktemp -d -p \\"${1%/*}\\"); GLOBIGNORE=\'.:..\'; set -x\\n chmod \\"$2\\" \\"${tmp}\\"; mv \\"$1\\"/* \\"${tmp}\\"; rmdir \\"$1\\"; mv \\"${tmp}\\" \\"$1\\"\\n)\\nsafelink() (\\n local desired=\\"$1\\" name=\\"$2\\" current\\n current=$(realpath \\"${name}\\")\\n if [[ \\"${current}\\" == \\"${desired}\\" ]]; then return; fi\\n set -x; mv --no-target-directory \\"${current}\\" \\"${desired}\\"\\n ln --no-dereference --force --symbolic \\"${desired}\\" \\"${name}\\"\\n)\\necho Initializing ...\\nresults \'uid\' \\"$(id -u ||:)\\" \'gid\' \\"$(id -G ||:)\\"\\nif [[ \\"${pgwal_directory}\\" == *\\"pgwal/\\"* ]] \\u0026\\u0026 [[ ! -d \\"/pgwal/pgbackrest-spool\\" ]];then rm -rf \\"/pgdata/pgbackrest-spool\\" \\u0026\\u0026 mkdir -p \\"/pgwal/pgbackrest-spool\\" \\u0026\\u0026 ln --force --symbolic \\"/pgwal/pgbackrest-spool\\" \\"/pgdata/pgbackrest-spool\\";fi\\nif [[ ! -e \\"/pgdata/pgbackrest-spool\\" ]];then rm -rf /pgdata/pgbackrest-spool;fi\\nif [[ ! -e \\"/pgdata/logs/postgres\\" ]];then rm -rf \\"/pgdata/logs/postgres\\";fi\\nif [[ ! -e \\"${pgbrLog_directory}\\" ]];then rm -rf \\"${pgbrLog_directory}\\";fi\\nif [[ -d \\"/pglogs\\" ]];then install --directory --mode=0775 \\"/pglogs/postgres\\" \\"/pglogs/pgbackrest/log\\";if [[ ! -L \\"/pgdata/logs/postgres\\" ]];then mkdir -p \\"/pgdata/logs\\" \\u0026\\u0026 rm -rf \\"/pgdata/logs/postgres\\" \\u0026\\u0026 ln --symbolic \\"/pglogs/postgres\\" \\"/pgdata/logs/postgres\\";fi;if [[ ! -L \\"${pgbrLog_directory}\\" ]];then mkdir -p \\"${pgbrLog_directory%/*}\\" \\u0026\\u0026 rm -rf \\"${pgbrLog_directory}\\" \\u0026\\u0026 ln --symbolic \\"/pglogs/pgbackrest/log\\" \\"${pgbrLog_directory}\\";fi;fi\\nresults \'postgres path\' \\"$(command -v postgres ||:)\\"\\nresults \'postgres version\' \\"${postgres_version:=$(postgres --version ||:)}\\"\\n[[ \\"${postgres_version}\\" =~ \\") ${expected_major_version}\\"($|[^0-9]) ]] ||\\nhalt Expected PostgreSQL version \\"${expected_major_version}\\"\\nresults \'config directory\' \\"${PGDATA:?}\\"\\npostgres_data_directory=$([[ -d \\"${PGDATA}\\" ]] \\u0026\\u0026 postgres -C data_directory || echo \\"${PGDATA}\\")\\nresults \'data directory\' \\"${postgres_data_directory}\\"\\n[[ \\"${postgres_data_directory}\\" == \\"${PGDATA}\\" ]] ||\\nhalt Expected matching config and data directories\\nbootstrap_dir=\\"${postgres_data_directory}_bootstrap\\"\\n[[ -d \\"${bootstrap_dir}\\" ]] \\u0026\\u0026 results \'bootstrap directory\' \\"${bootstrap_dir}\\"\\n[[ -d \\"${bootstrap_dir}\\" ]] \\u0026\\u0026 postgres_data_directory=\\"${bootstrap_dir}\\"\\nif [[ ! -e \\"${postgres_data_directory}\\" || -O \\"${postgres_data_directory}\\" ]]; then\\ninstall --directory --mode=0700 \\"${postgres_data_directory}\\"\\nelif [[ -w \\"${postgres_data_directory}\\" \\u0026\\u0026 -g \\"${postgres_data_directory}\\" ]]; then\\nrecreate \\"${postgres_data_directory}\\" \'0700\'\\nelse (halt Permissions!); fi ||\\nhalt \\"$(permissions \\"${postgres_data_directory}\\" ||:)\\"\\nresults \'pgBackRest log directory\' \\"${pgbrLog_directory}\\"\\ninstall --directory --mode=0775 \\"${pgbrLog_directory}\\" ||\\nhalt \\"$(permissions \\"${pgbrLog_directory}\\" ||:)\\"\\ninstall -D --mode=0600 -t \\"/tmp/replication\\" \\"/pgconf/tls/replication\\"/{tls.crt,tls.key,ca.crt}\\n\\ntablespace_dir=/tablespaces/myts/data\\nif [[ ! -e \\"${tablespace_dir}\\" || -O \\"${tablespace_dir}\\" ]]; then\\ninstall --directory --mode=0700 \\"${tablespace_dir}\\"\\nelif [[ -w \\"${tablespace_dir}\\" \\u0026\\u0026 -g \\"${tablespace_dir}\\" ]]; then\\nrecreate \\"${tablespace_dir}\\" \'0700\'\\nelse (halt Permissions!); fi ||\\nhalt \\"$(permissions \\"${tablespace_dir}\\" ||:)\\"\\n[[ -f \\"${postgres_data_directory}/PG_VERSION\\" ]] || exit 0\\nresults \'data version\' \\"${postgres_data_version:=$(\\u003c \\"${postgres_data_directory}/PG_VERSION\\")}\\"\\n[[ \\"${postgres_data_version}\\" == \\"${expected_major_version}\\" ]] ||\\nhalt Expected PostgreSQL data version \\"${expected_major_version}\\"\\n[[ ! -f \\"${postgres_data_directory}/postgresql.conf\\" ]] \\u0026\\u0026\\ntouch \\"${postgres_data_directory}/postgresql.conf\\"\\nsafelink \\"${pgwal_directory}\\" \\"${postgres_data_directory}/pg_wal\\"\\nresults \'wal directory\' \\"$(realpath \\"${postgres_data_directory}/pg_wal\\" ||:)\\"\\nrm -f \\"${postgres_data_directory}/recovery.signal\\"",\n "startup",\n "18",\n "/pgwal/pg18_wal",\n "/pgdata/pgbackrest/log"\n ],\n "env": [\n {\n "name": "PGDATA",\n "value": "/pgdata/pg18"\n },\n {\n "name": "PGHOST",\n "value": "/tmp/postgres"\n },\n {\n "name": "PGPORT",\n "value": "5432"\n },\n {\n "name": "KRB5_CONFIG",\n "value": "/etc/postgres/krb5.conf"\n },\n {\n "name": "KRB5RCACHEDIR",\n "value": "/tmp"\n },\n {\n "name": "LDAPTLS_CACERT",\n "value": "/etc/postgres/ldap/ca.crt"\n },\n {\n "name": "LC_ALL",\n "value": "en_US.utf-8"\n },\n {\n "name": "LANG",\n "value": "en_US.utf-8"\n }\n ],\n "image": "docker.io/perconalab/percona-postgresql-operator:main-ppg18-postgres",\n "imagePullPolicy": "Always",\n "name": "postgres-startup",\n "resources": {},\n "securityContext": {\n "allowPrivilegeEscalation": false,\n "capabilities": {\n "drop": [\n "ALL"\n ]\n },\n "privileged": false,\n "readOnlyRootFilesystem": true,\n "runAsNonRoot": true,\n "seccompProfile": {\n "type": "RuntimeDefault"\n }\n },\n "terminationMessagePath": "/dev/termination-log",\n "terminationMessagePolicy": "File",\n "volumeMounts": [\n {\n "mountPath": "/pgconf/tls",\n "name": "cert-volume",\n "readOnly": true\n },\n {\n "mountPath": "/pgdata",\n "name": "postgres-data"\n },\n {\n "mountPath": "/tablespaces/myts",\n "name": "tablespace-myts"\n },\n {\n "mountPath": "/pgwal",\n "name": "postgres-wal"\n },\n {\n "mountPath": "/pglogs",\n "name": "postgres-logs"\n },\n {\n "mountPath": "/tmp",\n "name": "tmp"\n }\n ]\n },\n {\n "command": [\n "bash",\n "-c",\n "mkdir -p /tmp/nss_wrapper \\u0026\\u0026 { [[ -f /tmp/nss_wrapper/libnss_wrapper.so ]] || cp /usr/lib64/libnss_wrapper.so /tmp/nss_wrapper/libnss_wrapper.so; }"\n ],\n "image": "docker.io/perconalab/percona-postgresql-operator:main-ppg18-postgres",\n "imagePullPolicy": "Always",\n "name": "nss-wrapper-init-logcollector",\n "resources": {},\n "securityContext": {\n "allowPrivilegeEscalation": false,\n "capabilities": {\n "drop": [\n "ALL"\n ]\n },\n "privileged": false,\n "runAsGroup": 26,\n "runAsNonRoot": true,\n "runAsUser": 26,\n "seccompProfile": {\n "type": "RuntimeDefault"\n }\n },\n "terminationMessagePath": "/dev/termination-log",\n "terminationMessagePolicy": "File",\n "volumeMounts": [\n {\n "mountPath": "/tmp",\n "name": "tmp"\n }\n ]\n },\n {\n "command": [\n "bash",\n "-c",\n "export NSS_WRAPPER_SUBDIR=postgres CRUNCHY_NSS_USERNAME=postgres CRUNCHY_NSS_USER_DESC=\\"postgres\\" \\n# Define nss_wrapper directory and passwd \\u0026 group files that will be utilized by nss_wrapper. The\\n# nss_wrapper_env.sh script (which also sets these vars) isn\'t sourced here since the nss_wrapper\\n# has not yet been setup, and we therefore don\'t yet want the nss_wrapper vars in the environment.\\nmkdir -p /tmp/nss_wrapper\\nchmod g+rwx /tmp/nss_wrapper\\n\\nNSS_WRAPPER_DIR=\\"/tmp/nss_wrapper/${NSS_WRAPPER_SUBDIR}\\"\\nNSS_WRAPPER_PASSWD=\\"${NSS_WRAPPER_DIR}/passwd\\"\\nNSS_WRAPPER_GROUP=\\"${NSS_WRAPPER_DIR}/group\\"\\n\\n# create the nss_wrapper directory\\nmkdir -p \\"${NSS_WRAPPER_DIR}\\"\\n\\n# grab the current user ID and group ID\\nUSER_ID=$(id -u)\\nexport USER_ID\\nGROUP_ID=$(id -g)\\nexport GROUP_ID\\n\\n# get copies of the passwd and group files\\n[[ -f \\"${NSS_WRAPPER_PASSWD}\\" ]] || cp \\"/etc/passwd\\" \\"${NSS_WRAPPER_PASSWD}\\"\\n[[ -f \\"${NSS_WRAPPER_GROUP}\\" ]] || cp \\"/etc/group\\" \\"${NSS_WRAPPER_GROUP}\\"\\n\\n# if the username is missing from the passwd file, then add it\\nif [[ ! $(cat \\"${NSS_WRAPPER_PASSWD}\\") =~ ${CRUNCHY_NSS_USERNAME}:x:${USER_ID} ]]; then\\n echo \\"nss_wrapper: adding user\\"\\n passwd_tmp=\\"${NSS_WRAPPER_DIR}/passwd_tmp\\"\\n cp \\"${NSS_WRAPPER_PASSWD}\\" \\"${passwd_tmp}\\"\\n sed -i \\"/${CRUNCHY_NSS_USERNAME}:x:/d\\" \\"${passwd_tmp}\\"\\n # needed for OCP 4.x because crio updates /etc/passwd with an entry for USER_ID\\n sed -i \\"/${USER_ID}:x:/d\\" \\"${passwd_tmp}\\"\\n printf \'${CRUNCHY_NSS_USERNAME}:x:${USER_ID}:${GROUP_ID}:${CRUNCHY_NSS_USER_DESC}:${HOME}:/bin/bash\\\\n\' \\u003e\\u003e \\"${passwd_tmp}\\"\\n envsubst \\u003c \\"${passwd_tmp}\\" \\u003e \\"${NSS_WRAPPER_PASSWD}\\"\\n rm \\"${passwd_tmp}\\"\\nelse\\n echo \\"nss_wrapper: user exists\\"\\nfi\\n\\n# if the username (which will be the same as the group name) is missing from group file, then add it\\nif [[ ! $(cat \\"${NSS_WRAPPER_GROUP}\\") =~ ${CRUNCHY_NSS_USERNAME}:x:${USER_ID} ]]; then\\n echo \\"nss_wrapper: adding group\\"\\n group_tmp=\\"${NSS_WRAPPER_DIR}/group_tmp\\"\\n cp \\"${NSS_WRAPPER_GROUP}\\" \\"${group_tmp}\\"\\n sed -i \\"/${CRUNCHY_NSS_USERNAME}:x:/d\\" \\"${group_tmp}\\"\\n printf \'${CRUNCHY_NSS_USERNAME}:x:${USER_ID}:${CRUNCHY_NSS_USERNAME}\\\\n\' \\u003e\\u003e \\"${group_tmp}\\"\\n envsubst \\u003c \\"${group_tmp}\\" \\u003e \\"${NSS_WRAPPER_GROUP}\\"\\n rm \\"${group_tmp}\\"\\nelse\\n echo \\"nss_wrapper: group exists\\"\\nfi\\n\\n# export the nss_wrapper env vars\\n# define nss_wrapper directory and passwd \\u0026 group files that will be utilized by nss_wrapper\\nNSS_WRAPPER_DIR=\\"/tmp/nss_wrapper/${NSS_WRAPPER_SUBDIR}\\"\\nNSS_WRAPPER_PASSWD=\\"${NSS_WRAPPER_DIR}/passwd\\"\\nNSS_WRAPPER_GROUP=\\"${NSS_WRAPPER_DIR}/group\\"\\n\\nexport LD_PRELOAD=/usr/lib64/libnss_wrapper.so\\nexport NSS_WRAPPER_PASSWD=\\"${NSS_WRAPPER_PASSWD}\\"\\nexport NSS_WRAPPER_GROUP=\\"${NSS_WRAPPER_GROUP}\\"\\n\\necho \\"nss_wrapper: environment configured\\"\\n"\n ],\n "image": "docker.io/perconalab/percona-postgresql-operator:main-ppg18-postgres",\n "imagePullPolicy": "Always",\n "name": "nss-wrapper-init",\n "resources": {},\n "securityContext": {\n "allowPrivilegeEscalation": false,\n "capabilities": {\n "drop": [\n "ALL"\n ]\n },\n "privileged": false,\n "readOnlyRootFilesystem": true,\n "runAsNonRoot": true,\n "seccompProfile": {\n "type": "RuntimeDefault"\n }\n },\n "terminationMessagePath": "/dev/termination-log",\n "terminationMessagePolicy": "File",\n "volumeMounts": [\n {\n "mountPath": "/tmp",\n "name": "tmp"\n }\n ]\n }\n ],\n "restartPolicy": "Always",\n "schedulerName": "default-scheduler",\n "securityContext": {\n "fsGroup": 26,\n "fsGroupChangePolicy": "OnRootMismatch"\n },\n "serviceAccount": "additional-volumes-instance",\n "serviceAccountName": "additional-volumes-instance",\n "shareProcessNamespace": true,\n "terminationGracePeriodSeconds": 30,\n "topologySpreadConstraints": [\n {\n "labelSelector": {\n "matchExpressions": [\n {\n "key": "postgres-operator.crunchydata.com/data",\n "operator": "In",\n "values": [\n "postgres",\n "pgbackrest"\n ]\n }\n ],\n "matchLabels": {\n "postgres-operator.crunchydata.com/cluster": "additional-volumes"\n }\n },\n "maxSkew": 1,\n "topologyKey": "kubernetes.io/hostname",\n "whenUnsatisfiable": "ScheduleAnyway"\n },\n {\n "labelSelector": {\n "matchExpressions": [\n {\n "key": "postgres-operator.crunchydata.com/data",\n "operator": "In",\n "values": [\n "postgres",\n "pgbackrest"\n ]\n }\n ],\n "matchLabels": {\n "postgres-operator.crunchydata.com/cluster": "additional-volumes"\n }\n },\n "maxSkew": 1,\n "topologyKey": "topology.kubernetes.io/zone",\n "whenUnsatisfiable": "ScheduleAnyway"\n }\n ],\n "volumes": [\n {\n "name": "cert-volume",\n "projected": {\n "defaultMode": 384,\n "sources": [\n {\n "secret": {\n "items": [\n {\n "key": "tls.crt",\n "path": "tls.crt"\n },\n {\n "key": "tls.key",\n "path": "tls.key"\n },\n {\n "key": "ca.crt",\n "path": "ca.crt"\n }\n ],\n "name": "additional-volumes-cluster-cert"\n }\n },\n {\n "secret": {\n "items": [\n {\n "key": "tls.crt",\n "path": "replication/tls.crt"\n },\n {\n "key": "tls.key",\n "path": "replication/tls.key"\n },\n {\n "key": "ca.crt",\n "path": "replication/ca.crt"\n }\n ],\n "name": "additional-volumes-replication-cert"\n }\n }\n ]\n }\n },\n {\n "name": "postgres-data",\n "persistentVolumeClaim": {\n "claimName": "additional-volumes-instance1-n8pg-pgdata"\n }\n },\n {\n "downwardAPI": {\n "defaultMode": 420,\n "items": [\n {\n "path": "cpu_limit",\n "resourceFieldRef": {\n "containerName": "database",\n "divisor": "1m",\n "resource": "limits.cpu"\n }\n },\n {\n "path": "cpu_request",\n "resourceFieldRef": {\n "containerName": "database",\n "divisor": "1m",\n "resource": "requests.cpu"\n }\n },\n {\n "path": "mem_limit",\n "resourceFieldRef": {\n "containerName": "database",\n "divisor": "1Mi",\n "resource": "limits.memory"\n }\n },\n {\n "path": "mem_request",\n "resourceFieldRef": {\n "containerName": "database",\n "divisor": "1Mi",\n "resource": "requests.memory"\n }\n },\n {\n "fieldRef": {\n "apiVersion": "v1",\n "fieldPath": "metadata.labels"\n },\n "path": "labels"\n },\n {\n "fieldRef": {\n "apiVersion": "v1",\n "fieldPath": "metadata.annotations"\n },\n "path": "annotations"\n }\n ]\n },\n "name": "database-containerinfo"\n },\n {\n "name": "tablespace-myts",\n "persistentVolumeClaim": {\n "claimName": "additional-volumes-instance1-n8pg-myts-tablespace"\n }\n },\n {\n "name": "postgres-wal",\n "persistentVolumeClaim": {\n "claimName": "additional-volumes-instance1-n8pg-pgwal"\n }\n },\n {\n "name": "postgres-logs",\n "persistentVolumeClaim": {\n "claimName": "additional-volumes-instance1-n8pg-pglogs"\n }\n },\n {\n "name": "pgbackrest-server",\n "projected": {\n "defaultMode": 420,\n "sources": [\n {\n "secret": {\n "items": [\n {\n "key": "pgbackrest-server.crt",\n "path": "server-tls.crt"\n },\n {\n "key": "pgbackrest-server.key",\n "mode": 384,\n "path": "server-tls.key"\n }\n ],\n "name": "additional-volumes-instance1-n8pg-certs"\n }\n }\n ]\n }\n },\n {\n "name": "pgbackrest-config",\n "projected": {\n "defaultMode": 420,\n "sources": [\n {\n "configMap": {\n "items": [\n {\n "key": "pgbackrest_instance.conf",\n "path": "pgbackrest_instance.conf"\n },\n {\n "key": "config-hash",\n "path": "config-hash"\n },\n {\n "key": "pgbackrest-server.conf",\n "path": "~postgres-operator_server.conf"\n }\n ],\n "name": "additional-volumes-pgbackrest-config"\n }\n },\n {\n "secret": {\n "items": [\n {\n "key": "pgbackrest.ca-roots",\n "path": "~postgres-operator/tls-ca.crt"\n },\n {\n "key": "pgbackrest-client.crt",\n "path": "~postgres-operator/client-tls.crt"\n },\n {\n "key": "pgbackrest-client.key",\n "mode": 384,\n "path": "~postgres-operator/client-tls.key"\n }\n ],\n "name": "additional-volumes-pgbackrest"\n }\n }\n ]\n }\n },\n {\n "name": "patroni-config",\n "projected": {\n "defaultMode": 420,\n "sources": [\n {\n "configMap": {\n "items": [\n {\n "key": "patroni.yaml",\n "path": "~postgres-operator_cluster.yaml"\n }\n ],\n "name": "additional-volumes-config"\n }\n },\n {\n "configMap": {\n "items": [\n {\n "key": "patroni.yaml",\n "path": "~postgres-operator_instance.yaml"\n }\n ],\n "name": "additional-volumes-instance1-n8pg-config"\n }\n },\n {\n "secret": {\n "items": [\n {\n "key": "patroni.ca-roots",\n "path": "~postgres-operator/patroni.ca-roots"\n },\n {\n "key": "patroni.crt-combined",\n "path": "~postgres-operator/patroni.crt+key"\n }\n ],\n "name": "additional-volumes-instance1-n8pg-certs"\n }\n }\n ]\n }\n },\n {\n "emptyDir": {},\n "name": "crunchy-bin"\n },\n {\n "emptyDir": {\n "sizeLimit": "2Gi"\n },\n "name": "tmp"\n },\n {\n "emptyDir": {\n "medium": "Memory"\n },\n "name": "dshm"\n }\n ]\n }\n },\n "updateStrategy": {\n "type": "OnDelete"\n }\n },\n "status": {\n "availableReplicas": 1,\n "collisionCount": 0,\n "currentReplicas": 1,\n "currentRevision": "additional-volumes-instance1-n8pg-7f58bcfdb6",\n "observedGeneration": 1,\n "readyReplicas": 1,\n "replicas": 1,\n "updateRevision": "additional-volumes-instance1-n8pg-7f58bcfdb6",\n "updatedReplicas": 1\n }\n },\n {\n "apiVersion": "apps/v1",\n "kind": "StatefulSet",\n "metadata": {\n "annotations": {\n "pgv2.percona.com/logcollector-config-hash": "d9a116e02b828bdc02165325e92799d82961fb499041814c7c765d0ce263ce77"\n },\n "creationTimestamp": "2026-08-19T18:12:05Z",\n "generation": 1,\n "labels": {\n "app.kubernetes.io/component": "pg",\n "app.kubernetes.io/instance": "additional-volumes",\n "app.kubernetes.io/managed-by": "percona-postgresql-operator",\n "app.kubernetes.io/name": "percona-postgresql",\n "app.kubernetes.io/part-of": "percona-postgresql",\n "pgv2.percona.com/version": "3.2.0",\n "postgres-operator.crunchydata.com/cluster": "additional-volumes",\n "postgres-operator.crunchydata.com/data": "postgres",\n "postgres-operator.crunchydata.com/instance": "additional-volumes-instance1-xvbw",\n "postgres-operator.crunchydata.com/instance-set": "instance1"\n },\n "name": "additional-volumes-instance1-xvbw",\n "namespace": "kuttl-test-intimate-garfish",\n "ownerReferences": [\n {\n "apiVersion": "upstream.pgv2.percona.com/v1beta1",\n "blockOwnerDeletion": true,\n "controller": true,\n "kind": "PostgresCluster",\n "name": "additional-volumes",\n "uid": "b795649f-550b-4283-b2ef-eca573235e5a"\n }\n ],\n "resourceVersion": "1787163193859951017",\n "uid": "ff0eabc4-a14f-43d4-85da-3372e3c9c0da"\n },\n "spec": {\n "persistentVolumeClaimRetentionPolicy": {\n "whenDeleted": "Retain",\n "whenScaled": "Retain"\n },\n "podManagementPolicy": "OrderedReady",\n "replicas": 1,\n "revisionHistoryLimit": 0,\n "selector": {\n "matchLabels": {\n "postgres-operator.crunchydata.com/cluster": "additional-volumes",\n "postgres-operator.crunchydata.com/instance": "additional-volumes-instance1-xvbw",\n "postgres-operator.crunchydata.com/instance-set": "instance1"\n }\n },\n "serviceName": "additional-volumes-pods",\n "template": {\n "metadata": {\n "annotations": {\n "kubectl.kubernetes.io/default-container": "database",\n "pgv2.percona.com/logcollector-config-hash": "d9a116e02b828bdc02165325e92799d82961fb499041814c7c765d0ce263ce77"\n },\n "creationTimestamp": null,\n "labels": {\n "app.kubernetes.io/component": "pg",\n "app.kubernetes.io/instance": "additional-volumes",\n "app.kubernetes.io/managed-by": "percona-postgresql-operator",\n "app.kubernetes.io/name": "percona-postgresql",\n "app.kubernetes.io/part-of": "percona-postgresql",\n "pgv2.percona.com/version": "3.2.0",\n "postgres-operator.crunchydata.com/cluster": "additional-volumes",\n "postgres-operator.crunchydata.com/data": "postgres",\n "postgres-operator.crunchydata.com/instance": "additional-volumes-instance1-xvbw",\n "postgres-operator.crunchydata.com/instance-set": "instance1",\n "postgres-operator.crunchydata.com/patroni": "additional-volumes-ha"\n }\n },\n "spec": {\n "affinity": {\n "podAntiAffinity": {\n "preferredDuringSchedulingIgnoredDuringExecution": [\n {\n "podAffinityTerm": {\n "labelSelector": {\n "matchLabels": {\n "postgres-operator.crunchydata.com/data": "postgres"\n }\n },\n "topologyKey": "kubernetes.io/hostname"\n },\n "weight": 1\n }\n ]\n }\n },\n "containers": [\n {\n "command": [\n "/opt/crunchy/bin/postgres-entrypoint.sh",\n "patroni",\n "/etc/patroni"\n ],\n "env": [\n {\n "name": "PGDATA",\n "value": "/pgdata/pg18"\n },\n {\n "name": "PGHOST",\n "value": "/tmp/postgres"\n },\n {\n "name": "PGPORT",\n "value": "5432"\n },\n {\n "name": "KRB5_CONFIG",\n "value": "/etc/postgres/krb5.conf"\n },\n {\n "name": "KRB5RCACHEDIR",\n "value": "/tmp"\n },\n {\n "name": "LDAPTLS_CACERT",\n "value": "/etc/postgres/ldap/ca.crt"\n },\n {\n "name": "LC_ALL",\n "value": "en_US.utf-8"\n },\n {\n "name": "LANG",\n "value": "en_US.utf-8"\n },\n {\n "name": "PATRONI_NAME",\n "valueFrom": {\n "fieldRef": {\n "apiVersion": "v1",\n "fieldPath": "metadata.name"\n }\n }\n },\n {\n "name": "PATRONI_KUBERNETES_POD_IP",\n "valueFrom": {\n "fieldRef": {\n "apiVersion": "v1",\n "fieldPath": "status.podIP"\n }\n }\n },\n {\n "name": "PATRONI_KUBERNETES_PORTS",\n "value": "- name: postgres\\n port: 5432\\n protocol: TCP\\n"\n },\n {\n "name": "PATRONI_POSTGRESQL_CONNECT_ADDRESS",\n "value": "$(PATRONI_NAME).additional-volumes-pods:5432"\n },\n {\n "name": "PATRONI_POSTGRESQL_LISTEN",\n "value": "*:5432"\n },\n {\n "name": "PATRONI_POSTGRESQL_CONFIG_DIR",\n "value": "/pgdata/pg18"\n },\n {\n "name": "PATRONI_POSTGRESQL_DATA_DIR",\n "value": "/pgdata/pg18"\n },\n {\n "name": "PATRONI_RESTAPI_CONNECT_ADDRESS",\n "value": "$(PATRONI_NAME).additional-volumes-pods:8008"\n },\n {\n "name": "PATRONI_RESTAPI_LISTEN",\n "value": "*:8008"\n },\n {\n "name": "PATRONICTL_CONFIG_FILE",\n "value": "/etc/patroni"\n },\n {\n "name": "LD_PRELOAD",\n "value": "/usr/lib64/libnss_wrapper.so"\n },\n {\n "name": "NSS_WRAPPER_PASSWD",\n "value": "/tmp/nss_wrapper/postgres/passwd"\n },\n {\n "name": "NSS_WRAPPER_GROUP",\n "value": "/tmp/nss_wrapper/postgres/group"\n }\n ],\n "image": "docker.io/perconalab/percona-postgresql-operator:main-ppg18-postgres",\n "imagePullPolicy": "Always",\n "livenessProbe": {\n "exec": {\n "command": [\n "bash",\n "-c",\n "/opt/crunchy/bin/postgres-liveness-check.sh"\n ]\n },\n "failureThreshold": 3,\n "initialDelaySeconds": 3,\n "periodSeconds": 10,\n "successThreshold": 1,\n "timeoutSeconds": 5\n },\n "name": "database",\n "ports": [\n {\n "containerPort": 5432,\n "name": "postgres",\n "protocol": "TCP"\n }\n ],\n "readinessProbe": {\n "exec": {\n "command": [\n "bash",\n "-c",\n "/opt/crunchy/bin/postgres-readiness-check.sh"\n ]\n },\n "failureThreshold": 3,\n "initialDelaySeconds": 3,\n "periodSeconds": 10,\n "successThreshold": 1,\n "timeoutSeconds": 5\n },\n "resources": {},\n "securityContext": {\n "allowPrivilegeEscalation": false,\n "capabilities": {\n "drop": [\n "ALL"\n ]\n },\n "privileged": false,\n "readOnlyRootFilesystem": true,\n "runAsNonRoot": true,\n "seccompProfile": {\n "type": "RuntimeDefault"\n }\n },\n "terminationMessagePath": "/dev/termination-log",\n "terminationMessagePolicy": "File",\n "volumeMounts": [\n {\n "mountPath": "/pgconf/tls",\n "name": "cert-volume",\n "readOnly": true\n },\n {\n "mountPath": "/pgdata",\n "name": "postgres-data"\n },\n {\n "mountPath": "/etc/database-containerinfo",\n "name": "database-containerinfo",\n "readOnly": true\n },\n {\n "mountPath": "/tablespaces/myts",\n "name": "tablespace-myts"\n },\n {\n "mountPath": "/pgwal",\n "name": "postgres-wal"\n },\n {\n "mountPath": "/pglogs",\n "name": "postgres-logs"\n },\n {\n "mountPath": "/etc/pgbackrest/conf.d",\n "name": "pgbackrest-config",\n "readOnly": true\n },\n {\n "mountPath": "/etc/patroni",\n "name": "patroni-config",\n "readOnly": true\n },\n {\n "mountPath": "/opt/crunchy",\n "name": "crunchy-bin"\n },\n {\n "mountPath": "/tmp",\n "name": "tmp"\n },\n {\n "mountPath": "/dev/shm",\n "name": "dshm"\n }\n ]\n },\n {\n "command": [\n "bash",\n "-ceu",\n "--",\n "monitor() {\\n# Parameters for curl when managing autogrow annotation.\\nAPISERVER=\\"https://kubernetes.default.svc\\"\\nSERVICEACCOUNT=\\"/var/run/secrets/kubernetes.io/serviceaccount\\"\\nNAMESPACE=$(cat ${SERVICEACCOUNT}/namespace)\\nTOKEN=$(cat ${SERVICEACCOUNT}/token)\\nCACERT=${SERVICEACCOUNT}/ca.crt\\n\\ndeclare -r directory=\\"/pgconf/tls\\"\\nexec {fd}\\u003c\\u003e \\u003c(:||:)\\nwhile read -r -t 5 -u \\"${fd}\\" ||:; do\\n # Manage replication certificate.\\n if [[ \\"${directory}\\" -nt \\"/proc/self/fd/${fd}\\" ]] \\u0026\\u0026\\n install -D --mode=0600 -t \\"/tmp/replication\\" \\"${directory}\\"/{replication/tls.crt,replication/tls.key,replication/ca.crt} \\u0026\\u0026\\n pkill -HUP --exact --parent=1 postgres\\n then\\n exec {fd}\\u003e\\u0026- \\u0026\\u0026 exec {fd}\\u003c\\u003e \\u003c(:||:)\\n stat --format=\'Loaded certificates dated %y\' \\"${directory}\\"\\n fi\\n\\ndone\\n}; export -f monitor; exec -a \\"$0\\" bash -ceu monitor",\n "replication-cert-copy"\n ],\n "image": "docker.io/perconalab/percona-postgresql-operator:main-ppg18-postgres",\n "imagePullPolicy": "Always",\n "name": "replication-cert-copy",\n "resources": {},\n "securityContext": {\n "allowPrivilegeEscalation": false,\n "capabilities": {\n "drop": [\n "ALL"\n ]\n },\n "privileged": false,\n "readOnlyRootFilesystem": true,\n "runAsNonRoot": true,\n "seccompProfile": {\n "type": "RuntimeDefault"\n }\n },\n "terminationMessagePath": "/dev/termination-log",\n "terminationMessagePolicy": "File",\n "volumeMounts": [\n {\n "mountPath": "/pgconf/tls",\n "name": "cert-volume",\n "readOnly": true\n },\n {\n "mountPath": "/pgdata",\n "name": "postgres-data"\n },\n {\n "mountPath": "/tmp",\n "name": "tmp"\n }\n ]\n },\n {\n "args": [\n "fluent-bit"\n ],\n "command": [\n "/opt/crunchy/logcollector/entrypoint.sh"\n ],\n "env": [\n {\n "name": "PG_LOG_DIR",\n "value": "/pgdata/pg18/log"\n },\n {\n "name": "PGBACKREST_LOG_DIR",\n "value": "/pgdata/pgbackrest/log"\n },\n {\n "name": "POD_NAMESPACE",\n "valueFrom": {\n "fieldRef": {\n "apiVersion": "v1",\n "fieldPath": "metadata.namespace"\n }\n }\n },\n {\n "name": "POD_NAME",\n "valueFrom": {\n "fieldRef": {\n "apiVersion": "v1",\n "fieldPath": "metadata.name"\n }\n }\n }\n ],\n "image": "docker.io/perconalab/fluentbit:main-logcollector",\n "imagePullPolicy": "IfNotPresent",\n "name": "logs",\n "resources": {},\n "securityContext": {\n "allowPrivilegeEscalation": false,\n "capabilities": {\n "drop": [\n "ALL"\n ]\n },\n "privileged": false,\n "runAsGroup": 26,\n "runAsNonRoot": true,\n "runAsUser": 26,\n "seccompProfile": {\n "type": "RuntimeDefault"\n }\n },\n "terminationMessagePath": "/dev/termination-log",\n "terminationMessagePolicy": "File",\n "volumeMounts": [\n {\n "mountPath": "/pgdata",\n "name": "postgres-data"\n },\n {\n "mountPath": "/opt/crunchy",\n "name": "crunchy-bin"\n },\n {\n "mountPath": "/tmp",\n "name": "tmp"\n }\n ]\n },\n {\n "args": [\n "logrotate"\n ],\n "command": [\n "/opt/crunchy/logcollector/entrypoint.sh"\n ],\n "env": [\n {\n "name": "POD_NAMESPACE",\n "valueFrom": {\n "fieldRef": {\n "apiVersion": "v1",\n "fieldPath": "metadata.namespace"\n }\n }\n },\n {\n "name": "POD_NAME",\n "valueFrom": {\n "fieldRef": {\n "apiVersion": "v1",\n "fieldPath": "metadata.name"\n }\n }\n },\n {\n "name": "LOGROTATE_SCHEDULE",\n "value": "0 0 * * *"\n },\n {\n "name": "LD_PRELOAD",\n "value": "/tmp/nss_wrapper/libnss_wrapper.so"\n },\n {\n "name": "NSS_WRAPPER_PASSWD",\n "value": "/tmp/nss_wrapper/postgres/passwd"\n },\n {\n "name": "NSS_WRAPPER_GROUP",\n "value": "/tmp/nss_wrapper/postgres/group"\n }\n ],\n "image": "docker.io/perconalab/fluentbit:main-logcollector",\n "imagePullPolicy": "IfNotPresent",\n "name": "logrotate",\n "resources": {},\n "securityContext": {\n "allowPrivilegeEscalation": false,\n "capabilities": {\n "drop": [\n "ALL"\n ]\n },\n "privileged": false,\n "runAsGroup": 26,\n "runAsNonRoot": true,\n "runAsUser": 26,\n "seccompProfile": {\n "type": "RuntimeDefault"\n }\n },\n "terminationMessagePath": "/dev/termination-log",\n "terminationMessagePolicy": "File",\n "volumeMounts": [\n {\n "mountPath": "/pgdata",\n "name": "postgres-data"\n },\n {\n "mountPath": "/opt/crunchy",\n "name": "crunchy-bin"\n },\n {\n "mountPath": "/tmp",\n "name": "tmp"\n }\n ]\n },\n {\n "command": [\n "pgbackrest",\n "server"\n ],\n "env": [\n {\n "name": "LD_PRELOAD",\n "value": "/usr/lib64/libnss_wrapper.so"\n },\n {\n "name": "NSS_WRAPPER_PASSWD",\n "value": "/tmp/nss_wrapper/postgres/passwd"\n },\n {\n "name": "NSS_WRAPPER_GROUP",\n "value": "/tmp/nss_wrapper/postgres/group"\n }\n ],\n "image": "docker.io/perconalab/percona-postgresql-operator:main-pgbackrest18",\n "imagePullPolicy": "Always",\n "livenessProbe": {\n "exec": {\n "command": [\n "pgbackrest",\n "server-ping"\n ]\n },\n "failureThreshold": 3,\n "periodSeconds": 10,\n "successThreshold": 1,\n "timeoutSeconds": 1\n },\n "name": "pgbackrest",\n "resources": {},\n "securityContext": {\n "allowPrivilegeEscalation": false,\n "capabilities": {\n "drop": [\n "ALL"\n ]\n },\n "privileged": false,\n "readOnlyRootFilesystem": true,\n "runAsNonRoot": true,\n "seccompProfile": {\n "type": "RuntimeDefault"\n }\n },\n "terminationMessagePath": "/dev/termination-log",\n "terminationMessagePolicy": "File",\n "volumeMounts": [\n {\n "mountPath": "/etc/pgbackrest/server",\n "name": "pgbackrest-server",\n "readOnly": true\n },\n {\n "mountPath": "/pgdata",\n "name": "postgres-data"\n },\n {\n "mountPath": "/tablespaces/myts",\n "name": "tablespace-myts"\n },\n {\n "mountPath": "/pgwal",\n "name": "postgres-wal"\n },\n {\n "mountPath": "/etc/pgbackrest/conf.d",\n "name": "pgbackrest-config",\n "readOnly": true\n },\n {\n "mountPath": "/tmp",\n "name": "tmp"\n }\n ]\n },\n {\n "command": [\n "bash",\n "-ceu",\n "--",\n "monitor() {\\nexec {fd}\\u003c\\u003e \\u003c(:||:)\\nuntil read -r -t 5 -u \\"${fd}\\"; do\\n if\\n [[ \\"${filename}\\" -nt \\"/proc/self/fd/${fd}\\" ]] \\u0026\\u0026\\n pkill -HUP --exact --parent=0 pgbackrest\\n then\\n exec {fd}\\u003e\\u0026- \\u0026\\u0026 exec {fd}\\u003c\\u003e \\u003c(:||:)\\n stat --dereference --format=\'Loaded configuration dated %y\' \\"${filename}\\"\\n elif\\n { [[ \\"${directory}\\" -nt \\"/proc/self/fd/${fd}\\" ]] ||\\n [[ \\"${authority}\\" -nt \\"/proc/self/fd/${fd}\\" ]]\\n } \\u0026\\u0026\\n pkill -HUP --exact --parent=0 pgbackrest\\n then\\n exec {fd}\\u003e\\u0026- \\u0026\\u0026 exec {fd}\\u003c\\u003e \\u003c(:||:)\\n stat --format=\'Loaded certificates dated %y\' \\"${directory}\\"\\n fi\\ndone\\n}; export directory=\\"$1\\" authority=\\"$2\\" filename=\\"$3\\"; export -f monitor; exec -a \\"$0\\" bash -ceu monitor",\n "pgbackrest-config",\n "/etc/pgbackrest/server",\n "/etc/pgbackrest/conf.d/~postgres-operator/tls-ca.crt",\n "/etc/pgbackrest/conf.d/~postgres-operator_server.conf"\n ],\n "image": "docker.io/perconalab/percona-postgresql-operator:main-pgbackrest18",\n "imagePullPolicy": "Always",\n "name": "pgbackrest-config",\n "resources": {},\n "securityContext": {\n "allowPrivilegeEscalation": false,\n "capabilities": {\n "drop": [\n "ALL"\n ]\n },\n "privileged": false,\n "readOnlyRootFilesystem": true,\n "runAsNonRoot": true,\n "seccompProfile": {\n "type": "RuntimeDefault"\n }\n },\n "terminationMessagePath": "/dev/termination-log",\n "terminationMessagePolicy": "File",\n "volumeMounts": [\n {\n "mountPath": "/etc/pgbackrest/server",\n "name": "pgbackrest-server",\n "readOnly": true\n },\n {\n "mountPath": "/etc/pgbackrest/conf.d",\n "name": "pgbackrest-config",\n "readOnly": true\n },\n {\n "mountPath": "/tmp",\n "name": "tmp"\n }\n ]\n }\n ],\n "dnsPolicy": "ClusterFirst",\n "enableServiceLinks": false,\n "initContainers": [\n {\n "command": [\n "/usr/local/bin/init-entrypoint.sh"\n ],\n "image": "docker.io/perconalab/percona-postgresql-operator:PR-1760-4947a0272",\n "imagePullPolicy": "Always",\n "name": "database-init",\n "resources": {},\n "securityContext": {\n "allowPrivilegeEscalation": false,\n "capabilities": {\n "drop": [\n "ALL"\n ]\n },\n "privileged": false,\n "readOnlyRootFilesystem": true,\n "runAsNonRoot": true,\n "seccompProfile": {\n "type": "RuntimeDefault"\n }\n },\n "terminationMessagePath": "/dev/termination-log",\n "terminationMessagePolicy": "File",\n "volumeMounts": [\n {\n "mountPath": "/opt/crunchy",\n "name": "crunchy-bin"\n },\n {\n "mountPath": "/tmp",\n "name": "tmp"\n }\n ]\n },\n {\n "command": [\n "bash",\n "-ceu",\n "--",\n "declare -r expected_major_version=\\"$1\\" pgwal_directory=\\"$2\\" pgbrLog_directory=\\"$3\\"\\npermissions() { while [[ -n \\"$1\\" ]]; do set \\"${1%/*}\\" \\"$@\\"; done; shift; stat -Lc \'%A %4u %4g %n\' \\"$@\\"; }\\nhalt() { local rc=$?; \\u003e\\u00262 echo \\"$@\\"; exit \\"${rc/#0/1}\\"; }\\nresults() { printf \'::postgres-operator: %s::%s\\\\n\' \\"$@\\"; }\\nrecreate() (\\n local tmp; tmp=$(mktemp -d -p \\"${1%/*}\\"); GLOBIGNORE=\'.:..\'; set -x\\n chmod \\"$2\\" \\"${tmp}\\"; mv \\"$1\\"/* \\"${tmp}\\"; rmdir \\"$1\\"; mv \\"${tmp}\\" \\"$1\\"\\n)\\nsafelink() (\\n local desired=\\"$1\\" name=\\"$2\\" current\\n current=$(realpath \\"${name}\\")\\n if [[ \\"${current}\\" == \\"${desired}\\" ]]; then return; fi\\n set -x; mv --no-target-directory \\"${current}\\" \\"${desired}\\"\\n ln --no-dereference --force --symbolic \\"${desired}\\" \\"${name}\\"\\n)\\necho Initializing ...\\nresults \'uid\' \\"$(id -u ||:)\\" \'gid\' \\"$(id -G ||:)\\"\\nif [[ \\"${pgwal_directory}\\" == *\\"pgwal/\\"* ]] \\u0026\\u0026 [[ ! -d \\"/pgwal/pgbackrest-spool\\" ]];then rm -rf \\"/pgdata/pgbackrest-spool\\" \\u0026\\u0026 mkdir -p \\"/pgwal/pgbackrest-spool\\" \\u0026\\u0026 ln --force --symbolic \\"/pgwal/pgbackrest-spool\\" \\"/pgdata/pgbackrest-spool\\";fi\\nif [[ ! -e \\"/pgdata/pgbackrest-spool\\" ]];then rm -rf /pgdata/pgbackrest-spool;fi\\nif [[ ! -e \\"/pgdata/logs/postgres\\" ]];then rm -rf \\"/pgdata/logs/postgres\\";fi\\nif [[ ! -e \\"${pgbrLog_directory}\\" ]];then rm -rf \\"${pgbrLog_directory}\\";fi\\nif [[ -d \\"/pglogs\\" ]];then install --directory --mode=0775 \\"/pglogs/postgres\\" \\"/pglogs/pgbackrest/log\\";if [[ ! -L \\"/pgdata/logs/postgres\\" ]];then mkdir -p \\"/pgdata/logs\\" \\u0026\\u0026 rm -rf \\"/pgdata/logs/postgres\\" \\u0026\\u0026 ln --symbolic \\"/pglogs/postgres\\" \\"/pgdata/logs/postgres\\";fi;if [[ ! -L \\"${pgbrLog_directory}\\" ]];then mkdir -p \\"${pgbrLog_directory%/*}\\" \\u0026\\u0026 rm -rf \\"${pgbrLog_directory}\\" \\u0026\\u0026 ln --symbolic \\"/pglogs/pgbackrest/log\\" \\"${pgbrLog_directory}\\";fi;fi\\nresults \'postgres path\' \\"$(command -v postgres ||:)\\"\\nresults \'postgres version\' \\"${postgres_version:=$(postgres --version ||:)}\\"\\n[[ \\"${postgres_version}\\" =~ \\") ${expected_major_version}\\"($|[^0-9]) ]] ||\\nhalt Expected PostgreSQL version \\"${expected_major_version}\\"\\nresults \'config directory\' \\"${PGDATA:?}\\"\\npostgres_data_directory=$([[ -d \\"${PGDATA}\\" ]] \\u0026\\u0026 postgres -C data_directory || echo \\"${PGDATA}\\")\\nresults \'data directory\' \\"${postgres_data_directory}\\"\\n[[ \\"${postgres_data_directory}\\" == \\"${PGDATA}\\" ]] ||\\nhalt Expected matching config and data directories\\nbootstrap_dir=\\"${postgres_data_directory}_bootstrap\\"\\n[[ -d \\"${bootstrap_dir}\\" ]] \\u0026\\u0026 results \'bootstrap directory\' \\"${bootstrap_dir}\\"\\n[[ -d \\"${bootstrap_dir}\\" ]] \\u0026\\u0026 postgres_data_directory=\\"${bootstrap_dir}\\"\\nif [[ ! -e \\"${postgres_data_directory}\\" || -O \\"${postgres_data_directory}\\" ]]; then\\ninstall --directory --mode=0700 \\"${postgres_data_directory}\\"\\nelif [[ -w \\"${postgres_data_directory}\\" \\u0026\\u0026 -g \\"${postgres_data_directory}\\" ]]; then\\nrecreate \\"${postgres_data_directory}\\" \'0700\'\\nelse (halt Permissions!); fi ||\\nhalt \\"$(permissions \\"${postgres_data_directory}\\" ||:)\\"\\nresults \'pgBackRest log directory\' \\"${pgbrLog_directory}\\"\\ninstall --directory --mode=0775 \\"${pgbrLog_directory}\\" ||\\nhalt \\"$(permissions \\"${pgbrLog_directory}\\" ||:)\\"\\ninstall -D --mode=0600 -t \\"/tmp/replication\\" \\"/pgconf/tls/replication\\"/{tls.crt,tls.key,ca.crt}\\n\\ntablespace_dir=/tablespaces/myts/data\\nif [[ ! -e \\"${tablespace_dir}\\" || -O \\"${tablespace_dir}\\" ]]; then\\ninstall --directory --mode=0700 \\"${tablespace_dir}\\"\\nelif [[ -w \\"${tablespace_dir}\\" \\u0026\\u0026 -g \\"${tablespace_dir}\\" ]]; then\\nrecreate \\"${tablespace_dir}\\" \'0700\'\\nelse (halt Permissions!); fi ||\\nhalt \\"$(permissions \\"${tablespace_dir}\\" ||:)\\"\\n[[ -f \\"${postgres_data_directory}/PG_VERSION\\" ]] || exit 0\\nresults \'data version\' \\"${postgres_data_version:=$(\\u003c \\"${postgres_data_directory}/PG_VERSION\\")}\\"\\n[[ \\"${postgres_data_version}\\" == \\"${expected_major_version}\\" ]] ||\\nhalt Expected PostgreSQL data version \\"${expected_major_version}\\"\\n[[ ! -f \\"${postgres_data_directory}/postgresql.conf\\" ]] \\u0026\\u0026\\ntouch \\"${postgres_data_directory}/postgresql.conf\\"\\nsafelink \\"${pgwal_directory}\\" \\"${postgres_data_directory}/pg_wal\\"\\nresults \'wal directory\' \\"$(realpath \\"${postgres_data_directory}/pg_wal\\" ||:)\\"\\nrm -f \\"${postgres_data_directory}/recovery.signal\\"",\n "startup",\n "18",\n "/pgwal/pg18_wal",\n "/pgdata/pgbackrest/log"\n ],\n "env": [\n {\n "name": "PGDATA",\n "value": "/pgdata/pg18"\n },\n {\n "name": "PGHOST",\n "value": "/tmp/postgres"\n },\n {\n "name": "PGPORT",\n "value": "5432"\n },\n {\n "name": "KRB5_CONFIG",\n "value": "/etc/postgres/krb5.conf"\n },\n {\n "name": "KRB5RCACHEDIR",\n "value": "/tmp"\n },\n {\n "name": "LDAPTLS_CACERT",\n "value": "/etc/postgres/ldap/ca.crt"\n },\n {\n "name": "LC_ALL",\n "value": "en_US.utf-8"\n },\n {\n "name": "LANG",\n "value": "en_US.utf-8"\n }\n ],\n "image": "docker.io/perconalab/percona-postgresql-operator:main-ppg18-postgres",\n "imagePullPolicy": "Always",\n "name": "postgres-startup",\n "resources": {},\n "securityContext": {\n "allowPrivilegeEscalation": false,\n "capabilities": {\n "drop": [\n "ALL"\n ]\n },\n "privileged": false,\n "readOnlyRootFilesystem": true,\n "runAsNonRoot": true,\n "seccompProfile": {\n "type": "RuntimeDefault"\n }\n },\n "terminationMessagePath": "/dev/termination-log",\n "terminationMessagePolicy": "File",\n "volumeMounts": [\n {\n "mountPath": "/pgconf/tls",\n "name": "cert-volume",\n "readOnly": true\n },\n {\n "mountPath": "/pgdata",\n "name": "postgres-data"\n },\n {\n "mountPath": "/tablespaces/myts",\n "name": "tablespace-myts"\n },\n {\n "mountPath": "/pgwal",\n "name": "postgres-wal"\n },\n {\n "mountPath": "/pglogs",\n "name": "postgres-logs"\n },\n {\n "mountPath": "/tmp",\n "name": "tmp"\n }\n ]\n },\n {\n "command": [\n "bash",\n "-c",\n "mkdir -p /tmp/nss_wrapper \\u0026\\u0026 { [[ -f /tmp/nss_wrapper/libnss_wrapper.so ]] || cp /usr/lib64/libnss_wrapper.so /tmp/nss_wrapper/libnss_wrapper.so; }"\n ],\n "image": "docker.io/perconalab/percona-postgresql-operator:main-ppg18-postgres",\n "imagePullPolicy": "Always",\n "name": "nss-wrapper-init-logcollector",\n "resources": {},\n "securityContext": {\n "allowPrivilegeEscalation": false,\n "capabilities": {\n "drop": [\n "ALL"\n ]\n },\n "privileged": false,\n "runAsGroup": 26,\n "runAsNonRoot": true,\n "runAsUser": 26,\n "seccompProfile": {\n "type": "RuntimeDefault"\n }\n },\n "terminationMessagePath": "/dev/termination-log",\n "terminationMessagePolicy": "File",\n "volumeMounts": [\n {\n "mountPath": "/tmp",\n "name": "tmp"\n }\n ]\n },\n {\n "command": [\n "bash",\n "-c",\n "export NSS_WRAPPER_SUBDIR=postgres CRUNCHY_NSS_USERNAME=postgres CRUNCHY_NSS_USER_DESC=\\"postgres\\" \\n# Define nss_wrapper directory and passwd \\u0026 group files that will be utilized by nss_wrapper. The\\n# nss_wrapper_env.sh script (which also sets these vars) isn\'t sourced here since the nss_wrapper\\n# has not yet been setup, and we therefore don\'t yet want the nss_wrapper vars in the environment.\\nmkdir -p /tmp/nss_wrapper\\nchmod g+rwx /tmp/nss_wrapper\\n\\nNSS_WRAPPER_DIR=\\"/tmp/nss_wrapper/${NSS_WRAPPER_SUBDIR}\\"\\nNSS_WRAPPER_PASSWD=\\"${NSS_WRAPPER_DIR}/passwd\\"\\nNSS_WRAPPER_GROUP=\\"${NSS_WRAPPER_DIR}/group\\"\\n\\n# create the nss_wrapper directory\\nmkdir -p \\"${NSS_WRAPPER_DIR}\\"\\n\\n# grab the current user ID and group ID\\nUSER_ID=$(id -u)\\nexport USER_ID\\nGROUP_ID=$(id -g)\\nexport GROUP_ID\\n\\n# get copies of the passwd and group files\\n[[ -f \\"${NSS_WRAPPER_PASSWD}\\" ]] || cp \\"/etc/passwd\\" \\"${NSS_WRAPPER_PASSWD}\\"\\n[[ -f \\"${NSS_WRAPPER_GROUP}\\" ]] || cp \\"/etc/group\\" \\"${NSS_WRAPPER_GROUP}\\"\\n\\n# if the username is missing from the passwd file, then add it\\nif [[ ! $(cat \\"${NSS_WRAPPER_PASSWD}\\") =~ ${CRUNCHY_NSS_USERNAME}:x:${USER_ID} ]]; then\\n echo \\"nss_wrapper: adding user\\"\\n passwd_tmp=\\"${NSS_WRAPPER_DIR}/passwd_tmp\\"\\n cp \\"${NSS_WRAPPER_PASSWD}\\" \\"${passwd_tmp}\\"\\n sed -i \\"/${CRUNCHY_NSS_USERNAME}:x:/d\\" \\"${passwd_tmp}\\"\\n # needed for OCP 4.x because crio updates /etc/passwd with an entry for USER_ID\\n sed -i \\"/${USER_ID}:x:/d\\" \\"${passwd_tmp}\\"\\n printf \'${CRUNCHY_NSS_USERNAME}:x:${USER_ID}:${GROUP_ID}:${CRUNCHY_NSS_USER_DESC}:${HOME}:/bin/bash\\\\n\' \\u003e\\u003e \\"${passwd_tmp}\\"\\n envsubst \\u003c \\"${passwd_tmp}\\" \\u003e \\"${NSS_WRAPPER_PASSWD}\\"\\n rm \\"${passwd_tmp}\\"\\nelse\\n echo \\"nss_wrapper: user exists\\"\\nfi\\n\\n# if the username (which will be the same as the group name) is missing from group file, then add it\\nif [[ ! $(cat \\"${NSS_WRAPPER_GROUP}\\") =~ ${CRUNCHY_NSS_USERNAME}:x:${USER_ID} ]]; then\\n echo \\"nss_wrapper: adding group\\"\\n group_tmp=\\"${NSS_WRAPPER_DIR}/group_tmp\\"\\n cp \\"${NSS_WRAPPER_GROUP}\\" \\"${group_tmp}\\"\\n sed -i \\"/${CRUNCHY_NSS_USERNAME}:x:/d\\" \\"${group_tmp}\\"\\n printf \'${CRUNCHY_NSS_USERNAME}:x:${USER_ID}:${CRUNCHY_NSS_USERNAME}\\\\n\' \\u003e\\u003e \\"${group_tmp}\\"\\n envsubst \\u003c \\"${group_tmp}\\" \\u003e \\"${NSS_WRAPPER_GROUP}\\"\\n rm \\"${group_tmp}\\"\\nelse\\n echo \\"nss_wrapper: group exists\\"\\nfi\\n\\n# export the nss_wrapper env vars\\n# define nss_wrapper directory and passwd \\u0026 group files that will be utilized by nss_wrapper\\nNSS_WRAPPER_DIR=\\"/tmp/nss_wrapper/${NSS_WRAPPER_SUBDIR}\\"\\nNSS_WRAPPER_PASSWD=\\"${NSS_WRAPPER_DIR}/passwd\\"\\nNSS_WRAPPER_GROUP=\\"${NSS_WRAPPER_DIR}/group\\"\\n\\nexport LD_PRELOAD=/usr/lib64/libnss_wrapper.so\\nexport NSS_WRAPPER_PASSWD=\\"${NSS_WRAPPER_PASSWD}\\"\\nexport NSS_WRAPPER_GROUP=\\"${NSS_WRAPPER_GROUP}\\"\\n\\necho \\"nss_wrapper: environment configured\\"\\n"\n ],\n "image": "docker.io/perconalab/percona-postgresql-operator:main-ppg18-postgres",\n "imagePullPolicy": "Always",\n "name": "nss-wrapper-init",\n "resources": {},\n "securityContext": {\n "allowPrivilegeEscalation": false,\n "capabilities": {\n "drop": [\n "ALL"\n ]\n },\n "privileged": false,\n "readOnlyRootFilesystem": true,\n "runAsNonRoot": true,\n "seccompProfile": {\n "type": "RuntimeDefault"\n }\n },\n "terminationMessagePath": "/dev/termination-log",\n "terminationMessagePolicy": "File",\n "volumeMounts": [\n {\n "mountPath": "/tmp",\n "name": "tmp"\n }\n ]\n }\n ],\n "restartPolicy": "Always",\n "schedulerName": "default-scheduler",\n "securityContext": {\n "fsGroup": 26,\n "fsGroupChangePolicy": "OnRootMismatch"\n },\n "serviceAccount": "additional-volumes-instance",\n "serviceAccountName": "additional-volumes-instance",\n "shareProcessNamespace": true,\n "terminationGracePeriodSeconds": 30,\n "topologySpreadConstraints": [\n {\n "labelSelector": {\n "matchExpressions": [\n {\n "key": "postgres-operator.crunchydata.com/data",\n "operator": "In",\n "values": [\n "postgres",\n "pgbackrest"\n ]\n }\n ],\n "matchLabels": {\n "postgres-operator.crunchydata.com/cluster": "additional-volumes"\n }\n },\n "maxSkew": 1,\n "topologyKey": "kubernetes.io/hostname",\n "whenUnsatisfiable": "ScheduleAnyway"\n },\n {\n "labelSelector": {\n "matchExpressions": [\n {\n "key": "postgres-operator.crunchydata.com/data",\n "operator": "In",\n "values": [\n "postgres",\n "pgbackrest"\n ]\n }\n ],\n "matchLabels": {\n "postgres-operator.crunchydata.com/cluster": "additional-volumes"\n }\n },\n "maxSkew": 1,\n "topologyKey": "topology.kubernetes.io/zone",\n "whenUnsatisfiable": "ScheduleAnyway"\n }\n ],\n "volumes": [\n {\n "name": "cert-volume",\n "projected": {\n "defaultMode": 384,\n "sources": [\n {\n "secret": {\n "items": [\n {\n "key": "tls.crt",\n "path": "tls.crt"\n },\n {\n "key": "tls.key",\n "path": "tls.key"\n },\n {\n "key": "ca.crt",\n "path": "ca.crt"\n }\n ],\n "name": "additional-volumes-cluster-cert"\n }\n },\n {\n "secret": {\n "items": [\n {\n "key": "tls.crt",\n "path": "replication/tls.crt"\n },\n {\n "key": "tls.key",\n "path": "replication/tls.key"\n },\n {\n "key": "ca.crt",\n "path": "replication/ca.crt"\n }\n ],\n "name": "additional-volumes-replication-cert"\n }\n }\n ]\n }\n },\n {\n "name": "postgres-data",\n "persistentVolumeClaim": {\n "claimName": "additional-volumes-instance1-xvbw-pgdata"\n }\n },\n {\n "downwardAPI": {\n "defaultMode": 420,\n "items": [\n {\n "path": "cpu_limit",\n "resourceFieldRef": {\n "containerName": "database",\n "divisor": "1m",\n "resource": "limits.cpu"\n }\n },\n {\n "path": "cpu_request",\n "resourceFieldRef": {\n "containerName": "database",\n "divisor": "1m",\n "resource": "requests.cpu"\n }\n },\n {\n "path": "mem_limit",\n "resourceFieldRef": {\n "containerName": "database",\n "divisor": "1Mi",\n "resource": "limits.memory"\n }\n },\n {\n "path": "mem_request",\n "resourceFieldRef": {\n "containerName": "database",\n "divisor": "1Mi",\n "resource": "requests.memory"\n }\n },\n {\n "fieldRef": {\n "apiVersion": "v1",\n "fieldPath": "metadata.labels"\n },\n "path": "labels"\n },\n {\n "fieldRef": {\n "apiVersion": "v1",\n "fieldPath": "metadata.annotations"\n },\n "path": "annotations"\n }\n ]\n },\n "name": "database-containerinfo"\n },\n {\n "name": "tablespace-myts",\n "persistentVolumeClaim": {\n "claimName": "additional-volumes-instance1-xvbw-myts-tablespace"\n }\n },\n {\n "name": "postgres-wal",\n "persistentVolumeClaim": {\n "claimName": "additional-volumes-instance1-xvbw-pgwal"\n }\n },\n {\n "name": "postgres-logs",\n "persistentVolumeClaim": {\n "claimName": "additional-volumes-instance1-xvbw-pglogs"\n }\n },\n {\n "name": "pgbackrest-server",\n "projected": {\n "defaultMode": 420,\n "sources": [\n {\n "secret": {\n "items": [\n {\n "key": "pgbackrest-server.crt",\n "path": "server-tls.crt"\n },\n {\n "key": "pgbackrest-server.key",\n "mode": 384,\n "path": "server-tls.key"\n }\n ],\n "name": "additional-volumes-instance1-xvbw-certs"\n }\n }\n ]\n }\n },\n {\n "name": "pgbackrest-config",\n "projected": {\n "defaultMode": 420,\n "sources": [\n {\n "configMap": {\n "items": [\n {\n "key": "pgbackrest_instance.conf",\n "path": "pgbackrest_instance.conf"\n },\n {\n "key": "config-hash",\n "path": "config-hash"\n },\n {\n "key": "pgbackrest-server.conf",\n "path": "~postgres-operator_server.conf"\n }\n ],\n "name": "additional-volumes-pgbackrest-config"\n }\n },\n {\n "secret": {\n "items": [\n {\n "key": "pgbackrest.ca-roots",\n "path": "~postgres-operator/tls-ca.crt"\n },\n {\n "key": "pgbackrest-client.crt",\n "path": "~postgres-operator/client-tls.crt"\n },\n {\n "key": "pgbackrest-client.key",\n "mode": 384,\n "path": "~postgres-operator/client-tls.key"\n }\n ],\n "name": "additional-volumes-pgbackrest"\n }\n }\n ]\n }\n },\n {\n "name": "patroni-config",\n "projected": {\n "defaultMode": 420,\n "sources": [\n {\n "configMap": {\n "items": [\n {\n "key": "patroni.yaml",\n "path": "~postgres-operator_cluster.yaml"\n }\n ],\n "name": "additional-volumes-config"\n }\n },\n {\n "configMap": {\n "items": [\n {\n "key": "patroni.yaml",\n "path": "~postgres-operator_instance.yaml"\n }\n ],\n "name": "additional-volumes-instance1-xvbw-config"\n }\n },\n {\n "secret": {\n "items": [\n {\n "key": "patroni.ca-roots",\n "path": "~postgres-operator/patroni.ca-roots"\n },\n {\n "key": "patroni.crt-combined",\n "path": "~postgres-operator/patroni.crt+key"\n }\n ],\n "name": "additional-volumes-instance1-xvbw-certs"\n }\n }\n ]\n }\n },\n {\n "emptyDir": {},\n "name": "crunchy-bin"\n },\n {\n "emptyDir": {\n "sizeLimit": "2Gi"\n },\n "name": "tmp"\n },\n {\n "emptyDir": {\n "medium": "Memory"\n },\n "name": "dshm"\n }\n ]\n }\n },\n "updateStrategy": {\n "type": "OnDelete"\n }\n },\n "status": {\n "availableReplicas": 1,\n "collisionCount": 0,\n "currentReplicas": 1,\n "currentRevision": "additional-volumes-instance1-xvbw-7dcb456674",\n "observedGeneration": 1,\n "readyReplicas": 1,\n "replicas": 1,\n "updateRevision": "additional-volumes-instance1-xvbw-7dcb456674",\n "updatedReplicas": 1\n }\n }\n ],\n "kind": "List",\n "metadata": {\n "resourceVersion": ""\n }\n}' logger.go:42: 18:13:51 | additional-volumes/2-verify-volumes | + jq -e --arg p /pgwal $'.items[0].spec.template.spec.initContainers[]\n | select(.name == "postgres-startup") | .volumeMounts[]\n | select(.mountPath == $p)' logger.go:42: 18:13:51 | additional-volumes/2-verify-volumes | + printf '%s\n' $'{\n "apiVersion": "v1",\n "items": [\n {\n "apiVersion": "apps/v1",\n "kind": "StatefulSet",\n "metadata": {\n "annotations": {\n "pgv2.percona.com/logcollector-config-hash": "d9a116e02b828bdc02165325e92799d82961fb499041814c7c765d0ce263ce77"\n },\n "creationTimestamp": "2026-08-19T18:12:04Z",\n "generation": 1,\n "labels": {\n "app.kubernetes.io/component": "pg",\n "app.kubernetes.io/instance": "additional-volumes",\n "app.kubernetes.io/managed-by": "percona-postgresql-operator",\n "app.kubernetes.io/name": "percona-postgresql",\n "app.kubernetes.io/part-of": "percona-postgresql",\n "pgv2.percona.com/version": "3.2.0",\n "postgres-operator.crunchydata.com/cluster": "additional-volumes",\n "postgres-operator.crunchydata.com/data": "postgres",\n "postgres-operator.crunchydata.com/instance": "additional-volumes-instance1-24br",\n "postgres-operator.crunchydata.com/instance-set": "instance1"\n },\n "name": "additional-volumes-instance1-24br",\n "namespace": "kuttl-test-intimate-garfish",\n "ownerReferences": [\n {\n "apiVersion": "upstream.pgv2.percona.com/v1beta1",\n "blockOwnerDeletion": true,\n "controller": true,\n "kind": "PostgresCluster",\n "name": "additional-volumes",\n "uid": "b795649f-550b-4283-b2ef-eca573235e5a"\n }\n ],\n "resourceVersion": "1787163196013855005",\n "uid": "471c7b02-6f1c-4f53-a6b2-557d95701703"\n },\n "spec": {\n "persistentVolumeClaimRetentionPolicy": {\n "whenDeleted": "Retain",\n "whenScaled": "Retain"\n },\n "podManagementPolicy": "OrderedReady",\n "replicas": 1,\n "revisionHistoryLimit": 0,\n "selector": {\n "matchLabels": {\n "postgres-operator.crunchydata.com/cluster": "additional-volumes",\n "postgres-operator.crunchydata.com/instance": "additional-volumes-instance1-24br",\n "postgres-operator.crunchydata.com/instance-set": "instance1"\n }\n },\n "serviceName": "additional-volumes-pods",\n "template": {\n "metadata": {\n "annotations": {\n "kubectl.kubernetes.io/default-container": "database",\n "pgv2.percona.com/logcollector-config-hash": "d9a116e02b828bdc02165325e92799d82961fb499041814c7c765d0ce263ce77"\n },\n "creationTimestamp": null,\n "labels": {\n "app.kubernetes.io/component": "pg",\n "app.kubernetes.io/instance": "additional-volumes",\n "app.kubernetes.io/managed-by": "percona-postgresql-operator",\n "app.kubernetes.io/name": "percona-postgresql",\n "app.kubernetes.io/part-of": "percona-postgresql",\n "pgv2.percona.com/version": "3.2.0",\n "postgres-operator.crunchydata.com/cluster": "additional-volumes",\n "postgres-operator.crunchydata.com/data": "postgres",\n "postgres-operator.crunchydata.com/instance": "additional-volumes-instance1-24br",\n "postgres-operator.crunchydata.com/instance-set": "instance1",\n "postgres-operator.crunchydata.com/patroni": "additional-volumes-ha"\n }\n },\n "spec": {\n "affinity": {\n "podAntiAffinity": {\n "preferredDuringSchedulingIgnoredDuringExecution": [\n {\n "podAffinityTerm": {\n "labelSelector": {\n "matchLabels": {\n "postgres-operator.crunchydata.com/data": "postgres"\n }\n },\n "topologyKey": "kubernetes.io/hostname"\n },\n "weight": 1\n }\n ]\n }\n },\n "containers": [\n {\n "command": [\n "/opt/crunchy/bin/postgres-entrypoint.sh",\n "patroni",\n "/etc/patroni"\n ],\n "env": [\n {\n "name": "PGDATA",\n "value": "/pgdata/pg18"\n },\n {\n "name": "PGHOST",\n "value": "/tmp/postgres"\n },\n {\n "name": "PGPORT",\n "value": "5432"\n },\n {\n "name": "KRB5_CONFIG",\n "value": "/etc/postgres/krb5.conf"\n },\n {\n "name": "KRB5RCACHEDIR",\n "value": "/tmp"\n },\n {\n "name": "LDAPTLS_CACERT",\n "value": "/etc/postgres/ldap/ca.crt"\n },\n {\n "name": "LC_ALL",\n "value": "en_US.utf-8"\n },\n {\n "name": "LANG",\n "value": "en_US.utf-8"\n },\n {\n "name": "PATRONI_NAME",\n "valueFrom": {\n "fieldRef": {\n "apiVersion": "v1",\n "fieldPath": "metadata.name"\n }\n }\n },\n {\n "name": "PATRONI_KUBERNETES_POD_IP",\n "valueFrom": {\n "fieldRef": {\n "apiVersion": "v1",\n "fieldPath": "status.podIP"\n }\n }\n },\n {\n "name": "PATRONI_KUBERNETES_PORTS",\n "value": "- name: postgres\\n port: 5432\\n protocol: TCP\\n"\n },\n {\n "name": "PATRONI_POSTGRESQL_CONNECT_ADDRESS",\n "value": "$(PATRONI_NAME).additional-volumes-pods:5432"\n },\n {\n "name": "PATRONI_POSTGRESQL_LISTEN",\n "value": "*:5432"\n },\n {\n "name": "PATRONI_POSTGRESQL_CONFIG_DIR",\n "value": "/pgdata/pg18"\n },\n {\n "name": "PATRONI_POSTGRESQL_DATA_DIR",\n "value": "/pgdata/pg18"\n },\n {\n "name": "PATRONI_RESTAPI_CONNECT_ADDRESS",\n "value": "$(PATRONI_NAME).additional-volumes-pods:8008"\n },\n {\n "name": "PATRONI_RESTAPI_LISTEN",\n "value": "*:8008"\n },\n {\n "name": "PATRONICTL_CONFIG_FILE",\n "value": "/etc/patroni"\n },\n {\n "name": "LD_PRELOAD",\n "value": "/usr/lib64/libnss_wrapper.so"\n },\n {\n "name": "NSS_WRAPPER_PASSWD",\n "value": "/tmp/nss_wrapper/postgres/passwd"\n },\n {\n "name": "NSS_WRAPPER_GROUP",\n "value": "/tmp/nss_wrapper/postgres/group"\n }\n ],\n "image": "docker.io/perconalab/percona-postgresql-operator:main-ppg18-postgres",\n "imagePullPolicy": "Always",\n "livenessProbe": {\n "exec": {\n "command": [\n "bash",\n "-c",\n "/opt/crunchy/bin/postgres-liveness-check.sh"\n ]\n },\n "failureThreshold": 3,\n "initialDelaySeconds": 3,\n "periodSeconds": 10,\n "successThreshold": 1,\n "timeoutSeconds": 5\n },\n "name": "database",\n "ports": [\n {\n "containerPort": 5432,\n "name": "postgres",\n "protocol": "TCP"\n }\n ],\n "readinessProbe": {\n "exec": {\n "command": [\n "bash",\n "-c",\n "/opt/crunchy/bin/postgres-readiness-check.sh"\n ]\n },\n "failureThreshold": 3,\n "initialDelaySeconds": 3,\n "periodSeconds": 10,\n "successThreshold": 1,\n "timeoutSeconds": 5\n },\n "resources": {},\n "securityContext": {\n "allowPrivilegeEscalation": false,\n "capabilities": {\n "drop": [\n "ALL"\n ]\n },\n "privileged": false,\n "readOnlyRootFilesystem": true,\n "runAsNonRoot": true,\n "seccompProfile": {\n "type": "RuntimeDefault"\n }\n },\n "terminationMessagePath": "/dev/termination-log",\n "terminationMessagePolicy": "File",\n "volumeMounts": [\n {\n "mountPath": "/pgconf/tls",\n "name": "cert-volume",\n "readOnly": true\n },\n {\n "mountPath": "/pgdata",\n "name": "postgres-data"\n },\n {\n "mountPath": "/etc/database-containerinfo",\n "name": "database-containerinfo",\n "readOnly": true\n },\n {\n "mountPath": "/tablespaces/myts",\n "name": "tablespace-myts"\n },\n {\n "mountPath": "/pgwal",\n "name": "postgres-wal"\n },\n {\n "mountPath": "/pglogs",\n "name": "postgres-logs"\n },\n {\n "mountPath": "/etc/pgbackrest/conf.d",\n "name": "pgbackrest-config",\n "readOnly": true\n },\n {\n "mountPath": "/etc/patroni",\n "name": "patroni-config",\n "readOnly": true\n },\n {\n "mountPath": "/opt/crunchy",\n "name": "crunchy-bin"\n },\n {\n "mountPath": "/tmp",\n "name": "tmp"\n },\n {\n "mountPath": "/dev/shm",\n "name": "dshm"\n }\n ]\n },\n {\n "command": [\n "bash",\n "-ceu",\n "--",\n "monitor() {\\n# Parameters for curl when managing autogrow annotation.\\nAPISERVER=\\"https://kubernetes.default.svc\\"\\nSERVICEACCOUNT=\\"/var/run/secrets/kubernetes.io/serviceaccount\\"\\nNAMESPACE=$(cat ${SERVICEACCOUNT}/namespace)\\nTOKEN=$(cat ${SERVICEACCOUNT}/token)\\nCACERT=${SERVICEACCOUNT}/ca.crt\\n\\ndeclare -r directory=\\"/pgconf/tls\\"\\nexec {fd}\\u003c\\u003e \\u003c(:||:)\\nwhile read -r -t 5 -u \\"${fd}\\" ||:; do\\n # Manage replication certificate.\\n if [[ \\"${directory}\\" -nt \\"/proc/self/fd/${fd}\\" ]] \\u0026\\u0026\\n install -D --mode=0600 -t \\"/tmp/replication\\" \\"${directory}\\"/{replication/tls.crt,replication/tls.key,replication/ca.crt} \\u0026\\u0026\\n pkill -HUP --exact --parent=1 postgres\\n then\\n exec {fd}\\u003e\\u0026- \\u0026\\u0026 exec {fd}\\u003c\\u003e \\u003c(:||:)\\n stat --format=\'Loaded certificates dated %y\' \\"${directory}\\"\\n fi\\n\\ndone\\n}; export -f monitor; exec -a \\"$0\\" bash -ceu monitor",\n "replication-cert-copy"\n ],\n "image": "docker.io/perconalab/percona-postgresql-operator:main-ppg18-postgres",\n "imagePullPolicy": "Always",\n "name": "replication-cert-copy",\n "resources": {},\n "securityContext": {\n "allowPrivilegeEscalation": false,\n "capabilities": {\n "drop": [\n "ALL"\n ]\n },\n "privileged": false,\n "readOnlyRootFilesystem": true,\n "runAsNonRoot": true,\n "seccompProfile": {\n "type": "RuntimeDefault"\n }\n },\n "terminationMessagePath": "/dev/termination-log",\n "terminationMessagePolicy": "File",\n "volumeMounts": [\n {\n "mountPath": "/pgconf/tls",\n "name": "cert-volume",\n "readOnly": true\n },\n {\n "mountPath": "/pgdata",\n "name": "postgres-data"\n },\n {\n "mountPath": "/tmp",\n "name": "tmp"\n }\n ]\n },\n {\n "args": [\n "fluent-bit"\n ],\n "command": [\n "/opt/crunchy/logcollector/entrypoint.sh"\n ],\n "env": [\n {\n "name": "PG_LOG_DIR",\n "value": "/pgdata/pg18/log"\n },\n {\n "name": "PGBACKREST_LOG_DIR",\n "value": "/pgdata/pgbackrest/log"\n },\n {\n "name": "POD_NAMESPACE",\n "valueFrom": {\n "fieldRef": {\n "apiVersion": "v1",\n "fieldPath": "metadata.namespace"\n }\n }\n },\n {\n "name": "POD_NAME",\n "valueFrom": {\n "fieldRef": {\n "apiVersion": "v1",\n "fieldPath": "metadata.name"\n }\n }\n }\n ],\n "image": "docker.io/perconalab/fluentbit:main-logcollector",\n "imagePullPolicy": "IfNotPresent",\n "name": "logs",\n "resources": {},\n "securityContext": {\n "allowPrivilegeEscalation": false,\n "capabilities": {\n "drop": [\n "ALL"\n ]\n },\n "privileged": false,\n "runAsGroup": 26,\n "runAsNonRoot": true,\n "runAsUser": 26,\n "seccompProfile": {\n "type": "RuntimeDefault"\n }\n },\n "terminationMessagePath": "/dev/termination-log",\n "terminationMessagePolicy": "File",\n "volumeMounts": [\n {\n "mountPath": "/pgdata",\n "name": "postgres-data"\n },\n {\n "mountPath": "/opt/crunchy",\n "name": "crunchy-bin"\n },\n {\n "mountPath": "/tmp",\n "name": "tmp"\n }\n ]\n },\n {\n "args": [\n "logrotate"\n ],\n "command": [\n "/opt/crunchy/logcollector/entrypoint.sh"\n ],\n "env": [\n {\n "name": "POD_NAMESPACE",\n "valueFrom": {\n "fieldRef": {\n "apiVersion": "v1",\n "fieldPath": "metadata.namespace"\n }\n }\n },\n {\n "name": "POD_NAME",\n "valueFrom": {\n "fieldRef": {\n "apiVersion": "v1",\n "fieldPath": "metadata.name"\n }\n }\n },\n {\n "name": "LOGROTATE_SCHEDULE",\n "value": "0 0 * * *"\n },\n {\n "name": "LD_PRELOAD",\n "value": "/tmp/nss_wrapper/libnss_wrapper.so"\n },\n {\n "name": "NSS_WRAPPER_PASSWD",\n "value": "/tmp/nss_wrapper/postgres/passwd"\n },\n {\n "name": "NSS_WRAPPER_GROUP",\n "value": "/tmp/nss_wrapper/postgres/group"\n }\n ],\n "image": "docker.io/perconalab/fluentbit:main-logcollector",\n "imagePullPolicy": "IfNotPresent",\n "name": "logrotate",\n "resources": {},\n "securityContext": {\n "allowPrivilegeEscalation": false,\n "capabilities": {\n "drop": [\n "ALL"\n ]\n },\n "privileged": false,\n "runAsGroup": 26,\n "runAsNonRoot": true,\n "runAsUser": 26,\n "seccompProfile": {\n "type": "RuntimeDefault"\n }\n },\n "terminationMessagePath": "/dev/termination-log",\n "terminationMessagePolicy": "File",\n "volumeMounts": [\n {\n "mountPath": "/pgdata",\n "name": "postgres-data"\n },\n {\n "mountPath": "/opt/crunchy",\n "name": "crunchy-bin"\n },\n {\n "mountPath": "/tmp",\n "name": "tmp"\n }\n ]\n },\n {\n "command": [\n "pgbackrest",\n "server"\n ],\n "env": [\n {\n "name": "LD_PRELOAD",\n "value": "/usr/lib64/libnss_wrapper.so"\n },\n {\n "name": "NSS_WRAPPER_PASSWD",\n "value": "/tmp/nss_wrapper/postgres/passwd"\n },\n {\n "name": "NSS_WRAPPER_GROUP",\n "value": "/tmp/nss_wrapper/postgres/group"\n }\n ],\n "image": "docker.io/perconalab/percona-postgresql-operator:main-pgbackrest18",\n "imagePullPolicy": "Always",\n "livenessProbe": {\n "exec": {\n "command": [\n "pgbackrest",\n "server-ping"\n ]\n },\n "failureThreshold": 3,\n "periodSeconds": 10,\n "successThreshold": 1,\n "timeoutSeconds": 1\n },\n "name": "pgbackrest",\n "resources": {},\n "securityContext": {\n "allowPrivilegeEscalation": false,\n "capabilities": {\n "drop": [\n "ALL"\n ]\n },\n "privileged": false,\n "readOnlyRootFilesystem": true,\n "runAsNonRoot": true,\n "seccompProfile": {\n "type": "RuntimeDefault"\n }\n },\n "terminationMessagePath": "/dev/termination-log",\n "terminationMessagePolicy": "File",\n "volumeMounts": [\n {\n "mountPath": "/etc/pgbackrest/server",\n "name": "pgbackrest-server",\n "readOnly": true\n },\n {\n "mountPath": "/pgdata",\n "name": "postgres-data"\n },\n {\n "mountPath": "/tablespaces/myts",\n "name": "tablespace-myts"\n },\n {\n "mountPath": "/pgwal",\n "name": "postgres-wal"\n },\n {\n "mountPath": "/etc/pgbackrest/conf.d",\n "name": "pgbackrest-config",\n "readOnly": true\n },\n {\n "mountPath": "/tmp",\n "name": "tmp"\n }\n ]\n },\n {\n "command": [\n "bash",\n "-ceu",\n "--",\n "monitor() {\\nexec {fd}\\u003c\\u003e \\u003c(:||:)\\nuntil read -r -t 5 -u \\"${fd}\\"; do\\n if\\n [[ \\"${filename}\\" -nt \\"/proc/self/fd/${fd}\\" ]] \\u0026\\u0026\\n pkill -HUP --exact --parent=0 pgbackrest\\n then\\n exec {fd}\\u003e\\u0026- \\u0026\\u0026 exec {fd}\\u003c\\u003e \\u003c(:||:)\\n stat --dereference --format=\'Loaded configuration dated %y\' \\"${filename}\\"\\n elif\\n { [[ \\"${directory}\\" -nt \\"/proc/self/fd/${fd}\\" ]] ||\\n [[ \\"${authority}\\" -nt \\"/proc/self/fd/${fd}\\" ]]\\n } \\u0026\\u0026\\n pkill -HUP --exact --parent=0 pgbackrest\\n then\\n exec {fd}\\u003e\\u0026- \\u0026\\u0026 exec {fd}\\u003c\\u003e \\u003c(:||:)\\n stat --format=\'Loaded certificates dated %y\' \\"${directory}\\"\\n fi\\ndone\\n}; export directory=\\"$1\\" authority=\\"$2\\" filename=\\"$3\\"; export -f monitor; exec -a \\"$0\\" bash -ceu monitor",\n "pgbackrest-config",\n "/etc/pgbackrest/server",\n "/etc/pgbackrest/conf.d/~postgres-operator/tls-ca.crt",\n "/etc/pgbackrest/conf.d/~postgres-operator_server.conf"\n ],\n "image": "docker.io/perconalab/percona-postgresql-operator:main-pgbackrest18",\n "imagePullPolicy": "Always",\n "name": "pgbackrest-config",\n "resources": {},\n "securityContext": {\n "allowPrivilegeEscalation": false,\n "capabilities": {\n "drop": [\n "ALL"\n ]\n },\n "privileged": false,\n "readOnlyRootFilesystem": true,\n "runAsNonRoot": true,\n "seccompProfile": {\n "type": "RuntimeDefault"\n }\n },\n "terminationMessagePath": "/dev/termination-log",\n "terminationMessagePolicy": "File",\n "volumeMounts": [\n {\n "mountPath": "/etc/pgbackrest/server",\n "name": "pgbackrest-server",\n "readOnly": true\n },\n {\n "mountPath": "/etc/pgbackrest/conf.d",\n "name": "pgbackrest-config",\n "readOnly": true\n },\n {\n "mountPath": "/tmp",\n "name": "tmp"\n }\n ]\n }\n ],\n "dnsPolicy": "ClusterFirst",\n "enableServiceLinks": false,\n "initContainers": [\n {\n "command": [\n "/usr/local/bin/init-entrypoint.sh"\n ],\n "image": "docker.io/perconalab/percona-postgresql-operator:PR-1760-4947a0272",\n "imagePullPolicy": "Always",\n "name": "database-init",\n "resources": {},\n "securityContext": {\n "allowPrivilegeEscalation": false,\n "capabilities": {\n "drop": [\n "ALL"\n ]\n },\n "privileged": false,\n "readOnlyRootFilesystem": true,\n "runAsNonRoot": true,\n "seccompProfile": {\n "type": "RuntimeDefault"\n }\n },\n "terminationMessagePath": "/dev/termination-log",\n "terminationMessagePolicy": "File",\n "volumeMounts": [\n {\n "mountPath": "/opt/crunchy",\n "name": "crunchy-bin"\n },\n {\n "mountPath": "/tmp",\n "name": "tmp"\n }\n ]\n },\n {\n "command": [\n "bash",\n "-ceu",\n "--",\n "declare -r expected_major_version=\\"$1\\" pgwal_directory=\\"$2\\" pgbrLog_directory=\\"$3\\"\\npermissions() { while [[ -n \\"$1\\" ]]; do set \\"${1%/*}\\" \\"$@\\"; done; shift; stat -Lc \'%A %4u %4g %n\' \\"$@\\"; }\\nhalt() { local rc=$?; \\u003e\\u00262 echo \\"$@\\"; exit \\"${rc/#0/1}\\"; }\\nresults() { printf \'::postgres-operator: %s::%s\\\\n\' \\"$@\\"; }\\nrecreate() (\\n local tmp; tmp=$(mktemp -d -p \\"${1%/*}\\"); GLOBIGNORE=\'.:..\'; set -x\\n chmod \\"$2\\" \\"${tmp}\\"; mv \\"$1\\"/* \\"${tmp}\\"; rmdir \\"$1\\"; mv \\"${tmp}\\" \\"$1\\"\\n)\\nsafelink() (\\n local desired=\\"$1\\" name=\\"$2\\" current\\n current=$(realpath \\"${name}\\")\\n if [[ \\"${current}\\" == \\"${desired}\\" ]]; then return; fi\\n set -x; mv --no-target-directory \\"${current}\\" \\"${desired}\\"\\n ln --no-dereference --force --symbolic \\"${desired}\\" \\"${name}\\"\\n)\\necho Initializing ...\\nresults \'uid\' \\"$(id -u ||:)\\" \'gid\' \\"$(id -G ||:)\\"\\nif [[ \\"${pgwal_directory}\\" == *\\"pgwal/\\"* ]] \\u0026\\u0026 [[ ! -d \\"/pgwal/pgbackrest-spool\\" ]];then rm -rf \\"/pgdata/pgbackrest-spool\\" \\u0026\\u0026 mkdir -p \\"/pgwal/pgbackrest-spool\\" \\u0026\\u0026 ln --force --symbolic \\"/pgwal/pgbackrest-spool\\" \\"/pgdata/pgbackrest-spool\\";fi\\nif [[ ! -e \\"/pgdata/pgbackrest-spool\\" ]];then rm -rf /pgdata/pgbackrest-spool;fi\\nif [[ ! -e \\"/pgdata/logs/postgres\\" ]];then rm -rf \\"/pgdata/logs/postgres\\";fi\\nif [[ ! -e \\"${pgbrLog_directory}\\" ]];then rm -rf \\"${pgbrLog_directory}\\";fi\\nif [[ -d \\"/pglogs\\" ]];then install --directory --mode=0775 \\"/pglogs/postgres\\" \\"/pglogs/pgbackrest/log\\";if [[ ! -L \\"/pgdata/logs/postgres\\" ]];then mkdir -p \\"/pgdata/logs\\" \\u0026\\u0026 rm -rf \\"/pgdata/logs/postgres\\" \\u0026\\u0026 ln --symbolic \\"/pglogs/postgres\\" \\"/pgdata/logs/postgres\\";fi;if [[ ! -L \\"${pgbrLog_directory}\\" ]];then mkdir -p \\"${pgbrLog_directory%/*}\\" \\u0026\\u0026 rm -rf \\"${pgbrLog_directory}\\" \\u0026\\u0026 ln --symbolic \\"/pglogs/pgbackrest/log\\" \\"${pgbrLog_directory}\\";fi;fi\\nresults \'postgres path\' \\"$(command -v postgres ||:)\\"\\nresults \'postgres version\' \\"${postgres_version:=$(postgres --version ||:)}\\"\\n[[ \\"${postgres_version}\\" =~ \\") ${expected_major_version}\\"($|[^0-9]) ]] ||\\nhalt Expected PostgreSQL version \\"${expected_major_version}\\"\\nresults \'config directory\' \\"${PGDATA:?}\\"\\npostgres_data_directory=$([[ -d \\"${PGDATA}\\" ]] \\u0026\\u0026 postgres -C data_directory || echo \\"${PGDATA}\\")\\nresults \'data directory\' \\"${postgres_data_directory}\\"\\n[[ \\"${postgres_data_directory}\\" == \\"${PGDATA}\\" ]] ||\\nhalt Expected matching config and data directories\\nbootstrap_dir=\\"${postgres_data_directory}_bootstrap\\"\\n[[ -d \\"${bootstrap_dir}\\" ]] \\u0026\\u0026 results \'bootstrap directory\' \\"${bootstrap_dir}\\"\\n[[ -d \\"${bootstrap_dir}\\" ]] \\u0026\\u0026 postgres_data_directory=\\"${bootstrap_dir}\\"\\nif [[ ! -e \\"${postgres_data_directory}\\" || -O \\"${postgres_data_directory}\\" ]]; then\\ninstall --directory --mode=0700 \\"${postgres_data_directory}\\"\\nelif [[ -w \\"${postgres_data_directory}\\" \\u0026\\u0026 -g \\"${postgres_data_directory}\\" ]]; then\\nrecreate \\"${postgres_data_directory}\\" \'0700\'\\nelse (halt Permissions!); fi ||\\nhalt \\"$(permissions \\"${postgres_data_directory}\\" ||:)\\"\\nresults \'pgBackRest log directory\' \\"${pgbrLog_directory}\\"\\ninstall --directory --mode=0775 \\"${pgbrLog_directory}\\" ||\\nhalt \\"$(permissions \\"${pgbrLog_directory}\\" ||:)\\"\\ninstall -D --mode=0600 -t \\"/tmp/replication\\" \\"/pgconf/tls/replication\\"/{tls.crt,tls.key,ca.crt}\\n\\ntablespace_dir=/tablespaces/myts/data\\nif [[ ! -e \\"${tablespace_dir}\\" || -O \\"${tablespace_dir}\\" ]]; then\\ninstall --directory --mode=0700 \\"${tablespace_dir}\\"\\nelif [[ -w \\"${tablespace_dir}\\" \\u0026\\u0026 -g \\"${tablespace_dir}\\" ]]; then\\nrecreate \\"${tablespace_dir}\\" \'0700\'\\nelse (halt Permissions!); fi ||\\nhalt \\"$(permissions \\"${tablespace_dir}\\" ||:)\\"\\n[[ -f \\"${postgres_data_directory}/PG_VERSION\\" ]] || exit 0\\nresults \'data version\' \\"${postgres_data_version:=$(\\u003c \\"${postgres_data_directory}/PG_VERSION\\")}\\"\\n[[ \\"${postgres_data_version}\\" == \\"${expected_major_version}\\" ]] ||\\nhalt Expected PostgreSQL data version \\"${expected_major_version}\\"\\n[[ ! -f \\"${postgres_data_directory}/postgresql.conf\\" ]] \\u0026\\u0026\\ntouch \\"${postgres_data_directory}/postgresql.conf\\"\\nsafelink \\"${pgwal_directory}\\" \\"${postgres_data_directory}/pg_wal\\"\\nresults \'wal directory\' \\"$(realpath \\"${postgres_data_directory}/pg_wal\\" ||:)\\"\\nrm -f \\"${postgres_data_directory}/recovery.signal\\"",\n "startup",\n "18",\n "/pgwal/pg18_wal",\n "/pgdata/pgbackrest/log"\n ],\n "env": [\n {\n "name": "PGDATA",\n "value": "/pgdata/pg18"\n },\n {\n "name": "PGHOST",\n "value": "/tmp/postgres"\n },\n {\n "name": "PGPORT",\n "value": "5432"\n },\n {\n "name": "KRB5_CONFIG",\n "value": "/etc/postgres/krb5.conf"\n },\n {\n "name": "KRB5RCACHEDIR",\n "value": "/tmp"\n },\n {\n "name": "LDAPTLS_CACERT",\n "value": "/etc/postgres/ldap/ca.crt"\n },\n {\n "name": "LC_ALL",\n "value": "en_US.utf-8"\n },\n {\n "name": "LANG",\n "value": "en_US.utf-8"\n }\n ],\n "image": "docker.io/perconalab/percona-postgresql-operator:main-ppg18-postgres",\n "imagePullPolicy": "Always",\n "name": "postgres-startup",\n "resources": {},\n "securityContext": {\n "allowPrivilegeEscalation": false,\n "capabilities": {\n "drop": [\n "ALL"\n ]\n },\n "privileged": false,\n "readOnlyRootFilesystem": true,\n "runAsNonRoot": true,\n "seccompProfile": {\n "type": "RuntimeDefault"\n }\n },\n "terminationMessagePath": "/dev/termination-log",\n "terminationMessagePolicy": "File",\n "volumeMounts": [\n {\n "mountPath": "/pgconf/tls",\n "name": "cert-volume",\n "readOnly": true\n },\n {\n "mountPath": "/pgdata",\n "name": "postgres-data"\n },\n {\n "mountPath": "/tablespaces/myts",\n "name": "tablespace-myts"\n },\n {\n "mountPath": "/pgwal",\n "name": "postgres-wal"\n },\n {\n "mountPath": "/pglogs",\n "name": "postgres-logs"\n },\n {\n "mountPath": "/tmp",\n "name": "tmp"\n }\n ]\n },\n {\n "command": [\n "bash",\n "-c",\n "mkdir -p /tmp/nss_wrapper \\u0026\\u0026 { [[ -f /tmp/nss_wrapper/libnss_wrapper.so ]] || cp /usr/lib64/libnss_wrapper.so /tmp/nss_wrapper/libnss_wrapper.so; }"\n ],\n "image": "docker.io/perconalab/percona-postgresql-operator:main-ppg18-postgres",\n "imagePullPolicy": "Always",\n "name": "nss-wrapper-init-logcollector",\n "resources": {},\n "securityContext": {\n "allowPrivilegeEscalation": false,\n "capabilities": {\n "drop": [\n "ALL"\n ]\n },\n "privileged": false,\n "runAsGroup": 26,\n "runAsNonRoot": true,\n "runAsUser": 26,\n "seccompProfile": {\n "type": "RuntimeDefault"\n }\n },\n "terminationMessagePath": "/dev/termination-log",\n "terminationMessagePolicy": "File",\n "volumeMounts": [\n {\n "mountPath": "/tmp",\n "name": "tmp"\n }\n ]\n },\n {\n "command": [\n "bash",\n "-c",\n "export NSS_WRAPPER_SUBDIR=postgres CRUNCHY_NSS_USERNAME=postgres CRUNCHY_NSS_USER_DESC=\\"postgres\\" \\n# Define nss_wrapper directory and passwd \\u0026 group files that will be utilized by nss_wrapper. The\\n# nss_wrapper_env.sh script (which also sets these vars) isn\'t sourced here since the nss_wrapper\\n# has not yet been setup, and we therefore don\'t yet want the nss_wrapper vars in the environment.\\nmkdir -p /tmp/nss_wrapper\\nchmod g+rwx /tmp/nss_wrapper\\n\\nNSS_WRAPPER_DIR=\\"/tmp/nss_wrapper/${NSS_WRAPPER_SUBDIR}\\"\\nNSS_WRAPPER_PASSWD=\\"${NSS_WRAPPER_DIR}/passwd\\"\\nNSS_WRAPPER_GROUP=\\"${NSS_WRAPPER_DIR}/group\\"\\n\\n# create the nss_wrapper directory\\nmkdir -p \\"${NSS_WRAPPER_DIR}\\"\\n\\n# grab the current user ID and group ID\\nUSER_ID=$(id -u)\\nexport USER_ID\\nGROUP_ID=$(id -g)\\nexport GROUP_ID\\n\\n# get copies of the passwd and group files\\n[[ -f \\"${NSS_WRAPPER_PASSWD}\\" ]] || cp \\"/etc/passwd\\" \\"${NSS_WRAPPER_PASSWD}\\"\\n[[ -f \\"${NSS_WRAPPER_GROUP}\\" ]] || cp \\"/etc/group\\" \\"${NSS_WRAPPER_GROUP}\\"\\n\\n# if the username is missing from the passwd file, then add it\\nif [[ ! $(cat \\"${NSS_WRAPPER_PASSWD}\\") =~ ${CRUNCHY_NSS_USERNAME}:x:${USER_ID} ]]; then\\n echo \\"nss_wrapper: adding user\\"\\n passwd_tmp=\\"${NSS_WRAPPER_DIR}/passwd_tmp\\"\\n cp \\"${NSS_WRAPPER_PASSWD}\\" \\"${passwd_tmp}\\"\\n sed -i \\"/${CRUNCHY_NSS_USERNAME}:x:/d\\" \\"${passwd_tmp}\\"\\n # needed for OCP 4.x because crio updates /etc/passwd with an entry for USER_ID\\n sed -i \\"/${USER_ID}:x:/d\\" \\"${passwd_tmp}\\"\\n printf \'${CRUNCHY_NSS_USERNAME}:x:${USER_ID}:${GROUP_ID}:${CRUNCHY_NSS_USER_DESC}:${HOME}:/bin/bash\\\\n\' \\u003e\\u003e \\"${passwd_tmp}\\"\\n envsubst \\u003c \\"${passwd_tmp}\\" \\u003e \\"${NSS_WRAPPER_PASSWD}\\"\\n rm \\"${passwd_tmp}\\"\\nelse\\n echo \\"nss_wrapper: user exists\\"\\nfi\\n\\n# if the username (which will be the same as the group name) is missing from group file, then add it\\nif [[ ! $(cat \\"${NSS_WRAPPER_GROUP}\\") =~ ${CRUNCHY_NSS_USERNAME}:x:${USER_ID} ]]; then\\n echo \\"nss_wrapper: adding group\\"\\n group_tmp=\\"${NSS_WRAPPER_DIR}/group_tmp\\"\\n cp \\"${NSS_WRAPPER_GROUP}\\" \\"${group_tmp}\\"\\n sed -i \\"/${CRUNCHY_NSS_USERNAME}:x:/d\\" \\"${group_tmp}\\"\\n printf \'${CRUNCHY_NSS_USERNAME}:x:${USER_ID}:${CRUNCHY_NSS_USERNAME}\\\\n\' \\u003e\\u003e \\"${group_tmp}\\"\\n envsubst \\u003c \\"${group_tmp}\\" \\u003e \\"${NSS_WRAPPER_GROUP}\\"\\n rm \\"${group_tmp}\\"\\nelse\\n echo \\"nss_wrapper: group exists\\"\\nfi\\n\\n# export the nss_wrapper env vars\\n# define nss_wrapper directory and passwd \\u0026 group files that will be utilized by nss_wrapper\\nNSS_WRAPPER_DIR=\\"/tmp/nss_wrapper/${NSS_WRAPPER_SUBDIR}\\"\\nNSS_WRAPPER_PASSWD=\\"${NSS_WRAPPER_DIR}/passwd\\"\\nNSS_WRAPPER_GROUP=\\"${NSS_WRAPPER_DIR}/group\\"\\n\\nexport LD_PRELOAD=/usr/lib64/libnss_wrapper.so\\nexport NSS_WRAPPER_PASSWD=\\"${NSS_WRAPPER_PASSWD}\\"\\nexport NSS_WRAPPER_GROUP=\\"${NSS_WRAPPER_GROUP}\\"\\n\\necho \\"nss_wrapper: environment configured\\"\\n"\n ],\n "image": "docker.io/perconalab/percona-postgresql-operator:main-ppg18-postgres",\n "imagePullPolicy": "Always",\n "name": "nss-wrapper-init",\n "resources": {},\n "securityContext": {\n "allowPrivilegeEscalation": false,\n "capabilities": {\n "drop": [\n "ALL"\n ]\n },\n "privileged": false,\n "readOnlyRootFilesystem": true,\n "runAsNonRoot": true,\n "seccompProfile": {\n "type": "RuntimeDefault"\n }\n },\n "terminationMessagePath": "/dev/termination-log",\n "terminationMessagePolicy": "File",\n "volumeMounts": [\n {\n "mountPath": "/tmp",\n "name": "tmp"\n }\n ]\n }\n ],\n "restartPolicy": "Always",\n "schedulerName": "default-scheduler",\n "securityContext": {\n "fsGroup": 26,\n "fsGroupChangePolicy": "OnRootMismatch"\n },\n "serviceAccount": "additional-volumes-instance",\n "serviceAccountName": "additional-volumes-instance",\n "shareProcessNamespace": true,\n "terminationGracePeriodSeconds": 30,\n "topologySpreadConstraints": [\n {\n "labelSelector": {\n "matchExpressions": [\n {\n "key": "postgres-operator.crunchydata.com/data",\n "operator": "In",\n "values": [\n "postgres",\n "pgbackrest"\n ]\n }\n ],\n "matchLabels": {\n "postgres-operator.crunchydata.com/cluster": "additional-volumes"\n }\n },\n "maxSkew": 1,\n "topologyKey": "kubernetes.io/hostname",\n "whenUnsatisfiable": "ScheduleAnyway"\n },\n {\n "labelSelector": {\n "matchExpressions": [\n {\n "key": "postgres-operator.crunchydata.com/data",\n "operator": "In",\n "values": [\n "postgres",\n "pgbackrest"\n ]\n }\n ],\n "matchLabels": {\n "postgres-operator.crunchydata.com/cluster": "additional-volumes"\n }\n },\n "maxSkew": 1,\n "topologyKey": "topology.kubernetes.io/zone",\n "whenUnsatisfiable": "ScheduleAnyway"\n }\n ],\n "volumes": [\n {\n "name": "cert-volume",\n "projected": {\n "defaultMode": 384,\n "sources": [\n {\n "secret": {\n "items": [\n {\n "key": "tls.crt",\n "path": "tls.crt"\n },\n {\n "key": "tls.key",\n "path": "tls.key"\n },\n {\n "key": "ca.crt",\n "path": "ca.crt"\n }\n ],\n "name": "additional-volumes-cluster-cert"\n }\n },\n {\n "secret": {\n "items": [\n {\n "key": "tls.crt",\n "path": "replication/tls.crt"\n },\n {\n "key": "tls.key",\n "path": "replication/tls.key"\n },\n {\n "key": "ca.crt",\n "path": "replication/ca.crt"\n }\n ],\n "name": "additional-volumes-replication-cert"\n }\n }\n ]\n }\n },\n {\n "name": "postgres-data",\n "persistentVolumeClaim": {\n "claimName": "additional-volumes-instance1-24br-pgdata"\n }\n },\n {\n "downwardAPI": {\n "defaultMode": 420,\n "items": [\n {\n "path": "cpu_limit",\n "resourceFieldRef": {\n "containerName": "database",\n "divisor": "1m",\n "resource": "limits.cpu"\n }\n },\n {\n "path": "cpu_request",\n "resourceFieldRef": {\n "containerName": "database",\n "divisor": "1m",\n "resource": "requests.cpu"\n }\n },\n {\n "path": "mem_limit",\n "resourceFieldRef": {\n "containerName": "database",\n "divisor": "1Mi",\n "resource": "limits.memory"\n }\n },\n {\n "path": "mem_request",\n "resourceFieldRef": {\n "containerName": "database",\n "divisor": "1Mi",\n "resource": "requests.memory"\n }\n },\n {\n "fieldRef": {\n "apiVersion": "v1",\n "fieldPath": "metadata.labels"\n },\n "path": "labels"\n },\n {\n "fieldRef": {\n "apiVersion": "v1",\n "fieldPath": "metadata.annotations"\n },\n "path": "annotations"\n }\n ]\n },\n "name": "database-containerinfo"\n },\n {\n "name": "tablespace-myts",\n "persistentVolumeClaim": {\n "claimName": "additional-volumes-instance1-24br-myts-tablespace"\n }\n },\n {\n "name": "postgres-wal",\n "persistentVolumeClaim": {\n "claimName": "additional-volumes-instance1-24br-pgwal"\n }\n },\n {\n "name": "postgres-logs",\n "persistentVolumeClaim": {\n "claimName": "additional-volumes-instance1-24br-pglogs"\n }\n },\n {\n "name": "pgbackrest-server",\n "projected": {\n "defaultMode": 420,\n "sources": [\n {\n "secret": {\n "items": [\n {\n "key": "pgbackrest-server.crt",\n "path": "server-tls.crt"\n },\n {\n "key": "pgbackrest-server.key",\n "mode": 384,\n "path": "server-tls.key"\n }\n ],\n "name": "additional-volumes-instance1-24br-certs"\n }\n }\n ]\n }\n },\n {\n "name": "pgbackrest-config",\n "projected": {\n "defaultMode": 420,\n "sources": [\n {\n "configMap": {\n "items": [\n {\n "key": "pgbackrest_instance.conf",\n "path": "pgbackrest_instance.conf"\n },\n {\n "key": "config-hash",\n "path": "config-hash"\n },\n {\n "key": "pgbackrest-server.conf",\n "path": "~postgres-operator_server.conf"\n }\n ],\n "name": "additional-volumes-pgbackrest-config"\n }\n },\n {\n "secret": {\n "items": [\n {\n "key": "pgbackrest.ca-roots",\n "path": "~postgres-operator/tls-ca.crt"\n },\n {\n "key": "pgbackrest-client.crt",\n "path": "~postgres-operator/client-tls.crt"\n },\n {\n "key": "pgbackrest-client.key",\n "mode": 384,\n "path": "~postgres-operator/client-tls.key"\n }\n ],\n "name": "additional-volumes-pgbackrest"\n }\n }\n ]\n }\n },\n {\n "name": "patroni-config",\n "projected": {\n "defaultMode": 420,\n "sources": [\n {\n "configMap": {\n "items": [\n {\n "key": "patroni.yaml",\n "path": "~postgres-operator_cluster.yaml"\n }\n ],\n "name": "additional-volumes-config"\n }\n },\n {\n "configMap": {\n "items": [\n {\n "key": "patroni.yaml",\n "path": "~postgres-operator_instance.yaml"\n }\n ],\n "name": "additional-volumes-instance1-24br-config"\n }\n },\n {\n "secret": {\n "items": [\n {\n "key": "patroni.ca-roots",\n "path": "~postgres-operator/patroni.ca-roots"\n },\n {\n "key": "patroni.crt-combined",\n "path": "~postgres-operator/patroni.crt+key"\n }\n ],\n "name": "additional-volumes-instance1-24br-certs"\n }\n }\n ]\n }\n },\n {\n "emptyDir": {},\n "name": "crunchy-bin"\n },\n {\n "emptyDir": {\n "sizeLimit": "2Gi"\n },\n "name": "tmp"\n },\n {\n "emptyDir": {\n "medium": "Memory"\n },\n "name": "dshm"\n }\n ]\n }\n },\n "updateStrategy": {\n "type": "OnDelete"\n }\n },\n "status": {\n "availableReplicas": 1,\n "collisionCount": 0,\n "currentReplicas": 1,\n "currentRevision": "additional-volumes-instance1-24br-6849b5b674",\n "observedGeneration": 1,\n "readyReplicas": 1,\n "replicas": 1,\n "updateRevision": "additional-volumes-instance1-24br-6849b5b674",\n "updatedReplicas": 1\n }\n },\n {\n "apiVersion": "apps/v1",\n "kind": "StatefulSet",\n "metadata": {\n "annotations": {\n "pgv2.percona.com/logcollector-config-hash": "d9a116e02b828bdc02165325e92799d82961fb499041814c7c765d0ce263ce77"\n },\n "creationTimestamp": "2026-08-19T18:12:06Z",\n "generation": 1,\n "labels": {\n "app.kubernetes.io/component": "pg",\n "app.kubernetes.io/instance": "additional-volumes",\n "app.kubernetes.io/managed-by": "percona-postgresql-operator",\n "app.kubernetes.io/name": "percona-postgresql",\n "app.kubernetes.io/part-of": "percona-postgresql",\n "pgv2.percona.com/version": "3.2.0",\n "postgres-operator.crunchydata.com/cluster": "additional-volumes",\n "postgres-operator.crunchydata.com/data": "postgres",\n "postgres-operator.crunchydata.com/instance": "additional-volumes-instance1-n8pg",\n "postgres-operator.crunchydata.com/instance-set": "instance1"\n },\n "name": "additional-volumes-instance1-n8pg",\n "namespace": "kuttl-test-intimate-garfish",\n "ownerReferences": [\n {\n "apiVersion": "upstream.pgv2.percona.com/v1beta1",\n "blockOwnerDeletion": true,\n "controller": true,\n "kind": "PostgresCluster",\n "name": "additional-volumes",\n "uid": "b795649f-550b-4283-b2ef-eca573235e5a"\n }\n ],\n "resourceVersion": "1787163189863071003",\n "uid": "c2983a30-d942-42e2-9d6a-3e99691891fd"\n },\n "spec": {\n "persistentVolumeClaimRetentionPolicy": {\n "whenDeleted": "Retain",\n "whenScaled": "Retain"\n },\n "podManagementPolicy": "OrderedReady",\n "replicas": 1,\n "revisionHistoryLimit": 0,\n "selector": {\n "matchLabels": {\n "postgres-operator.crunchydata.com/cluster": "additional-volumes",\n "postgres-operator.crunchydata.com/instance": "additional-volumes-instance1-n8pg",\n "postgres-operator.crunchydata.com/instance-set": "instance1"\n }\n },\n "serviceName": "additional-volumes-pods",\n "template": {\n "metadata": {\n "annotations": {\n "kubectl.kubernetes.io/default-container": "database",\n "pgv2.percona.com/logcollector-config-hash": "d9a116e02b828bdc02165325e92799d82961fb499041814c7c765d0ce263ce77"\n },\n "creationTimestamp": null,\n "labels": {\n "app.kubernetes.io/component": "pg",\n "app.kubernetes.io/instance": "additional-volumes",\n "app.kubernetes.io/managed-by": "percona-postgresql-operator",\n "app.kubernetes.io/name": "percona-postgresql",\n "app.kubernetes.io/part-of": "percona-postgresql",\n "pgv2.percona.com/version": "3.2.0",\n "postgres-operator.crunchydata.com/cluster": "additional-volumes",\n "postgres-operator.crunchydata.com/data": "postgres",\n "postgres-operator.crunchydata.com/instance": "additional-volumes-instance1-n8pg",\n "postgres-operator.crunchydata.com/instance-set": "instance1",\n "postgres-operator.crunchydata.com/patroni": "additional-volumes-ha"\n }\n },\n "spec": {\n "affinity": {\n "podAntiAffinity": {\n "preferredDuringSchedulingIgnoredDuringExecution": [\n {\n "podAffinityTerm": {\n "labelSelector": {\n "matchLabels": {\n "postgres-operator.crunchydata.com/data": "postgres"\n }\n },\n "topologyKey": "kubernetes.io/hostname"\n },\n "weight": 1\n }\n ]\n }\n },\n "containers": [\n {\n "command": [\n "/opt/crunchy/bin/postgres-entrypoint.sh",\n "patroni",\n "/etc/patroni"\n ],\n "env": [\n {\n "name": "PGDATA",\n "value": "/pgdata/pg18"\n },\n {\n "name": "PGHOST",\n "value": "/tmp/postgres"\n },\n {\n "name": "PGPORT",\n "value": "5432"\n },\n {\n "name": "KRB5_CONFIG",\n "value": "/etc/postgres/krb5.conf"\n },\n {\n "name": "KRB5RCACHEDIR",\n "value": "/tmp"\n },\n {\n "name": "LDAPTLS_CACERT",\n "value": "/etc/postgres/ldap/ca.crt"\n },\n {\n "name": "LC_ALL",\n "value": "en_US.utf-8"\n },\n {\n "name": "LANG",\n "value": "en_US.utf-8"\n },\n {\n "name": "PATRONI_NAME",\n "valueFrom": {\n "fieldRef": {\n "apiVersion": "v1",\n "fieldPath": "metadata.name"\n }\n }\n },\n {\n "name": "PATRONI_KUBERNETES_POD_IP",\n "valueFrom": {\n "fieldRef": {\n "apiVersion": "v1",\n "fieldPath": "status.podIP"\n }\n }\n },\n {\n "name": "PATRONI_KUBERNETES_PORTS",\n "value": "- name: postgres\\n port: 5432\\n protocol: TCP\\n"\n },\n {\n "name": "PATRONI_POSTGRESQL_CONNECT_ADDRESS",\n "value": "$(PATRONI_NAME).additional-volumes-pods:5432"\n },\n {\n "name": "PATRONI_POSTGRESQL_LISTEN",\n "value": "*:5432"\n },\n {\n "name": "PATRONI_POSTGRESQL_CONFIG_DIR",\n "value": "/pgdata/pg18"\n },\n {\n "name": "PATRONI_POSTGRESQL_DATA_DIR",\n "value": "/pgdata/pg18"\n },\n {\n "name": "PATRONI_RESTAPI_CONNECT_ADDRESS",\n "value": "$(PATRONI_NAME).additional-volumes-pods:8008"\n },\n {\n "name": "PATRONI_RESTAPI_LISTEN",\n "value": "*:8008"\n },\n {\n "name": "PATRONICTL_CONFIG_FILE",\n "value": "/etc/patroni"\n },\n {\n "name": "LD_PRELOAD",\n "value": "/usr/lib64/libnss_wrapper.so"\n },\n {\n "name": "NSS_WRAPPER_PASSWD",\n "value": "/tmp/nss_wrapper/postgres/passwd"\n },\n {\n "name": "NSS_WRAPPER_GROUP",\n "value": "/tmp/nss_wrapper/postgres/group"\n }\n ],\n "image": "docker.io/perconalab/percona-postgresql-operator:main-ppg18-postgres",\n "imagePullPolicy": "Always",\n "livenessProbe": {\n "exec": {\n "command": [\n "bash",\n "-c",\n "/opt/crunchy/bin/postgres-liveness-check.sh"\n ]\n },\n "failureThreshold": 3,\n "initialDelaySeconds": 3,\n "periodSeconds": 10,\n "successThreshold": 1,\n "timeoutSeconds": 5\n },\n "name": "database",\n "ports": [\n {\n "containerPort": 5432,\n "name": "postgres",\n "protocol": "TCP"\n }\n ],\n "readinessProbe": {\n "exec": {\n "command": [\n "bash",\n "-c",\n "/opt/crunchy/bin/postgres-readiness-check.sh"\n ]\n },\n "failureThreshold": 3,\n "initialDelaySeconds": 3,\n "periodSeconds": 10,\n "successThreshold": 1,\n "timeoutSeconds": 5\n },\n "resources": {},\n "securityContext": {\n "allowPrivilegeEscalation": false,\n "capabilities": {\n "drop": [\n "ALL"\n ]\n },\n "privileged": false,\n "readOnlyRootFilesystem": true,\n "runAsNonRoot": true,\n "seccompProfile": {\n "type": "RuntimeDefault"\n }\n },\n "terminationMessagePath": "/dev/termination-log",\n "terminationMessagePolicy": "File",\n "volumeMounts": [\n {\n "mountPath": "/pgconf/tls",\n "name": "cert-volume",\n "readOnly": true\n },\n {\n "mountPath": "/pgdata",\n "name": "postgres-data"\n },\n {\n "mountPath": "/etc/database-containerinfo",\n "name": "database-containerinfo",\n "readOnly": true\n },\n {\n "mountPath": "/tablespaces/myts",\n "name": "tablespace-myts"\n },\n {\n "mountPath": "/pgwal",\n "name": "postgres-wal"\n },\n {\n "mountPath": "/pglogs",\n "name": "postgres-logs"\n },\n {\n "mountPath": "/etc/pgbackrest/conf.d",\n "name": "pgbackrest-config",\n "readOnly": true\n },\n {\n "mountPath": "/etc/patroni",\n "name": "patroni-config",\n "readOnly": true\n },\n {\n "mountPath": "/opt/crunchy",\n "name": "crunchy-bin"\n },\n {\n "mountPath": "/tmp",\n "name": "tmp"\n },\n {\n "mountPath": "/dev/shm",\n "name": "dshm"\n }\n ]\n },\n {\n "command": [\n "bash",\n "-ceu",\n "--",\n "monitor() {\\n# Parameters for curl when managing autogrow annotation.\\nAPISERVER=\\"https://kubernetes.default.svc\\"\\nSERVICEACCOUNT=\\"/var/run/secrets/kubernetes.io/serviceaccount\\"\\nNAMESPACE=$(cat ${SERVICEACCOUNT}/namespace)\\nTOKEN=$(cat ${SERVICEACCOUNT}/token)\\nCACERT=${SERVICEACCOUNT}/ca.crt\\n\\ndeclare -r directory=\\"/pgconf/tls\\"\\nexec {fd}\\u003c\\u003e \\u003c(:||:)\\nwhile read -r -t 5 -u \\"${fd}\\" ||:; do\\n # Manage replication certificate.\\n if [[ \\"${directory}\\" -nt \\"/proc/self/fd/${fd}\\" ]] \\u0026\\u0026\\n install -D --mode=0600 -t \\"/tmp/replication\\" \\"${directory}\\"/{replication/tls.crt,replication/tls.key,replication/ca.crt} \\u0026\\u0026\\n pkill -HUP --exact --parent=1 postgres\\n then\\n exec {fd}\\u003e\\u0026- \\u0026\\u0026 exec {fd}\\u003c\\u003e \\u003c(:||:)\\n stat --format=\'Loaded certificates dated %y\' \\"${directory}\\"\\n fi\\n\\ndone\\n}; export -f monitor; exec -a \\"$0\\" bash -ceu monitor",\n "replication-cert-copy"\n ],\n "image": "docker.io/perconalab/percona-postgresql-operator:main-ppg18-postgres",\n "imagePullPolicy": "Always",\n "name": "replication-cert-copy",\n "resources": {},\n "securityContext": {\n "allowPrivilegeEscalation": false,\n "capabilities": {\n "drop": [\n "ALL"\n ]\n },\n "privileged": false,\n "readOnlyRootFilesystem": true,\n "runAsNonRoot": true,\n "seccompProfile": {\n "type": "RuntimeDefault"\n }\n },\n "terminationMessagePath": "/dev/termination-log",\n "terminationMessagePolicy": "File",\n "volumeMounts": [\n {\n "mountPath": "/pgconf/tls",\n "name": "cert-volume",\n "readOnly": true\n },\n {\n "mountPath": "/pgdata",\n "name": "postgres-data"\n },\n {\n "mountPath": "/tmp",\n "name": "tmp"\n }\n ]\n },\n {\n "args": [\n "fluent-bit"\n ],\n "command": [\n "/opt/crunchy/logcollector/entrypoint.sh"\n ],\n "env": [\n {\n "name": "PG_LOG_DIR",\n "value": "/pgdata/pg18/log"\n },\n {\n "name": "PGBACKREST_LOG_DIR",\n "value": "/pgdata/pgbackrest/log"\n },\n {\n "name": "POD_NAMESPACE",\n "valueFrom": {\n "fieldRef": {\n "apiVersion": "v1",\n "fieldPath": "metadata.namespace"\n }\n }\n },\n {\n "name": "POD_NAME",\n "valueFrom": {\n "fieldRef": {\n "apiVersion": "v1",\n "fieldPath": "metadata.name"\n }\n }\n }\n ],\n "image": "docker.io/perconalab/fluentbit:main-logcollector",\n "imagePullPolicy": "IfNotPresent",\n "name": "logs",\n "resources": {},\n "securityContext": {\n "allowPrivilegeEscalation": false,\n "capabilities": {\n "drop": [\n "ALL"\n ]\n },\n "privileged": false,\n "runAsGroup": 26,\n "runAsNonRoot": true,\n "runAsUser": 26,\n "seccompProfile": {\n "type": "RuntimeDefault"\n }\n },\n "terminationMessagePath": "/dev/termination-log",\n "terminationMessagePolicy": "File",\n "volumeMounts": [\n {\n "mountPath": "/pgdata",\n "name": "postgres-data"\n },\n {\n "mountPath": "/opt/crunchy",\n "name": "crunchy-bin"\n },\n {\n "mountPath": "/tmp",\n "name": "tmp"\n }\n ]\n },\n {\n "args": [\n "logrotate"\n ],\n "command": [\n "/opt/crunchy/logcollector/entrypoint.sh"\n ],\n "env": [\n {\n "name": "POD_NAMESPACE",\n "valueFrom": {\n "fieldRef": {\n "apiVersion": "v1",\n "fieldPath": "metadata.namespace"\n }\n }\n },\n {\n "name": "POD_NAME",\n "valueFrom": {\n "fieldRef": {\n "apiVersion": "v1",\n "fieldPath": "metadata.name"\n }\n }\n },\n {\n "name": "LOGROTATE_SCHEDULE",\n "value": "0 0 * * *"\n },\n {\n "name": "LD_PRELOAD",\n "value": "/tmp/nss_wrapper/libnss_wrapper.so"\n },\n {\n "name": "NSS_WRAPPER_PASSWD",\n "value": "/tmp/nss_wrapper/postgres/passwd"\n },\n {\n "name": "NSS_WRAPPER_GROUP",\n "value": "/tmp/nss_wrapper/postgres/group"\n }\n ],\n "image": "docker.io/perconalab/fluentbit:main-logcollector",\n "imagePullPolicy": "IfNotPresent",\n "name": "logrotate",\n "resources": {},\n "securityContext": {\n "allowPrivilegeEscalation": false,\n "capabilities": {\n "drop": [\n "ALL"\n ]\n },\n "privileged": false,\n "runAsGroup": 26,\n "runAsNonRoot": true,\n "runAsUser": 26,\n "seccompProfile": {\n "type": "RuntimeDefault"\n }\n },\n "terminationMessagePath": "/dev/termination-log",\n "terminationMessagePolicy": "File",\n "volumeMounts": [\n {\n "mountPath": "/pgdata",\n "name": "postgres-data"\n },\n {\n "mountPath": "/opt/crunchy",\n "name": "crunchy-bin"\n },\n {\n "mountPath": "/tmp",\n "name": "tmp"\n }\n ]\n },\n {\n "command": [\n "pgbackrest",\n "server"\n ],\n "env": [\n {\n "name": "LD_PRELOAD",\n "value": "/usr/lib64/libnss_wrapper.so"\n },\n {\n "name": "NSS_WRAPPER_PASSWD",\n "value": "/tmp/nss_wrapper/postgres/passwd"\n },\n {\n "name": "NSS_WRAPPER_GROUP",\n "value": "/tmp/nss_wrapper/postgres/group"\n }\n ],\n "image": "docker.io/perconalab/percona-postgresql-operator:main-pgbackrest18",\n "imagePullPolicy": "Always",\n "livenessProbe": {\n "exec": {\n "command": [\n "pgbackrest",\n "server-ping"\n ]\n },\n "failureThreshold": 3,\n "periodSeconds": 10,\n "successThreshold": 1,\n "timeoutSeconds": 1\n },\n "name": "pgbackrest",\n "resources": {},\n "securityContext": {\n "allowPrivilegeEscalation": false,\n "capabilities": {\n "drop": [\n "ALL"\n ]\n },\n "privileged": false,\n "readOnlyRootFilesystem": true,\n "runAsNonRoot": true,\n "seccompProfile": {\n "type": "RuntimeDefault"\n }\n },\n "terminationMessagePath": "/dev/termination-log",\n "terminationMessagePolicy": "File",\n "volumeMounts": [\n {\n "mountPath": "/etc/pgbackrest/server",\n "name": "pgbackrest-server",\n "readOnly": true\n },\n {\n "mountPath": "/pgdata",\n "name": "postgres-data"\n },\n {\n "mountPath": "/tablespaces/myts",\n "name": "tablespace-myts"\n },\n {\n "mountPath": "/pgwal",\n "name": "postgres-wal"\n },\n {\n "mountPath": "/etc/pgbackrest/conf.d",\n "name": "pgbackrest-config",\n "readOnly": true\n },\n {\n "mountPath": "/tmp",\n "name": "tmp"\n }\n ]\n },\n {\n "command": [\n "bash",\n "-ceu",\n "--",\n "monitor() {\\nexec {fd}\\u003c\\u003e \\u003c(:||:)\\nuntil read -r -t 5 -u \\"${fd}\\"; do\\n if\\n [[ \\"${filename}\\" -nt \\"/proc/self/fd/${fd}\\" ]] \\u0026\\u0026\\n pkill -HUP --exact --parent=0 pgbackrest\\n then\\n exec {fd}\\u003e\\u0026- \\u0026\\u0026 exec {fd}\\u003c\\u003e \\u003c(:||:)\\n stat --dereference --format=\'Loaded configuration dated %y\' \\"${filename}\\"\\n elif\\n { [[ \\"${directory}\\" -nt \\"/proc/self/fd/${fd}\\" ]] ||\\n [[ \\"${authority}\\" -nt \\"/proc/self/fd/${fd}\\" ]]\\n } \\u0026\\u0026\\n pkill -HUP --exact --parent=0 pgbackrest\\n then\\n exec {fd}\\u003e\\u0026- \\u0026\\u0026 exec {fd}\\u003c\\u003e \\u003c(:||:)\\n stat --format=\'Loaded certificates dated %y\' \\"${directory}\\"\\n fi\\ndone\\n}; export directory=\\"$1\\" authority=\\"$2\\" filename=\\"$3\\"; export -f monitor; exec -a \\"$0\\" bash -ceu monitor",\n "pgbackrest-config",\n "/etc/pgbackrest/server",\n "/etc/pgbackrest/conf.d/~postgres-operator/tls-ca.crt",\n "/etc/pgbackrest/conf.d/~postgres-operator_server.conf"\n ],\n "image": "docker.io/perconalab/percona-postgresql-operator:main-pgbackrest18",\n "imagePullPolicy": "Always",\n "name": "pgbackrest-config",\n "resources": {},\n "securityContext": {\n "allowPrivilegeEscalation": false,\n "capabilities": {\n "drop": [\n "ALL"\n ]\n },\n "privileged": false,\n "readOnlyRootFilesystem": true,\n "runAsNonRoot": true,\n "seccompProfile": {\n "type": "RuntimeDefault"\n }\n },\n "terminationMessagePath": "/dev/termination-log",\n "terminationMessagePolicy": "File",\n "volumeMounts": [\n {\n "mountPath": "/etc/pgbackrest/server",\n "name": "pgbackrest-server",\n "readOnly": true\n },\n {\n "mountPath": "/etc/pgbackrest/conf.d",\n "name": "pgbackrest-config",\n "readOnly": true\n },\n {\n "mountPath": "/tmp",\n "name": "tmp"\n }\n ]\n }\n ],\n "dnsPolicy": "ClusterFirst",\n "enableServiceLinks": false,\n "initContainers": [\n {\n "command": [\n "/usr/local/bin/init-entrypoint.sh"\n ],\n "image": "docker.io/perconalab/percona-postgresql-operator:PR-1760-4947a0272",\n "imagePullPolicy": "Always",\n "name": "database-init",\n "resources": {},\n "securityContext": {\n "allowPrivilegeEscalation": false,\n "capabilities": {\n "drop": [\n "ALL"\n ]\n },\n "privileged": false,\n "readOnlyRootFilesystem": true,\n "runAsNonRoot": true,\n "seccompProfile": {\n "type": "RuntimeDefault"\n }\n },\n "terminationMessagePath": "/dev/termination-log",\n "terminationMessagePolicy": "File",\n "volumeMounts": [\n {\n "mountPath": "/opt/crunchy",\n "name": "crunchy-bin"\n },\n {\n "mountPath": "/tmp",\n "name": "tmp"\n }\n ]\n },\n {\n "command": [\n "bash",\n "-ceu",\n "--",\n "declare -r expected_major_version=\\"$1\\" pgwal_directory=\\"$2\\" pgbrLog_directory=\\"$3\\"\\npermissions() { while [[ -n \\"$1\\" ]]; do set \\"${1%/*}\\" \\"$@\\"; done; shift; stat -Lc \'%A %4u %4g %n\' \\"$@\\"; }\\nhalt() { local rc=$?; \\u003e\\u00262 echo \\"$@\\"; exit \\"${rc/#0/1}\\"; }\\nresults() { printf \'::postgres-operator: %s::%s\\\\n\' \\"$@\\"; }\\nrecreate() (\\n local tmp; tmp=$(mktemp -d -p \\"${1%/*}\\"); GLOBIGNORE=\'.:..\'; set -x\\n chmod \\"$2\\" \\"${tmp}\\"; mv \\"$1\\"/* \\"${tmp}\\"; rmdir \\"$1\\"; mv \\"${tmp}\\" \\"$1\\"\\n)\\nsafelink() (\\n local desired=\\"$1\\" name=\\"$2\\" current\\n current=$(realpath \\"${name}\\")\\n if [[ \\"${current}\\" == \\"${desired}\\" ]]; then return; fi\\n set -x; mv --no-target-directory \\"${current}\\" \\"${desired}\\"\\n ln --no-dereference --force --symbolic \\"${desired}\\" \\"${name}\\"\\n)\\necho Initializing ...\\nresults \'uid\' \\"$(id -u ||:)\\" \'gid\' \\"$(id -G ||:)\\"\\nif [[ \\"${pgwal_directory}\\" == *\\"pgwal/\\"* ]] \\u0026\\u0026 [[ ! -d \\"/pgwal/pgbackrest-spool\\" ]];then rm -rf \\"/pgdata/pgbackrest-spool\\" \\u0026\\u0026 mkdir -p \\"/pgwal/pgbackrest-spool\\" \\u0026\\u0026 ln --force --symbolic \\"/pgwal/pgbackrest-spool\\" \\"/pgdata/pgbackrest-spool\\";fi\\nif [[ ! -e \\"/pgdata/pgbackrest-spool\\" ]];then rm -rf /pgdata/pgbackrest-spool;fi\\nif [[ ! -e \\"/pgdata/logs/postgres\\" ]];then rm -rf \\"/pgdata/logs/postgres\\";fi\\nif [[ ! -e \\"${pgbrLog_directory}\\" ]];then rm -rf \\"${pgbrLog_directory}\\";fi\\nif [[ -d \\"/pglogs\\" ]];then install --directory --mode=0775 \\"/pglogs/postgres\\" \\"/pglogs/pgbackrest/log\\";if [[ ! -L \\"/pgdata/logs/postgres\\" ]];then mkdir -p \\"/pgdata/logs\\" \\u0026\\u0026 rm -rf \\"/pgdata/logs/postgres\\" \\u0026\\u0026 ln --symbolic \\"/pglogs/postgres\\" \\"/pgdata/logs/postgres\\";fi;if [[ ! -L \\"${pgbrLog_directory}\\" ]];then mkdir -p \\"${pgbrLog_directory%/*}\\" \\u0026\\u0026 rm -rf \\"${pgbrLog_directory}\\" \\u0026\\u0026 ln --symbolic \\"/pglogs/pgbackrest/log\\" \\"${pgbrLog_directory}\\";fi;fi\\nresults \'postgres path\' \\"$(command -v postgres ||:)\\"\\nresults \'postgres version\' \\"${postgres_version:=$(postgres --version ||:)}\\"\\n[[ \\"${postgres_version}\\" =~ \\") ${expected_major_version}\\"($|[^0-9]) ]] ||\\nhalt Expected PostgreSQL version \\"${expected_major_version}\\"\\nresults \'config directory\' \\"${PGDATA:?}\\"\\npostgres_data_directory=$([[ -d \\"${PGDATA}\\" ]] \\u0026\\u0026 postgres -C data_directory || echo \\"${PGDATA}\\")\\nresults \'data directory\' \\"${postgres_data_directory}\\"\\n[[ \\"${postgres_data_directory}\\" == \\"${PGDATA}\\" ]] ||\\nhalt Expected matching config and data directories\\nbootstrap_dir=\\"${postgres_data_directory}_bootstrap\\"\\n[[ -d \\"${bootstrap_dir}\\" ]] \\u0026\\u0026 results \'bootstrap directory\' \\"${bootstrap_dir}\\"\\n[[ -d \\"${bootstrap_dir}\\" ]] \\u0026\\u0026 postgres_data_directory=\\"${bootstrap_dir}\\"\\nif [[ ! -e \\"${postgres_data_directory}\\" || -O \\"${postgres_data_directory}\\" ]]; then\\ninstall --directory --mode=0700 \\"${postgres_data_directory}\\"\\nelif [[ -w \\"${postgres_data_directory}\\" \\u0026\\u0026 -g \\"${postgres_data_directory}\\" ]]; then\\nrecreate \\"${postgres_data_directory}\\" \'0700\'\\nelse (halt Permissions!); fi ||\\nhalt \\"$(permissions \\"${postgres_data_directory}\\" ||:)\\"\\nresults \'pgBackRest log directory\' \\"${pgbrLog_directory}\\"\\ninstall --directory --mode=0775 \\"${pgbrLog_directory}\\" ||\\nhalt \\"$(permissions \\"${pgbrLog_directory}\\" ||:)\\"\\ninstall -D --mode=0600 -t \\"/tmp/replication\\" \\"/pgconf/tls/replication\\"/{tls.crt,tls.key,ca.crt}\\n\\ntablespace_dir=/tablespaces/myts/data\\nif [[ ! -e \\"${tablespace_dir}\\" || -O \\"${tablespace_dir}\\" ]]; then\\ninstall --directory --mode=0700 \\"${tablespace_dir}\\"\\nelif [[ -w \\"${tablespace_dir}\\" \\u0026\\u0026 -g \\"${tablespace_dir}\\" ]]; then\\nrecreate \\"${tablespace_dir}\\" \'0700\'\\nelse (halt Permissions!); fi ||\\nhalt \\"$(permissions \\"${tablespace_dir}\\" ||:)\\"\\n[[ -f \\"${postgres_data_directory}/PG_VERSION\\" ]] || exit 0\\nresults \'data version\' \\"${postgres_data_version:=$(\\u003c \\"${postgres_data_directory}/PG_VERSION\\")}\\"\\n[[ \\"${postgres_data_version}\\" == \\"${expected_major_version}\\" ]] ||\\nhalt Expected PostgreSQL data version \\"${expected_major_version}\\"\\n[[ ! -f \\"${postgres_data_directory}/postgresql.conf\\" ]] \\u0026\\u0026\\ntouch \\"${postgres_data_directory}/postgresql.conf\\"\\nsafelink \\"${pgwal_directory}\\" \\"${postgres_data_directory}/pg_wal\\"\\nresults \'wal directory\' \\"$(realpath \\"${postgres_data_directory}/pg_wal\\" ||:)\\"\\nrm -f \\"${postgres_data_directory}/recovery.signal\\"",\n "startup",\n "18",\n "/pgwal/pg18_wal",\n "/pgdata/pgbackrest/log"\n ],\n "env": [\n {\n "name": "PGDATA",\n "value": "/pgdata/pg18"\n },\n {\n "name": "PGHOST",\n "value": "/tmp/postgres"\n },\n {\n "name": "PGPORT",\n "value": "5432"\n },\n {\n "name": "KRB5_CONFIG",\n "value": "/etc/postgres/krb5.conf"\n },\n {\n "name": "KRB5RCACHEDIR",\n "value": "/tmp"\n },\n {\n "name": "LDAPTLS_CACERT",\n "value": "/etc/postgres/ldap/ca.crt"\n },\n {\n "name": "LC_ALL",\n "value": "en_US.utf-8"\n },\n {\n "name": "LANG",\n "value": "en_US.utf-8"\n }\n ],\n "image": "docker.io/perconalab/percona-postgresql-operator:main-ppg18-postgres",\n "imagePullPolicy": "Always",\n "name": "postgres-startup",\n "resources": {},\n "securityContext": {\n "allowPrivilegeEscalation": false,\n "capabilities": {\n "drop": [\n "ALL"\n ]\n },\n "privileged": false,\n "readOnlyRootFilesystem": true,\n "runAsNonRoot": true,\n "seccompProfile": {\n "type": "RuntimeDefault"\n }\n },\n "terminationMessagePath": "/dev/termination-log",\n "terminationMessagePolicy": "File",\n "volumeMounts": [\n {\n "mountPath": "/pgconf/tls",\n "name": "cert-volume",\n "readOnly": true\n },\n {\n "mountPath": "/pgdata",\n "name": "postgres-data"\n },\n {\n "mountPath": "/tablespaces/myts",\n "name": "tablespace-myts"\n },\n {\n "mountPath": "/pgwal",\n "name": "postgres-wal"\n },\n {\n "mountPath": "/pglogs",\n "name": "postgres-logs"\n },\n {\n "mountPath": "/tmp",\n "name": "tmp"\n }\n ]\n },\n {\n "command": [\n "bash",\n "-c",\n "mkdir -p /tmp/nss_wrapper \\u0026\\u0026 { [[ -f /tmp/nss_wrapper/libnss_wrapper.so ]] || cp /usr/lib64/libnss_wrapper.so /tmp/nss_wrapper/libnss_wrapper.so; }"\n ],\n "image": "docker.io/perconalab/percona-postgresql-operator:main-ppg18-postgres",\n "imagePullPolicy": "Always",\n "name": "nss-wrapper-init-logcollector",\n "resources": {},\n "securityContext": {\n "allowPrivilegeEscalation": false,\n "capabilities": {\n "drop": [\n "ALL"\n ]\n },\n "privileged": false,\n "runAsGroup": 26,\n "runAsNonRoot": true,\n "runAsUser": 26,\n "seccompProfile": {\n "type": "RuntimeDefault"\n }\n },\n "terminationMessagePath": "/dev/termination-log",\n "terminationMessagePolicy": "File",\n "volumeMounts": [\n {\n "mountPath": "/tmp",\n "name": "tmp"\n }\n ]\n },\n {\n "command": [\n "bash",\n "-c",\n "export NSS_WRAPPER_SUBDIR=postgres CRUNCHY_NSS_USERNAME=postgres CRUNCHY_NSS_USER_DESC=\\"postgres\\" \\n# Define nss_wrapper directory and passwd \\u0026 group files that will be utilized by nss_wrapper. The\\n# nss_wrapper_env.sh script (which also sets these vars) isn\'t sourced here since the nss_wrapper\\n# has not yet been setup, and we therefore don\'t yet want the nss_wrapper vars in the environment.\\nmkdir -p /tmp/nss_wrapper\\nchmod g+rwx /tmp/nss_wrapper\\n\\nNSS_WRAPPER_DIR=\\"/tmp/nss_wrapper/${NSS_WRAPPER_SUBDIR}\\"\\nNSS_WRAPPER_PASSWD=\\"${NSS_WRAPPER_DIR}/passwd\\"\\nNSS_WRAPPER_GROUP=\\"${NSS_WRAPPER_DIR}/group\\"\\n\\n# create the nss_wrapper directory\\nmkdir -p \\"${NSS_WRAPPER_DIR}\\"\\n\\n# grab the current user ID and group ID\\nUSER_ID=$(id -u)\\nexport USER_ID\\nGROUP_ID=$(id -g)\\nexport GROUP_ID\\n\\n# get copies of the passwd and group files\\n[[ -f \\"${NSS_WRAPPER_PASSWD}\\" ]] || cp \\"/etc/passwd\\" \\"${NSS_WRAPPER_PASSWD}\\"\\n[[ -f \\"${NSS_WRAPPER_GROUP}\\" ]] || cp \\"/etc/group\\" \\"${NSS_WRAPPER_GROUP}\\"\\n\\n# if the username is missing from the passwd file, then add it\\nif [[ ! $(cat \\"${NSS_WRAPPER_PASSWD}\\") =~ ${CRUNCHY_NSS_USERNAME}:x:${USER_ID} ]]; then\\n echo \\"nss_wrapper: adding user\\"\\n passwd_tmp=\\"${NSS_WRAPPER_DIR}/passwd_tmp\\"\\n cp \\"${NSS_WRAPPER_PASSWD}\\" \\"${passwd_tmp}\\"\\n sed -i \\"/${CRUNCHY_NSS_USERNAME}:x:/d\\" \\"${passwd_tmp}\\"\\n # needed for OCP 4.x because crio updates /etc/passwd with an entry for USER_ID\\n sed -i \\"/${USER_ID}:x:/d\\" \\"${passwd_tmp}\\"\\n printf \'${CRUNCHY_NSS_USERNAME}:x:${USER_ID}:${GROUP_ID}:${CRUNCHY_NSS_USER_DESC}:${HOME}:/bin/bash\\\\n\' \\u003e\\u003e \\"${passwd_tmp}\\"\\n envsubst \\u003c \\"${passwd_tmp}\\" \\u003e \\"${NSS_WRAPPER_PASSWD}\\"\\n rm \\"${passwd_tmp}\\"\\nelse\\n echo \\"nss_wrapper: user exists\\"\\nfi\\n\\n# if the username (which will be the same as the group name) is missing from group file, then add it\\nif [[ ! $(cat \\"${NSS_WRAPPER_GROUP}\\") =~ ${CRUNCHY_NSS_USERNAME}:x:${USER_ID} ]]; then\\n echo \\"nss_wrapper: adding group\\"\\n group_tmp=\\"${NSS_WRAPPER_DIR}/group_tmp\\"\\n cp \\"${NSS_WRAPPER_GROUP}\\" \\"${group_tmp}\\"\\n sed -i \\"/${CRUNCHY_NSS_USERNAME}:x:/d\\" \\"${group_tmp}\\"\\n printf \'${CRUNCHY_NSS_USERNAME}:x:${USER_ID}:${CRUNCHY_NSS_USERNAME}\\\\n\' \\u003e\\u003e \\"${group_tmp}\\"\\n envsubst \\u003c \\"${group_tmp}\\" \\u003e \\"${NSS_WRAPPER_GROUP}\\"\\n rm \\"${group_tmp}\\"\\nelse\\n echo \\"nss_wrapper: group exists\\"\\nfi\\n\\n# export the nss_wrapper env vars\\n# define nss_wrapper directory and passwd \\u0026 group files that will be utilized by nss_wrapper\\nNSS_WRAPPER_DIR=\\"/tmp/nss_wrapper/${NSS_WRAPPER_SUBDIR}\\"\\nNSS_WRAPPER_PASSWD=\\"${NSS_WRAPPER_DIR}/passwd\\"\\nNSS_WRAPPER_GROUP=\\"${NSS_WRAPPER_DIR}/group\\"\\n\\nexport LD_PRELOAD=/usr/lib64/libnss_wrapper.so\\nexport NSS_WRAPPER_PASSWD=\\"${NSS_WRAPPER_PASSWD}\\"\\nexport NSS_WRAPPER_GROUP=\\"${NSS_WRAPPER_GROUP}\\"\\n\\necho \\"nss_wrapper: environment configured\\"\\n"\n ],\n "image": "docker.io/perconalab/percona-postgresql-operator:main-ppg18-postgres",\n "imagePullPolicy": "Always",\n "name": "nss-wrapper-init",\n "resources": {},\n "securityContext": {\n "allowPrivilegeEscalation": false,\n "capabilities": {\n "drop": [\n "ALL"\n ]\n },\n "privileged": false,\n "readOnlyRootFilesystem": true,\n "runAsNonRoot": true,\n "seccompProfile": {\n "type": "RuntimeDefault"\n }\n },\n "terminationMessagePath": "/dev/termination-log",\n "terminationMessagePolicy": "File",\n "volumeMounts": [\n {\n "mountPath": "/tmp",\n "name": "tmp"\n }\n ]\n }\n ],\n "restartPolicy": "Always",\n "schedulerName": "default-scheduler",\n "securityContext": {\n "fsGroup": 26,\n "fsGroupChangePolicy": "OnRootMismatch"\n },\n "serviceAccount": "additional-volumes-instance",\n "serviceAccountName": "additional-volumes-instance",\n "shareProcessNamespace": true,\n "terminationGracePeriodSeconds": 30,\n "topologySpreadConstraints": [\n {\n "labelSelector": {\n "matchExpressions": [\n {\n "key": "postgres-operator.crunchydata.com/data",\n "operator": "In",\n "values": [\n "postgres",\n "pgbackrest"\n ]\n }\n ],\n "matchLabels": {\n "postgres-operator.crunchydata.com/cluster": "additional-volumes"\n }\n },\n "maxSkew": 1,\n "topologyKey": "kubernetes.io/hostname",\n "whenUnsatisfiable": "ScheduleAnyway"\n },\n {\n "labelSelector": {\n "matchExpressions": [\n {\n "key": "postgres-operator.crunchydata.com/data",\n "operator": "In",\n "values": [\n "postgres",\n "pgbackrest"\n ]\n }\n ],\n "matchLabels": {\n "postgres-operator.crunchydata.com/cluster": "additional-volumes"\n }\n },\n "maxSkew": 1,\n "topologyKey": "topology.kubernetes.io/zone",\n "whenUnsatisfiable": "ScheduleAnyway"\n }\n ],\n "volumes": [\n {\n "name": "cert-volume",\n "projected": {\n "defaultMode": 384,\n "sources": [\n {\n "secret": {\n "items": [\n {\n "key": "tls.crt",\n "path": "tls.crt"\n },\n {\n "key": "tls.key",\n "path": "tls.key"\n },\n {\n "key": "ca.crt",\n "path": "ca.crt"\n }\n ],\n "name": "additional-volumes-cluster-cert"\n }\n },\n {\n "secret": {\n "items": [\n {\n "key": "tls.crt",\n "path": "replication/tls.crt"\n },\n {\n "key": "tls.key",\n "path": "replication/tls.key"\n },\n {\n "key": "ca.crt",\n "path": "replication/ca.crt"\n }\n ],\n "name": "additional-volumes-replication-cert"\n }\n }\n ]\n }\n },\n {\n "name": "postgres-data",\n "persistentVolumeClaim": {\n "claimName": "additional-volumes-instance1-n8pg-pgdata"\n }\n },\n {\n "downwardAPI": {\n "defaultMode": 420,\n "items": [\n {\n "path": "cpu_limit",\n "resourceFieldRef": {\n "containerName": "database",\n "divisor": "1m",\n "resource": "limits.cpu"\n }\n },\n {\n "path": "cpu_request",\n "resourceFieldRef": {\n "containerName": "database",\n "divisor": "1m",\n "resource": "requests.cpu"\n }\n },\n {\n "path": "mem_limit",\n "resourceFieldRef": {\n "containerName": "database",\n "divisor": "1Mi",\n "resource": "limits.memory"\n }\n },\n {\n "path": "mem_request",\n "resourceFieldRef": {\n "containerName": "database",\n "divisor": "1Mi",\n "resource": "requests.memory"\n }\n },\n {\n "fieldRef": {\n "apiVersion": "v1",\n "fieldPath": "metadata.labels"\n },\n "path": "labels"\n },\n {\n "fieldRef": {\n "apiVersion": "v1",\n "fieldPath": "metadata.annotations"\n },\n "path": "annotations"\n }\n ]\n },\n "name": "database-containerinfo"\n },\n {\n "name": "tablespace-myts",\n "persistentVolumeClaim": {\n "claimName": "additional-volumes-instance1-n8pg-myts-tablespace"\n }\n },\n {\n "name": "postgres-wal",\n "persistentVolumeClaim": {\n "claimName": "additional-volumes-instance1-n8pg-pgwal"\n }\n },\n {\n "name": "postgres-logs",\n "persistentVolumeClaim": {\n "claimName": "additional-volumes-instance1-n8pg-pglogs"\n }\n },\n {\n "name": "pgbackrest-server",\n "projected": {\n "defaultMode": 420,\n "sources": [\n {\n "secret": {\n "items": [\n {\n "key": "pgbackrest-server.crt",\n "path": "server-tls.crt"\n },\n {\n "key": "pgbackrest-server.key",\n "mode": 384,\n "path": "server-tls.key"\n }\n ],\n "name": "additional-volumes-instance1-n8pg-certs"\n }\n }\n ]\n }\n },\n {\n "name": "pgbackrest-config",\n "projected": {\n "defaultMode": 420,\n "sources": [\n {\n "configMap": {\n "items": [\n {\n "key": "pgbackrest_instance.conf",\n "path": "pgbackrest_instance.conf"\n },\n {\n "key": "config-hash",\n "path": "config-hash"\n },\n {\n "key": "pgbackrest-server.conf",\n "path": "~postgres-operator_server.conf"\n }\n ],\n "name": "additional-volumes-pgbackrest-config"\n }\n },\n {\n "secret": {\n "items": [\n {\n "key": "pgbackrest.ca-roots",\n "path": "~postgres-operator/tls-ca.crt"\n },\n {\n "key": "pgbackrest-client.crt",\n "path": "~postgres-operator/client-tls.crt"\n },\n {\n "key": "pgbackrest-client.key",\n "mode": 384,\n "path": "~postgres-operator/client-tls.key"\n }\n ],\n "name": "additional-volumes-pgbackrest"\n }\n }\n ]\n }\n },\n {\n "name": "patroni-config",\n "projected": {\n "defaultMode": 420,\n "sources": [\n {\n "configMap": {\n "items": [\n {\n "key": "patroni.yaml",\n "path": "~postgres-operator_cluster.yaml"\n }\n ],\n "name": "additional-volumes-config"\n }\n },\n {\n "configMap": {\n "items": [\n {\n "key": "patroni.yaml",\n "path": "~postgres-operator_instance.yaml"\n }\n ],\n "name": "additional-volumes-instance1-n8pg-config"\n }\n },\n {\n "secret": {\n "items": [\n {\n "key": "patroni.ca-roots",\n "path": "~postgres-operator/patroni.ca-roots"\n },\n {\n "key": "patroni.crt-combined",\n "path": "~postgres-operator/patroni.crt+key"\n }\n ],\n "name": "additional-volumes-instance1-n8pg-certs"\n }\n }\n ]\n }\n },\n {\n "emptyDir": {},\n "name": "crunchy-bin"\n },\n {\n "emptyDir": {\n "sizeLimit": "2Gi"\n },\n "name": "tmp"\n },\n {\n "emptyDir": {\n "medium": "Memory"\n },\n "name": "dshm"\n }\n ]\n }\n },\n "updateStrategy": {\n "type": "OnDelete"\n }\n },\n "status": {\n "availableReplicas": 1,\n "collisionCount": 0,\n "currentReplicas": 1,\n "currentRevision": "additional-volumes-instance1-n8pg-7f58bcfdb6",\n "observedGeneration": 1,\n "readyReplicas": 1,\n "replicas": 1,\n "updateRevision": "additional-volumes-instance1-n8pg-7f58bcfdb6",\n "updatedReplicas": 1\n }\n },\n {\n "apiVersion": "apps/v1",\n "kind": "StatefulSet",\n "metadata": {\n "annotations": {\n "pgv2.percona.com/logcollector-config-hash": "d9a116e02b828bdc02165325e92799d82961fb499041814c7c765d0ce263ce77"\n },\n "creationTimestamp": "2026-08-19T18:12:05Z",\n "generation": 1,\n "labels": {\n "app.kubernetes.io/component": "pg",\n "app.kubernetes.io/instance": "additional-volumes",\n "app.kubernetes.io/managed-by": "percona-postgresql-operator",\n "app.kubernetes.io/name": "percona-postgresql",\n "app.kubernetes.io/part-of": "percona-postgresql",\n "pgv2.percona.com/version": "3.2.0",\n "postgres-operator.crunchydata.com/cluster": "additional-volumes",\n "postgres-operator.crunchydata.com/data": "postgres",\n "postgres-operator.crunchydata.com/instance": "additional-volumes-instance1-xvbw",\n "postgres-operator.crunchydata.com/instance-set": "instance1"\n },\n "name": "additional-volumes-instance1-xvbw",\n "namespace": "kuttl-test-intimate-garfish",\n "ownerReferences": [\n {\n "apiVersion": "upstream.pgv2.percona.com/v1beta1",\n "blockOwnerDeletion": true,\n "controller": true,\n "kind": "PostgresCluster",\n "name": "additional-volumes",\n "uid": "b795649f-550b-4283-b2ef-eca573235e5a"\n }\n ],\n "resourceVersion": "1787163193859951017",\n "uid": "ff0eabc4-a14f-43d4-85da-3372e3c9c0da"\n },\n "spec": {\n "persistentVolumeClaimRetentionPolicy": {\n "whenDeleted": "Retain",\n "whenScaled": "Retain"\n },\n "podManagementPolicy": "OrderedReady",\n "replicas": 1,\n "revisionHistoryLimit": 0,\n "selector": {\n "matchLabels": {\n "postgres-operator.crunchydata.com/cluster": "additional-volumes",\n "postgres-operator.crunchydata.com/instance": "additional-volumes-instance1-xvbw",\n "postgres-operator.crunchydata.com/instance-set": "instance1"\n }\n },\n "serviceName": "additional-volumes-pods",\n "template": {\n "metadata": {\n "annotations": {\n "kubectl.kubernetes.io/default-container": "database",\n "pgv2.percona.com/logcollector-config-hash": "d9a116e02b828bdc02165325e92799d82961fb499041814c7c765d0ce263ce77"\n },\n "creationTimestamp": null,\n "labels": {\n "app.kubernetes.io/component": "pg",\n "app.kubernetes.io/instance": "additional-volumes",\n "app.kubernetes.io/managed-by": "percona-postgresql-operator",\n "app.kubernetes.io/name": "percona-postgresql",\n "app.kubernetes.io/part-of": "percona-postgresql",\n "pgv2.percona.com/version": "3.2.0",\n "postgres-operator.crunchydata.com/cluster": "additional-volumes",\n "postgres-operator.crunchydata.com/data": "postgres",\n "postgres-operator.crunchydata.com/instance": "additional-volumes-instance1-xvbw",\n "postgres-operator.crunchydata.com/instance-set": "instance1",\n "postgres-operator.crunchydata.com/patroni": "additional-volumes-ha"\n }\n },\n "spec": {\n "affinity": {\n "podAntiAffinity": {\n "preferredDuringSchedulingIgnoredDuringExecution": [\n {\n "podAffinityTerm": {\n "labelSelector": {\n "matchLabels": {\n "postgres-operator.crunchydata.com/data": "postgres"\n }\n },\n "topologyKey": "kubernetes.io/hostname"\n },\n "weight": 1\n }\n ]\n }\n },\n "containers": [\n {\n "command": [\n "/opt/crunchy/bin/postgres-entrypoint.sh",\n "patroni",\n "/etc/patroni"\n ],\n "env": [\n {\n "name": "PGDATA",\n "value": "/pgdata/pg18"\n },\n {\n "name": "PGHOST",\n "value": "/tmp/postgres"\n },\n {\n "name": "PGPORT",\n "value": "5432"\n },\n {\n "name": "KRB5_CONFIG",\n "value": "/etc/postgres/krb5.conf"\n },\n {\n "name": "KRB5RCACHEDIR",\n "value": "/tmp"\n },\n {\n "name": "LDAPTLS_CACERT",\n "value": "/etc/postgres/ldap/ca.crt"\n },\n {\n "name": "LC_ALL",\n "value": "en_US.utf-8"\n },\n {\n "name": "LANG",\n "value": "en_US.utf-8"\n },\n {\n "name": "PATRONI_NAME",\n "valueFrom": {\n "fieldRef": {\n "apiVersion": "v1",\n "fieldPath": "metadata.name"\n }\n }\n },\n {\n "name": "PATRONI_KUBERNETES_POD_IP",\n "valueFrom": {\n "fieldRef": {\n "apiVersion": "v1",\n "fieldPath": "status.podIP"\n }\n }\n },\n {\n "name": "PATRONI_KUBERNETES_PORTS",\n "value": "- name: postgres\\n port: 5432\\n protocol: TCP\\n"\n },\n {\n "name": "PATRONI_POSTGRESQL_CONNECT_ADDRESS",\n "value": "$(PATRONI_NAME).additional-volumes-pods:5432"\n },\n {\n "name": "PATRONI_POSTGRESQL_LISTEN",\n "value": "*:5432"\n },\n {\n "name": "PATRONI_POSTGRESQL_CONFIG_DIR",\n "value": "/pgdata/pg18"\n },\n {\n "name": "PATRONI_POSTGRESQL_DATA_DIR",\n "value": "/pgdata/pg18"\n },\n {\n "name": "PATRONI_RESTAPI_CONNECT_ADDRESS",\n "value": "$(PATRONI_NAME).additional-volumes-pods:8008"\n },\n {\n "name": "PATRONI_RESTAPI_LISTEN",\n "value": "*:8008"\n },\n {\n "name": "PATRONICTL_CONFIG_FILE",\n "value": "/etc/patroni"\n },\n {\n "name": "LD_PRELOAD",\n "value": "/usr/lib64/libnss_wrapper.so"\n },\n {\n "name": "NSS_WRAPPER_PASSWD",\n "value": "/tmp/nss_wrapper/postgres/passwd"\n },\n {\n "name": "NSS_WRAPPER_GROUP",\n "value": "/tmp/nss_wrapper/postgres/group"\n }\n ],\n "image": "docker.io/perconalab/percona-postgresql-operator:main-ppg18-postgres",\n "imagePullPolicy": "Always",\n "livenessProbe": {\n "exec": {\n "command": [\n "bash",\n "-c",\n "/opt/crunchy/bin/postgres-liveness-check.sh"\n ]\n },\n "failureThreshold": 3,\n "initialDelaySeconds": 3,\n "periodSeconds": 10,\n "successThreshold": 1,\n "timeoutSeconds": 5\n },\n "name": "database",\n "ports": [\n {\n "containerPort": 5432,\n "name": "postgres",\n "protocol": "TCP"\n }\n ],\n "readinessProbe": {\n "exec": {\n "command": [\n "bash",\n "-c",\n "/opt/crunchy/bin/postgres-readiness-check.sh"\n ]\n },\n "failureThreshold": 3,\n "initialDelaySeconds": 3,\n "periodSeconds": 10,\n "successThreshold": 1,\n "timeoutSeconds": 5\n },\n "resources": {},\n "securityContext": {\n "allowPrivilegeEscalation": false,\n "capabilities": {\n "drop": [\n "ALL"\n ]\n },\n "privileged": false,\n "readOnlyRootFilesystem": true,\n "runAsNonRoot": true,\n "seccompProfile": {\n "type": "RuntimeDefault"\n }\n },\n "terminationMessagePath": "/dev/termination-log",\n "terminationMessagePolicy": "File",\n "volumeMounts": [\n {\n "mountPath": "/pgconf/tls",\n "name": "cert-volume",\n "readOnly": true\n },\n {\n "mountPath": "/pgdata",\n "name": "postgres-data"\n },\n {\n "mountPath": "/etc/database-containerinfo",\n "name": "database-containerinfo",\n "readOnly": true\n },\n {\n "mountPath": "/tablespaces/myts",\n "name": "tablespace-myts"\n },\n {\n "mountPath": "/pgwal",\n "name": "postgres-wal"\n },\n {\n "mountPath": "/pglogs",\n "name": "postgres-logs"\n },\n {\n "mountPath": "/etc/pgbackrest/conf.d",\n "name": "pgbackrest-config",\n "readOnly": true\n },\n {\n "mountPath": "/etc/patroni",\n "name": "patroni-config",\n "readOnly": true\n },\n {\n "mountPath": "/opt/crunchy",\n "name": "crunchy-bin"\n },\n {\n "mountPath": "/tmp",\n "name": "tmp"\n },\n {\n "mountPath": "/dev/shm",\n "name": "dshm"\n }\n ]\n },\n {\n "command": [\n "bash",\n "-ceu",\n "--",\n "monitor() {\\n# Parameters for curl when managing autogrow annotation.\\nAPISERVER=\\"https://kubernetes.default.svc\\"\\nSERVICEACCOUNT=\\"/var/run/secrets/kubernetes.io/serviceaccount\\"\\nNAMESPACE=$(cat ${SERVICEACCOUNT}/namespace)\\nTOKEN=$(cat ${SERVICEACCOUNT}/token)\\nCACERT=${SERVICEACCOUNT}/ca.crt\\n\\ndeclare -r directory=\\"/pgconf/tls\\"\\nexec {fd}\\u003c\\u003e \\u003c(:||:)\\nwhile read -r -t 5 -u \\"${fd}\\" ||:; do\\n # Manage replication certificate.\\n if [[ \\"${directory}\\" -nt \\"/proc/self/fd/${fd}\\" ]] \\u0026\\u0026\\n install -D --mode=0600 -t \\"/tmp/replication\\" \\"${directory}\\"/{replication/tls.crt,replication/tls.key,replication/ca.crt} \\u0026\\u0026\\n pkill -HUP --exact --parent=1 postgres\\n then\\n exec {fd}\\u003e\\u0026- \\u0026\\u0026 exec {fd}\\u003c\\u003e \\u003c(:||:)\\n stat --format=\'Loaded certificates dated %y\' \\"${directory}\\"\\n fi\\n\\ndone\\n}; export -f monitor; exec -a \\"$0\\" bash -ceu monitor",\n "replication-cert-copy"\n ],\n "image": "docker.io/perconalab/percona-postgresql-operator:main-ppg18-postgres",\n "imagePullPolicy": "Always",\n "name": "replication-cert-copy",\n "resources": {},\n "securityContext": {\n "allowPrivilegeEscalation": false,\n "capabilities": {\n "drop": [\n "ALL"\n ]\n },\n "privileged": false,\n "readOnlyRootFilesystem": true,\n "runAsNonRoot": true,\n "seccompProfile": {\n "type": "RuntimeDefault"\n }\n },\n "terminationMessagePath": "/dev/termination-log",\n "terminationMessagePolicy": "File",\n "volumeMounts": [\n {\n "mountPath": "/pgconf/tls",\n "name": "cert-volume",\n "readOnly": true\n },\n {\n "mountPath": "/pgdata",\n "name": "postgres-data"\n },\n {\n "mountPath": "/tmp",\n "name": "tmp"\n }\n ]\n },\n {\n "args": [\n "fluent-bit"\n ],\n "command": [\n "/opt/crunchy/logcollector/entrypoint.sh"\n ],\n "env": [\n {\n "name": "PG_LOG_DIR",\n "value": "/pgdata/pg18/log"\n },\n {\n "name": "PGBACKREST_LOG_DIR",\n "value": "/pgdata/pgbackrest/log"\n },\n {\n "name": "POD_NAMESPACE",\n "valueFrom": {\n "fieldRef": {\n "apiVersion": "v1",\n "fieldPath": "metadata.namespace"\n }\n }\n },\n {\n "name": "POD_NAME",\n "valueFrom": {\n "fieldRef": {\n "apiVersion": "v1",\n "fieldPath": "metadata.name"\n }\n }\n }\n ],\n "image": "docker.io/perconalab/fluentbit:main-logcollector",\n "imagePullPolicy": "IfNotPresent",\n "name": "logs",\n "resources": {},\n "securityContext": {\n "allowPrivilegeEscalation": false,\n "capabilities": {\n "drop": [\n "ALL"\n ]\n },\n "privileged": false,\n "runAsGroup": 26,\n "runAsNonRoot": true,\n "runAsUser": 26,\n "seccompProfile": {\n "type": "RuntimeDefault"\n }\n },\n "terminationMessagePath": "/dev/termination-log",\n "terminationMessagePolicy": "File",\n "volumeMounts": [\n {\n "mountPath": "/pgdata",\n "name": "postgres-data"\n },\n {\n "mountPath": "/opt/crunchy",\n "name": "crunchy-bin"\n },\n {\n "mountPath": "/tmp",\n "name": "tmp"\n }\n ]\n },\n {\n "args": [\n "logrotate"\n ],\n "command": [\n "/opt/crunchy/logcollector/entrypoint.sh"\n ],\n "env": [\n {\n "name": "POD_NAMESPACE",\n "valueFrom": {\n "fieldRef": {\n "apiVersion": "v1",\n "fieldPath": "metadata.namespace"\n }\n }\n },\n {\n "name": "POD_NAME",\n "valueFrom": {\n "fieldRef": {\n "apiVersion": "v1",\n "fieldPath": "metadata.name"\n }\n }\n },\n {\n "name": "LOGROTATE_SCHEDULE",\n "value": "0 0 * * *"\n },\n {\n "name": "LD_PRELOAD",\n "value": "/tmp/nss_wrapper/libnss_wrapper.so"\n },\n {\n "name": "NSS_WRAPPER_PASSWD",\n "value": "/tmp/nss_wrapper/postgres/passwd"\n },\n {\n "name": "NSS_WRAPPER_GROUP",\n "value": "/tmp/nss_wrapper/postgres/group"\n }\n ],\n "image": "docker.io/perconalab/fluentbit:main-logcollector",\n "imagePullPolicy": "IfNotPresent",\n "name": "logrotate",\n "resources": {},\n "securityContext": {\n "allowPrivilegeEscalation": false,\n "capabilities": {\n "drop": [\n "ALL"\n ]\n },\n "privileged": false,\n "runAsGroup": 26,\n "runAsNonRoot": true,\n "runAsUser": 26,\n "seccompProfile": {\n "type": "RuntimeDefault"\n }\n },\n "terminationMessagePath": "/dev/termination-log",\n "terminationMessagePolicy": "File",\n "volumeMounts": [\n {\n "mountPath": "/pgdata",\n "name": "postgres-data"\n },\n {\n "mountPath": "/opt/crunchy",\n "name": "crunchy-bin"\n },\n {\n "mountPath": "/tmp",\n "name": "tmp"\n }\n ]\n },\n {\n "command": [\n "pgbackrest",\n "server"\n ],\n "env": [\n {\n "name": "LD_PRELOAD",\n "value": "/usr/lib64/libnss_wrapper.so"\n },\n {\n "name": "NSS_WRAPPER_PASSWD",\n "value": "/tmp/nss_wrapper/postgres/passwd"\n },\n {\n "name": "NSS_WRAPPER_GROUP",\n "value": "/tmp/nss_wrapper/postgres/group"\n }\n ],\n "image": "docker.io/perconalab/percona-postgresql-operator:main-pgbackrest18",\n "imagePullPolicy": "Always",\n "livenessProbe": {\n "exec": {\n "command": [\n "pgbackrest",\n "server-ping"\n ]\n },\n "failureThreshold": 3,\n "periodSeconds": 10,\n "successThreshold": 1,\n "timeoutSeconds": 1\n },\n "name": "pgbackrest",\n "resources": {},\n "securityContext": {\n "allowPrivilegeEscalation": false,\n "capabilities": {\n "drop": [\n "ALL"\n ]\n },\n "privileged": false,\n "readOnlyRootFilesystem": true,\n "runAsNonRoot": true,\n "seccompProfile": {\n "type": "RuntimeDefault"\n }\n },\n "terminationMessagePath": "/dev/termination-log",\n "terminationMessagePolicy": "File",\n "volumeMounts": [\n {\n "mountPath": "/etc/pgbackrest/server",\n "name": "pgbackrest-server",\n "readOnly": true\n },\n {\n "mountPath": "/pgdata",\n "name": "postgres-data"\n },\n {\n "mountPath": "/tablespaces/myts",\n "name": "tablespace-myts"\n },\n {\n "mountPath": "/pgwal",\n "name": "postgres-wal"\n },\n {\n "mountPath": "/etc/pgbackrest/conf.d",\n "name": "pgbackrest-config",\n "readOnly": true\n },\n {\n "mountPath": "/tmp",\n "name": "tmp"\n }\n ]\n },\n {\n "command": [\n "bash",\n "-ceu",\n "--",\n "monitor() {\\nexec {fd}\\u003c\\u003e \\u003c(:||:)\\nuntil read -r -t 5 -u \\"${fd}\\"; do\\n if\\n [[ \\"${filename}\\" -nt \\"/proc/self/fd/${fd}\\" ]] \\u0026\\u0026\\n pkill -HUP --exact --parent=0 pgbackrest\\n then\\n exec {fd}\\u003e\\u0026- \\u0026\\u0026 exec {fd}\\u003c\\u003e \\u003c(:||:)\\n stat --dereference --format=\'Loaded configuration dated %y\' \\"${filename}\\"\\n elif\\n { [[ \\"${directory}\\" -nt \\"/proc/self/fd/${fd}\\" ]] ||\\n [[ \\"${authority}\\" -nt \\"/proc/self/fd/${fd}\\" ]]\\n } \\u0026\\u0026\\n pkill -HUP --exact --parent=0 pgbackrest\\n then\\n exec {fd}\\u003e\\u0026- \\u0026\\u0026 exec {fd}\\u003c\\u003e \\u003c(:||:)\\n stat --format=\'Loaded certificates dated %y\' \\"${directory}\\"\\n fi\\ndone\\n}; export directory=\\"$1\\" authority=\\"$2\\" filename=\\"$3\\"; export -f monitor; exec -a \\"$0\\" bash -ceu monitor",\n "pgbackrest-config",\n "/etc/pgbackrest/server",\n "/etc/pgbackrest/conf.d/~postgres-operator/tls-ca.crt",\n "/etc/pgbackrest/conf.d/~postgres-operator_server.conf"\n ],\n "image": "docker.io/perconalab/percona-postgresql-operator:main-pgbackrest18",\n "imagePullPolicy": "Always",\n "name": "pgbackrest-config",\n "resources": {},\n "securityContext": {\n "allowPrivilegeEscalation": false,\n "capabilities": {\n "drop": [\n "ALL"\n ]\n },\n "privileged": false,\n "readOnlyRootFilesystem": true,\n "runAsNonRoot": true,\n "seccompProfile": {\n "type": "RuntimeDefault"\n }\n },\n "terminationMessagePath": "/dev/termination-log",\n "terminationMessagePolicy": "File",\n "volumeMounts": [\n {\n "mountPath": "/etc/pgbackrest/server",\n "name": "pgbackrest-server",\n "readOnly": true\n },\n {\n "mountPath": "/etc/pgbackrest/conf.d",\n "name": "pgbackrest-config",\n "readOnly": true\n },\n {\n "mountPath": "/tmp",\n "name": "tmp"\n }\n ]\n }\n ],\n "dnsPolicy": "ClusterFirst",\n "enableServiceLinks": false,\n "initContainers": [\n {\n "command": [\n "/usr/local/bin/init-entrypoint.sh"\n ],\n "image": "docker.io/perconalab/percona-postgresql-operator:PR-1760-4947a0272",\n "imagePullPolicy": "Always",\n "name": "database-init",\n "resources": {},\n "securityContext": {\n "allowPrivilegeEscalation": false,\n "capabilities": {\n "drop": [\n "ALL"\n ]\n },\n "privileged": false,\n "readOnlyRootFilesystem": true,\n "runAsNonRoot": true,\n "seccompProfile": {\n "type": "RuntimeDefault"\n }\n },\n "terminationMessagePath": "/dev/termination-log",\n "terminationMessagePolicy": "File",\n "volumeMounts": [\n {\n "mountPath": "/opt/crunchy",\n "name": "crunchy-bin"\n },\n {\n "mountPath": "/tmp",\n "name": "tmp"\n }\n ]\n },\n {\n "command": [\n "bash",\n "-ceu",\n "--",\n "declare -r expected_major_version=\\"$1\\" pgwal_directory=\\"$2\\" pgbrLog_directory=\\"$3\\"\\npermissions() { while [[ -n \\"$1\\" ]]; do set \\"${1%/*}\\" \\"$@\\"; done; shift; stat -Lc \'%A %4u %4g %n\' \\"$@\\"; }\\nhalt() { local rc=$?; \\u003e\\u00262 echo \\"$@\\"; exit \\"${rc/#0/1}\\"; }\\nresults() { printf \'::postgres-operator: %s::%s\\\\n\' \\"$@\\"; }\\nrecreate() (\\n local tmp; tmp=$(mktemp -d -p \\"${1%/*}\\"); GLOBIGNORE=\'.:..\'; set -x\\n chmod \\"$2\\" \\"${tmp}\\"; mv \\"$1\\"/* \\"${tmp}\\"; rmdir \\"$1\\"; mv \\"${tmp}\\" \\"$1\\"\\n)\\nsafelink() (\\n local desired=\\"$1\\" name=\\"$2\\" current\\n current=$(realpath \\"${name}\\")\\n if [[ \\"${current}\\" == \\"${desired}\\" ]]; then return; fi\\n set -x; mv --no-target-directory \\"${current}\\" \\"${desired}\\"\\n ln --no-dereference --force --symbolic \\"${desired}\\" \\"${name}\\"\\n)\\necho Initializing ...\\nresults \'uid\' \\"$(id -u ||:)\\" \'gid\' \\"$(id -G ||:)\\"\\nif [[ \\"${pgwal_directory}\\" == *\\"pgwal/\\"* ]] \\u0026\\u0026 [[ ! -d \\"/pgwal/pgbackrest-spool\\" ]];then rm -rf \\"/pgdata/pgbackrest-spool\\" \\u0026\\u0026 mkdir -p \\"/pgwal/pgbackrest-spool\\" \\u0026\\u0026 ln --force --symbolic \\"/pgwal/pgbackrest-spool\\" \\"/pgdata/pgbackrest-spool\\";fi\\nif [[ ! -e \\"/pgdata/pgbackrest-spool\\" ]];then rm -rf /pgdata/pgbackrest-spool;fi\\nif [[ ! -e \\"/pgdata/logs/postgres\\" ]];then rm -rf \\"/pgdata/logs/postgres\\";fi\\nif [[ ! -e \\"${pgbrLog_directory}\\" ]];then rm -rf \\"${pgbrLog_directory}\\";fi\\nif [[ -d \\"/pglogs\\" ]];then install --directory --mode=0775 \\"/pglogs/postgres\\" \\"/pglogs/pgbackrest/log\\";if [[ ! -L \\"/pgdata/logs/postgres\\" ]];then mkdir -p \\"/pgdata/logs\\" \\u0026\\u0026 rm -rf \\"/pgdata/logs/postgres\\" \\u0026\\u0026 ln --symbolic \\"/pglogs/postgres\\" \\"/pgdata/logs/postgres\\";fi;if [[ ! -L \\"${pgbrLog_directory}\\" ]];then mkdir -p \\"${pgbrLog_directory%/*}\\" \\u0026\\u0026 rm -rf \\"${pgbrLog_directory}\\" \\u0026\\u0026 ln --symbolic \\"/pglogs/pgbackrest/log\\" \\"${pgbrLog_directory}\\";fi;fi\\nresults \'postgres path\' \\"$(command -v postgres ||:)\\"\\nresults \'postgres version\' \\"${postgres_version:=$(postgres --version ||:)}\\"\\n[[ \\"${postgres_version}\\" =~ \\") ${expected_major_version}\\"($|[^0-9]) ]] ||\\nhalt Expected PostgreSQL version \\"${expected_major_version}\\"\\nresults \'config directory\' \\"${PGDATA:?}\\"\\npostgres_data_directory=$([[ -d \\"${PGDATA}\\" ]] \\u0026\\u0026 postgres -C data_directory || echo \\"${PGDATA}\\")\\nresults \'data directory\' \\"${postgres_data_directory}\\"\\n[[ \\"${postgres_data_directory}\\" == \\"${PGDATA}\\" ]] ||\\nhalt Expected matching config and data directories\\nbootstrap_dir=\\"${postgres_data_directory}_bootstrap\\"\\n[[ -d \\"${bootstrap_dir}\\" ]] \\u0026\\u0026 results \'bootstrap directory\' \\"${bootstrap_dir}\\"\\n[[ -d \\"${bootstrap_dir}\\" ]] \\u0026\\u0026 postgres_data_directory=\\"${bootstrap_dir}\\"\\nif [[ ! -e \\"${postgres_data_directory}\\" || -O \\"${postgres_data_directory}\\" ]]; then\\ninstall --directory --mode=0700 \\"${postgres_data_directory}\\"\\nelif [[ -w \\"${postgres_data_directory}\\" \\u0026\\u0026 -g \\"${postgres_data_directory}\\" ]]; then\\nrecreate \\"${postgres_data_directory}\\" \'0700\'\\nelse (halt Permissions!); fi ||\\nhalt \\"$(permissions \\"${postgres_data_directory}\\" ||:)\\"\\nresults \'pgBackRest log directory\' \\"${pgbrLog_directory}\\"\\ninstall --directory --mode=0775 \\"${pgbrLog_directory}\\" ||\\nhalt \\"$(permissions \\"${pgbrLog_directory}\\" ||:)\\"\\ninstall -D --mode=0600 -t \\"/tmp/replication\\" \\"/pgconf/tls/replication\\"/{tls.crt,tls.key,ca.crt}\\n\\ntablespace_dir=/tablespaces/myts/data\\nif [[ ! -e \\"${tablespace_dir}\\" || -O \\"${tablespace_dir}\\" ]]; then\\ninstall --directory --mode=0700 \\"${tablespace_dir}\\"\\nelif [[ -w \\"${tablespace_dir}\\" \\u0026\\u0026 -g \\"${tablespace_dir}\\" ]]; then\\nrecreate \\"${tablespace_dir}\\" \'0700\'\\nelse (halt Permissions!); fi ||\\nhalt \\"$(permissions \\"${tablespace_dir}\\" ||:)\\"\\n[[ -f \\"${postgres_data_directory}/PG_VERSION\\" ]] || exit 0\\nresults \'data version\' \\"${postgres_data_version:=$(\\u003c \\"${postgres_data_directory}/PG_VERSION\\")}\\"\\n[[ \\"${postgres_data_version}\\" == \\"${expected_major_version}\\" ]] ||\\nhalt Expected PostgreSQL data version \\"${expected_major_version}\\"\\n[[ ! -f \\"${postgres_data_directory}/postgresql.conf\\" ]] \\u0026\\u0026\\ntouch \\"${postgres_data_directory}/postgresql.conf\\"\\nsafelink \\"${pgwal_directory}\\" \\"${postgres_data_directory}/pg_wal\\"\\nresults \'wal directory\' \\"$(realpath \\"${postgres_data_directory}/pg_wal\\" ||:)\\"\\nrm -f \\"${postgres_data_directory}/recovery.signal\\"",\n "startup",\n "18",\n "/pgwal/pg18_wal",\n "/pgdata/pgbackrest/log"\n ],\n "env": [\n {\n "name": "PGDATA",\n "value": "/pgdata/pg18"\n },\n {\n "name": "PGHOST",\n "value": "/tmp/postgres"\n },\n {\n "name": "PGPORT",\n "value": "5432"\n },\n {\n "name": "KRB5_CONFIG",\n "value": "/etc/postgres/krb5.conf"\n },\n {\n "name": "KRB5RCACHEDIR",\n "value": "/tmp"\n },\n {\n "name": "LDAPTLS_CACERT",\n "value": "/etc/postgres/ldap/ca.crt"\n },\n {\n "name": "LC_ALL",\n "value": "en_US.utf-8"\n },\n {\n "name": "LANG",\n "value": "en_US.utf-8"\n }\n ],\n "image": "docker.io/perconalab/percona-postgresql-operator:main-ppg18-postgres",\n "imagePullPolicy": "Always",\n "name": "postgres-startup",\n "resources": {},\n "securityContext": {\n "allowPrivilegeEscalation": false,\n "capabilities": {\n "drop": [\n "ALL"\n ]\n },\n "privileged": false,\n "readOnlyRootFilesystem": true,\n "runAsNonRoot": true,\n "seccompProfile": {\n "type": "RuntimeDefault"\n }\n },\n "terminationMessagePath": "/dev/termination-log",\n "terminationMessagePolicy": "File",\n "volumeMounts": [\n {\n "mountPath": "/pgconf/tls",\n "name": "cert-volume",\n "readOnly": true\n },\n {\n "mountPath": "/pgdata",\n "name": "postgres-data"\n },\n {\n "mountPath": "/tablespaces/myts",\n "name": "tablespace-myts"\n },\n {\n "mountPath": "/pgwal",\n "name": "postgres-wal"\n },\n {\n "mountPath": "/pglogs",\n "name": "postgres-logs"\n },\n {\n "mountPath": "/tmp",\n "name": "tmp"\n }\n ]\n },\n {\n "command": [\n "bash",\n "-c",\n "mkdir -p /tmp/nss_wrapper \\u0026\\u0026 { [[ -f /tmp/nss_wrapper/libnss_wrapper.so ]] || cp /usr/lib64/libnss_wrapper.so /tmp/nss_wrapper/libnss_wrapper.so; }"\n ],\n "image": "docker.io/perconalab/percona-postgresql-operator:main-ppg18-postgres",\n "imagePullPolicy": "Always",\n "name": "nss-wrapper-init-logcollector",\n "resources": {},\n "securityContext": {\n "allowPrivilegeEscalation": false,\n "capabilities": {\n "drop": [\n "ALL"\n ]\n },\n "privileged": false,\n "runAsGroup": 26,\n "runAsNonRoot": true,\n "runAsUser": 26,\n "seccompProfile": {\n "type": "RuntimeDefault"\n }\n },\n "terminationMessagePath": "/dev/termination-log",\n "terminationMessagePolicy": "File",\n "volumeMounts": [\n {\n "mountPath": "/tmp",\n "name": "tmp"\n }\n ]\n },\n {\n "command": [\n "bash",\n "-c",\n "export NSS_WRAPPER_SUBDIR=postgres CRUNCHY_NSS_USERNAME=postgres CRUNCHY_NSS_USER_DESC=\\"postgres\\" \\n# Define nss_wrapper directory and passwd \\u0026 group files that will be utilized by nss_wrapper. The\\n# nss_wrapper_env.sh script (which also sets these vars) isn\'t sourced here since the nss_wrapper\\n# has not yet been setup, and we therefore don\'t yet want the nss_wrapper vars in the environment.\\nmkdir -p /tmp/nss_wrapper\\nchmod g+rwx /tmp/nss_wrapper\\n\\nNSS_WRAPPER_DIR=\\"/tmp/nss_wrapper/${NSS_WRAPPER_SUBDIR}\\"\\nNSS_WRAPPER_PASSWD=\\"${NSS_WRAPPER_DIR}/passwd\\"\\nNSS_WRAPPER_GROUP=\\"${NSS_WRAPPER_DIR}/group\\"\\n\\n# create the nss_wrapper directory\\nmkdir -p \\"${NSS_WRAPPER_DIR}\\"\\n\\n# grab the current user ID and group ID\\nUSER_ID=$(id -u)\\nexport USER_ID\\nGROUP_ID=$(id -g)\\nexport GROUP_ID\\n\\n# get copies of the passwd and group files\\n[[ -f \\"${NSS_WRAPPER_PASSWD}\\" ]] || cp \\"/etc/passwd\\" \\"${NSS_WRAPPER_PASSWD}\\"\\n[[ -f \\"${NSS_WRAPPER_GROUP}\\" ]] || cp \\"/etc/group\\" \\"${NSS_WRAPPER_GROUP}\\"\\n\\n# if the username is missing from the passwd file, then add it\\nif [[ ! $(cat \\"${NSS_WRAPPER_PASSWD}\\") =~ ${CRUNCHY_NSS_USERNAME}:x:${USER_ID} ]]; then\\n echo \\"nss_wrapper: adding user\\"\\n passwd_tmp=\\"${NSS_WRAPPER_DIR}/passwd_tmp\\"\\n cp \\"${NSS_WRAPPER_PASSWD}\\" \\"${passwd_tmp}\\"\\n sed -i \\"/${CRUNCHY_NSS_USERNAME}:x:/d\\" \\"${passwd_tmp}\\"\\n # needed for OCP 4.x because crio updates /etc/passwd with an entry for USER_ID\\n sed -i \\"/${USER_ID}:x:/d\\" \\"${passwd_tmp}\\"\\n printf \'${CRUNCHY_NSS_USERNAME}:x:${USER_ID}:${GROUP_ID}:${CRUNCHY_NSS_USER_DESC}:${HOME}:/bin/bash\\\\n\' \\u003e\\u003e \\"${passwd_tmp}\\"\\n envsubst \\u003c \\"${passwd_tmp}\\" \\u003e \\"${NSS_WRAPPER_PASSWD}\\"\\n rm \\"${passwd_tmp}\\"\\nelse\\n echo \\"nss_wrapper: user exists\\"\\nfi\\n\\n# if the username (which will be the same as the group name) is missing from group file, then add it\\nif [[ ! $(cat \\"${NSS_WRAPPER_GROUP}\\") =~ ${CRUNCHY_NSS_USERNAME}:x:${USER_ID} ]]; then\\n echo \\"nss_wrapper: adding group\\"\\n group_tmp=\\"${NSS_WRAPPER_DIR}/group_tmp\\"\\n cp \\"${NSS_WRAPPER_GROUP}\\" \\"${group_tmp}\\"\\n sed -i \\"/${CRUNCHY_NSS_USERNAME}:x:/d\\" \\"${group_tmp}\\"\\n printf \'${CRUNCHY_NSS_USERNAME}:x:${USER_ID}:${CRUNCHY_NSS_USERNAME}\\\\n\' \\u003e\\u003e \\"${group_tmp}\\"\\n envsubst \\u003c \\"${group_tmp}\\" \\u003e \\"${NSS_WRAPPER_GROUP}\\"\\n rm \\"${group_tmp}\\"\\nelse\\n echo \\"nss_wrapper: group exists\\"\\nfi\\n\\n# export the nss_wrapper env vars\\n# define nss_wrapper directory and passwd \\u0026 group files that will be utilized by nss_wrapper\\nNSS_WRAPPER_DIR=\\"/tmp/nss_wrapper/${NSS_WRAPPER_SUBDIR}\\"\\nNSS_WRAPPER_PASSWD=\\"${NSS_WRAPPER_DIR}/passwd\\"\\nNSS_WRAPPER_GROUP=\\"${NSS_WRAPPER_DIR}/group\\"\\n\\nexport LD_PRELOAD=/usr/lib64/libnss_wrapper.so\\nexport NSS_WRAPPER_PASSWD=\\"${NSS_WRAPPER_PASSWD}\\"\\nexport NSS_WRAPPER_GROUP=\\"${NSS_WRAPPER_GROUP}\\"\\n\\necho \\"nss_wrapper: environment configured\\"\\n"\n ],\n "image": "docker.io/perconalab/percona-postgresql-operator:main-ppg18-postgres",\n "imagePullPolicy": "Always",\n "name": "nss-wrapper-init",\n "resources": {},\n "securityContext": {\n "allowPrivilegeEscalation": false,\n "capabilities": {\n "drop": [\n "ALL"\n ]\n },\n "privileged": false,\n "readOnlyRootFilesystem": true,\n "runAsNonRoot": true,\n "seccompProfile": {\n "type": "RuntimeDefault"\n }\n },\n "terminationMessagePath": "/dev/termination-log",\n "terminationMessagePolicy": "File",\n "volumeMounts": [\n {\n "mountPath": "/tmp",\n "name": "tmp"\n }\n ]\n }\n ],\n "restartPolicy": "Always",\n "schedulerName": "default-scheduler",\n "securityContext": {\n "fsGroup": 26,\n "fsGroupChangePolicy": "OnRootMismatch"\n },\n "serviceAccount": "additional-volumes-instance",\n "serviceAccountName": "additional-volumes-instance",\n "shareProcessNamespace": true,\n "terminationGracePeriodSeconds": 30,\n "topologySpreadConstraints": [\n {\n "labelSelector": {\n "matchExpressions": [\n {\n "key": "postgres-operator.crunchydata.com/data",\n "operator": "In",\n "values": [\n "postgres",\n "pgbackrest"\n ]\n }\n ],\n "matchLabels": {\n "postgres-operator.crunchydata.com/cluster": "additional-volumes"\n }\n },\n "maxSkew": 1,\n "topologyKey": "kubernetes.io/hostname",\n "whenUnsatisfiable": "ScheduleAnyway"\n },\n {\n "labelSelector": {\n "matchExpressions": [\n {\n "key": "postgres-operator.crunchydata.com/data",\n "operator": "In",\n "values": [\n "postgres",\n "pgbackrest"\n ]\n }\n ],\n "matchLabels": {\n "postgres-operator.crunchydata.com/cluster": "additional-volumes"\n }\n },\n "maxSkew": 1,\n "topologyKey": "topology.kubernetes.io/zone",\n "whenUnsatisfiable": "ScheduleAnyway"\n }\n ],\n "volumes": [\n {\n "name": "cert-volume",\n "projected": {\n "defaultMode": 384,\n "sources": [\n {\n "secret": {\n "items": [\n {\n "key": "tls.crt",\n "path": "tls.crt"\n },\n {\n "key": "tls.key",\n "path": "tls.key"\n },\n {\n "key": "ca.crt",\n "path": "ca.crt"\n }\n ],\n "name": "additional-volumes-cluster-cert"\n }\n },\n {\n "secret": {\n "items": [\n {\n "key": "tls.crt",\n "path": "replication/tls.crt"\n },\n {\n "key": "tls.key",\n "path": "replication/tls.key"\n },\n {\n "key": "ca.crt",\n "path": "replication/ca.crt"\n }\n ],\n "name": "additional-volumes-replication-cert"\n }\n }\n ]\n }\n },\n {\n "name": "postgres-data",\n "persistentVolumeClaim": {\n "claimName": "additional-volumes-instance1-xvbw-pgdata"\n }\n },\n {\n "downwardAPI": {\n "defaultMode": 420,\n "items": [\n {\n "path": "cpu_limit",\n "resourceFieldRef": {\n "containerName": "database",\n "divisor": "1m",\n "resource": "limits.cpu"\n }\n },\n {\n "path": "cpu_request",\n "resourceFieldRef": {\n "containerName": "database",\n "divisor": "1m",\n "resource": "requests.cpu"\n }\n },\n {\n "path": "mem_limit",\n "resourceFieldRef": {\n "containerName": "database",\n "divisor": "1Mi",\n "resource": "limits.memory"\n }\n },\n {\n "path": "mem_request",\n "resourceFieldRef": {\n "containerName": "database",\n "divisor": "1Mi",\n "resource": "requests.memory"\n }\n },\n {\n "fieldRef": {\n "apiVersion": "v1",\n "fieldPath": "metadata.labels"\n },\n "path": "labels"\n },\n {\n "fieldRef": {\n "apiVersion": "v1",\n "fieldPath": "metadata.annotations"\n },\n "path": "annotations"\n }\n ]\n },\n "name": "database-containerinfo"\n },\n {\n "name": "tablespace-myts",\n "persistentVolumeClaim": {\n "claimName": "additional-volumes-instance1-xvbw-myts-tablespace"\n }\n },\n {\n "name": "postgres-wal",\n "persistentVolumeClaim": {\n "claimName": "additional-volumes-instance1-xvbw-pgwal"\n }\n },\n {\n "name": "postgres-logs",\n "persistentVolumeClaim": {\n "claimName": "additional-volumes-instance1-xvbw-pglogs"\n }\n },\n {\n "name": "pgbackrest-server",\n "projected": {\n "defaultMode": 420,\n "sources": [\n {\n "secret": {\n "items": [\n {\n "key": "pgbackrest-server.crt",\n "path": "server-tls.crt"\n },\n {\n "key": "pgbackrest-server.key",\n "mode": 384,\n "path": "server-tls.key"\n }\n ],\n "name": "additional-volumes-instance1-xvbw-certs"\n }\n }\n ]\n }\n },\n {\n "name": "pgbackrest-config",\n "projected": {\n "defaultMode": 420,\n "sources": [\n {\n "configMap": {\n "items": [\n {\n "key": "pgbackrest_instance.conf",\n "path": "pgbackrest_instance.conf"\n },\n {\n "key": "config-hash",\n "path": "config-hash"\n },\n {\n "key": "pgbackrest-server.conf",\n "path": "~postgres-operator_server.conf"\n }\n ],\n "name": "additional-volumes-pgbackrest-config"\n }\n },\n {\n "secret": {\n "items": [\n {\n "key": "pgbackrest.ca-roots",\n "path": "~postgres-operator/tls-ca.crt"\n },\n {\n "key": "pgbackrest-client.crt",\n "path": "~postgres-operator/client-tls.crt"\n },\n {\n "key": "pgbackrest-client.key",\n "mode": 384,\n "path": "~postgres-operator/client-tls.key"\n }\n ],\n "name": "additional-volumes-pgbackrest"\n }\n }\n ]\n }\n },\n {\n "name": "patroni-config",\n "projected": {\n "defaultMode": 420,\n "sources": [\n {\n "configMap": {\n "items": [\n {\n "key": "patroni.yaml",\n "path": "~postgres-operator_cluster.yaml"\n }\n ],\n "name": "additional-volumes-config"\n }\n },\n {\n "configMap": {\n "items": [\n {\n "key": "patroni.yaml",\n "path": "~postgres-operator_instance.yaml"\n }\n ],\n "name": "additional-volumes-instance1-xvbw-config"\n }\n },\n {\n "secret": {\n "items": [\n {\n "key": "patroni.ca-roots",\n "path": "~postgres-operator/patroni.ca-roots"\n },\n {\n "key": "patroni.crt-combined",\n "path": "~postgres-operator/patroni.crt+key"\n }\n ],\n "name": "additional-volumes-instance1-xvbw-certs"\n }\n }\n ]\n }\n },\n {\n "emptyDir": {},\n "name": "crunchy-bin"\n },\n {\n "emptyDir": {\n "sizeLimit": "2Gi"\n },\n "name": "tmp"\n },\n {\n "emptyDir": {\n "medium": "Memory"\n },\n "name": "dshm"\n }\n ]\n }\n },\n "updateStrategy": {\n "type": "OnDelete"\n }\n },\n "status": {\n "availableReplicas": 1,\n "collisionCount": 0,\n "currentReplicas": 1,\n "currentRevision": "additional-volumes-instance1-xvbw-7dcb456674",\n "observedGeneration": 1,\n "readyReplicas": 1,\n "replicas": 1,\n "updateRevision": "additional-volumes-instance1-xvbw-7dcb456674",\n "updatedReplicas": 1\n }\n }\n ],\n "kind": "List",\n "metadata": {\n "resourceVersion": ""\n }\n}' logger.go:42: 18:13:51 | additional-volumes/2-verify-volumes | + check_sts_volume postgres-logs /pglogs logger.go:42: 18:13:51 | additional-volumes/2-verify-volumes | + local volume=postgres-logs logger.go:42: 18:13:51 | additional-volumes/2-verify-volumes | + local path=/pglogs logger.go:42: 18:13:51 | additional-volumes/2-verify-volumes | + jq -e --arg v postgres-logs $'.items[0].spec.template.spec.volumes[]\n | select(.name == $v) | select(.persistentVolumeClaim != null)' logger.go:42: 18:13:51 | additional-volumes/2-verify-volumes | + printf '%s\n' $'{\n "apiVersion": "v1",\n "items": [\n {\n "apiVersion": "apps/v1",\n "kind": "StatefulSet",\n "metadata": {\n "annotations": {\n "pgv2.percona.com/logcollector-config-hash": "d9a116e02b828bdc02165325e92799d82961fb499041814c7c765d0ce263ce77"\n },\n "creationTimestamp": "2026-08-19T18:12:04Z",\n "generation": 1,\n "labels": {\n "app.kubernetes.io/component": "pg",\n "app.kubernetes.io/instance": "additional-volumes",\n "app.kubernetes.io/managed-by": "percona-postgresql-operator",\n "app.kubernetes.io/name": "percona-postgresql",\n "app.kubernetes.io/part-of": "percona-postgresql",\n "pgv2.percona.com/version": "3.2.0",\n "postgres-operator.crunchydata.com/cluster": "additional-volumes",\n "postgres-operator.crunchydata.com/data": "postgres",\n "postgres-operator.crunchydata.com/instance": "additional-volumes-instance1-24br",\n "postgres-operator.crunchydata.com/instance-set": "instance1"\n },\n "name": "additional-volumes-instance1-24br",\n "namespace": "kuttl-test-intimate-garfish",\n "ownerReferences": [\n {\n "apiVersion": "upstream.pgv2.percona.com/v1beta1",\n "blockOwnerDeletion": true,\n "controller": true,\n "kind": "PostgresCluster",\n "name": "additional-volumes",\n "uid": "b795649f-550b-4283-b2ef-eca573235e5a"\n }\n ],\n "resourceVersion": "1787163196013855005",\n "uid": "471c7b02-6f1c-4f53-a6b2-557d95701703"\n },\n "spec": {\n "persistentVolumeClaimRetentionPolicy": {\n "whenDeleted": "Retain",\n "whenScaled": "Retain"\n },\n "podManagementPolicy": "OrderedReady",\n "replicas": 1,\n "revisionHistoryLimit": 0,\n "selector": {\n "matchLabels": {\n "postgres-operator.crunchydata.com/cluster": "additional-volumes",\n "postgres-operator.crunchydata.com/instance": "additional-volumes-instance1-24br",\n "postgres-operator.crunchydata.com/instance-set": "instance1"\n }\n },\n "serviceName": "additional-volumes-pods",\n "template": {\n "metadata": {\n "annotations": {\n "kubectl.kubernetes.io/default-container": "database",\n "pgv2.percona.com/logcollector-config-hash": "d9a116e02b828bdc02165325e92799d82961fb499041814c7c765d0ce263ce77"\n },\n "creationTimestamp": null,\n "labels": {\n "app.kubernetes.io/component": "pg",\n "app.kubernetes.io/instance": "additional-volumes",\n "app.kubernetes.io/managed-by": "percona-postgresql-operator",\n "app.kubernetes.io/name": "percona-postgresql",\n "app.kubernetes.io/part-of": "percona-postgresql",\n "pgv2.percona.com/version": "3.2.0",\n "postgres-operator.crunchydata.com/cluster": "additional-volumes",\n "postgres-operator.crunchydata.com/data": "postgres",\n "postgres-operator.crunchydata.com/instance": "additional-volumes-instance1-24br",\n "postgres-operator.crunchydata.com/instance-set": "instance1",\n "postgres-operator.crunchydata.com/patroni": "additional-volumes-ha"\n }\n },\n "spec": {\n "affinity": {\n "podAntiAffinity": {\n "preferredDuringSchedulingIgnoredDuringExecution": [\n {\n "podAffinityTerm": {\n "labelSelector": {\n "matchLabels": {\n "postgres-operator.crunchydata.com/data": "postgres"\n }\n },\n "topologyKey": "kubernetes.io/hostname"\n },\n "weight": 1\n }\n ]\n }\n },\n "containers": [\n {\n "command": [\n "/opt/crunchy/bin/postgres-entrypoint.sh",\n "patroni",\n "/etc/patroni"\n ],\n "env": [\n {\n "name": "PGDATA",\n "value": "/pgdata/pg18"\n },\n {\n "name": "PGHOST",\n "value": "/tmp/postgres"\n },\n {\n "name": "PGPORT",\n "value": "5432"\n },\n {\n "name": "KRB5_CONFIG",\n "value": "/etc/postgres/krb5.conf"\n },\n {\n "name": "KRB5RCACHEDIR",\n "value": "/tmp"\n },\n {\n "name": "LDAPTLS_CACERT",\n "value": "/etc/postgres/ldap/ca.crt"\n },\n {\n "name": "LC_ALL",\n "value": "en_US.utf-8"\n },\n {\n "name": "LANG",\n "value": "en_US.utf-8"\n },\n {\n "name": "PATRONI_NAME",\n "valueFrom": {\n "fieldRef": {\n "apiVersion": "v1",\n "fieldPath": "metadata.name"\n }\n }\n },\n {\n "name": "PATRONI_KUBERNETES_POD_IP",\n "valueFrom": {\n "fieldRef": {\n "apiVersion": "v1",\n "fieldPath": "status.podIP"\n }\n }\n },\n {\n "name": "PATRONI_KUBERNETES_PORTS",\n "value": "- name: postgres\\n port: 5432\\n protocol: TCP\\n"\n },\n {\n "name": "PATRONI_POSTGRESQL_CONNECT_ADDRESS",\n "value": "$(PATRONI_NAME).additional-volumes-pods:5432"\n },\n {\n "name": "PATRONI_POSTGRESQL_LISTEN",\n "value": "*:5432"\n },\n {\n "name": "PATRONI_POSTGRESQL_CONFIG_DIR",\n "value": "/pgdata/pg18"\n },\n {\n "name": "PATRONI_POSTGRESQL_DATA_DIR",\n "value": "/pgdata/pg18"\n },\n {\n "name": "PATRONI_RESTAPI_CONNECT_ADDRESS",\n "value": "$(PATRONI_NAME).additional-volumes-pods:8008"\n },\n {\n "name": "PATRONI_RESTAPI_LISTEN",\n "value": "*:8008"\n },\n {\n "name": "PATRONICTL_CONFIG_FILE",\n "value": "/etc/patroni"\n },\n {\n "name": "LD_PRELOAD",\n "value": "/usr/lib64/libnss_wrapper.so"\n },\n {\n "name": "NSS_WRAPPER_PASSWD",\n "value": "/tmp/nss_wrapper/postgres/passwd"\n },\n {\n "name": "NSS_WRAPPER_GROUP",\n "value": "/tmp/nss_wrapper/postgres/group"\n }\n ],\n "image": "docker.io/perconalab/percona-postgresql-operator:main-ppg18-postgres",\n "imagePullPolicy": "Always",\n "livenessProbe": {\n "exec": {\n "command": [\n "bash",\n "-c",\n "/opt/crunchy/bin/postgres-liveness-check.sh"\n ]\n },\n "failureThreshold": 3,\n "initialDelaySeconds": 3,\n "periodSeconds": 10,\n "successThreshold": 1,\n "timeoutSeconds": 5\n },\n "name": "database",\n "ports": [\n {\n "containerPort": 5432,\n "name": "postgres",\n "protocol": "TCP"\n }\n ],\n "readinessProbe": {\n "exec": {\n "command": [\n "bash",\n "-c",\n "/opt/crunchy/bin/postgres-readiness-check.sh"\n ]\n },\n "failureThreshold": 3,\n "initialDelaySeconds": 3,\n "periodSeconds": 10,\n "successThreshold": 1,\n "timeoutSeconds": 5\n },\n "resources": {},\n "securityContext": {\n "allowPrivilegeEscalation": false,\n "capabilities": {\n "drop": [\n "ALL"\n ]\n },\n "privileged": false,\n "readOnlyRootFilesystem": true,\n "runAsNonRoot": true,\n "seccompProfile": {\n "type": "RuntimeDefault"\n }\n },\n "terminationMessagePath": "/dev/termination-log",\n "terminationMessagePolicy": "File",\n "volumeMounts": [\n {\n "mountPath": "/pgconf/tls",\n "name": "cert-volume",\n "readOnly": true\n },\n {\n "mountPath": "/pgdata",\n "name": "postgres-data"\n },\n {\n "mountPath": "/etc/database-containerinfo",\n "name": "database-containerinfo",\n "readOnly": true\n },\n {\n "mountPath": "/tablespaces/myts",\n "name": "tablespace-myts"\n },\n {\n "mountPath": "/pgwal",\n "name": "postgres-wal"\n },\n {\n "mountPath": "/pglogs",\n "name": "postgres-logs"\n },\n {\n "mountPath": "/etc/pgbackrest/conf.d",\n "name": "pgbackrest-config",\n "readOnly": true\n },\n {\n "mountPath": "/etc/patroni",\n "name": "patroni-config",\n "readOnly": true\n },\n {\n "mountPath": "/opt/crunchy",\n "name": "crunchy-bin"\n },\n {\n "mountPath": "/tmp",\n "name": "tmp"\n },\n {\n "mountPath": "/dev/shm",\n "name": "dshm"\n }\n ]\n },\n {\n "command": [\n "bash",\n "-ceu",\n "--",\n "monitor() {\\n# Parameters for curl when managing autogrow annotation.\\nAPISERVER=\\"https://kubernetes.default.svc\\"\\nSERVICEACCOUNT=\\"/var/run/secrets/kubernetes.io/serviceaccount\\"\\nNAMESPACE=$(cat ${SERVICEACCOUNT}/namespace)\\nTOKEN=$(cat ${SERVICEACCOUNT}/token)\\nCACERT=${SERVICEACCOUNT}/ca.crt\\n\\ndeclare -r directory=\\"/pgconf/tls\\"\\nexec {fd}\\u003c\\u003e \\u003c(:||:)\\nwhile read -r -t 5 -u \\"${fd}\\" ||:; do\\n # Manage replication certificate.\\n if [[ \\"${directory}\\" -nt \\"/proc/self/fd/${fd}\\" ]] \\u0026\\u0026\\n install -D --mode=0600 -t \\"/tmp/replication\\" \\"${directory}\\"/{replication/tls.crt,replication/tls.key,replication/ca.crt} \\u0026\\u0026\\n pkill -HUP --exact --parent=1 postgres\\n then\\n exec {fd}\\u003e\\u0026- \\u0026\\u0026 exec {fd}\\u003c\\u003e \\u003c(:||:)\\n stat --format=\'Loaded certificates dated %y\' \\"${directory}\\"\\n fi\\n\\ndone\\n}; export -f monitor; exec -a \\"$0\\" bash -ceu monitor",\n "replication-cert-copy"\n ],\n "image": "docker.io/perconalab/percona-postgresql-operator:main-ppg18-postgres",\n "imagePullPolicy": "Always",\n "name": "replication-cert-copy",\n "resources": {},\n "securityContext": {\n "allowPrivilegeEscalation": false,\n "capabilities": {\n "drop": [\n "ALL"\n ]\n },\n "privileged": false,\n "readOnlyRootFilesystem": true,\n "runAsNonRoot": true,\n "seccompProfile": {\n "type": "RuntimeDefault"\n }\n },\n "terminationMessagePath": "/dev/termination-log",\n "terminationMessagePolicy": "File",\n "volumeMounts": [\n {\n "mountPath": "/pgconf/tls",\n "name": "cert-volume",\n "readOnly": true\n },\n {\n "mountPath": "/pgdata",\n "name": "postgres-data"\n },\n {\n "mountPath": "/tmp",\n "name": "tmp"\n }\n ]\n },\n {\n "args": [\n "fluent-bit"\n ],\n "command": [\n "/opt/crunchy/logcollector/entrypoint.sh"\n ],\n "env": [\n {\n "name": "PG_LOG_DIR",\n "value": "/pgdata/pg18/log"\n },\n {\n "name": "PGBACKREST_LOG_DIR",\n "value": "/pgdata/pgbackrest/log"\n },\n {\n "name": "POD_NAMESPACE",\n "valueFrom": {\n "fieldRef": {\n "apiVersion": "v1",\n "fieldPath": "metadata.namespace"\n }\n }\n },\n {\n "name": "POD_NAME",\n "valueFrom": {\n "fieldRef": {\n "apiVersion": "v1",\n "fieldPath": "metadata.name"\n }\n }\n }\n ],\n "image": "docker.io/perconalab/fluentbit:main-logcollector",\n "imagePullPolicy": "IfNotPresent",\n "name": "logs",\n "resources": {},\n "securityContext": {\n "allowPrivilegeEscalation": false,\n "capabilities": {\n "drop": [\n "ALL"\n ]\n },\n "privileged": false,\n "runAsGroup": 26,\n "runAsNonRoot": true,\n "runAsUser": 26,\n "seccompProfile": {\n "type": "RuntimeDefault"\n }\n },\n "terminationMessagePath": "/dev/termination-log",\n "terminationMessagePolicy": "File",\n "volumeMounts": [\n {\n "mountPath": "/pgdata",\n "name": "postgres-data"\n },\n {\n "mountPath": "/opt/crunchy",\n "name": "crunchy-bin"\n },\n {\n "mountPath": "/tmp",\n "name": "tmp"\n }\n ]\n },\n {\n "args": [\n "logrotate"\n ],\n "command": [\n "/opt/crunchy/logcollector/entrypoint.sh"\n ],\n "env": [\n {\n "name": "POD_NAMESPACE",\n "valueFrom": {\n "fieldRef": {\n "apiVersion": "v1",\n "fieldPath": "metadata.namespace"\n }\n }\n },\n {\n "name": "POD_NAME",\n "valueFrom": {\n "fieldRef": {\n "apiVersion": "v1",\n "fieldPath": "metadata.name"\n }\n }\n },\n {\n "name": "LOGROTATE_SCHEDULE",\n "value": "0 0 * * *"\n },\n {\n "name": "LD_PRELOAD",\n "value": "/tmp/nss_wrapper/libnss_wrapper.so"\n },\n {\n "name": "NSS_WRAPPER_PASSWD",\n "value": "/tmp/nss_wrapper/postgres/passwd"\n },\n {\n "name": "NSS_WRAPPER_GROUP",\n "value": "/tmp/nss_wrapper/postgres/group"\n }\n ],\n "image": "docker.io/perconalab/fluentbit:main-logcollector",\n "imagePullPolicy": "IfNotPresent",\n "name": "logrotate",\n "resources": {},\n "securityContext": {\n "allowPrivilegeEscalation": false,\n "capabilities": {\n "drop": [\n "ALL"\n ]\n },\n "privileged": false,\n "runAsGroup": 26,\n "runAsNonRoot": true,\n "runAsUser": 26,\n "seccompProfile": {\n "type": "RuntimeDefault"\n }\n },\n "terminationMessagePath": "/dev/termination-log",\n "terminationMessagePolicy": "File",\n "volumeMounts": [\n {\n "mountPath": "/pgdata",\n "name": "postgres-data"\n },\n {\n "mountPath": "/opt/crunchy",\n "name": "crunchy-bin"\n },\n {\n "mountPath": "/tmp",\n "name": "tmp"\n }\n ]\n },\n {\n "command": [\n "pgbackrest",\n "server"\n ],\n "env": [\n {\n "name": "LD_PRELOAD",\n "value": "/usr/lib64/libnss_wrapper.so"\n },\n {\n "name": "NSS_WRAPPER_PASSWD",\n "value": "/tmp/nss_wrapper/postgres/passwd"\n },\n {\n "name": "NSS_WRAPPER_GROUP",\n "value": "/tmp/nss_wrapper/postgres/group"\n }\n ],\n "image": "docker.io/perconalab/percona-postgresql-operator:main-pgbackrest18",\n "imagePullPolicy": "Always",\n "livenessProbe": {\n "exec": {\n "command": [\n "pgbackrest",\n "server-ping"\n ]\n },\n "failureThreshold": 3,\n "periodSeconds": 10,\n "successThreshold": 1,\n "timeoutSeconds": 1\n },\n "name": "pgbackrest",\n "resources": {},\n "securityContext": {\n "allowPrivilegeEscalation": false,\n "capabilities": {\n "drop": [\n "ALL"\n ]\n },\n "privileged": false,\n "readOnlyRootFilesystem": true,\n "runAsNonRoot": true,\n "seccompProfile": {\n "type": "RuntimeDefault"\n }\n },\n "terminationMessagePath": "/dev/termination-log",\n "terminationMessagePolicy": "File",\n "volumeMounts": [\n {\n "mountPath": "/etc/pgbackrest/server",\n "name": "pgbackrest-server",\n "readOnly": true\n },\n {\n "mountPath": "/pgdata",\n "name": "postgres-data"\n },\n {\n "mountPath": "/tablespaces/myts",\n "name": "tablespace-myts"\n },\n {\n "mountPath": "/pgwal",\n "name": "postgres-wal"\n },\n {\n "mountPath": "/etc/pgbackrest/conf.d",\n "name": "pgbackrest-config",\n "readOnly": true\n },\n {\n "mountPath": "/tmp",\n "name": "tmp"\n }\n ]\n },\n {\n "command": [\n "bash",\n "-ceu",\n "--",\n "monitor() {\\nexec {fd}\\u003c\\u003e \\u003c(:||:)\\nuntil read -r -t 5 -u \\"${fd}\\"; do\\n if\\n [[ \\"${filename}\\" -nt \\"/proc/self/fd/${fd}\\" ]] \\u0026\\u0026\\n pkill -HUP --exact --parent=0 pgbackrest\\n then\\n exec {fd}\\u003e\\u0026- \\u0026\\u0026 exec {fd}\\u003c\\u003e \\u003c(:||:)\\n stat --dereference --format=\'Loaded configuration dated %y\' \\"${filename}\\"\\n elif\\n { [[ \\"${directory}\\" -nt \\"/proc/self/fd/${fd}\\" ]] ||\\n [[ \\"${authority}\\" -nt \\"/proc/self/fd/${fd}\\" ]]\\n } \\u0026\\u0026\\n pkill -HUP --exact --parent=0 pgbackrest\\n then\\n exec {fd}\\u003e\\u0026- \\u0026\\u0026 exec {fd}\\u003c\\u003e \\u003c(:||:)\\n stat --format=\'Loaded certificates dated %y\' \\"${directory}\\"\\n fi\\ndone\\n}; export directory=\\"$1\\" authority=\\"$2\\" filename=\\"$3\\"; export -f monitor; exec -a \\"$0\\" bash -ceu monitor",\n "pgbackrest-config",\n "/etc/pgbackrest/server",\n "/etc/pgbackrest/conf.d/~postgres-operator/tls-ca.crt",\n "/etc/pgbackrest/conf.d/~postgres-operator_server.conf"\n ],\n "image": "docker.io/perconalab/percona-postgresql-operator:main-pgbackrest18",\n "imagePullPolicy": "Always",\n "name": "pgbackrest-config",\n "resources": {},\n "securityContext": {\n "allowPrivilegeEscalation": false,\n "capabilities": {\n "drop": [\n "ALL"\n ]\n },\n "privileged": false,\n "readOnlyRootFilesystem": true,\n "runAsNonRoot": true,\n "seccompProfile": {\n "type": "RuntimeDefault"\n }\n },\n "terminationMessagePath": "/dev/termination-log",\n "terminationMessagePolicy": "File",\n "volumeMounts": [\n {\n "mountPath": "/etc/pgbackrest/server",\n "name": "pgbackrest-server",\n "readOnly": true\n },\n {\n "mountPath": "/etc/pgbackrest/conf.d",\n "name": "pgbackrest-config",\n "readOnly": true\n },\n {\n "mountPath": "/tmp",\n "name": "tmp"\n }\n ]\n }\n ],\n "dnsPolicy": "ClusterFirst",\n "enableServiceLinks": false,\n "initContainers": [\n {\n "command": [\n "/usr/local/bin/init-entrypoint.sh"\n ],\n "image": "docker.io/perconalab/percona-postgresql-operator:PR-1760-4947a0272",\n "imagePullPolicy": "Always",\n "name": "database-init",\n "resources": {},\n "securityContext": {\n "allowPrivilegeEscalation": false,\n "capabilities": {\n "drop": [\n "ALL"\n ]\n },\n "privileged": false,\n "readOnlyRootFilesystem": true,\n "runAsNonRoot": true,\n "seccompProfile": {\n "type": "RuntimeDefault"\n }\n },\n "terminationMessagePath": "/dev/termination-log",\n "terminationMessagePolicy": "File",\n "volumeMounts": [\n {\n "mountPath": "/opt/crunchy",\n "name": "crunchy-bin"\n },\n {\n "mountPath": "/tmp",\n "name": "tmp"\n }\n ]\n },\n {\n "command": [\n "bash",\n "-ceu",\n "--",\n "declare -r expected_major_version=\\"$1\\" pgwal_directory=\\"$2\\" pgbrLog_directory=\\"$3\\"\\npermissions() { while [[ -n \\"$1\\" ]]; do set \\"${1%/*}\\" \\"$@\\"; done; shift; stat -Lc \'%A %4u %4g %n\' \\"$@\\"; }\\nhalt() { local rc=$?; \\u003e\\u00262 echo \\"$@\\"; exit \\"${rc/#0/1}\\"; }\\nresults() { printf \'::postgres-operator: %s::%s\\\\n\' \\"$@\\"; }\\nrecreate() (\\n local tmp; tmp=$(mktemp -d -p \\"${1%/*}\\"); GLOBIGNORE=\'.:..\'; set -x\\n chmod \\"$2\\" \\"${tmp}\\"; mv \\"$1\\"/* \\"${tmp}\\"; rmdir \\"$1\\"; mv \\"${tmp}\\" \\"$1\\"\\n)\\nsafelink() (\\n local desired=\\"$1\\" name=\\"$2\\" current\\n current=$(realpath \\"${name}\\")\\n if [[ \\"${current}\\" == \\"${desired}\\" ]]; then return; fi\\n set -x; mv --no-target-directory \\"${current}\\" \\"${desired}\\"\\n ln --no-dereference --force --symbolic \\"${desired}\\" \\"${name}\\"\\n)\\necho Initializing ...\\nresults \'uid\' \\"$(id -u ||:)\\" \'gid\' \\"$(id -G ||:)\\"\\nif [[ \\"${pgwal_directory}\\" == *\\"pgwal/\\"* ]] \\u0026\\u0026 [[ ! -d \\"/pgwal/pgbackrest-spool\\" ]];then rm -rf \\"/pgdata/pgbackrest-spool\\" \\u0026\\u0026 mkdir -p \\"/pgwal/pgbackrest-spool\\" \\u0026\\u0026 ln --force --symbolic \\"/pgwal/pgbackrest-spool\\" \\"/pgdata/pgbackrest-spool\\";fi\\nif [[ ! -e \\"/pgdata/pgbackrest-spool\\" ]];then rm -rf /pgdata/pgbackrest-spool;fi\\nif [[ ! -e \\"/pgdata/logs/postgres\\" ]];then rm -rf \\"/pgdata/logs/postgres\\";fi\\nif [[ ! -e \\"${pgbrLog_directory}\\" ]];then rm -rf \\"${pgbrLog_directory}\\";fi\\nif [[ -d \\"/pglogs\\" ]];then install --directory --mode=0775 \\"/pglogs/postgres\\" \\"/pglogs/pgbackrest/log\\";if [[ ! -L \\"/pgdata/logs/postgres\\" ]];then mkdir -p \\"/pgdata/logs\\" \\u0026\\u0026 rm -rf \\"/pgdata/logs/postgres\\" \\u0026\\u0026 ln --symbolic \\"/pglogs/postgres\\" \\"/pgdata/logs/postgres\\";fi;if [[ ! -L \\"${pgbrLog_directory}\\" ]];then mkdir -p \\"${pgbrLog_directory%/*}\\" \\u0026\\u0026 rm -rf \\"${pgbrLog_directory}\\" \\u0026\\u0026 ln --symbolic \\"/pglogs/pgbackrest/log\\" \\"${pgbrLog_directory}\\";fi;fi\\nresults \'postgres path\' \\"$(command -v postgres ||:)\\"\\nresults \'postgres version\' \\"${postgres_version:=$(postgres --version ||:)}\\"\\n[[ \\"${postgres_version}\\" =~ \\") ${expected_major_version}\\"($|[^0-9]) ]] ||\\nhalt Expected PostgreSQL version \\"${expected_major_version}\\"\\nresults \'config directory\' \\"${PGDATA:?}\\"\\npostgres_data_directory=$([[ -d \\"${PGDATA}\\" ]] \\u0026\\u0026 postgres -C data_directory || echo \\"${PGDATA}\\")\\nresults \'data directory\' \\"${postgres_data_directory}\\"\\n[[ \\"${postgres_data_directory}\\" == \\"${PGDATA}\\" ]] ||\\nhalt Expected matching config and data directories\\nbootstrap_dir=\\"${postgres_data_directory}_bootstrap\\"\\n[[ -d \\"${bootstrap_dir}\\" ]] \\u0026\\u0026 results \'bootstrap directory\' \\"${bootstrap_dir}\\"\\n[[ -d \\"${bootstrap_dir}\\" ]] \\u0026\\u0026 postgres_data_directory=\\"${bootstrap_dir}\\"\\nif [[ ! -e \\"${postgres_data_directory}\\" || -O \\"${postgres_data_directory}\\" ]]; then\\ninstall --directory --mode=0700 \\"${postgres_data_directory}\\"\\nelif [[ -w \\"${postgres_data_directory}\\" \\u0026\\u0026 -g \\"${postgres_data_directory}\\" ]]; then\\nrecreate \\"${postgres_data_directory}\\" \'0700\'\\nelse (halt Permissions!); fi ||\\nhalt \\"$(permissions \\"${postgres_data_directory}\\" ||:)\\"\\nresults \'pgBackRest log directory\' \\"${pgbrLog_directory}\\"\\ninstall --directory --mode=0775 \\"${pgbrLog_directory}\\" ||\\nhalt \\"$(permissions \\"${pgbrLog_directory}\\" ||:)\\"\\ninstall -D --mode=0600 -t \\"/tmp/replication\\" \\"/pgconf/tls/replication\\"/{tls.crt,tls.key,ca.crt}\\n\\ntablespace_dir=/tablespaces/myts/data\\nif [[ ! -e \\"${tablespace_dir}\\" || -O \\"${tablespace_dir}\\" ]]; then\\ninstall --directory --mode=0700 \\"${tablespace_dir}\\"\\nelif [[ -w \\"${tablespace_dir}\\" \\u0026\\u0026 -g \\"${tablespace_dir}\\" ]]; then\\nrecreate \\"${tablespace_dir}\\" \'0700\'\\nelse (halt Permissions!); fi ||\\nhalt \\"$(permissions \\"${tablespace_dir}\\" ||:)\\"\\n[[ -f \\"${postgres_data_directory}/PG_VERSION\\" ]] || exit 0\\nresults \'data version\' \\"${postgres_data_version:=$(\\u003c \\"${postgres_data_directory}/PG_VERSION\\")}\\"\\n[[ \\"${postgres_data_version}\\" == \\"${expected_major_version}\\" ]] ||\\nhalt Expected PostgreSQL data version \\"${expected_major_version}\\"\\n[[ ! -f \\"${postgres_data_directory}/postgresql.conf\\" ]] \\u0026\\u0026\\ntouch \\"${postgres_data_directory}/postgresql.conf\\"\\nsafelink \\"${pgwal_directory}\\" \\"${postgres_data_directory}/pg_wal\\"\\nresults \'wal directory\' \\"$(realpath \\"${postgres_data_directory}/pg_wal\\" ||:)\\"\\nrm -f \\"${postgres_data_directory}/recovery.signal\\"",\n "startup",\n "18",\n "/pgwal/pg18_wal",\n "/pgdata/pgbackrest/log"\n ],\n "env": [\n {\n "name": "PGDATA",\n "value": "/pgdata/pg18"\n },\n {\n "name": "PGHOST",\n "value": "/tmp/postgres"\n },\n {\n "name": "PGPORT",\n "value": "5432"\n },\n {\n "name": "KRB5_CONFIG",\n "value": "/etc/postgres/krb5.conf"\n },\n {\n "name": "KRB5RCACHEDIR",\n "value": "/tmp"\n },\n {\n "name": "LDAPTLS_CACERT",\n "value": "/etc/postgres/ldap/ca.crt"\n },\n {\n "name": "LC_ALL",\n "value": "en_US.utf-8"\n },\n {\n "name": "LANG",\n "value": "en_US.utf-8"\n }\n ],\n "image": "docker.io/perconalab/percona-postgresql-operator:main-ppg18-postgres",\n "imagePullPolicy": "Always",\n "name": "postgres-startup",\n "resources": {},\n "securityContext": {\n "allowPrivilegeEscalation": false,\n "capabilities": {\n "drop": [\n "ALL"\n ]\n },\n "privileged": false,\n "readOnlyRootFilesystem": true,\n "runAsNonRoot": true,\n "seccompProfile": {\n "type": "RuntimeDefault"\n }\n },\n "terminationMessagePath": "/dev/termination-log",\n "terminationMessagePolicy": "File",\n "volumeMounts": [\n {\n "mountPath": "/pgconf/tls",\n "name": "cert-volume",\n "readOnly": true\n },\n {\n "mountPath": "/pgdata",\n "name": "postgres-data"\n },\n {\n "mountPath": "/tablespaces/myts",\n "name": "tablespace-myts"\n },\n {\n "mountPath": "/pgwal",\n "name": "postgres-wal"\n },\n {\n "mountPath": "/pglogs",\n "name": "postgres-logs"\n },\n {\n "mountPath": "/tmp",\n "name": "tmp"\n }\n ]\n },\n {\n "command": [\n "bash",\n "-c",\n "mkdir -p /tmp/nss_wrapper \\u0026\\u0026 { [[ -f /tmp/nss_wrapper/libnss_wrapper.so ]] || cp /usr/lib64/libnss_wrapper.so /tmp/nss_wrapper/libnss_wrapper.so; }"\n ],\n "image": "docker.io/perconalab/percona-postgresql-operator:main-ppg18-postgres",\n "imagePullPolicy": "Always",\n "name": "nss-wrapper-init-logcollector",\n "resources": {},\n "securityContext": {\n "allowPrivilegeEscalation": false,\n "capabilities": {\n "drop": [\n "ALL"\n ]\n },\n "privileged": false,\n "runAsGroup": 26,\n "runAsNonRoot": true,\n "runAsUser": 26,\n "seccompProfile": {\n "type": "RuntimeDefault"\n }\n },\n "terminationMessagePath": "/dev/termination-log",\n "terminationMessagePolicy": "File",\n "volumeMounts": [\n {\n "mountPath": "/tmp",\n "name": "tmp"\n }\n ]\n },\n {\n "command": [\n "bash",\n "-c",\n "export NSS_WRAPPER_SUBDIR=postgres CRUNCHY_NSS_USERNAME=postgres CRUNCHY_NSS_USER_DESC=\\"postgres\\" \\n# Define nss_wrapper directory and passwd \\u0026 group files that will be utilized by nss_wrapper. The\\n# nss_wrapper_env.sh script (which also sets these vars) isn\'t sourced here since the nss_wrapper\\n# has not yet been setup, and we therefore don\'t yet want the nss_wrapper vars in the environment.\\nmkdir -p /tmp/nss_wrapper\\nchmod g+rwx /tmp/nss_wrapper\\n\\nNSS_WRAPPER_DIR=\\"/tmp/nss_wrapper/${NSS_WRAPPER_SUBDIR}\\"\\nNSS_WRAPPER_PASSWD=\\"${NSS_WRAPPER_DIR}/passwd\\"\\nNSS_WRAPPER_GROUP=\\"${NSS_WRAPPER_DIR}/group\\"\\n\\n# create the nss_wrapper directory\\nmkdir -p \\"${NSS_WRAPPER_DIR}\\"\\n\\n# grab the current user ID and group ID\\nUSER_ID=$(id -u)\\nexport USER_ID\\nGROUP_ID=$(id -g)\\nexport GROUP_ID\\n\\n# get copies of the passwd and group files\\n[[ -f \\"${NSS_WRAPPER_PASSWD}\\" ]] || cp \\"/etc/passwd\\" \\"${NSS_WRAPPER_PASSWD}\\"\\n[[ -f \\"${NSS_WRAPPER_GROUP}\\" ]] || cp \\"/etc/group\\" \\"${NSS_WRAPPER_GROUP}\\"\\n\\n# if the username is missing from the passwd file, then add it\\nif [[ ! $(cat \\"${NSS_WRAPPER_PASSWD}\\") =~ ${CRUNCHY_NSS_USERNAME}:x:${USER_ID} ]]; then\\n echo \\"nss_wrapper: adding user\\"\\n passwd_tmp=\\"${NSS_WRAPPER_DIR}/passwd_tmp\\"\\n cp \\"${NSS_WRAPPER_PASSWD}\\" \\"${passwd_tmp}\\"\\n sed -i \\"/${CRUNCHY_NSS_USERNAME}:x:/d\\" \\"${passwd_tmp}\\"\\n # needed for OCP 4.x because crio updates /etc/passwd with an entry for USER_ID\\n sed -i \\"/${USER_ID}:x:/d\\" \\"${passwd_tmp}\\"\\n printf \'${CRUNCHY_NSS_USERNAME}:x:${USER_ID}:${GROUP_ID}:${CRUNCHY_NSS_USER_DESC}:${HOME}:/bin/bash\\\\n\' \\u003e\\u003e \\"${passwd_tmp}\\"\\n envsubst \\u003c \\"${passwd_tmp}\\" \\u003e \\"${NSS_WRAPPER_PASSWD}\\"\\n rm \\"${passwd_tmp}\\"\\nelse\\n echo \\"nss_wrapper: user exists\\"\\nfi\\n\\n# if the username (which will be the same as the group name) is missing from group file, then add it\\nif [[ ! $(cat \\"${NSS_WRAPPER_GROUP}\\") =~ ${CRUNCHY_NSS_USERNAME}:x:${USER_ID} ]]; then\\n echo \\"nss_wrapper: adding group\\"\\n group_tmp=\\"${NSS_WRAPPER_DIR}/group_tmp\\"\\n cp \\"${NSS_WRAPPER_GROUP}\\" \\"${group_tmp}\\"\\n sed -i \\"/${CRUNCHY_NSS_USERNAME}:x:/d\\" \\"${group_tmp}\\"\\n printf \'${CRUNCHY_NSS_USERNAME}:x:${USER_ID}:${CRUNCHY_NSS_USERNAME}\\\\n\' \\u003e\\u003e \\"${group_tmp}\\"\\n envsubst \\u003c \\"${group_tmp}\\" \\u003e \\"${NSS_WRAPPER_GROUP}\\"\\n rm \\"${group_tmp}\\"\\nelse\\n echo \\"nss_wrapper: group exists\\"\\nfi\\n\\n# export the nss_wrapper env vars\\n# define nss_wrapper directory and passwd \\u0026 group files that will be utilized by nss_wrapper\\nNSS_WRAPPER_DIR=\\"/tmp/nss_wrapper/${NSS_WRAPPER_SUBDIR}\\"\\nNSS_WRAPPER_PASSWD=\\"${NSS_WRAPPER_DIR}/passwd\\"\\nNSS_WRAPPER_GROUP=\\"${NSS_WRAPPER_DIR}/group\\"\\n\\nexport LD_PRELOAD=/usr/lib64/libnss_wrapper.so\\nexport NSS_WRAPPER_PASSWD=\\"${NSS_WRAPPER_PASSWD}\\"\\nexport NSS_WRAPPER_GROUP=\\"${NSS_WRAPPER_GROUP}\\"\\n\\necho \\"nss_wrapper: environment configured\\"\\n"\n ],\n "image": "docker.io/perconalab/percona-postgresql-operator:main-ppg18-postgres",\n "imagePullPolicy": "Always",\n "name": "nss-wrapper-init",\n "resources": {},\n "securityContext": {\n "allowPrivilegeEscalation": false,\n "capabilities": {\n "drop": [\n "ALL"\n ]\n },\n "privileged": false,\n "readOnlyRootFilesystem": true,\n "runAsNonRoot": true,\n "seccompProfile": {\n "type": "RuntimeDefault"\n }\n },\n "terminationMessagePath": "/dev/termination-log",\n "terminationMessagePolicy": "File",\n "volumeMounts": [\n {\n "mountPath": "/tmp",\n "name": "tmp"\n }\n ]\n }\n ],\n "restartPolicy": "Always",\n "schedulerName": "default-scheduler",\n "securityContext": {\n "fsGroup": 26,\n "fsGroupChangePolicy": "OnRootMismatch"\n },\n "serviceAccount": "additional-volumes-instance",\n "serviceAccountName": "additional-volumes-instance",\n "shareProcessNamespace": true,\n "terminationGracePeriodSeconds": 30,\n "topologySpreadConstraints": [\n {\n "labelSelector": {\n "matchExpressions": [\n {\n "key": "postgres-operator.crunchydata.com/data",\n "operator": "In",\n "values": [\n "postgres",\n "pgbackrest"\n ]\n }\n ],\n "matchLabels": {\n "postgres-operator.crunchydata.com/cluster": "additional-volumes"\n }\n },\n "maxSkew": 1,\n "topologyKey": "kubernetes.io/hostname",\n "whenUnsatisfiable": "ScheduleAnyway"\n },\n {\n "labelSelector": {\n "matchExpressions": [\n {\n "key": "postgres-operator.crunchydata.com/data",\n "operator": "In",\n "values": [\n "postgres",\n "pgbackrest"\n ]\n }\n ],\n "matchLabels": {\n "postgres-operator.crunchydata.com/cluster": "additional-volumes"\n }\n },\n "maxSkew": 1,\n "topologyKey": "topology.kubernetes.io/zone",\n "whenUnsatisfiable": "ScheduleAnyway"\n }\n ],\n "volumes": [\n {\n "name": "cert-volume",\n "projected": {\n "defaultMode": 384,\n "sources": [\n {\n "secret": {\n "items": [\n {\n "key": "tls.crt",\n "path": "tls.crt"\n },\n {\n "key": "tls.key",\n "path": "tls.key"\n },\n {\n "key": "ca.crt",\n "path": "ca.crt"\n }\n ],\n "name": "additional-volumes-cluster-cert"\n }\n },\n {\n "secret": {\n "items": [\n {\n "key": "tls.crt",\n "path": "replication/tls.crt"\n },\n {\n "key": "tls.key",\n "path": "replication/tls.key"\n },\n {\n "key": "ca.crt",\n "path": "replication/ca.crt"\n }\n ],\n "name": "additional-volumes-replication-cert"\n }\n }\n ]\n }\n },\n {\n "name": "postgres-data",\n "persistentVolumeClaim": {\n "claimName": "additional-volumes-instance1-24br-pgdata"\n }\n },\n {\n "downwardAPI": {\n "defaultMode": 420,\n "items": [\n {\n "path": "cpu_limit",\n "resourceFieldRef": {\n "containerName": "database",\n "divisor": "1m",\n "resource": "limits.cpu"\n }\n },\n {\n "path": "cpu_request",\n "resourceFieldRef": {\n "containerName": "database",\n "divisor": "1m",\n "resource": "requests.cpu"\n }\n },\n {\n "path": "mem_limit",\n "resourceFieldRef": {\n "containerName": "database",\n "divisor": "1Mi",\n "resource": "limits.memory"\n }\n },\n {\n "path": "mem_request",\n "resourceFieldRef": {\n "containerName": "database",\n "divisor": "1Mi",\n "resource": "requests.memory"\n }\n },\n {\n "fieldRef": {\n "apiVersion": "v1",\n "fieldPath": "metadata.labels"\n },\n "path": "labels"\n },\n {\n "fieldRef": {\n "apiVersion": "v1",\n "fieldPath": "metadata.annotations"\n },\n "path": "annotations"\n }\n ]\n },\n "name": "database-containerinfo"\n },\n {\n "name": "tablespace-myts",\n "persistentVolumeClaim": {\n "claimName": "additional-volumes-instance1-24br-myts-tablespace"\n }\n },\n {\n "name": "postgres-wal",\n "persistentVolumeClaim": {\n "claimName": "additional-volumes-instance1-24br-pgwal"\n }\n },\n {\n "name": "postgres-logs",\n "persistentVolumeClaim": {\n "claimName": "additional-volumes-instance1-24br-pglogs"\n }\n },\n {\n "name": "pgbackrest-server",\n "projected": {\n "defaultMode": 420,\n "sources": [\n {\n "secret": {\n "items": [\n {\n "key": "pgbackrest-server.crt",\n "path": "server-tls.crt"\n },\n {\n "key": "pgbackrest-server.key",\n "mode": 384,\n "path": "server-tls.key"\n }\n ],\n "name": "additional-volumes-instance1-24br-certs"\n }\n }\n ]\n }\n },\n {\n "name": "pgbackrest-config",\n "projected": {\n "defaultMode": 420,\n "sources": [\n {\n "configMap": {\n "items": [\n {\n "key": "pgbackrest_instance.conf",\n "path": "pgbackrest_instance.conf"\n },\n {\n "key": "config-hash",\n "path": "config-hash"\n },\n {\n "key": "pgbackrest-server.conf",\n "path": "~postgres-operator_server.conf"\n }\n ],\n "name": "additional-volumes-pgbackrest-config"\n }\n },\n {\n "secret": {\n "items": [\n {\n "key": "pgbackrest.ca-roots",\n "path": "~postgres-operator/tls-ca.crt"\n },\n {\n "key": "pgbackrest-client.crt",\n "path": "~postgres-operator/client-tls.crt"\n },\n {\n "key": "pgbackrest-client.key",\n "mode": 384,\n "path": "~postgres-operator/client-tls.key"\n }\n ],\n "name": "additional-volumes-pgbackrest"\n }\n }\n ]\n }\n },\n {\n "name": "patroni-config",\n "projected": {\n "defaultMode": 420,\n "sources": [\n {\n "configMap": {\n "items": [\n {\n "key": "patroni.yaml",\n "path": "~postgres-operator_cluster.yaml"\n }\n ],\n "name": "additional-volumes-config"\n }\n },\n {\n "configMap": {\n "items": [\n {\n "key": "patroni.yaml",\n "path": "~postgres-operator_instance.yaml"\n }\n ],\n "name": "additional-volumes-instance1-24br-config"\n }\n },\n {\n "secret": {\n "items": [\n {\n "key": "patroni.ca-roots",\n "path": "~postgres-operator/patroni.ca-roots"\n },\n {\n "key": "patroni.crt-combined",\n "path": "~postgres-operator/patroni.crt+key"\n }\n ],\n "name": "additional-volumes-instance1-24br-certs"\n }\n }\n ]\n }\n },\n {\n "emptyDir": {},\n "name": "crunchy-bin"\n },\n {\n "emptyDir": {\n "sizeLimit": "2Gi"\n },\n "name": "tmp"\n },\n {\n "emptyDir": {\n "medium": "Memory"\n },\n "name": "dshm"\n }\n ]\n }\n },\n "updateStrategy": {\n "type": "OnDelete"\n }\n },\n "status": {\n "availableReplicas": 1,\n "collisionCount": 0,\n "currentReplicas": 1,\n "currentRevision": "additional-volumes-instance1-24br-6849b5b674",\n "observedGeneration": 1,\n "readyReplicas": 1,\n "replicas": 1,\n "updateRevision": "additional-volumes-instance1-24br-6849b5b674",\n "updatedReplicas": 1\n }\n },\n {\n "apiVersion": "apps/v1",\n "kind": "StatefulSet",\n "metadata": {\n "annotations": {\n "pgv2.percona.com/logcollector-config-hash": "d9a116e02b828bdc02165325e92799d82961fb499041814c7c765d0ce263ce77"\n },\n "creationTimestamp": "2026-08-19T18:12:06Z",\n "generation": 1,\n "labels": {\n "app.kubernetes.io/component": "pg",\n "app.kubernetes.io/instance": "additional-volumes",\n "app.kubernetes.io/managed-by": "percona-postgresql-operator",\n "app.kubernetes.io/name": "percona-postgresql",\n "app.kubernetes.io/part-of": "percona-postgresql",\n "pgv2.percona.com/version": "3.2.0",\n "postgres-operator.crunchydata.com/cluster": "additional-volumes",\n "postgres-operator.crunchydata.com/data": "postgres",\n "postgres-operator.crunchydata.com/instance": "additional-volumes-instance1-n8pg",\n "postgres-operator.crunchydata.com/instance-set": "instance1"\n },\n "name": "additional-volumes-instance1-n8pg",\n "namespace": "kuttl-test-intimate-garfish",\n "ownerReferences": [\n {\n "apiVersion": "upstream.pgv2.percona.com/v1beta1",\n "blockOwnerDeletion": true,\n "controller": true,\n "kind": "PostgresCluster",\n "name": "additional-volumes",\n "uid": "b795649f-550b-4283-b2ef-eca573235e5a"\n }\n ],\n "resourceVersion": "1787163189863071003",\n "uid": "c2983a30-d942-42e2-9d6a-3e99691891fd"\n },\n "spec": {\n "persistentVolumeClaimRetentionPolicy": {\n "whenDeleted": "Retain",\n "whenScaled": "Retain"\n },\n "podManagementPolicy": "OrderedReady",\n "replicas": 1,\n "revisionHistoryLimit": 0,\n "selector": {\n "matchLabels": {\n "postgres-operator.crunchydata.com/cluster": "additional-volumes",\n "postgres-operator.crunchydata.com/instance": "additional-volumes-instance1-n8pg",\n "postgres-operator.crunchydata.com/instance-set": "instance1"\n }\n },\n "serviceName": "additional-volumes-pods",\n "template": {\n "metadata": {\n "annotations": {\n "kubectl.kubernetes.io/default-container": "database",\n "pgv2.percona.com/logcollector-config-hash": "d9a116e02b828bdc02165325e92799d82961fb499041814c7c765d0ce263ce77"\n },\n "creationTimestamp": null,\n "labels": {\n "app.kubernetes.io/component": "pg",\n "app.kubernetes.io/instance": "additional-volumes",\n "app.kubernetes.io/managed-by": "percona-postgresql-operator",\n "app.kubernetes.io/name": "percona-postgresql",\n "app.kubernetes.io/part-of": "percona-postgresql",\n "pgv2.percona.com/version": "3.2.0",\n "postgres-operator.crunchydata.com/cluster": "additional-volumes",\n "postgres-operator.crunchydata.com/data": "postgres",\n "postgres-operator.crunchydata.com/instance": "additional-volumes-instance1-n8pg",\n "postgres-operator.crunchydata.com/instance-set": "instance1",\n "postgres-operator.crunchydata.com/patroni": "additional-volumes-ha"\n }\n },\n "spec": {\n "affinity": {\n "podAntiAffinity": {\n "preferredDuringSchedulingIgnoredDuringExecution": [\n {\n "podAffinityTerm": {\n "labelSelector": {\n "matchLabels": {\n "postgres-operator.crunchydata.com/data": "postgres"\n }\n },\n "topologyKey": "kubernetes.io/hostname"\n },\n "weight": 1\n }\n ]\n }\n },\n "containers": [\n {\n "command": [\n "/opt/crunchy/bin/postgres-entrypoint.sh",\n "patroni",\n "/etc/patroni"\n ],\n "env": [\n {\n "name": "PGDATA",\n "value": "/pgdata/pg18"\n },\n {\n "name": "PGHOST",\n "value": "/tmp/postgres"\n },\n {\n "name": "PGPORT",\n "value": "5432"\n },\n {\n "name": "KRB5_CONFIG",\n "value": "/etc/postgres/krb5.conf"\n },\n {\n "name": "KRB5RCACHEDIR",\n "value": "/tmp"\n },\n {\n "name": "LDAPTLS_CACERT",\n "value": "/etc/postgres/ldap/ca.crt"\n },\n {\n "name": "LC_ALL",\n "value": "en_US.utf-8"\n },\n {\n "name": "LANG",\n "value": "en_US.utf-8"\n },\n {\n "name": "PATRONI_NAME",\n "valueFrom": {\n "fieldRef": {\n "apiVersion": "v1",\n "fieldPath": "metadata.name"\n }\n }\n },\n {\n "name": "PATRONI_KUBERNETES_POD_IP",\n "valueFrom": {\n "fieldRef": {\n "apiVersion": "v1",\n "fieldPath": "status.podIP"\n }\n }\n },\n {\n "name": "PATRONI_KUBERNETES_PORTS",\n "value": "- name: postgres\\n port: 5432\\n protocol: TCP\\n"\n },\n {\n "name": "PATRONI_POSTGRESQL_CONNECT_ADDRESS",\n "value": "$(PATRONI_NAME).additional-volumes-pods:5432"\n },\n {\n "name": "PATRONI_POSTGRESQL_LISTEN",\n "value": "*:5432"\n },\n {\n "name": "PATRONI_POSTGRESQL_CONFIG_DIR",\n "value": "/pgdata/pg18"\n },\n {\n "name": "PATRONI_POSTGRESQL_DATA_DIR",\n "value": "/pgdata/pg18"\n },\n {\n "name": "PATRONI_RESTAPI_CONNECT_ADDRESS",\n "value": "$(PATRONI_NAME).additional-volumes-pods:8008"\n },\n {\n "name": "PATRONI_RESTAPI_LISTEN",\n "value": "*:8008"\n },\n {\n "name": "PATRONICTL_CONFIG_FILE",\n "value": "/etc/patroni"\n },\n {\n "name": "LD_PRELOAD",\n "value": "/usr/lib64/libnss_wrapper.so"\n },\n {\n "name": "NSS_WRAPPER_PASSWD",\n "value": "/tmp/nss_wrapper/postgres/passwd"\n },\n {\n "name": "NSS_WRAPPER_GROUP",\n "value": "/tmp/nss_wrapper/postgres/group"\n }\n ],\n "image": "docker.io/perconalab/percona-postgresql-operator:main-ppg18-postgres",\n "imagePullPolicy": "Always",\n "livenessProbe": {\n "exec": {\n "command": [\n "bash",\n "-c",\n "/opt/crunchy/bin/postgres-liveness-check.sh"\n ]\n },\n "failureThreshold": 3,\n "initialDelaySeconds": 3,\n "periodSeconds": 10,\n "successThreshold": 1,\n "timeoutSeconds": 5\n },\n "name": "database",\n "ports": [\n {\n "containerPort": 5432,\n "name": "postgres",\n "protocol": "TCP"\n }\n ],\n "readinessProbe": {\n "exec": {\n "command": [\n "bash",\n "-c",\n "/opt/crunchy/bin/postgres-readiness-check.sh"\n ]\n },\n "failureThreshold": 3,\n "initialDelaySeconds": 3,\n "periodSeconds": 10,\n "successThreshold": 1,\n "timeoutSeconds": 5\n },\n "resources": {},\n "securityContext": {\n "allowPrivilegeEscalation": false,\n "capabilities": {\n "drop": [\n "ALL"\n ]\n },\n "privileged": false,\n "readOnlyRootFilesystem": true,\n "runAsNonRoot": true,\n "seccompProfile": {\n "type": "RuntimeDefault"\n }\n },\n "terminationMessagePath": "/dev/termination-log",\n "terminationMessagePolicy": "File",\n "volumeMounts": [\n {\n "mountPath": "/pgconf/tls",\n "name": "cert-volume",\n "readOnly": true\n },\n {\n "mountPath": "/pgdata",\n "name": "postgres-data"\n },\n {\n "mountPath": "/etc/database-containerinfo",\n "name": "database-containerinfo",\n "readOnly": true\n },\n {\n "mountPath": "/tablespaces/myts",\n "name": "tablespace-myts"\n },\n {\n "mountPath": "/pgwal",\n "name": "postgres-wal"\n },\n {\n "mountPath": "/pglogs",\n "name": "postgres-logs"\n },\n {\n "mountPath": "/etc/pgbackrest/conf.d",\n "name": "pgbackrest-config",\n "readOnly": true\n },\n {\n "mountPath": "/etc/patroni",\n "name": "patroni-config",\n "readOnly": true\n },\n {\n "mountPath": "/opt/crunchy",\n "name": "crunchy-bin"\n },\n {\n "mountPath": "/tmp",\n "name": "tmp"\n },\n {\n "mountPath": "/dev/shm",\n "name": "dshm"\n }\n ]\n },\n {\n "command": [\n "bash",\n "-ceu",\n "--",\n "monitor() {\\n# Parameters for curl when managing autogrow annotation.\\nAPISERVER=\\"https://kubernetes.default.svc\\"\\nSERVICEACCOUNT=\\"/var/run/secrets/kubernetes.io/serviceaccount\\"\\nNAMESPACE=$(cat ${SERVICEACCOUNT}/namespace)\\nTOKEN=$(cat ${SERVICEACCOUNT}/token)\\nCACERT=${SERVICEACCOUNT}/ca.crt\\n\\ndeclare -r directory=\\"/pgconf/tls\\"\\nexec {fd}\\u003c\\u003e \\u003c(:||:)\\nwhile read -r -t 5 -u \\"${fd}\\" ||:; do\\n # Manage replication certificate.\\n if [[ \\"${directory}\\" -nt \\"/proc/self/fd/${fd}\\" ]] \\u0026\\u0026\\n install -D --mode=0600 -t \\"/tmp/replication\\" \\"${directory}\\"/{replication/tls.crt,replication/tls.key,replication/ca.crt} \\u0026\\u0026\\n pkill -HUP --exact --parent=1 postgres\\n then\\n exec {fd}\\u003e\\u0026- \\u0026\\u0026 exec {fd}\\u003c\\u003e \\u003c(:||:)\\n stat --format=\'Loaded certificates dated %y\' \\"${directory}\\"\\n fi\\n\\ndone\\n}; export -f monitor; exec -a \\"$0\\" bash -ceu monitor",\n "replication-cert-copy"\n ],\n "image": "docker.io/perconalab/percona-postgresql-operator:main-ppg18-postgres",\n "imagePullPolicy": "Always",\n "name": "replication-cert-copy",\n "resources": {},\n "securityContext": {\n "allowPrivilegeEscalation": false,\n "capabilities": {\n "drop": [\n "ALL"\n ]\n },\n "privileged": false,\n "readOnlyRootFilesystem": true,\n "runAsNonRoot": true,\n "seccompProfile": {\n "type": "RuntimeDefault"\n }\n },\n "terminationMessagePath": "/dev/termination-log",\n "terminationMessagePolicy": "File",\n "volumeMounts": [\n {\n "mountPath": "/pgconf/tls",\n "name": "cert-volume",\n "readOnly": true\n },\n {\n "mountPath": "/pgdata",\n "name": "postgres-data"\n },\n {\n "mountPath": "/tmp",\n "name": "tmp"\n }\n ]\n },\n {\n "args": [\n "fluent-bit"\n ],\n "command": [\n "/opt/crunchy/logcollector/entrypoint.sh"\n ],\n "env": [\n {\n "name": "PG_LOG_DIR",\n "value": "/pgdata/pg18/log"\n },\n {\n "name": "PGBACKREST_LOG_DIR",\n "value": "/pgdata/pgbackrest/log"\n },\n {\n "name": "POD_NAMESPACE",\n "valueFrom": {\n "fieldRef": {\n "apiVersion": "v1",\n "fieldPath": "metadata.namespace"\n }\n }\n },\n {\n "name": "POD_NAME",\n "valueFrom": {\n "fieldRef": {\n "apiVersion": "v1",\n "fieldPath": "metadata.name"\n }\n }\n }\n ],\n "image": "docker.io/perconalab/fluentbit:main-logcollector",\n "imagePullPolicy": "IfNotPresent",\n "name": "logs",\n "resources": {},\n "securityContext": {\n "allowPrivilegeEscalation": false,\n "capabilities": {\n "drop": [\n "ALL"\n ]\n },\n "privileged": false,\n "runAsGroup": 26,\n "runAsNonRoot": true,\n "runAsUser": 26,\n "seccompProfile": {\n "type": "RuntimeDefault"\n }\n },\n "terminationMessagePath": "/dev/termination-log",\n "terminationMessagePolicy": "File",\n "volumeMounts": [\n {\n "mountPath": "/pgdata",\n "name": "postgres-data"\n },\n {\n "mountPath": "/opt/crunchy",\n "name": "crunchy-bin"\n },\n {\n "mountPath": "/tmp",\n "name": "tmp"\n }\n ]\n },\n {\n "args": [\n "logrotate"\n ],\n "command": [\n "/opt/crunchy/logcollector/entrypoint.sh"\n ],\n "env": [\n {\n "name": "POD_NAMESPACE",\n "valueFrom": {\n "fieldRef": {\n "apiVersion": "v1",\n "fieldPath": "metadata.namespace"\n }\n }\n },\n {\n "name": "POD_NAME",\n "valueFrom": {\n "fieldRef": {\n "apiVersion": "v1",\n "fieldPath": "metadata.name"\n }\n }\n },\n {\n "name": "LOGROTATE_SCHEDULE",\n "value": "0 0 * * *"\n },\n {\n "name": "LD_PRELOAD",\n "value": "/tmp/nss_wrapper/libnss_wrapper.so"\n },\n {\n "name": "NSS_WRAPPER_PASSWD",\n "value": "/tmp/nss_wrapper/postgres/passwd"\n },\n {\n "name": "NSS_WRAPPER_GROUP",\n "value": "/tmp/nss_wrapper/postgres/group"\n }\n ],\n "image": "docker.io/perconalab/fluentbit:main-logcollector",\n "imagePullPolicy": "IfNotPresent",\n "name": "logrotate",\n "resources": {},\n "securityContext": {\n "allowPrivilegeEscalation": false,\n "capabilities": {\n "drop": [\n "ALL"\n ]\n },\n "privileged": false,\n "runAsGroup": 26,\n "runAsNonRoot": true,\n "runAsUser": 26,\n "seccompProfile": {\n "type": "RuntimeDefault"\n }\n },\n "terminationMessagePath": "/dev/termination-log",\n "terminationMessagePolicy": "File",\n "volumeMounts": [\n {\n "mountPath": "/pgdata",\n "name": "postgres-data"\n },\n {\n "mountPath": "/opt/crunchy",\n "name": "crunchy-bin"\n },\n {\n "mountPath": "/tmp",\n "name": "tmp"\n }\n ]\n },\n {\n "command": [\n "pgbackrest",\n "server"\n ],\n "env": [\n {\n "name": "LD_PRELOAD",\n "value": "/usr/lib64/libnss_wrapper.so"\n },\n {\n "name": "NSS_WRAPPER_PASSWD",\n "value": "/tmp/nss_wrapper/postgres/passwd"\n },\n {\n "name": "NSS_WRAPPER_GROUP",\n "value": "/tmp/nss_wrapper/postgres/group"\n }\n ],\n "image": "docker.io/perconalab/percona-postgresql-operator:main-pgbackrest18",\n "imagePullPolicy": "Always",\n "livenessProbe": {\n "exec": {\n "command": [\n "pgbackrest",\n "server-ping"\n ]\n },\n "failureThreshold": 3,\n "periodSeconds": 10,\n "successThreshold": 1,\n "timeoutSeconds": 1\n },\n "name": "pgbackrest",\n "resources": {},\n "securityContext": {\n "allowPrivilegeEscalation": false,\n "capabilities": {\n "drop": [\n "ALL"\n ]\n },\n "privileged": false,\n "readOnlyRootFilesystem": true,\n "runAsNonRoot": true,\n "seccompProfile": {\n "type": "RuntimeDefault"\n }\n },\n "terminationMessagePath": "/dev/termination-log",\n "terminationMessagePolicy": "File",\n "volumeMounts": [\n {\n "mountPath": "/etc/pgbackrest/server",\n "name": "pgbackrest-server",\n "readOnly": true\n },\n {\n "mountPath": "/pgdata",\n "name": "postgres-data"\n },\n {\n "mountPath": "/tablespaces/myts",\n "name": "tablespace-myts"\n },\n {\n "mountPath": "/pgwal",\n "name": "postgres-wal"\n },\n {\n "mountPath": "/etc/pgbackrest/conf.d",\n "name": "pgbackrest-config",\n "readOnly": true\n },\n {\n "mountPath": "/tmp",\n "name": "tmp"\n }\n ]\n },\n {\n "command": [\n "bash",\n "-ceu",\n "--",\n "monitor() {\\nexec {fd}\\u003c\\u003e \\u003c(:||:)\\nuntil read -r -t 5 -u \\"${fd}\\"; do\\n if\\n [[ \\"${filename}\\" -nt \\"/proc/self/fd/${fd}\\" ]] \\u0026\\u0026\\n pkill -HUP --exact --parent=0 pgbackrest\\n then\\n exec {fd}\\u003e\\u0026- \\u0026\\u0026 exec {fd}\\u003c\\u003e \\u003c(:||:)\\n stat --dereference --format=\'Loaded configuration dated %y\' \\"${filename}\\"\\n elif\\n { [[ \\"${directory}\\" -nt \\"/proc/self/fd/${fd}\\" ]] ||\\n [[ \\"${authority}\\" -nt \\"/proc/self/fd/${fd}\\" ]]\\n } \\u0026\\u0026\\n pkill -HUP --exact --parent=0 pgbackrest\\n then\\n exec {fd}\\u003e\\u0026- \\u0026\\u0026 exec {fd}\\u003c\\u003e \\u003c(:||:)\\n stat --format=\'Loaded certificates dated %y\' \\"${directory}\\"\\n fi\\ndone\\n}; export directory=\\"$1\\" authority=\\"$2\\" filename=\\"$3\\"; export -f monitor; exec -a \\"$0\\" bash -ceu monitor",\n "pgbackrest-config",\n "/etc/pgbackrest/server",\n "/etc/pgbackrest/conf.d/~postgres-operator/tls-ca.crt",\n "/etc/pgbackrest/conf.d/~postgres-operator_server.conf"\n ],\n "image": "docker.io/perconalab/percona-postgresql-operator:main-pgbackrest18",\n "imagePullPolicy": "Always",\n "name": "pgbackrest-config",\n "resources": {},\n "securityContext": {\n "allowPrivilegeEscalation": false,\n "capabilities": {\n "drop": [\n "ALL"\n ]\n },\n "privileged": false,\n "readOnlyRootFilesystem": true,\n "runAsNonRoot": true,\n "seccompProfile": {\n "type": "RuntimeDefault"\n }\n },\n "terminationMessagePath": "/dev/termination-log",\n "terminationMessagePolicy": "File",\n "volumeMounts": [\n {\n "mountPath": "/etc/pgbackrest/server",\n "name": "pgbackrest-server",\n "readOnly": true\n },\n {\n "mountPath": "/etc/pgbackrest/conf.d",\n "name": "pgbackrest-config",\n "readOnly": true\n },\n {\n "mountPath": "/tmp",\n "name": "tmp"\n }\n ]\n }\n ],\n "dnsPolicy": "ClusterFirst",\n "enableServiceLinks": false,\n "initContainers": [\n {\n "command": [\n "/usr/local/bin/init-entrypoint.sh"\n ],\n "image": "docker.io/perconalab/percona-postgresql-operator:PR-1760-4947a0272",\n "imagePullPolicy": "Always",\n "name": "database-init",\n "resources": {},\n "securityContext": {\n "allowPrivilegeEscalation": false,\n "capabilities": {\n "drop": [\n "ALL"\n ]\n },\n "privileged": false,\n "readOnlyRootFilesystem": true,\n "runAsNonRoot": true,\n "seccompProfile": {\n "type": "RuntimeDefault"\n }\n },\n "terminationMessagePath": "/dev/termination-log",\n "terminationMessagePolicy": "File",\n "volumeMounts": [\n {\n "mountPath": "/opt/crunchy",\n "name": "crunchy-bin"\n },\n {\n "mountPath": "/tmp",\n "name": "tmp"\n }\n ]\n },\n {\n "command": [\n "bash",\n "-ceu",\n "--",\n "declare -r expected_major_version=\\"$1\\" pgwal_directory=\\"$2\\" pgbrLog_directory=\\"$3\\"\\npermissions() { while [[ -n \\"$1\\" ]]; do set \\"${1%/*}\\" \\"$@\\"; done; shift; stat -Lc \'%A %4u %4g %n\' \\"$@\\"; }\\nhalt() { local rc=$?; \\u003e\\u00262 echo \\"$@\\"; exit \\"${rc/#0/1}\\"; }\\nresults() { printf \'::postgres-operator: %s::%s\\\\n\' \\"$@\\"; }\\nrecreate() (\\n local tmp; tmp=$(mktemp -d -p \\"${1%/*}\\"); GLOBIGNORE=\'.:..\'; set -x\\n chmod \\"$2\\" \\"${tmp}\\"; mv \\"$1\\"/* \\"${tmp}\\"; rmdir \\"$1\\"; mv \\"${tmp}\\" \\"$1\\"\\n)\\nsafelink() (\\n local desired=\\"$1\\" name=\\"$2\\" current\\n current=$(realpath \\"${name}\\")\\n if [[ \\"${current}\\" == \\"${desired}\\" ]]; then return; fi\\n set -x; mv --no-target-directory \\"${current}\\" \\"${desired}\\"\\n ln --no-dereference --force --symbolic \\"${desired}\\" \\"${name}\\"\\n)\\necho Initializing ...\\nresults \'uid\' \\"$(id -u ||:)\\" \'gid\' \\"$(id -G ||:)\\"\\nif [[ \\"${pgwal_directory}\\" == *\\"pgwal/\\"* ]] \\u0026\\u0026 [[ ! -d \\"/pgwal/pgbackrest-spool\\" ]];then rm -rf \\"/pgdata/pgbackrest-spool\\" \\u0026\\u0026 mkdir -p \\"/pgwal/pgbackrest-spool\\" \\u0026\\u0026 ln --force --symbolic \\"/pgwal/pgbackrest-spool\\" \\"/pgdata/pgbackrest-spool\\";fi\\nif [[ ! -e \\"/pgdata/pgbackrest-spool\\" ]];then rm -rf /pgdata/pgbackrest-spool;fi\\nif [[ ! -e \\"/pgdata/logs/postgres\\" ]];then rm -rf \\"/pgdata/logs/postgres\\";fi\\nif [[ ! -e \\"${pgbrLog_directory}\\" ]];then rm -rf \\"${pgbrLog_directory}\\";fi\\nif [[ -d \\"/pglogs\\" ]];then install --directory --mode=0775 \\"/pglogs/postgres\\" \\"/pglogs/pgbackrest/log\\";if [[ ! -L \\"/pgdata/logs/postgres\\" ]];then mkdir -p \\"/pgdata/logs\\" \\u0026\\u0026 rm -rf \\"/pgdata/logs/postgres\\" \\u0026\\u0026 ln --symbolic \\"/pglogs/postgres\\" \\"/pgdata/logs/postgres\\";fi;if [[ ! -L \\"${pgbrLog_directory}\\" ]];then mkdir -p \\"${pgbrLog_directory%/*}\\" \\u0026\\u0026 rm -rf \\"${pgbrLog_directory}\\" \\u0026\\u0026 ln --symbolic \\"/pglogs/pgbackrest/log\\" \\"${pgbrLog_directory}\\";fi;fi\\nresults \'postgres path\' \\"$(command -v postgres ||:)\\"\\nresults \'postgres version\' \\"${postgres_version:=$(postgres --version ||:)}\\"\\n[[ \\"${postgres_version}\\" =~ \\") ${expected_major_version}\\"($|[^0-9]) ]] ||\\nhalt Expected PostgreSQL version \\"${expected_major_version}\\"\\nresults \'config directory\' \\"${PGDATA:?}\\"\\npostgres_data_directory=$([[ -d \\"${PGDATA}\\" ]] \\u0026\\u0026 postgres -C data_directory || echo \\"${PGDATA}\\")\\nresults \'data directory\' \\"${postgres_data_directory}\\"\\n[[ \\"${postgres_data_directory}\\" == \\"${PGDATA}\\" ]] ||\\nhalt Expected matching config and data directories\\nbootstrap_dir=\\"${postgres_data_directory}_bootstrap\\"\\n[[ -d \\"${bootstrap_dir}\\" ]] \\u0026\\u0026 results \'bootstrap directory\' \\"${bootstrap_dir}\\"\\n[[ -d \\"${bootstrap_dir}\\" ]] \\u0026\\u0026 postgres_data_directory=\\"${bootstrap_dir}\\"\\nif [[ ! -e \\"${postgres_data_directory}\\" || -O \\"${postgres_data_directory}\\" ]]; then\\ninstall --directory --mode=0700 \\"${postgres_data_directory}\\"\\nelif [[ -w \\"${postgres_data_directory}\\" \\u0026\\u0026 -g \\"${postgres_data_directory}\\" ]]; then\\nrecreate \\"${postgres_data_directory}\\" \'0700\'\\nelse (halt Permissions!); fi ||\\nhalt \\"$(permissions \\"${postgres_data_directory}\\" ||:)\\"\\nresults \'pgBackRest log directory\' \\"${pgbrLog_directory}\\"\\ninstall --directory --mode=0775 \\"${pgbrLog_directory}\\" ||\\nhalt \\"$(permissions \\"${pgbrLog_directory}\\" ||:)\\"\\ninstall -D --mode=0600 -t \\"/tmp/replication\\" \\"/pgconf/tls/replication\\"/{tls.crt,tls.key,ca.crt}\\n\\ntablespace_dir=/tablespaces/myts/data\\nif [[ ! -e \\"${tablespace_dir}\\" || -O \\"${tablespace_dir}\\" ]]; then\\ninstall --directory --mode=0700 \\"${tablespace_dir}\\"\\nelif [[ -w \\"${tablespace_dir}\\" \\u0026\\u0026 -g \\"${tablespace_dir}\\" ]]; then\\nrecreate \\"${tablespace_dir}\\" \'0700\'\\nelse (halt Permissions!); fi ||\\nhalt \\"$(permissions \\"${tablespace_dir}\\" ||:)\\"\\n[[ -f \\"${postgres_data_directory}/PG_VERSION\\" ]] || exit 0\\nresults \'data version\' \\"${postgres_data_version:=$(\\u003c \\"${postgres_data_directory}/PG_VERSION\\")}\\"\\n[[ \\"${postgres_data_version}\\" == \\"${expected_major_version}\\" ]] ||\\nhalt Expected PostgreSQL data version \\"${expected_major_version}\\"\\n[[ ! -f \\"${postgres_data_directory}/postgresql.conf\\" ]] \\u0026\\u0026\\ntouch \\"${postgres_data_directory}/postgresql.conf\\"\\nsafelink \\"${pgwal_directory}\\" \\"${postgres_data_directory}/pg_wal\\"\\nresults \'wal directory\' \\"$(realpath \\"${postgres_data_directory}/pg_wal\\" ||:)\\"\\nrm -f \\"${postgres_data_directory}/recovery.signal\\"",\n "startup",\n "18",\n "/pgwal/pg18_wal",\n "/pgdata/pgbackrest/log"\n ],\n "env": [\n {\n "name": "PGDATA",\n "value": "/pgdata/pg18"\n },\n {\n "name": "PGHOST",\n "value": "/tmp/postgres"\n },\n {\n "name": "PGPORT",\n "value": "5432"\n },\n {\n "name": "KRB5_CONFIG",\n "value": "/etc/postgres/krb5.conf"\n },\n {\n "name": "KRB5RCACHEDIR",\n "value": "/tmp"\n },\n {\n "name": "LDAPTLS_CACERT",\n "value": "/etc/postgres/ldap/ca.crt"\n },\n {\n "name": "LC_ALL",\n "value": "en_US.utf-8"\n },\n {\n "name": "LANG",\n "value": "en_US.utf-8"\n }\n ],\n "image": "docker.io/perconalab/percona-postgresql-operator:main-ppg18-postgres",\n "imagePullPolicy": "Always",\n "name": "postgres-startup",\n "resources": {},\n "securityContext": {\n "allowPrivilegeEscalation": false,\n "capabilities": {\n "drop": [\n "ALL"\n ]\n },\n "privileged": false,\n "readOnlyRootFilesystem": true,\n "runAsNonRoot": true,\n "seccompProfile": {\n "type": "RuntimeDefault"\n }\n },\n "terminationMessagePath": "/dev/termination-log",\n "terminationMessagePolicy": "File",\n "volumeMounts": [\n {\n "mountPath": "/pgconf/tls",\n "name": "cert-volume",\n "readOnly": true\n },\n {\n "mountPath": "/pgdata",\n "name": "postgres-data"\n },\n {\n "mountPath": "/tablespaces/myts",\n "name": "tablespace-myts"\n },\n {\n "mountPath": "/pgwal",\n "name": "postgres-wal"\n },\n {\n "mountPath": "/pglogs",\n "name": "postgres-logs"\n },\n {\n "mountPath": "/tmp",\n "name": "tmp"\n }\n ]\n },\n {\n "command": [\n "bash",\n "-c",\n "mkdir -p /tmp/nss_wrapper \\u0026\\u0026 { [[ -f /tmp/nss_wrapper/libnss_wrapper.so ]] || cp /usr/lib64/libnss_wrapper.so /tmp/nss_wrapper/libnss_wrapper.so; }"\n ],\n "image": "docker.io/perconalab/percona-postgresql-operator:main-ppg18-postgres",\n "imagePullPolicy": "Always",\n "name": "nss-wrapper-init-logcollector",\n "resources": {},\n "securityContext": {\n "allowPrivilegeEscalation": false,\n "capabilities": {\n "drop": [\n "ALL"\n ]\n },\n "privileged": false,\n "runAsGroup": 26,\n "runAsNonRoot": true,\n "runAsUser": 26,\n "seccompProfile": {\n "type": "RuntimeDefault"\n }\n },\n "terminationMessagePath": "/dev/termination-log",\n "terminationMessagePolicy": "File",\n "volumeMounts": [\n {\n "mountPath": "/tmp",\n "name": "tmp"\n }\n ]\n },\n {\n "command": [\n "bash",\n "-c",\n "export NSS_WRAPPER_SUBDIR=postgres CRUNCHY_NSS_USERNAME=postgres CRUNCHY_NSS_USER_DESC=\\"postgres\\" \\n# Define nss_wrapper directory and passwd \\u0026 group files that will be utilized by nss_wrapper. The\\n# nss_wrapper_env.sh script (which also sets these vars) isn\'t sourced here since the nss_wrapper\\n# has not yet been setup, and we therefore don\'t yet want the nss_wrapper vars in the environment.\\nmkdir -p /tmp/nss_wrapper\\nchmod g+rwx /tmp/nss_wrapper\\n\\nNSS_WRAPPER_DIR=\\"/tmp/nss_wrapper/${NSS_WRAPPER_SUBDIR}\\"\\nNSS_WRAPPER_PASSWD=\\"${NSS_WRAPPER_DIR}/passwd\\"\\nNSS_WRAPPER_GROUP=\\"${NSS_WRAPPER_DIR}/group\\"\\n\\n# create the nss_wrapper directory\\nmkdir -p \\"${NSS_WRAPPER_DIR}\\"\\n\\n# grab the current user ID and group ID\\nUSER_ID=$(id -u)\\nexport USER_ID\\nGROUP_ID=$(id -g)\\nexport GROUP_ID\\n\\n# get copies of the passwd and group files\\n[[ -f \\"${NSS_WRAPPER_PASSWD}\\" ]] || cp \\"/etc/passwd\\" \\"${NSS_WRAPPER_PASSWD}\\"\\n[[ -f \\"${NSS_WRAPPER_GROUP}\\" ]] || cp \\"/etc/group\\" \\"${NSS_WRAPPER_GROUP}\\"\\n\\n# if the username is missing from the passwd file, then add it\\nif [[ ! $(cat \\"${NSS_WRAPPER_PASSWD}\\") =~ ${CRUNCHY_NSS_USERNAME}:x:${USER_ID} ]]; then\\n echo \\"nss_wrapper: adding user\\"\\n passwd_tmp=\\"${NSS_WRAPPER_DIR}/passwd_tmp\\"\\n cp \\"${NSS_WRAPPER_PASSWD}\\" \\"${passwd_tmp}\\"\\n sed -i \\"/${CRUNCHY_NSS_USERNAME}:x:/d\\" \\"${passwd_tmp}\\"\\n # needed for OCP 4.x because crio updates /etc/passwd with an entry for USER_ID\\n sed -i \\"/${USER_ID}:x:/d\\" \\"${passwd_tmp}\\"\\n printf \'${CRUNCHY_NSS_USERNAME}:x:${USER_ID}:${GROUP_ID}:${CRUNCHY_NSS_USER_DESC}:${HOME}:/bin/bash\\\\n\' \\u003e\\u003e \\"${passwd_tmp}\\"\\n envsubst \\u003c \\"${passwd_tmp}\\" \\u003e \\"${NSS_WRAPPER_PASSWD}\\"\\n rm \\"${passwd_tmp}\\"\\nelse\\n echo \\"nss_wrapper: user exists\\"\\nfi\\n\\n# if the username (which will be the same as the group name) is missing from group file, then add it\\nif [[ ! $(cat \\"${NSS_WRAPPER_GROUP}\\") =~ ${CRUNCHY_NSS_USERNAME}:x:${USER_ID} ]]; then\\n echo \\"nss_wrapper: adding group\\"\\n group_tmp=\\"${NSS_WRAPPER_DIR}/group_tmp\\"\\n cp \\"${NSS_WRAPPER_GROUP}\\" \\"${group_tmp}\\"\\n sed -i \\"/${CRUNCHY_NSS_USERNAME}:x:/d\\" \\"${group_tmp}\\"\\n printf \'${CRUNCHY_NSS_USERNAME}:x:${USER_ID}:${CRUNCHY_NSS_USERNAME}\\\\n\' \\u003e\\u003e \\"${group_tmp}\\"\\n envsubst \\u003c \\"${group_tmp}\\" \\u003e \\"${NSS_WRAPPER_GROUP}\\"\\n rm \\"${group_tmp}\\"\\nelse\\n echo \\"nss_wrapper: group exists\\"\\nfi\\n\\n# export the nss_wrapper env vars\\n# define nss_wrapper directory and passwd \\u0026 group files that will be utilized by nss_wrapper\\nNSS_WRAPPER_DIR=\\"/tmp/nss_wrapper/${NSS_WRAPPER_SUBDIR}\\"\\nNSS_WRAPPER_PASSWD=\\"${NSS_WRAPPER_DIR}/passwd\\"\\nNSS_WRAPPER_GROUP=\\"${NSS_WRAPPER_DIR}/group\\"\\n\\nexport LD_PRELOAD=/usr/lib64/libnss_wrapper.so\\nexport NSS_WRAPPER_PASSWD=\\"${NSS_WRAPPER_PASSWD}\\"\\nexport NSS_WRAPPER_GROUP=\\"${NSS_WRAPPER_GROUP}\\"\\n\\necho \\"nss_wrapper: environment configured\\"\\n"\n ],\n "image": "docker.io/perconalab/percona-postgresql-operator:main-ppg18-postgres",\n "imagePullPolicy": "Always",\n "name": "nss-wrapper-init",\n "resources": {},\n "securityContext": {\n "allowPrivilegeEscalation": false,\n "capabilities": {\n "drop": [\n "ALL"\n ]\n },\n "privileged": false,\n "readOnlyRootFilesystem": true,\n "runAsNonRoot": true,\n "seccompProfile": {\n "type": "RuntimeDefault"\n }\n },\n "terminationMessagePath": "/dev/termination-log",\n "terminationMessagePolicy": "File",\n "volumeMounts": [\n {\n "mountPath": "/tmp",\n "name": "tmp"\n }\n ]\n }\n ],\n "restartPolicy": "Always",\n "schedulerName": "default-scheduler",\n "securityContext": {\n "fsGroup": 26,\n "fsGroupChangePolicy": "OnRootMismatch"\n },\n "serviceAccount": "additional-volumes-instance",\n "serviceAccountName": "additional-volumes-instance",\n "shareProcessNamespace": true,\n "terminationGracePeriodSeconds": 30,\n "topologySpreadConstraints": [\n {\n "labelSelector": {\n "matchExpressions": [\n {\n "key": "postgres-operator.crunchydata.com/data",\n "operator": "In",\n "values": [\n "postgres",\n "pgbackrest"\n ]\n }\n ],\n "matchLabels": {\n "postgres-operator.crunchydata.com/cluster": "additional-volumes"\n }\n },\n "maxSkew": 1,\n "topologyKey": "kubernetes.io/hostname",\n "whenUnsatisfiable": "ScheduleAnyway"\n },\n {\n "labelSelector": {\n "matchExpressions": [\n {\n "key": "postgres-operator.crunchydata.com/data",\n "operator": "In",\n "values": [\n "postgres",\n "pgbackrest"\n ]\n }\n ],\n "matchLabels": {\n "postgres-operator.crunchydata.com/cluster": "additional-volumes"\n }\n },\n "maxSkew": 1,\n "topologyKey": "topology.kubernetes.io/zone",\n "whenUnsatisfiable": "ScheduleAnyway"\n }\n ],\n "volumes": [\n {\n "name": "cert-volume",\n "projected": {\n "defaultMode": 384,\n "sources": [\n {\n "secret": {\n "items": [\n {\n "key": "tls.crt",\n "path": "tls.crt"\n },\n {\n "key": "tls.key",\n "path": "tls.key"\n },\n {\n "key": "ca.crt",\n "path": "ca.crt"\n }\n ],\n "name": "additional-volumes-cluster-cert"\n }\n },\n {\n "secret": {\n "items": [\n {\n "key": "tls.crt",\n "path": "replication/tls.crt"\n },\n {\n "key": "tls.key",\n "path": "replication/tls.key"\n },\n {\n "key": "ca.crt",\n "path": "replication/ca.crt"\n }\n ],\n "name": "additional-volumes-replication-cert"\n }\n }\n ]\n }\n },\n {\n "name": "postgres-data",\n "persistentVolumeClaim": {\n "claimName": "additional-volumes-instance1-n8pg-pgdata"\n }\n },\n {\n "downwardAPI": {\n "defaultMode": 420,\n "items": [\n {\n "path": "cpu_limit",\n "resourceFieldRef": {\n "containerName": "database",\n "divisor": "1m",\n "resource": "limits.cpu"\n }\n },\n {\n "path": "cpu_request",\n "resourceFieldRef": {\n "containerName": "database",\n "divisor": "1m",\n "resource": "requests.cpu"\n }\n },\n {\n "path": "mem_limit",\n "resourceFieldRef": {\n "containerName": "database",\n "divisor": "1Mi",\n "resource": "limits.memory"\n }\n },\n {\n "path": "mem_request",\n "resourceFieldRef": {\n "containerName": "database",\n "divisor": "1Mi",\n "resource": "requests.memory"\n }\n },\n {\n "fieldRef": {\n "apiVersion": "v1",\n "fieldPath": "metadata.labels"\n },\n "path": "labels"\n },\n {\n "fieldRef": {\n "apiVersion": "v1",\n "fieldPath": "metadata.annotations"\n },\n "path": "annotations"\n }\n ]\n },\n "name": "database-containerinfo"\n },\n {\n "name": "tablespace-myts",\n "persistentVolumeClaim": {\n "claimName": "additional-volumes-instance1-n8pg-myts-tablespace"\n }\n },\n {\n "name": "postgres-wal",\n "persistentVolumeClaim": {\n "claimName": "additional-volumes-instance1-n8pg-pgwal"\n }\n },\n {\n "name": "postgres-logs",\n "persistentVolumeClaim": {\n "claimName": "additional-volumes-instance1-n8pg-pglogs"\n }\n },\n {\n "name": "pgbackrest-server",\n "projected": {\n "defaultMode": 420,\n "sources": [\n {\n "secret": {\n "items": [\n {\n "key": "pgbackrest-server.crt",\n "path": "server-tls.crt"\n },\n {\n "key": "pgbackrest-server.key",\n "mode": 384,\n "path": "server-tls.key"\n }\n ],\n "name": "additional-volumes-instance1-n8pg-certs"\n }\n }\n ]\n }\n },\n {\n "name": "pgbackrest-config",\n "projected": {\n "defaultMode": 420,\n "sources": [\n {\n "configMap": {\n "items": [\n {\n "key": "pgbackrest_instance.conf",\n "path": "pgbackrest_instance.conf"\n },\n {\n "key": "config-hash",\n "path": "config-hash"\n },\n {\n "key": "pgbackrest-server.conf",\n "path": "~postgres-operator_server.conf"\n }\n ],\n "name": "additional-volumes-pgbackrest-config"\n }\n },\n {\n "secret": {\n "items": [\n {\n "key": "pgbackrest.ca-roots",\n "path": "~postgres-operator/tls-ca.crt"\n },\n {\n "key": "pgbackrest-client.crt",\n "path": "~postgres-operator/client-tls.crt"\n },\n {\n "key": "pgbackrest-client.key",\n "mode": 384,\n "path": "~postgres-operator/client-tls.key"\n }\n ],\n "name": "additional-volumes-pgbackrest"\n }\n }\n ]\n }\n },\n {\n "name": "patroni-config",\n "projected": {\n "defaultMode": 420,\n "sources": [\n {\n "configMap": {\n "items": [\n {\n "key": "patroni.yaml",\n "path": "~postgres-operator_cluster.yaml"\n }\n ],\n "name": "additional-volumes-config"\n }\n },\n {\n "configMap": {\n "items": [\n {\n "key": "patroni.yaml",\n "path": "~postgres-operator_instance.yaml"\n }\n ],\n "name": "additional-volumes-instance1-n8pg-config"\n }\n },\n {\n "secret": {\n "items": [\n {\n "key": "patroni.ca-roots",\n "path": "~postgres-operator/patroni.ca-roots"\n },\n {\n "key": "patroni.crt-combined",\n "path": "~postgres-operator/patroni.crt+key"\n }\n ],\n "name": "additional-volumes-instance1-n8pg-certs"\n }\n }\n ]\n }\n },\n {\n "emptyDir": {},\n "name": "crunchy-bin"\n },\n {\n "emptyDir": {\n "sizeLimit": "2Gi"\n },\n "name": "tmp"\n },\n {\n "emptyDir": {\n "medium": "Memory"\n },\n "name": "dshm"\n }\n ]\n }\n },\n "updateStrategy": {\n "type": "OnDelete"\n }\n },\n "status": {\n "availableReplicas": 1,\n "collisionCount": 0,\n "currentReplicas": 1,\n "currentRevision": "additional-volumes-instance1-n8pg-7f58bcfdb6",\n "observedGeneration": 1,\n "readyReplicas": 1,\n "replicas": 1,\n "updateRevision": "additional-volumes-instance1-n8pg-7f58bcfdb6",\n "updatedReplicas": 1\n }\n },\n {\n "apiVersion": "apps/v1",\n "kind": "StatefulSet",\n "metadata": {\n "annotations": {\n "pgv2.percona.com/logcollector-config-hash": "d9a116e02b828bdc02165325e92799d82961fb499041814c7c765d0ce263ce77"\n },\n "creationTimestamp": "2026-08-19T18:12:05Z",\n "generation": 1,\n "labels": {\n "app.kubernetes.io/component": "pg",\n "app.kubernetes.io/instance": "additional-volumes",\n "app.kubernetes.io/managed-by": "percona-postgresql-operator",\n "app.kubernetes.io/name": "percona-postgresql",\n "app.kubernetes.io/part-of": "percona-postgresql",\n "pgv2.percona.com/version": "3.2.0",\n "postgres-operator.crunchydata.com/cluster": "additional-volumes",\n "postgres-operator.crunchydata.com/data": "postgres",\n "postgres-operator.crunchydata.com/instance": "additional-volumes-instance1-xvbw",\n "postgres-operator.crunchydata.com/instance-set": "instance1"\n },\n "name": "additional-volumes-instance1-xvbw",\n "namespace": "kuttl-test-intimate-garfish",\n "ownerReferences": [\n {\n "apiVersion": "upstream.pgv2.percona.com/v1beta1",\n "blockOwnerDeletion": true,\n "controller": true,\n "kind": "PostgresCluster",\n "name": "additional-volumes",\n "uid": "b795649f-550b-4283-b2ef-eca573235e5a"\n }\n ],\n "resourceVersion": "1787163193859951017",\n "uid": "ff0eabc4-a14f-43d4-85da-3372e3c9c0da"\n },\n "spec": {\n "persistentVolumeClaimRetentionPolicy": {\n "whenDeleted": "Retain",\n "whenScaled": "Retain"\n },\n "podManagementPolicy": "OrderedReady",\n "replicas": 1,\n "revisionHistoryLimit": 0,\n "selector": {\n "matchLabels": {\n "postgres-operator.crunchydata.com/cluster": "additional-volumes",\n "postgres-operator.crunchydata.com/instance": "additional-volumes-instance1-xvbw",\n "postgres-operator.crunchydata.com/instance-set": "instance1"\n }\n },\n "serviceName": "additional-volumes-pods",\n "template": {\n "metadata": {\n "annotations": {\n "kubectl.kubernetes.io/default-container": "database",\n "pgv2.percona.com/logcollector-config-hash": "d9a116e02b828bdc02165325e92799d82961fb499041814c7c765d0ce263ce77"\n },\n "creationTimestamp": null,\n "labels": {\n "app.kubernetes.io/component": "pg",\n "app.kubernetes.io/instance": "additional-volumes",\n "app.kubernetes.io/managed-by": "percona-postgresql-operator",\n "app.kubernetes.io/name": "percona-postgresql",\n "app.kubernetes.io/part-of": "percona-postgresql",\n "pgv2.percona.com/version": "3.2.0",\n "postgres-operator.crunchydata.com/cluster": "additional-volumes",\n "postgres-operator.crunchydata.com/data": "postgres",\n "postgres-operator.crunchydata.com/instance": "additional-volumes-instance1-xvbw",\n "postgres-operator.crunchydata.com/instance-set": "instance1",\n "postgres-operator.crunchydata.com/patroni": "additional-volumes-ha"\n }\n },\n "spec": {\n "affinity": {\n "podAntiAffinity": {\n "preferredDuringSchedulingIgnoredDuringExecution": [\n {\n "podAffinityTerm": {\n "labelSelector": {\n "matchLabels": {\n "postgres-operator.crunchydata.com/data": "postgres"\n }\n },\n "topologyKey": "kubernetes.io/hostname"\n },\n "weight": 1\n }\n ]\n }\n },\n "containers": [\n {\n "command": [\n "/opt/crunchy/bin/postgres-entrypoint.sh",\n "patroni",\n "/etc/patroni"\n ],\n "env": [\n {\n "name": "PGDATA",\n "value": "/pgdata/pg18"\n },\n {\n "name": "PGHOST",\n "value": "/tmp/postgres"\n },\n {\n "name": "PGPORT",\n "value": "5432"\n },\n {\n "name": "KRB5_CONFIG",\n "value": "/etc/postgres/krb5.conf"\n },\n {\n "name": "KRB5RCACHEDIR",\n "value": "/tmp"\n },\n {\n "name": "LDAPTLS_CACERT",\n "value": "/etc/postgres/ldap/ca.crt"\n },\n {\n "name": "LC_ALL",\n "value": "en_US.utf-8"\n },\n {\n "name": "LANG",\n "value": "en_US.utf-8"\n },\n {\n "name": "PATRONI_NAME",\n "valueFrom": {\n "fieldRef": {\n "apiVersion": "v1",\n "fieldPath": "metadata.name"\n }\n }\n },\n {\n "name": "PATRONI_KUBERNETES_POD_IP",\n "valueFrom": {\n "fieldRef": {\n "apiVersion": "v1",\n "fieldPath": "status.podIP"\n }\n }\n },\n {\n "name": "PATRONI_KUBERNETES_PORTS",\n "value": "- name: postgres\\n port: 5432\\n protocol: TCP\\n"\n },\n {\n "name": "PATRONI_POSTGRESQL_CONNECT_ADDRESS",\n "value": "$(PATRONI_NAME).additional-volumes-pods:5432"\n },\n {\n "name": "PATRONI_POSTGRESQL_LISTEN",\n "value": "*:5432"\n },\n {\n "name": "PATRONI_POSTGRESQL_CONFIG_DIR",\n "value": "/pgdata/pg18"\n },\n {\n "name": "PATRONI_POSTGRESQL_DATA_DIR",\n "value": "/pgdata/pg18"\n },\n {\n "name": "PATRONI_RESTAPI_CONNECT_ADDRESS",\n "value": "$(PATRONI_NAME).additional-volumes-pods:8008"\n },\n {\n "name": "PATRONI_RESTAPI_LISTEN",\n "value": "*:8008"\n },\n {\n "name": "PATRONICTL_CONFIG_FILE",\n "value": "/etc/patroni"\n },\n {\n "name": "LD_PRELOAD",\n "value": "/usr/lib64/libnss_wrapper.so"\n },\n {\n "name": "NSS_WRAPPER_PASSWD",\n "value": "/tmp/nss_wrapper/postgres/passwd"\n },\n {\n "name": "NSS_WRAPPER_GROUP",\n "value": "/tmp/nss_wrapper/postgres/group"\n }\n ],\n "image": "docker.io/perconalab/percona-postgresql-operator:main-ppg18-postgres",\n "imagePullPolicy": "Always",\n "livenessProbe": {\n "exec": {\n "command": [\n "bash",\n "-c",\n "/opt/crunchy/bin/postgres-liveness-check.sh"\n ]\n },\n "failureThreshold": 3,\n "initialDelaySeconds": 3,\n "periodSeconds": 10,\n "successThreshold": 1,\n "timeoutSeconds": 5\n },\n "name": "database",\n "ports": [\n {\n "containerPort": 5432,\n "name": "postgres",\n "protocol": "TCP"\n }\n ],\n "readinessProbe": {\n "exec": {\n "command": [\n "bash",\n "-c",\n "/opt/crunchy/bin/postgres-readiness-check.sh"\n ]\n },\n "failureThreshold": 3,\n "initialDelaySeconds": 3,\n "periodSeconds": 10,\n "successThreshold": 1,\n "timeoutSeconds": 5\n },\n "resources": {},\n "securityContext": {\n "allowPrivilegeEscalation": false,\n "capabilities": {\n "drop": [\n "ALL"\n ]\n },\n "privileged": false,\n "readOnlyRootFilesystem": true,\n "runAsNonRoot": true,\n "seccompProfile": {\n "type": "RuntimeDefault"\n }\n },\n "terminationMessagePath": "/dev/termination-log",\n "terminationMessagePolicy": "File",\n "volumeMounts": [\n {\n "mountPath": "/pgconf/tls",\n "name": "cert-volume",\n "readOnly": true\n },\n {\n "mountPath": "/pgdata",\n "name": "postgres-data"\n },\n {\n "mountPath": "/etc/database-containerinfo",\n "name": "database-containerinfo",\n "readOnly": true\n },\n {\n "mountPath": "/tablespaces/myts",\n "name": "tablespace-myts"\n },\n {\n "mountPath": "/pgwal",\n "name": "postgres-wal"\n },\n {\n "mountPath": "/pglogs",\n "name": "postgres-logs"\n },\n {\n "mountPath": "/etc/pgbackrest/conf.d",\n "name": "pgbackrest-config",\n "readOnly": true\n },\n {\n "mountPath": "/etc/patroni",\n "name": "patroni-config",\n "readOnly": true\n },\n {\n "mountPath": "/opt/crunchy",\n "name": "crunchy-bin"\n },\n {\n "mountPath": "/tmp",\n "name": "tmp"\n },\n {\n "mountPath": "/dev/shm",\n "name": "dshm"\n }\n ]\n },\n {\n "command": [\n "bash",\n "-ceu",\n "--",\n "monitor() {\\n# Parameters for curl when managing autogrow annotation.\\nAPISERVER=\\"https://kubernetes.default.svc\\"\\nSERVICEACCOUNT=\\"/var/run/secrets/kubernetes.io/serviceaccount\\"\\nNAMESPACE=$(cat ${SERVICEACCOUNT}/namespace)\\nTOKEN=$(cat ${SERVICEACCOUNT}/token)\\nCACERT=${SERVICEACCOUNT}/ca.crt\\n\\ndeclare -r directory=\\"/pgconf/tls\\"\\nexec {fd}\\u003c\\u003e \\u003c(:||:)\\nwhile read -r -t 5 -u \\"${fd}\\" ||:; do\\n # Manage replication certificate.\\n if [[ \\"${directory}\\" -nt \\"/proc/self/fd/${fd}\\" ]] \\u0026\\u0026\\n install -D --mode=0600 -t \\"/tmp/replication\\" \\"${directory}\\"/{replication/tls.crt,replication/tls.key,replication/ca.crt} \\u0026\\u0026\\n pkill -HUP --exact --parent=1 postgres\\n then\\n exec {fd}\\u003e\\u0026- \\u0026\\u0026 exec {fd}\\u003c\\u003e \\u003c(:||:)\\n stat --format=\'Loaded certificates dated %y\' \\"${directory}\\"\\n fi\\n\\ndone\\n}; export -f monitor; exec -a \\"$0\\" bash -ceu monitor",\n "replication-cert-copy"\n ],\n "image": "docker.io/perconalab/percona-postgresql-operator:main-ppg18-postgres",\n "imagePullPolicy": "Always",\n "name": "replication-cert-copy",\n "resources": {},\n "securityContext": {\n "allowPrivilegeEscalation": false,\n "capabilities": {\n "drop": [\n "ALL"\n ]\n },\n "privileged": false,\n "readOnlyRootFilesystem": true,\n "runAsNonRoot": true,\n "seccompProfile": {\n "type": "RuntimeDefault"\n }\n },\n "terminationMessagePath": "/dev/termination-log",\n "terminationMessagePolicy": "File",\n "volumeMounts": [\n {\n "mountPath": "/pgconf/tls",\n "name": "cert-volume",\n "readOnly": true\n },\n {\n "mountPath": "/pgdata",\n "name": "postgres-data"\n },\n {\n "mountPath": "/tmp",\n "name": "tmp"\n }\n ]\n },\n {\n "args": [\n "fluent-bit"\n ],\n "command": [\n "/opt/crunchy/logcollector/entrypoint.sh"\n ],\n "env": [\n {\n "name": "PG_LOG_DIR",\n "value": "/pgdata/pg18/log"\n },\n {\n "name": "PGBACKREST_LOG_DIR",\n "value": "/pgdata/pgbackrest/log"\n },\n {\n "name": "POD_NAMESPACE",\n "valueFrom": {\n "fieldRef": {\n "apiVersion": "v1",\n "fieldPath": "metadata.namespace"\n }\n }\n },\n {\n "name": "POD_NAME",\n "valueFrom": {\n "fieldRef": {\n "apiVersion": "v1",\n "fieldPath": "metadata.name"\n }\n }\n }\n ],\n "image": "docker.io/perconalab/fluentbit:main-logcollector",\n "imagePullPolicy": "IfNotPresent",\n "name": "logs",\n "resources": {},\n "securityContext": {\n "allowPrivilegeEscalation": false,\n "capabilities": {\n "drop": [\n "ALL"\n ]\n },\n "privileged": false,\n "runAsGroup": 26,\n "runAsNonRoot": true,\n "runAsUser": 26,\n "seccompProfile": {\n "type": "RuntimeDefault"\n }\n },\n "terminationMessagePath": "/dev/termination-log",\n "terminationMessagePolicy": "File",\n "volumeMounts": [\n {\n "mountPath": "/pgdata",\n "name": "postgres-data"\n },\n {\n "mountPath": "/opt/crunchy",\n "name": "crunchy-bin"\n },\n {\n "mountPath": "/tmp",\n "name": "tmp"\n }\n ]\n },\n {\n "args": [\n "logrotate"\n ],\n "command": [\n "/opt/crunchy/logcollector/entrypoint.sh"\n ],\n "env": [\n {\n "name": "POD_NAMESPACE",\n "valueFrom": {\n "fieldRef": {\n "apiVersion": "v1",\n "fieldPath": "metadata.namespace"\n }\n }\n },\n {\n "name": "POD_NAME",\n "valueFrom": {\n "fieldRef": {\n "apiVersion": "v1",\n "fieldPath": "metadata.name"\n }\n }\n },\n {\n "name": "LOGROTATE_SCHEDULE",\n "value": "0 0 * * *"\n },\n {\n "name": "LD_PRELOAD",\n "value": "/tmp/nss_wrapper/libnss_wrapper.so"\n },\n {\n "name": "NSS_WRAPPER_PASSWD",\n "value": "/tmp/nss_wrapper/postgres/passwd"\n },\n {\n "name": "NSS_WRAPPER_GROUP",\n "value": "/tmp/nss_wrapper/postgres/group"\n }\n ],\n "image": "docker.io/perconalab/fluentbit:main-logcollector",\n "imagePullPolicy": "IfNotPresent",\n "name": "logrotate",\n "resources": {},\n "securityContext": {\n "allowPrivilegeEscalation": false,\n "capabilities": {\n "drop": [\n "ALL"\n ]\n },\n "privileged": false,\n "runAsGroup": 26,\n "runAsNonRoot": true,\n "runAsUser": 26,\n "seccompProfile": {\n "type": "RuntimeDefault"\n }\n },\n "terminationMessagePath": "/dev/termination-log",\n "terminationMessagePolicy": "File",\n "volumeMounts": [\n {\n "mountPath": "/pgdata",\n "name": "postgres-data"\n },\n {\n "mountPath": "/opt/crunchy",\n "name": "crunchy-bin"\n },\n {\n "mountPath": "/tmp",\n "name": "tmp"\n }\n ]\n },\n {\n "command": [\n "pgbackrest",\n "server"\n ],\n "env": [\n {\n "name": "LD_PRELOAD",\n "value": "/usr/lib64/libnss_wrapper.so"\n },\n {\n "name": "NSS_WRAPPER_PASSWD",\n "value": "/tmp/nss_wrapper/postgres/passwd"\n },\n {\n "name": "NSS_WRAPPER_GROUP",\n "value": "/tmp/nss_wrapper/postgres/group"\n }\n ],\n "image": "docker.io/perconalab/percona-postgresql-operator:main-pgbackrest18",\n "imagePullPolicy": "Always",\n "livenessProbe": {\n "exec": {\n "command": [\n "pgbackrest",\n "server-ping"\n ]\n },\n "failureThreshold": 3,\n "periodSeconds": 10,\n "successThreshold": 1,\n "timeoutSeconds": 1\n },\n "name": "pgbackrest",\n "resources": {},\n "securityContext": {\n "allowPrivilegeEscalation": false,\n "capabilities": {\n "drop": [\n "ALL"\n ]\n },\n "privileged": false,\n "readOnlyRootFilesystem": true,\n "runAsNonRoot": true,\n "seccompProfile": {\n "type": "RuntimeDefault"\n }\n },\n "terminationMessagePath": "/dev/termination-log",\n "terminationMessagePolicy": "File",\n "volumeMounts": [\n {\n "mountPath": "/etc/pgbackrest/server",\n "name": "pgbackrest-server",\n "readOnly": true\n },\n {\n "mountPath": "/pgdata",\n "name": "postgres-data"\n },\n {\n "mountPath": "/tablespaces/myts",\n "name": "tablespace-myts"\n },\n {\n "mountPath": "/pgwal",\n "name": "postgres-wal"\n },\n {\n "mountPath": "/etc/pgbackrest/conf.d",\n "name": "pgbackrest-config",\n "readOnly": true\n },\n {\n "mountPath": "/tmp",\n "name": "tmp"\n }\n ]\n },\n {\n "command": [\n "bash",\n "-ceu",\n "--",\n "monitor() {\\nexec {fd}\\u003c\\u003e \\u003c(:||:)\\nuntil read -r -t 5 -u \\"${fd}\\"; do\\n if\\n [[ \\"${filename}\\" -nt \\"/proc/self/fd/${fd}\\" ]] \\u0026\\u0026\\n pkill -HUP --exact --parent=0 pgbackrest\\n then\\n exec {fd}\\u003e\\u0026- \\u0026\\u0026 exec {fd}\\u003c\\u003e \\u003c(:||:)\\n stat --dereference --format=\'Loaded configuration dated %y\' \\"${filename}\\"\\n elif\\n { [[ \\"${directory}\\" -nt \\"/proc/self/fd/${fd}\\" ]] ||\\n [[ \\"${authority}\\" -nt \\"/proc/self/fd/${fd}\\" ]]\\n } \\u0026\\u0026\\n pkill -HUP --exact --parent=0 pgbackrest\\n then\\n exec {fd}\\u003e\\u0026- \\u0026\\u0026 exec {fd}\\u003c\\u003e \\u003c(:||:)\\n stat --format=\'Loaded certificates dated %y\' \\"${directory}\\"\\n fi\\ndone\\n}; export directory=\\"$1\\" authority=\\"$2\\" filename=\\"$3\\"; export -f monitor; exec -a \\"$0\\" bash -ceu monitor",\n "pgbackrest-config",\n "/etc/pgbackrest/server",\n "/etc/pgbackrest/conf.d/~postgres-operator/tls-ca.crt",\n "/etc/pgbackrest/conf.d/~postgres-operator_server.conf"\n ],\n "image": "docker.io/perconalab/percona-postgresql-operator:main-pgbackrest18",\n "imagePullPolicy": "Always",\n "name": "pgbackrest-config",\n "resources": {},\n "securityContext": {\n "allowPrivilegeEscalation": false,\n "capabilities": {\n "drop": [\n "ALL"\n ]\n },\n "privileged": false,\n "readOnlyRootFilesystem": true,\n "runAsNonRoot": true,\n "seccompProfile": {\n "type": "RuntimeDefault"\n }\n },\n "terminationMessagePath": "/dev/termination-log",\n "terminationMessagePolicy": "File",\n "volumeMounts": [\n {\n "mountPath": "/etc/pgbackrest/server",\n "name": "pgbackrest-server",\n "readOnly": true\n },\n {\n "mountPath": "/etc/pgbackrest/conf.d",\n "name": "pgbackrest-config",\n "readOnly": true\n },\n {\n "mountPath": "/tmp",\n "name": "tmp"\n }\n ]\n }\n ],\n "dnsPolicy": "ClusterFirst",\n "enableServiceLinks": false,\n "initContainers": [\n {\n "command": [\n "/usr/local/bin/init-entrypoint.sh"\n ],\n "image": "docker.io/perconalab/percona-postgresql-operator:PR-1760-4947a0272",\n "imagePullPolicy": "Always",\n "name": "database-init",\n "resources": {},\n "securityContext": {\n "allowPrivilegeEscalation": false,\n "capabilities": {\n "drop": [\n "ALL"\n ]\n },\n "privileged": false,\n "readOnlyRootFilesystem": true,\n "runAsNonRoot": true,\n "seccompProfile": {\n "type": "RuntimeDefault"\n }\n },\n "terminationMessagePath": "/dev/termination-log",\n "terminationMessagePolicy": "File",\n "volumeMounts": [\n {\n "mountPath": "/opt/crunchy",\n "name": "crunchy-bin"\n },\n {\n "mountPath": "/tmp",\n "name": "tmp"\n }\n ]\n },\n {\n "command": [\n "bash",\n "-ceu",\n "--",\n "declare -r expected_major_version=\\"$1\\" pgwal_directory=\\"$2\\" pgbrLog_directory=\\"$3\\"\\npermissions() { while [[ -n \\"$1\\" ]]; do set \\"${1%/*}\\" \\"$@\\"; done; shift; stat -Lc \'%A %4u %4g %n\' \\"$@\\"; }\\nhalt() { local rc=$?; \\u003e\\u00262 echo \\"$@\\"; exit \\"${rc/#0/1}\\"; }\\nresults() { printf \'::postgres-operator: %s::%s\\\\n\' \\"$@\\"; }\\nrecreate() (\\n local tmp; tmp=$(mktemp -d -p \\"${1%/*}\\"); GLOBIGNORE=\'.:..\'; set -x\\n chmod \\"$2\\" \\"${tmp}\\"; mv \\"$1\\"/* \\"${tmp}\\"; rmdir \\"$1\\"; mv \\"${tmp}\\" \\"$1\\"\\n)\\nsafelink() (\\n local desired=\\"$1\\" name=\\"$2\\" current\\n current=$(realpath \\"${name}\\")\\n if [[ \\"${current}\\" == \\"${desired}\\" ]]; then return; fi\\n set -x; mv --no-target-directory \\"${current}\\" \\"${desired}\\"\\n ln --no-dereference --force --symbolic \\"${desired}\\" \\"${name}\\"\\n)\\necho Initializing ...\\nresults \'uid\' \\"$(id -u ||:)\\" \'gid\' \\"$(id -G ||:)\\"\\nif [[ \\"${pgwal_directory}\\" == *\\"pgwal/\\"* ]] \\u0026\\u0026 [[ ! -d \\"/pgwal/pgbackrest-spool\\" ]];then rm -rf \\"/pgdata/pgbackrest-spool\\" \\u0026\\u0026 mkdir -p \\"/pgwal/pgbackrest-spool\\" \\u0026\\u0026 ln --force --symbolic \\"/pgwal/pgbackrest-spool\\" \\"/pgdata/pgbackrest-spool\\";fi\\nif [[ ! -e \\"/pgdata/pgbackrest-spool\\" ]];then rm -rf /pgdata/pgbackrest-spool;fi\\nif [[ ! -e \\"/pgdata/logs/postgres\\" ]];then rm -rf \\"/pgdata/logs/postgres\\";fi\\nif [[ ! -e \\"${pgbrLog_directory}\\" ]];then rm -rf \\"${pgbrLog_directory}\\";fi\\nif [[ -d \\"/pglogs\\" ]];then install --directory --mode=0775 \\"/pglogs/postgres\\" \\"/pglogs/pgbackrest/log\\";if [[ ! -L \\"/pgdata/logs/postgres\\" ]];then mkdir -p \\"/pgdata/logs\\" \\u0026\\u0026 rm -rf \\"/pgdata/logs/postgres\\" \\u0026\\u0026 ln --symbolic \\"/pglogs/postgres\\" \\"/pgdata/logs/postgres\\";fi;if [[ ! -L \\"${pgbrLog_directory}\\" ]];then mkdir -p \\"${pgbrLog_directory%/*}\\" \\u0026\\u0026 rm -rf \\"${pgbrLog_directory}\\" \\u0026\\u0026 ln --symbolic \\"/pglogs/pgbackrest/log\\" \\"${pgbrLog_directory}\\";fi;fi\\nresults \'postgres path\' \\"$(command -v postgres ||:)\\"\\nresults \'postgres version\' \\"${postgres_version:=$(postgres --version ||:)}\\"\\n[[ \\"${postgres_version}\\" =~ \\") ${expected_major_version}\\"($|[^0-9]) ]] ||\\nhalt Expected PostgreSQL version \\"${expected_major_version}\\"\\nresults \'config directory\' \\"${PGDATA:?}\\"\\npostgres_data_directory=$([[ -d \\"${PGDATA}\\" ]] \\u0026\\u0026 postgres -C data_directory || echo \\"${PGDATA}\\")\\nresults \'data directory\' \\"${postgres_data_directory}\\"\\n[[ \\"${postgres_data_directory}\\" == \\"${PGDATA}\\" ]] ||\\nhalt Expected matching config and data directories\\nbootstrap_dir=\\"${postgres_data_directory}_bootstrap\\"\\n[[ -d \\"${bootstrap_dir}\\" ]] \\u0026\\u0026 results \'bootstrap directory\' \\"${bootstrap_dir}\\"\\n[[ -d \\"${bootstrap_dir}\\" ]] \\u0026\\u0026 postgres_data_directory=\\"${bootstrap_dir}\\"\\nif [[ ! -e \\"${postgres_data_directory}\\" || -O \\"${postgres_data_directory}\\" ]]; then\\ninstall --directory --mode=0700 \\"${postgres_data_directory}\\"\\nelif [[ -w \\"${postgres_data_directory}\\" \\u0026\\u0026 -g \\"${postgres_data_directory}\\" ]]; then\\nrecreate \\"${postgres_data_directory}\\" \'0700\'\\nelse (halt Permissions!); fi ||\\nhalt \\"$(permissions \\"${postgres_data_directory}\\" ||:)\\"\\nresults \'pgBackRest log directory\' \\"${pgbrLog_directory}\\"\\ninstall --directory --mode=0775 \\"${pgbrLog_directory}\\" ||\\nhalt \\"$(permissions \\"${pgbrLog_directory}\\" ||:)\\"\\ninstall -D --mode=0600 -t \\"/tmp/replication\\" \\"/pgconf/tls/replication\\"/{tls.crt,tls.key,ca.crt}\\n\\ntablespace_dir=/tablespaces/myts/data\\nif [[ ! -e \\"${tablespace_dir}\\" || -O \\"${tablespace_dir}\\" ]]; then\\ninstall --directory --mode=0700 \\"${tablespace_dir}\\"\\nelif [[ -w \\"${tablespace_dir}\\" \\u0026\\u0026 -g \\"${tablespace_dir}\\" ]]; then\\nrecreate \\"${tablespace_dir}\\" \'0700\'\\nelse (halt Permissions!); fi ||\\nhalt \\"$(permissions \\"${tablespace_dir}\\" ||:)\\"\\n[[ -f \\"${postgres_data_directory}/PG_VERSION\\" ]] || exit 0\\nresults \'data version\' \\"${postgres_data_version:=$(\\u003c \\"${postgres_data_directory}/PG_VERSION\\")}\\"\\n[[ \\"${postgres_data_version}\\" == \\"${expected_major_version}\\" ]] ||\\nhalt Expected PostgreSQL data version \\"${expected_major_version}\\"\\n[[ ! -f \\"${postgres_data_directory}/postgresql.conf\\" ]] \\u0026\\u0026\\ntouch \\"${postgres_data_directory}/postgresql.conf\\"\\nsafelink \\"${pgwal_directory}\\" \\"${postgres_data_directory}/pg_wal\\"\\nresults \'wal directory\' \\"$(realpath \\"${postgres_data_directory}/pg_wal\\" ||:)\\"\\nrm -f \\"${postgres_data_directory}/recovery.signal\\"",\n "startup",\n "18",\n "/pgwal/pg18_wal",\n "/pgdata/pgbackrest/log"\n ],\n "env": [\n {\n "name": "PGDATA",\n "value": "/pgdata/pg18"\n },\n {\n "name": "PGHOST",\n "value": "/tmp/postgres"\n },\n {\n "name": "PGPORT",\n "value": "5432"\n },\n {\n "name": "KRB5_CONFIG",\n "value": "/etc/postgres/krb5.conf"\n },\n {\n "name": "KRB5RCACHEDIR",\n "value": "/tmp"\n },\n {\n "name": "LDAPTLS_CACERT",\n "value": "/etc/postgres/ldap/ca.crt"\n },\n {\n "name": "LC_ALL",\n "value": "en_US.utf-8"\n },\n {\n "name": "LANG",\n "value": "en_US.utf-8"\n }\n ],\n "image": "docker.io/perconalab/percona-postgresql-operator:main-ppg18-postgres",\n "imagePullPolicy": "Always",\n "name": "postgres-startup",\n "resources": {},\n "securityContext": {\n "allowPrivilegeEscalation": false,\n "capabilities": {\n "drop": [\n "ALL"\n ]\n },\n "privileged": false,\n "readOnlyRootFilesystem": true,\n "runAsNonRoot": true,\n "seccompProfile": {\n "type": "RuntimeDefault"\n }\n },\n "terminationMessagePath": "/dev/termination-log",\n "terminationMessagePolicy": "File",\n "volumeMounts": [\n {\n "mountPath": "/pgconf/tls",\n "name": "cert-volume",\n "readOnly": true\n },\n {\n "mountPath": "/pgdata",\n "name": "postgres-data"\n },\n {\n "mountPath": "/tablespaces/myts",\n "name": "tablespace-myts"\n },\n {\n "mountPath": "/pgwal",\n "name": "postgres-wal"\n },\n {\n "mountPath": "/pglogs",\n "name": "postgres-logs"\n },\n {\n "mountPath": "/tmp",\n "name": "tmp"\n }\n ]\n },\n {\n "command": [\n "bash",\n "-c",\n "mkdir -p /tmp/nss_wrapper \\u0026\\u0026 { [[ -f /tmp/nss_wrapper/libnss_wrapper.so ]] || cp /usr/lib64/libnss_wrapper.so /tmp/nss_wrapper/libnss_wrapper.so; }"\n ],\n "image": "docker.io/perconalab/percona-postgresql-operator:main-ppg18-postgres",\n "imagePullPolicy": "Always",\n "name": "nss-wrapper-init-logcollector",\n "resources": {},\n "securityContext": {\n "allowPrivilegeEscalation": false,\n "capabilities": {\n "drop": [\n "ALL"\n ]\n },\n "privileged": false,\n "runAsGroup": 26,\n "runAsNonRoot": true,\n "runAsUser": 26,\n "seccompProfile": {\n "type": "RuntimeDefault"\n }\n },\n "terminationMessagePath": "/dev/termination-log",\n "terminationMessagePolicy": "File",\n "volumeMounts": [\n {\n "mountPath": "/tmp",\n "name": "tmp"\n }\n ]\n },\n {\n "command": [\n "bash",\n "-c",\n "export NSS_WRAPPER_SUBDIR=postgres CRUNCHY_NSS_USERNAME=postgres CRUNCHY_NSS_USER_DESC=\\"postgres\\" \\n# Define nss_wrapper directory and passwd \\u0026 group files that will be utilized by nss_wrapper. The\\n# nss_wrapper_env.sh script (which also sets these vars) isn\'t sourced here since the nss_wrapper\\n# has not yet been setup, and we therefore don\'t yet want the nss_wrapper vars in the environment.\\nmkdir -p /tmp/nss_wrapper\\nchmod g+rwx /tmp/nss_wrapper\\n\\nNSS_WRAPPER_DIR=\\"/tmp/nss_wrapper/${NSS_WRAPPER_SUBDIR}\\"\\nNSS_WRAPPER_PASSWD=\\"${NSS_WRAPPER_DIR}/passwd\\"\\nNSS_WRAPPER_GROUP=\\"${NSS_WRAPPER_DIR}/group\\"\\n\\n# create the nss_wrapper directory\\nmkdir -p \\"${NSS_WRAPPER_DIR}\\"\\n\\n# grab the current user ID and group ID\\nUSER_ID=$(id -u)\\nexport USER_ID\\nGROUP_ID=$(id -g)\\nexport GROUP_ID\\n\\n# get copies of the passwd and group files\\n[[ -f \\"${NSS_WRAPPER_PASSWD}\\" ]] || cp \\"/etc/passwd\\" \\"${NSS_WRAPPER_PASSWD}\\"\\n[[ -f \\"${NSS_WRAPPER_GROUP}\\" ]] || cp \\"/etc/group\\" \\"${NSS_WRAPPER_GROUP}\\"\\n\\n# if the username is missing from the passwd file, then add it\\nif [[ ! $(cat \\"${NSS_WRAPPER_PASSWD}\\") =~ ${CRUNCHY_NSS_USERNAME}:x:${USER_ID} ]]; then\\n echo \\"nss_wrapper: adding user\\"\\n passwd_tmp=\\"${NSS_WRAPPER_DIR}/passwd_tmp\\"\\n cp \\"${NSS_WRAPPER_PASSWD}\\" \\"${passwd_tmp}\\"\\n sed -i \\"/${CRUNCHY_NSS_USERNAME}:x:/d\\" \\"${passwd_tmp}\\"\\n # needed for OCP 4.x because crio updates /etc/passwd with an entry for USER_ID\\n sed -i \\"/${USER_ID}:x:/d\\" \\"${passwd_tmp}\\"\\n printf \'${CRUNCHY_NSS_USERNAME}:x:${USER_ID}:${GROUP_ID}:${CRUNCHY_NSS_USER_DESC}:${HOME}:/bin/bash\\\\n\' \\u003e\\u003e \\"${passwd_tmp}\\"\\n envsubst \\u003c \\"${passwd_tmp}\\" \\u003e \\"${NSS_WRAPPER_PASSWD}\\"\\n rm \\"${passwd_tmp}\\"\\nelse\\n echo \\"nss_wrapper: user exists\\"\\nfi\\n\\n# if the username (which will be the same as the group name) is missing from group file, then add it\\nif [[ ! $(cat \\"${NSS_WRAPPER_GROUP}\\") =~ ${CRUNCHY_NSS_USERNAME}:x:${USER_ID} ]]; then\\n echo \\"nss_wrapper: adding group\\"\\n group_tmp=\\"${NSS_WRAPPER_DIR}/group_tmp\\"\\n cp \\"${NSS_WRAPPER_GROUP}\\" \\"${group_tmp}\\"\\n sed -i \\"/${CRUNCHY_NSS_USERNAME}:x:/d\\" \\"${group_tmp}\\"\\n printf \'${CRUNCHY_NSS_USERNAME}:x:${USER_ID}:${CRUNCHY_NSS_USERNAME}\\\\n\' \\u003e\\u003e \\"${group_tmp}\\"\\n envsubst \\u003c \\"${group_tmp}\\" \\u003e \\"${NSS_WRAPPER_GROUP}\\"\\n rm \\"${group_tmp}\\"\\nelse\\n echo \\"nss_wrapper: group exists\\"\\nfi\\n\\n# export the nss_wrapper env vars\\n# define nss_wrapper directory and passwd \\u0026 group files that will be utilized by nss_wrapper\\nNSS_WRAPPER_DIR=\\"/tmp/nss_wrapper/${NSS_WRAPPER_SUBDIR}\\"\\nNSS_WRAPPER_PASSWD=\\"${NSS_WRAPPER_DIR}/passwd\\"\\nNSS_WRAPPER_GROUP=\\"${NSS_WRAPPER_DIR}/group\\"\\n\\nexport LD_PRELOAD=/usr/lib64/libnss_wrapper.so\\nexport NSS_WRAPPER_PASSWD=\\"${NSS_WRAPPER_PASSWD}\\"\\nexport NSS_WRAPPER_GROUP=\\"${NSS_WRAPPER_GROUP}\\"\\n\\necho \\"nss_wrapper: environment configured\\"\\n"\n ],\n "image": "docker.io/perconalab/percona-postgresql-operator:main-ppg18-postgres",\n "imagePullPolicy": "Always",\n "name": "nss-wrapper-init",\n "resources": {},\n "securityContext": {\n "allowPrivilegeEscalation": false,\n "capabilities": {\n "drop": [\n "ALL"\n ]\n },\n "privileged": false,\n "readOnlyRootFilesystem": true,\n "runAsNonRoot": true,\n "seccompProfile": {\n "type": "RuntimeDefault"\n }\n },\n "terminationMessagePath": "/dev/termination-log",\n "terminationMessagePolicy": "File",\n "volumeMounts": [\n {\n "mountPath": "/tmp",\n "name": "tmp"\n }\n ]\n }\n ],\n "restartPolicy": "Always",\n "schedulerName": "default-scheduler",\n "securityContext": {\n "fsGroup": 26,\n "fsGroupChangePolicy": "OnRootMismatch"\n },\n "serviceAccount": "additional-volumes-instance",\n "serviceAccountName": "additional-volumes-instance",\n "shareProcessNamespace": true,\n "terminationGracePeriodSeconds": 30,\n "topologySpreadConstraints": [\n {\n "labelSelector": {\n "matchExpressions": [\n {\n "key": "postgres-operator.crunchydata.com/data",\n "operator": "In",\n "values": [\n "postgres",\n "pgbackrest"\n ]\n }\n ],\n "matchLabels": {\n "postgres-operator.crunchydata.com/cluster": "additional-volumes"\n }\n },\n "maxSkew": 1,\n "topologyKey": "kubernetes.io/hostname",\n "whenUnsatisfiable": "ScheduleAnyway"\n },\n {\n "labelSelector": {\n "matchExpressions": [\n {\n "key": "postgres-operator.crunchydata.com/data",\n "operator": "In",\n "values": [\n "postgres",\n "pgbackrest"\n ]\n }\n ],\n "matchLabels": {\n "postgres-operator.crunchydata.com/cluster": "additional-volumes"\n }\n },\n "maxSkew": 1,\n "topologyKey": "topology.kubernetes.io/zone",\n "whenUnsatisfiable": "ScheduleAnyway"\n }\n ],\n "volumes": [\n {\n "name": "cert-volume",\n "projected": {\n "defaultMode": 384,\n "sources": [\n {\n "secret": {\n "items": [\n {\n "key": "tls.crt",\n "path": "tls.crt"\n },\n {\n "key": "tls.key",\n "path": "tls.key"\n },\n {\n "key": "ca.crt",\n "path": "ca.crt"\n }\n ],\n "name": "additional-volumes-cluster-cert"\n }\n },\n {\n "secret": {\n "items": [\n {\n "key": "tls.crt",\n "path": "replication/tls.crt"\n },\n {\n "key": "tls.key",\n "path": "replication/tls.key"\n },\n {\n "key": "ca.crt",\n "path": "replication/ca.crt"\n }\n ],\n "name": "additional-volumes-replication-cert"\n }\n }\n ]\n }\n },\n {\n "name": "postgres-data",\n "persistentVolumeClaim": {\n "claimName": "additional-volumes-instance1-xvbw-pgdata"\n }\n },\n {\n "downwardAPI": {\n "defaultMode": 420,\n "items": [\n {\n "path": "cpu_limit",\n "resourceFieldRef": {\n "containerName": "database",\n "divisor": "1m",\n "resource": "limits.cpu"\n }\n },\n {\n "path": "cpu_request",\n "resourceFieldRef": {\n "containerName": "database",\n "divisor": "1m",\n "resource": "requests.cpu"\n }\n },\n {\n "path": "mem_limit",\n "resourceFieldRef": {\n "containerName": "database",\n "divisor": "1Mi",\n "resource": "limits.memory"\n }\n },\n {\n "path": "mem_request",\n "resourceFieldRef": {\n "containerName": "database",\n "divisor": "1Mi",\n "resource": "requests.memory"\n }\n },\n {\n "fieldRef": {\n "apiVersion": "v1",\n "fieldPath": "metadata.labels"\n },\n "path": "labels"\n },\n {\n "fieldRef": {\n "apiVersion": "v1",\n "fieldPath": "metadata.annotations"\n },\n "path": "annotations"\n }\n ]\n },\n "name": "database-containerinfo"\n },\n {\n "name": "tablespace-myts",\n "persistentVolumeClaim": {\n "claimName": "additional-volumes-instance1-xvbw-myts-tablespace"\n }\n },\n {\n "name": "postgres-wal",\n "persistentVolumeClaim": {\n "claimName": "additional-volumes-instance1-xvbw-pgwal"\n }\n },\n {\n "name": "postgres-logs",\n "persistentVolumeClaim": {\n "claimName": "additional-volumes-instance1-xvbw-pglogs"\n }\n },\n {\n "name": "pgbackrest-server",\n "projected": {\n "defaultMode": 420,\n "sources": [\n {\n "secret": {\n "items": [\n {\n "key": "pgbackrest-server.crt",\n "path": "server-tls.crt"\n },\n {\n "key": "pgbackrest-server.key",\n "mode": 384,\n "path": "server-tls.key"\n }\n ],\n "name": "additional-volumes-instance1-xvbw-certs"\n }\n }\n ]\n }\n },\n {\n "name": "pgbackrest-config",\n "projected": {\n "defaultMode": 420,\n "sources": [\n {\n "configMap": {\n "items": [\n {\n "key": "pgbackrest_instance.conf",\n "path": "pgbackrest_instance.conf"\n },\n {\n "key": "config-hash",\n "path": "config-hash"\n },\n {\n "key": "pgbackrest-server.conf",\n "path": "~postgres-operator_server.conf"\n }\n ],\n "name": "additional-volumes-pgbackrest-config"\n }\n },\n {\n "secret": {\n "items": [\n {\n "key": "pgbackrest.ca-roots",\n "path": "~postgres-operator/tls-ca.crt"\n },\n {\n "key": "pgbackrest-client.crt",\n "path": "~postgres-operator/client-tls.crt"\n },\n {\n "key": "pgbackrest-client.key",\n "mode": 384,\n "path": "~postgres-operator/client-tls.key"\n }\n ],\n "name": "additional-volumes-pgbackrest"\n }\n }\n ]\n }\n },\n {\n "name": "patroni-config",\n "projected": {\n "defaultMode": 420,\n "sources": [\n {\n "configMap": {\n "items": [\n {\n "key": "patroni.yaml",\n "path": "~postgres-operator_cluster.yaml"\n }\n ],\n "name": "additional-volumes-config"\n }\n },\n {\n "configMap": {\n "items": [\n {\n "key": "patroni.yaml",\n "path": "~postgres-operator_instance.yaml"\n }\n ],\n "name": "additional-volumes-instance1-xvbw-config"\n }\n },\n {\n "secret": {\n "items": [\n {\n "key": "patroni.ca-roots",\n "path": "~postgres-operator/patroni.ca-roots"\n },\n {\n "key": "patroni.crt-combined",\n "path": "~postgres-operator/patroni.crt+key"\n }\n ],\n "name": "additional-volumes-instance1-xvbw-certs"\n }\n }\n ]\n }\n },\n {\n "emptyDir": {},\n "name": "crunchy-bin"\n },\n {\n "emptyDir": {\n "sizeLimit": "2Gi"\n },\n "name": "tmp"\n },\n {\n "emptyDir": {\n "medium": "Memory"\n },\n "name": "dshm"\n }\n ]\n }\n },\n "updateStrategy": {\n "type": "OnDelete"\n }\n },\n "status": {\n "availableReplicas": 1,\n "collisionCount": 0,\n "currentReplicas": 1,\n "currentRevision": "additional-volumes-instance1-xvbw-7dcb456674",\n "observedGeneration": 1,\n "readyReplicas": 1,\n "replicas": 1,\n "updateRevision": "additional-volumes-instance1-xvbw-7dcb456674",\n "updatedReplicas": 1\n }\n }\n ],\n "kind": "List",\n "metadata": {\n "resourceVersion": ""\n }\n}' logger.go:42: 18:13:51 | additional-volumes/2-verify-volumes | + jq -e --arg p /pglogs $'.items[0].spec.template.spec.containers[]\n | select(.name == "database") | .volumeMounts[]\n | select(.mountPath == $p)' logger.go:42: 18:13:51 | additional-volumes/2-verify-volumes | + printf '%s\n' $'{\n "apiVersion": "v1",\n "items": [\n {\n "apiVersion": "apps/v1",\n "kind": "StatefulSet",\n "metadata": {\n "annotations": {\n "pgv2.percona.com/logcollector-config-hash": "d9a116e02b828bdc02165325e92799d82961fb499041814c7c765d0ce263ce77"\n },\n "creationTimestamp": "2026-08-19T18:12:04Z",\n "generation": 1,\n "labels": {\n "app.kubernetes.io/component": "pg",\n "app.kubernetes.io/instance": "additional-volumes",\n "app.kubernetes.io/managed-by": "percona-postgresql-operator",\n "app.kubernetes.io/name": "percona-postgresql",\n "app.kubernetes.io/part-of": "percona-postgresql",\n "pgv2.percona.com/version": "3.2.0",\n "postgres-operator.crunchydata.com/cluster": "additional-volumes",\n "postgres-operator.crunchydata.com/data": "postgres",\n "postgres-operator.crunchydata.com/instance": "additional-volumes-instance1-24br",\n "postgres-operator.crunchydata.com/instance-set": "instance1"\n },\n "name": "additional-volumes-instance1-24br",\n "namespace": "kuttl-test-intimate-garfish",\n "ownerReferences": [\n {\n "apiVersion": "upstream.pgv2.percona.com/v1beta1",\n "blockOwnerDeletion": true,\n "controller": true,\n "kind": "PostgresCluster",\n "name": "additional-volumes",\n "uid": "b795649f-550b-4283-b2ef-eca573235e5a"\n }\n ],\n "resourceVersion": "1787163196013855005",\n "uid": "471c7b02-6f1c-4f53-a6b2-557d95701703"\n },\n "spec": {\n "persistentVolumeClaimRetentionPolicy": {\n "whenDeleted": "Retain",\n "whenScaled": "Retain"\n },\n "podManagementPolicy": "OrderedReady",\n "replicas": 1,\n "revisionHistoryLimit": 0,\n "selector": {\n "matchLabels": {\n "postgres-operator.crunchydata.com/cluster": "additional-volumes",\n "postgres-operator.crunchydata.com/instance": "additional-volumes-instance1-24br",\n "postgres-operator.crunchydata.com/instance-set": "instance1"\n }\n },\n "serviceName": "additional-volumes-pods",\n "template": {\n "metadata": {\n "annotations": {\n "kubectl.kubernetes.io/default-container": "database",\n "pgv2.percona.com/logcollector-config-hash": "d9a116e02b828bdc02165325e92799d82961fb499041814c7c765d0ce263ce77"\n },\n "creationTimestamp": null,\n "labels": {\n "app.kubernetes.io/component": "pg",\n "app.kubernetes.io/instance": "additional-volumes",\n "app.kubernetes.io/managed-by": "percona-postgresql-operator",\n "app.kubernetes.io/name": "percona-postgresql",\n "app.kubernetes.io/part-of": "percona-postgresql",\n "pgv2.percona.com/version": "3.2.0",\n "postgres-operator.crunchydata.com/cluster": "additional-volumes",\n "postgres-operator.crunchydata.com/data": "postgres",\n "postgres-operator.crunchydata.com/instance": "additional-volumes-instance1-24br",\n "postgres-operator.crunchydata.com/instance-set": "instance1",\n "postgres-operator.crunchydata.com/patroni": "additional-volumes-ha"\n }\n },\n "spec": {\n "affinity": {\n "podAntiAffinity": {\n "preferredDuringSchedulingIgnoredDuringExecution": [\n {\n "podAffinityTerm": {\n "labelSelector": {\n "matchLabels": {\n "postgres-operator.crunchydata.com/data": "postgres"\n }\n },\n "topologyKey": "kubernetes.io/hostname"\n },\n "weight": 1\n }\n ]\n }\n },\n "containers": [\n {\n "command": [\n "/opt/crunchy/bin/postgres-entrypoint.sh",\n "patroni",\n "/etc/patroni"\n ],\n "env": [\n {\n "name": "PGDATA",\n "value": "/pgdata/pg18"\n },\n {\n "name": "PGHOST",\n "value": "/tmp/postgres"\n },\n {\n "name": "PGPORT",\n "value": "5432"\n },\n {\n "name": "KRB5_CONFIG",\n "value": "/etc/postgres/krb5.conf"\n },\n {\n "name": "KRB5RCACHEDIR",\n "value": "/tmp"\n },\n {\n "name": "LDAPTLS_CACERT",\n "value": "/etc/postgres/ldap/ca.crt"\n },\n {\n "name": "LC_ALL",\n "value": "en_US.utf-8"\n },\n {\n "name": "LANG",\n "value": "en_US.utf-8"\n },\n {\n "name": "PATRONI_NAME",\n "valueFrom": {\n "fieldRef": {\n "apiVersion": "v1",\n "fieldPath": "metadata.name"\n }\n }\n },\n {\n "name": "PATRONI_KUBERNETES_POD_IP",\n "valueFrom": {\n "fieldRef": {\n "apiVersion": "v1",\n "fieldPath": "status.podIP"\n }\n }\n },\n {\n "name": "PATRONI_KUBERNETES_PORTS",\n "value": "- name: postgres\\n port: 5432\\n protocol: TCP\\n"\n },\n {\n "name": "PATRONI_POSTGRESQL_CONNECT_ADDRESS",\n "value": "$(PATRONI_NAME).additional-volumes-pods:5432"\n },\n {\n "name": "PATRONI_POSTGRESQL_LISTEN",\n "value": "*:5432"\n },\n {\n "name": "PATRONI_POSTGRESQL_CONFIG_DIR",\n "value": "/pgdata/pg18"\n },\n {\n "name": "PATRONI_POSTGRESQL_DATA_DIR",\n "value": "/pgdata/pg18"\n },\n {\n "name": "PATRONI_RESTAPI_CONNECT_ADDRESS",\n "value": "$(PATRONI_NAME).additional-volumes-pods:8008"\n },\n {\n "name": "PATRONI_RESTAPI_LISTEN",\n "value": "*:8008"\n },\n {\n "name": "PATRONICTL_CONFIG_FILE",\n "value": "/etc/patroni"\n },\n {\n "name": "LD_PRELOAD",\n "value": "/usr/lib64/libnss_wrapper.so"\n },\n {\n "name": "NSS_WRAPPER_PASSWD",\n "value": "/tmp/nss_wrapper/postgres/passwd"\n },\n {\n "name": "NSS_WRAPPER_GROUP",\n "value": "/tmp/nss_wrapper/postgres/group"\n }\n ],\n "image": "docker.io/perconalab/percona-postgresql-operator:main-ppg18-postgres",\n "imagePullPolicy": "Always",\n "livenessProbe": {\n "exec": {\n "command": [\n "bash",\n "-c",\n "/opt/crunchy/bin/postgres-liveness-check.sh"\n ]\n },\n "failureThreshold": 3,\n "initialDelaySeconds": 3,\n "periodSeconds": 10,\n "successThreshold": 1,\n "timeoutSeconds": 5\n },\n "name": "database",\n "ports": [\n {\n "containerPort": 5432,\n "name": "postgres",\n "protocol": "TCP"\n }\n ],\n "readinessProbe": {\n "exec": {\n "command": [\n "bash",\n "-c",\n "/opt/crunchy/bin/postgres-readiness-check.sh"\n ]\n },\n "failureThreshold": 3,\n "initialDelaySeconds": 3,\n "periodSeconds": 10,\n "successThreshold": 1,\n "timeoutSeconds": 5\n },\n "resources": {},\n "securityContext": {\n "allowPrivilegeEscalation": false,\n "capabilities": {\n "drop": [\n "ALL"\n ]\n },\n "privileged": false,\n "readOnlyRootFilesystem": true,\n "runAsNonRoot": true,\n "seccompProfile": {\n "type": "RuntimeDefault"\n }\n },\n "terminationMessagePath": "/dev/termination-log",\n "terminationMessagePolicy": "File",\n "volumeMounts": [\n {\n "mountPath": "/pgconf/tls",\n "name": "cert-volume",\n "readOnly": true\n },\n {\n "mountPath": "/pgdata",\n "name": "postgres-data"\n },\n {\n "mountPath": "/etc/database-containerinfo",\n "name": "database-containerinfo",\n "readOnly": true\n },\n {\n "mountPath": "/tablespaces/myts",\n "name": "tablespace-myts"\n },\n {\n "mountPath": "/pgwal",\n "name": "postgres-wal"\n },\n {\n "mountPath": "/pglogs",\n "name": "postgres-logs"\n },\n {\n "mountPath": "/etc/pgbackrest/conf.d",\n "name": "pgbackrest-config",\n "readOnly": true\n },\n {\n "mountPath": "/etc/patroni",\n "name": "patroni-config",\n "readOnly": true\n },\n {\n "mountPath": "/opt/crunchy",\n "name": "crunchy-bin"\n },\n {\n "mountPath": "/tmp",\n "name": "tmp"\n },\n {\n "mountPath": "/dev/shm",\n "name": "dshm"\n }\n ]\n },\n {\n "command": [\n "bash",\n "-ceu",\n "--",\n "monitor() {\\n# Parameters for curl when managing autogrow annotation.\\nAPISERVER=\\"https://kubernetes.default.svc\\"\\nSERVICEACCOUNT=\\"/var/run/secrets/kubernetes.io/serviceaccount\\"\\nNAMESPACE=$(cat ${SERVICEACCOUNT}/namespace)\\nTOKEN=$(cat ${SERVICEACCOUNT}/token)\\nCACERT=${SERVICEACCOUNT}/ca.crt\\n\\ndeclare -r directory=\\"/pgconf/tls\\"\\nexec {fd}\\u003c\\u003e \\u003c(:||:)\\nwhile read -r -t 5 -u \\"${fd}\\" ||:; do\\n # Manage replication certificate.\\n if [[ \\"${directory}\\" -nt \\"/proc/self/fd/${fd}\\" ]] \\u0026\\u0026\\n install -D --mode=0600 -t \\"/tmp/replication\\" \\"${directory}\\"/{replication/tls.crt,replication/tls.key,replication/ca.crt} \\u0026\\u0026\\n pkill -HUP --exact --parent=1 postgres\\n then\\n exec {fd}\\u003e\\u0026- \\u0026\\u0026 exec {fd}\\u003c\\u003e \\u003c(:||:)\\n stat --format=\'Loaded certificates dated %y\' \\"${directory}\\"\\n fi\\n\\ndone\\n}; export -f monitor; exec -a \\"$0\\" bash -ceu monitor",\n "replication-cert-copy"\n ],\n "image": "docker.io/perconalab/percona-postgresql-operator:main-ppg18-postgres",\n "imagePullPolicy": "Always",\n "name": "replication-cert-copy",\n "resources": {},\n "securityContext": {\n "allowPrivilegeEscalation": false,\n "capabilities": {\n "drop": [\n "ALL"\n ]\n },\n "privileged": false,\n "readOnlyRootFilesystem": true,\n "runAsNonRoot": true,\n "seccompProfile": {\n "type": "RuntimeDefault"\n }\n },\n "terminationMessagePath": "/dev/termination-log",\n "terminationMessagePolicy": "File",\n "volumeMounts": [\n {\n "mountPath": "/pgconf/tls",\n "name": "cert-volume",\n "readOnly": true\n },\n {\n "mountPath": "/pgdata",\n "name": "postgres-data"\n },\n {\n "mountPath": "/tmp",\n "name": "tmp"\n }\n ]\n },\n {\n "args": [\n "fluent-bit"\n ],\n "command": [\n "/opt/crunchy/logcollector/entrypoint.sh"\n ],\n "env": [\n {\n "name": "PG_LOG_DIR",\n "value": "/pgdata/pg18/log"\n },\n {\n "name": "PGBACKREST_LOG_DIR",\n "value": "/pgdata/pgbackrest/log"\n },\n {\n "name": "POD_NAMESPACE",\n "valueFrom": {\n "fieldRef": {\n "apiVersion": "v1",\n "fieldPath": "metadata.namespace"\n }\n }\n },\n {\n "name": "POD_NAME",\n "valueFrom": {\n "fieldRef": {\n "apiVersion": "v1",\n "fieldPath": "metadata.name"\n }\n }\n }\n ],\n "image": "docker.io/perconalab/fluentbit:main-logcollector",\n "imagePullPolicy": "IfNotPresent",\n "name": "logs",\n "resources": {},\n "securityContext": {\n "allowPrivilegeEscalation": false,\n "capabilities": {\n "drop": [\n "ALL"\n ]\n },\n "privileged": false,\n "runAsGroup": 26,\n "runAsNonRoot": true,\n "runAsUser": 26,\n "seccompProfile": {\n "type": "RuntimeDefault"\n }\n },\n "terminationMessagePath": "/dev/termination-log",\n "terminationMessagePolicy": "File",\n "volumeMounts": [\n {\n "mountPath": "/pgdata",\n "name": "postgres-data"\n },\n {\n "mountPath": "/opt/crunchy",\n "name": "crunchy-bin"\n },\n {\n "mountPath": "/tmp",\n "name": "tmp"\n }\n ]\n },\n {\n "args": [\n "logrotate"\n ],\n "command": [\n "/opt/crunchy/logcollector/entrypoint.sh"\n ],\n "env": [\n {\n "name": "POD_NAMESPACE",\n "valueFrom": {\n "fieldRef": {\n "apiVersion": "v1",\n "fieldPath": "metadata.namespace"\n }\n }\n },\n {\n "name": "POD_NAME",\n "valueFrom": {\n "fieldRef": {\n "apiVersion": "v1",\n "fieldPath": "metadata.name"\n }\n }\n },\n {\n "name": "LOGROTATE_SCHEDULE",\n "value": "0 0 * * *"\n },\n {\n "name": "LD_PRELOAD",\n "value": "/tmp/nss_wrapper/libnss_wrapper.so"\n },\n {\n "name": "NSS_WRAPPER_PASSWD",\n "value": "/tmp/nss_wrapper/postgres/passwd"\n },\n {\n "name": "NSS_WRAPPER_GROUP",\n "value": "/tmp/nss_wrapper/postgres/group"\n }\n ],\n "image": "docker.io/perconalab/fluentbit:main-logcollector",\n "imagePullPolicy": "IfNotPresent",\n "name": "logrotate",\n "resources": {},\n "securityContext": {\n "allowPrivilegeEscalation": false,\n "capabilities": {\n "drop": [\n "ALL"\n ]\n },\n "privileged": false,\n "runAsGroup": 26,\n "runAsNonRoot": true,\n "runAsUser": 26,\n "seccompProfile": {\n "type": "RuntimeDefault"\n }\n },\n "terminationMessagePath": "/dev/termination-log",\n "terminationMessagePolicy": "File",\n "volumeMounts": [\n {\n "mountPath": "/pgdata",\n "name": "postgres-data"\n },\n {\n "mountPath": "/opt/crunchy",\n "name": "crunchy-bin"\n },\n {\n "mountPath": "/tmp",\n "name": "tmp"\n }\n ]\n },\n {\n "command": [\n "pgbackrest",\n "server"\n ],\n "env": [\n {\n "name": "LD_PRELOAD",\n "value": "/usr/lib64/libnss_wrapper.so"\n },\n {\n "name": "NSS_WRAPPER_PASSWD",\n "value": "/tmp/nss_wrapper/postgres/passwd"\n },\n {\n "name": "NSS_WRAPPER_GROUP",\n "value": "/tmp/nss_wrapper/postgres/group"\n }\n ],\n "image": "docker.io/perconalab/percona-postgresql-operator:main-pgbackrest18",\n "imagePullPolicy": "Always",\n "livenessProbe": {\n "exec": {\n "command": [\n "pgbackrest",\n "server-ping"\n ]\n },\n "failureThreshold": 3,\n "periodSeconds": 10,\n "successThreshold": 1,\n "timeoutSeconds": 1\n },\n "name": "pgbackrest",\n "resources": {},\n "securityContext": {\n "allowPrivilegeEscalation": false,\n "capabilities": {\n "drop": [\n "ALL"\n ]\n },\n "privileged": false,\n "readOnlyRootFilesystem": true,\n "runAsNonRoot": true,\n "seccompProfile": {\n "type": "RuntimeDefault"\n }\n },\n "terminationMessagePath": "/dev/termination-log",\n "terminationMessagePolicy": "File",\n "volumeMounts": [\n {\n "mountPath": "/etc/pgbackrest/server",\n "name": "pgbackrest-server",\n "readOnly": true\n },\n {\n "mountPath": "/pgdata",\n "name": "postgres-data"\n },\n {\n "mountPath": "/tablespaces/myts",\n "name": "tablespace-myts"\n },\n {\n "mountPath": "/pgwal",\n "name": "postgres-wal"\n },\n {\n "mountPath": "/etc/pgbackrest/conf.d",\n "name": "pgbackrest-config",\n "readOnly": true\n },\n {\n "mountPath": "/tmp",\n "name": "tmp"\n }\n ]\n },\n {\n "command": [\n "bash",\n "-ceu",\n "--",\n "monitor() {\\nexec {fd}\\u003c\\u003e \\u003c(:||:)\\nuntil read -r -t 5 -u \\"${fd}\\"; do\\n if\\n [[ \\"${filename}\\" -nt \\"/proc/self/fd/${fd}\\" ]] \\u0026\\u0026\\n pkill -HUP --exact --parent=0 pgbackrest\\n then\\n exec {fd}\\u003e\\u0026- \\u0026\\u0026 exec {fd}\\u003c\\u003e \\u003c(:||:)\\n stat --dereference --format=\'Loaded configuration dated %y\' \\"${filename}\\"\\n elif\\n { [[ \\"${directory}\\" -nt \\"/proc/self/fd/${fd}\\" ]] ||\\n [[ \\"${authority}\\" -nt \\"/proc/self/fd/${fd}\\" ]]\\n } \\u0026\\u0026\\n pkill -HUP --exact --parent=0 pgbackrest\\n then\\n exec {fd}\\u003e\\u0026- \\u0026\\u0026 exec {fd}\\u003c\\u003e \\u003c(:||:)\\n stat --format=\'Loaded certificates dated %y\' \\"${directory}\\"\\n fi\\ndone\\n}; export directory=\\"$1\\" authority=\\"$2\\" filename=\\"$3\\"; export -f monitor; exec -a \\"$0\\" bash -ceu monitor",\n "pgbackrest-config",\n "/etc/pgbackrest/server",\n "/etc/pgbackrest/conf.d/~postgres-operator/tls-ca.crt",\n "/etc/pgbackrest/conf.d/~postgres-operator_server.conf"\n ],\n "image": "docker.io/perconalab/percona-postgresql-operator:main-pgbackrest18",\n "imagePullPolicy": "Always",\n "name": "pgbackrest-config",\n "resources": {},\n "securityContext": {\n "allowPrivilegeEscalation": false,\n "capabilities": {\n "drop": [\n "ALL"\n ]\n },\n "privileged": false,\n "readOnlyRootFilesystem": true,\n "runAsNonRoot": true,\n "seccompProfile": {\n "type": "RuntimeDefault"\n }\n },\n "terminationMessagePath": "/dev/termination-log",\n "terminationMessagePolicy": "File",\n "volumeMounts": [\n {\n "mountPath": "/etc/pgbackrest/server",\n "name": "pgbackrest-server",\n "readOnly": true\n },\n {\n "mountPath": "/etc/pgbackrest/conf.d",\n "name": "pgbackrest-config",\n "readOnly": true\n },\n {\n "mountPath": "/tmp",\n "name": "tmp"\n }\n ]\n }\n ],\n "dnsPolicy": "ClusterFirst",\n "enableServiceLinks": false,\n "initContainers": [\n {\n "command": [\n "/usr/local/bin/init-entrypoint.sh"\n ],\n "image": "docker.io/perconalab/percona-postgresql-operator:PR-1760-4947a0272",\n "imagePullPolicy": "Always",\n "name": "database-init",\n "resources": {},\n "securityContext": {\n "allowPrivilegeEscalation": false,\n "capabilities": {\n "drop": [\n "ALL"\n ]\n },\n "privileged": false,\n "readOnlyRootFilesystem": true,\n "runAsNonRoot": true,\n "seccompProfile": {\n "type": "RuntimeDefault"\n }\n },\n "terminationMessagePath": "/dev/termination-log",\n "terminationMessagePolicy": "File",\n "volumeMounts": [\n {\n "mountPath": "/opt/crunchy",\n "name": "crunchy-bin"\n },\n {\n "mountPath": "/tmp",\n "name": "tmp"\n }\n ]\n },\n {\n "command": [\n "bash",\n "-ceu",\n "--",\n "declare -r expected_major_version=\\"$1\\" pgwal_directory=\\"$2\\" pgbrLog_directory=\\"$3\\"\\npermissions() { while [[ -n \\"$1\\" ]]; do set \\"${1%/*}\\" \\"$@\\"; done; shift; stat -Lc \'%A %4u %4g %n\' \\"$@\\"; }\\nhalt() { local rc=$?; \\u003e\\u00262 echo \\"$@\\"; exit \\"${rc/#0/1}\\"; }\\nresults() { printf \'::postgres-operator: %s::%s\\\\n\' \\"$@\\"; }\\nrecreate() (\\n local tmp; tmp=$(mktemp -d -p \\"${1%/*}\\"); GLOBIGNORE=\'.:..\'; set -x\\n chmod \\"$2\\" \\"${tmp}\\"; mv \\"$1\\"/* \\"${tmp}\\"; rmdir \\"$1\\"; mv \\"${tmp}\\" \\"$1\\"\\n)\\nsafelink() (\\n local desired=\\"$1\\" name=\\"$2\\" current\\n current=$(realpath \\"${name}\\")\\n if [[ \\"${current}\\" == \\"${desired}\\" ]]; then return; fi\\n set -x; mv --no-target-directory \\"${current}\\" \\"${desired}\\"\\n ln --no-dereference --force --symbolic \\"${desired}\\" \\"${name}\\"\\n)\\necho Initializing ...\\nresults \'uid\' \\"$(id -u ||:)\\" \'gid\' \\"$(id -G ||:)\\"\\nif [[ \\"${pgwal_directory}\\" == *\\"pgwal/\\"* ]] \\u0026\\u0026 [[ ! -d \\"/pgwal/pgbackrest-spool\\" ]];then rm -rf \\"/pgdata/pgbackrest-spool\\" \\u0026\\u0026 mkdir -p \\"/pgwal/pgbackrest-spool\\" \\u0026\\u0026 ln --force --symbolic \\"/pgwal/pgbackrest-spool\\" \\"/pgdata/pgbackrest-spool\\";fi\\nif [[ ! -e \\"/pgdata/pgbackrest-spool\\" ]];then rm -rf /pgdata/pgbackrest-spool;fi\\nif [[ ! -e \\"/pgdata/logs/postgres\\" ]];then rm -rf \\"/pgdata/logs/postgres\\";fi\\nif [[ ! -e \\"${pgbrLog_directory}\\" ]];then rm -rf \\"${pgbrLog_directory}\\";fi\\nif [[ -d \\"/pglogs\\" ]];then install --directory --mode=0775 \\"/pglogs/postgres\\" \\"/pglogs/pgbackrest/log\\";if [[ ! -L \\"/pgdata/logs/postgres\\" ]];then mkdir -p \\"/pgdata/logs\\" \\u0026\\u0026 rm -rf \\"/pgdata/logs/postgres\\" \\u0026\\u0026 ln --symbolic \\"/pglogs/postgres\\" \\"/pgdata/logs/postgres\\";fi;if [[ ! -L \\"${pgbrLog_directory}\\" ]];then mkdir -p \\"${pgbrLog_directory%/*}\\" \\u0026\\u0026 rm -rf \\"${pgbrLog_directory}\\" \\u0026\\u0026 ln --symbolic \\"/pglogs/pgbackrest/log\\" \\"${pgbrLog_directory}\\";fi;fi\\nresults \'postgres path\' \\"$(command -v postgres ||:)\\"\\nresults \'postgres version\' \\"${postgres_version:=$(postgres --version ||:)}\\"\\n[[ \\"${postgres_version}\\" =~ \\") ${expected_major_version}\\"($|[^0-9]) ]] ||\\nhalt Expected PostgreSQL version \\"${expected_major_version}\\"\\nresults \'config directory\' \\"${PGDATA:?}\\"\\npostgres_data_directory=$([[ -d \\"${PGDATA}\\" ]] \\u0026\\u0026 postgres -C data_directory || echo \\"${PGDATA}\\")\\nresults \'data directory\' \\"${postgres_data_directory}\\"\\n[[ \\"${postgres_data_directory}\\" == \\"${PGDATA}\\" ]] ||\\nhalt Expected matching config and data directories\\nbootstrap_dir=\\"${postgres_data_directory}_bootstrap\\"\\n[[ -d \\"${bootstrap_dir}\\" ]] \\u0026\\u0026 results \'bootstrap directory\' \\"${bootstrap_dir}\\"\\n[[ -d \\"${bootstrap_dir}\\" ]] \\u0026\\u0026 postgres_data_directory=\\"${bootstrap_dir}\\"\\nif [[ ! -e \\"${postgres_data_directory}\\" || -O \\"${postgres_data_directory}\\" ]]; then\\ninstall --directory --mode=0700 \\"${postgres_data_directory}\\"\\nelif [[ -w \\"${postgres_data_directory}\\" \\u0026\\u0026 -g \\"${postgres_data_directory}\\" ]]; then\\nrecreate \\"${postgres_data_directory}\\" \'0700\'\\nelse (halt Permissions!); fi ||\\nhalt \\"$(permissions \\"${postgres_data_directory}\\" ||:)\\"\\nresults \'pgBackRest log directory\' \\"${pgbrLog_directory}\\"\\ninstall --directory --mode=0775 \\"${pgbrLog_directory}\\" ||\\nhalt \\"$(permissions \\"${pgbrLog_directory}\\" ||:)\\"\\ninstall -D --mode=0600 -t \\"/tmp/replication\\" \\"/pgconf/tls/replication\\"/{tls.crt,tls.key,ca.crt}\\n\\ntablespace_dir=/tablespaces/myts/data\\nif [[ ! -e \\"${tablespace_dir}\\" || -O \\"${tablespace_dir}\\" ]]; then\\ninstall --directory --mode=0700 \\"${tablespace_dir}\\"\\nelif [[ -w \\"${tablespace_dir}\\" \\u0026\\u0026 -g \\"${tablespace_dir}\\" ]]; then\\nrecreate \\"${tablespace_dir}\\" \'0700\'\\nelse (halt Permissions!); fi ||\\nhalt \\"$(permissions \\"${tablespace_dir}\\" ||:)\\"\\n[[ -f \\"${postgres_data_directory}/PG_VERSION\\" ]] || exit 0\\nresults \'data version\' \\"${postgres_data_version:=$(\\u003c \\"${postgres_data_directory}/PG_VERSION\\")}\\"\\n[[ \\"${postgres_data_version}\\" == \\"${expected_major_version}\\" ]] ||\\nhalt Expected PostgreSQL data version \\"${expected_major_version}\\"\\n[[ ! -f \\"${postgres_data_directory}/postgresql.conf\\" ]] \\u0026\\u0026\\ntouch \\"${postgres_data_directory}/postgresql.conf\\"\\nsafelink \\"${pgwal_directory}\\" \\"${postgres_data_directory}/pg_wal\\"\\nresults \'wal directory\' \\"$(realpath \\"${postgres_data_directory}/pg_wal\\" ||:)\\"\\nrm -f \\"${postgres_data_directory}/recovery.signal\\"",\n "startup",\n "18",\n "/pgwal/pg18_wal",\n "/pgdata/pgbackrest/log"\n ],\n "env": [\n {\n "name": "PGDATA",\n "value": "/pgdata/pg18"\n },\n {\n "name": "PGHOST",\n "value": "/tmp/postgres"\n },\n {\n "name": "PGPORT",\n "value": "5432"\n },\n {\n "name": "KRB5_CONFIG",\n "value": "/etc/postgres/krb5.conf"\n },\n {\n "name": "KRB5RCACHEDIR",\n "value": "/tmp"\n },\n {\n "name": "LDAPTLS_CACERT",\n "value": "/etc/postgres/ldap/ca.crt"\n },\n {\n "name": "LC_ALL",\n "value": "en_US.utf-8"\n },\n {\n "name": "LANG",\n "value": "en_US.utf-8"\n }\n ],\n "image": "docker.io/perconalab/percona-postgresql-operator:main-ppg18-postgres",\n "imagePullPolicy": "Always",\n "name": "postgres-startup",\n "resources": {},\n "securityContext": {\n "allowPrivilegeEscalation": false,\n "capabilities": {\n "drop": [\n "ALL"\n ]\n },\n "privileged": false,\n "readOnlyRootFilesystem": true,\n "runAsNonRoot": true,\n "seccompProfile": {\n "type": "RuntimeDefault"\n }\n },\n "terminationMessagePath": "/dev/termination-log",\n "terminationMessagePolicy": "File",\n "volumeMounts": [\n {\n "mountPath": "/pgconf/tls",\n "name": "cert-volume",\n "readOnly": true\n },\n {\n "mountPath": "/pgdata",\n "name": "postgres-data"\n },\n {\n "mountPath": "/tablespaces/myts",\n "name": "tablespace-myts"\n },\n {\n "mountPath": "/pgwal",\n "name": "postgres-wal"\n },\n {\n "mountPath": "/pglogs",\n "name": "postgres-logs"\n },\n {\n "mountPath": "/tmp",\n "name": "tmp"\n }\n ]\n },\n {\n "command": [\n "bash",\n "-c",\n "mkdir -p /tmp/nss_wrapper \\u0026\\u0026 { [[ -f /tmp/nss_wrapper/libnss_wrapper.so ]] || cp /usr/lib64/libnss_wrapper.so /tmp/nss_wrapper/libnss_wrapper.so; }"\n ],\n "image": "docker.io/perconalab/percona-postgresql-operator:main-ppg18-postgres",\n "imagePullPolicy": "Always",\n "name": "nss-wrapper-init-logcollector",\n "resources": {},\n "securityContext": {\n "allowPrivilegeEscalation": false,\n "capabilities": {\n "drop": [\n "ALL"\n ]\n },\n "privileged": false,\n "runAsGroup": 26,\n "runAsNonRoot": true,\n "runAsUser": 26,\n "seccompProfile": {\n "type": "RuntimeDefault"\n }\n },\n "terminationMessagePath": "/dev/termination-log",\n "terminationMessagePolicy": "File",\n "volumeMounts": [\n {\n "mountPath": "/tmp",\n "name": "tmp"\n }\n ]\n },\n {\n "command": [\n "bash",\n "-c",\n "export NSS_WRAPPER_SUBDIR=postgres CRUNCHY_NSS_USERNAME=postgres CRUNCHY_NSS_USER_DESC=\\"postgres\\" \\n# Define nss_wrapper directory and passwd \\u0026 group files that will be utilized by nss_wrapper. The\\n# nss_wrapper_env.sh script (which also sets these vars) isn\'t sourced here since the nss_wrapper\\n# has not yet been setup, and we therefore don\'t yet want the nss_wrapper vars in the environment.\\nmkdir -p /tmp/nss_wrapper\\nchmod g+rwx /tmp/nss_wrapper\\n\\nNSS_WRAPPER_DIR=\\"/tmp/nss_wrapper/${NSS_WRAPPER_SUBDIR}\\"\\nNSS_WRAPPER_PASSWD=\\"${NSS_WRAPPER_DIR}/passwd\\"\\nNSS_WRAPPER_GROUP=\\"${NSS_WRAPPER_DIR}/group\\"\\n\\n# create the nss_wrapper directory\\nmkdir -p \\"${NSS_WRAPPER_DIR}\\"\\n\\n# grab the current user ID and group ID\\nUSER_ID=$(id -u)\\nexport USER_ID\\nGROUP_ID=$(id -g)\\nexport GROUP_ID\\n\\n# get copies of the passwd and group files\\n[[ -f \\"${NSS_WRAPPER_PASSWD}\\" ]] || cp \\"/etc/passwd\\" \\"${NSS_WRAPPER_PASSWD}\\"\\n[[ -f \\"${NSS_WRAPPER_GROUP}\\" ]] || cp \\"/etc/group\\" \\"${NSS_WRAPPER_GROUP}\\"\\n\\n# if the username is missing from the passwd file, then add it\\nif [[ ! $(cat \\"${NSS_WRAPPER_PASSWD}\\") =~ ${CRUNCHY_NSS_USERNAME}:x:${USER_ID} ]]; then\\n echo \\"nss_wrapper: adding user\\"\\n passwd_tmp=\\"${NSS_WRAPPER_DIR}/passwd_tmp\\"\\n cp \\"${NSS_WRAPPER_PASSWD}\\" \\"${passwd_tmp}\\"\\n sed -i \\"/${CRUNCHY_NSS_USERNAME}:x:/d\\" \\"${passwd_tmp}\\"\\n # needed for OCP 4.x because crio updates /etc/passwd with an entry for USER_ID\\n sed -i \\"/${USER_ID}:x:/d\\" \\"${passwd_tmp}\\"\\n printf \'${CRUNCHY_NSS_USERNAME}:x:${USER_ID}:${GROUP_ID}:${CRUNCHY_NSS_USER_DESC}:${HOME}:/bin/bash\\\\n\' \\u003e\\u003e \\"${passwd_tmp}\\"\\n envsubst \\u003c \\"${passwd_tmp}\\" \\u003e \\"${NSS_WRAPPER_PASSWD}\\"\\n rm \\"${passwd_tmp}\\"\\nelse\\n echo \\"nss_wrapper: user exists\\"\\nfi\\n\\n# if the username (which will be the same as the group name) is missing from group file, then add it\\nif [[ ! $(cat \\"${NSS_WRAPPER_GROUP}\\") =~ ${CRUNCHY_NSS_USERNAME}:x:${USER_ID} ]]; then\\n echo \\"nss_wrapper: adding group\\"\\n group_tmp=\\"${NSS_WRAPPER_DIR}/group_tmp\\"\\n cp \\"${NSS_WRAPPER_GROUP}\\" \\"${group_tmp}\\"\\n sed -i \\"/${CRUNCHY_NSS_USERNAME}:x:/d\\" \\"${group_tmp}\\"\\n printf \'${CRUNCHY_NSS_USERNAME}:x:${USER_ID}:${CRUNCHY_NSS_USERNAME}\\\\n\' \\u003e\\u003e \\"${group_tmp}\\"\\n envsubst \\u003c \\"${group_tmp}\\" \\u003e \\"${NSS_WRAPPER_GROUP}\\"\\n rm \\"${group_tmp}\\"\\nelse\\n echo \\"nss_wrapper: group exists\\"\\nfi\\n\\n# export the nss_wrapper env vars\\n# define nss_wrapper directory and passwd \\u0026 group files that will be utilized by nss_wrapper\\nNSS_WRAPPER_DIR=\\"/tmp/nss_wrapper/${NSS_WRAPPER_SUBDIR}\\"\\nNSS_WRAPPER_PASSWD=\\"${NSS_WRAPPER_DIR}/passwd\\"\\nNSS_WRAPPER_GROUP=\\"${NSS_WRAPPER_DIR}/group\\"\\n\\nexport LD_PRELOAD=/usr/lib64/libnss_wrapper.so\\nexport NSS_WRAPPER_PASSWD=\\"${NSS_WRAPPER_PASSWD}\\"\\nexport NSS_WRAPPER_GROUP=\\"${NSS_WRAPPER_GROUP}\\"\\n\\necho \\"nss_wrapper: environment configured\\"\\n"\n ],\n "image": "docker.io/perconalab/percona-postgresql-operator:main-ppg18-postgres",\n "imagePullPolicy": "Always",\n "name": "nss-wrapper-init",\n "resources": {},\n "securityContext": {\n "allowPrivilegeEscalation": false,\n "capabilities": {\n "drop": [\n "ALL"\n ]\n },\n "privileged": false,\n "readOnlyRootFilesystem": true,\n "runAsNonRoot": true,\n "seccompProfile": {\n "type": "RuntimeDefault"\n }\n },\n "terminationMessagePath": "/dev/termination-log",\n "terminationMessagePolicy": "File",\n "volumeMounts": [\n {\n "mountPath": "/tmp",\n "name": "tmp"\n }\n ]\n }\n ],\n "restartPolicy": "Always",\n "schedulerName": "default-scheduler",\n "securityContext": {\n "fsGroup": 26,\n "fsGroupChangePolicy": "OnRootMismatch"\n },\n "serviceAccount": "additional-volumes-instance",\n "serviceAccountName": "additional-volumes-instance",\n "shareProcessNamespace": true,\n "terminationGracePeriodSeconds": 30,\n "topologySpreadConstraints": [\n {\n "labelSelector": {\n "matchExpressions": [\n {\n "key": "postgres-operator.crunchydata.com/data",\n "operator": "In",\n "values": [\n "postgres",\n "pgbackrest"\n ]\n }\n ],\n "matchLabels": {\n "postgres-operator.crunchydata.com/cluster": "additional-volumes"\n }\n },\n "maxSkew": 1,\n "topologyKey": "kubernetes.io/hostname",\n "whenUnsatisfiable": "ScheduleAnyway"\n },\n {\n "labelSelector": {\n "matchExpressions": [\n {\n "key": "postgres-operator.crunchydata.com/data",\n "operator": "In",\n "values": [\n "postgres",\n "pgbackrest"\n ]\n }\n ],\n "matchLabels": {\n "postgres-operator.crunchydata.com/cluster": "additional-volumes"\n }\n },\n "maxSkew": 1,\n "topologyKey": "topology.kubernetes.io/zone",\n "whenUnsatisfiable": "ScheduleAnyway"\n }\n ],\n "volumes": [\n {\n "name": "cert-volume",\n "projected": {\n "defaultMode": 384,\n "sources": [\n {\n "secret": {\n "items": [\n {\n "key": "tls.crt",\n "path": "tls.crt"\n },\n {\n "key": "tls.key",\n "path": "tls.key"\n },\n {\n "key": "ca.crt",\n "path": "ca.crt"\n }\n ],\n "name": "additional-volumes-cluster-cert"\n }\n },\n {\n "secret": {\n "items": [\n {\n "key": "tls.crt",\n "path": "replication/tls.crt"\n },\n {\n "key": "tls.key",\n "path": "replication/tls.key"\n },\n {\n "key": "ca.crt",\n "path": "replication/ca.crt"\n }\n ],\n "name": "additional-volumes-replication-cert"\n }\n }\n ]\n }\n },\n {\n "name": "postgres-data",\n "persistentVolumeClaim": {\n "claimName": "additional-volumes-instance1-24br-pgdata"\n }\n },\n {\n "downwardAPI": {\n "defaultMode": 420,\n "items": [\n {\n "path": "cpu_limit",\n "resourceFieldRef": {\n "containerName": "database",\n "divisor": "1m",\n "resource": "limits.cpu"\n }\n },\n {\n "path": "cpu_request",\n "resourceFieldRef": {\n "containerName": "database",\n "divisor": "1m",\n "resource": "requests.cpu"\n }\n },\n {\n "path": "mem_limit",\n "resourceFieldRef": {\n "containerName": "database",\n "divisor": "1Mi",\n "resource": "limits.memory"\n }\n },\n {\n "path": "mem_request",\n "resourceFieldRef": {\n "containerName": "database",\n "divisor": "1Mi",\n "resource": "requests.memory"\n }\n },\n {\n "fieldRef": {\n "apiVersion": "v1",\n "fieldPath": "metadata.labels"\n },\n "path": "labels"\n },\n {\n "fieldRef": {\n "apiVersion": "v1",\n "fieldPath": "metadata.annotations"\n },\n "path": "annotations"\n }\n ]\n },\n "name": "database-containerinfo"\n },\n {\n "name": "tablespace-myts",\n "persistentVolumeClaim": {\n "claimName": "additional-volumes-instance1-24br-myts-tablespace"\n }\n },\n {\n "name": "postgres-wal",\n "persistentVolumeClaim": {\n "claimName": "additional-volumes-instance1-24br-pgwal"\n }\n },\n {\n "name": "postgres-logs",\n "persistentVolumeClaim": {\n "claimName": "additional-volumes-instance1-24br-pglogs"\n }\n },\n {\n "name": "pgbackrest-server",\n "projected": {\n "defaultMode": 420,\n "sources": [\n {\n "secret": {\n "items": [\n {\n "key": "pgbackrest-server.crt",\n "path": "server-tls.crt"\n },\n {\n "key": "pgbackrest-server.key",\n "mode": 384,\n "path": "server-tls.key"\n }\n ],\n "name": "additional-volumes-instance1-24br-certs"\n }\n }\n ]\n }\n },\n {\n "name": "pgbackrest-config",\n "projected": {\n "defaultMode": 420,\n "sources": [\n {\n "configMap": {\n "items": [\n {\n "key": "pgbackrest_instance.conf",\n "path": "pgbackrest_instance.conf"\n },\n {\n "key": "config-hash",\n "path": "config-hash"\n },\n {\n "key": "pgbackrest-server.conf",\n "path": "~postgres-operator_server.conf"\n }\n ],\n "name": "additional-volumes-pgbackrest-config"\n }\n },\n {\n "secret": {\n "items": [\n {\n "key": "pgbackrest.ca-roots",\n "path": "~postgres-operator/tls-ca.crt"\n },\n {\n "key": "pgbackrest-client.crt",\n "path": "~postgres-operator/client-tls.crt"\n },\n {\n "key": "pgbackrest-client.key",\n "mode": 384,\n "path": "~postgres-operator/client-tls.key"\n }\n ],\n "name": "additional-volumes-pgbackrest"\n }\n }\n ]\n }\n },\n {\n "name": "patroni-config",\n "projected": {\n "defaultMode": 420,\n "sources": [\n {\n "configMap": {\n "items": [\n {\n "key": "patroni.yaml",\n "path": "~postgres-operator_cluster.yaml"\n }\n ],\n "name": "additional-volumes-config"\n }\n },\n {\n "configMap": {\n "items": [\n {\n "key": "patroni.yaml",\n "path": "~postgres-operator_instance.yaml"\n }\n ],\n "name": "additional-volumes-instance1-24br-config"\n }\n },\n {\n "secret": {\n "items": [\n {\n "key": "patroni.ca-roots",\n "path": "~postgres-operator/patroni.ca-roots"\n },\n {\n "key": "patroni.crt-combined",\n "path": "~postgres-operator/patroni.crt+key"\n }\n ],\n "name": "additional-volumes-instance1-24br-certs"\n }\n }\n ]\n }\n },\n {\n "emptyDir": {},\n "name": "crunchy-bin"\n },\n {\n "emptyDir": {\n "sizeLimit": "2Gi"\n },\n "name": "tmp"\n },\n {\n "emptyDir": {\n "medium": "Memory"\n },\n "name": "dshm"\n }\n ]\n }\n },\n "updateStrategy": {\n "type": "OnDelete"\n }\n },\n "status": {\n "availableReplicas": 1,\n "collisionCount": 0,\n "currentReplicas": 1,\n "currentRevision": "additional-volumes-instance1-24br-6849b5b674",\n "observedGeneration": 1,\n "readyReplicas": 1,\n "replicas": 1,\n "updateRevision": "additional-volumes-instance1-24br-6849b5b674",\n "updatedReplicas": 1\n }\n },\n {\n "apiVersion": "apps/v1",\n "kind": "StatefulSet",\n "metadata": {\n "annotations": {\n "pgv2.percona.com/logcollector-config-hash": "d9a116e02b828bdc02165325e92799d82961fb499041814c7c765d0ce263ce77"\n },\n "creationTimestamp": "2026-08-19T18:12:06Z",\n "generation": 1,\n "labels": {\n "app.kubernetes.io/component": "pg",\n "app.kubernetes.io/instance": "additional-volumes",\n "app.kubernetes.io/managed-by": "percona-postgresql-operator",\n "app.kubernetes.io/name": "percona-postgresql",\n "app.kubernetes.io/part-of": "percona-postgresql",\n "pgv2.percona.com/version": "3.2.0",\n "postgres-operator.crunchydata.com/cluster": "additional-volumes",\n "postgres-operator.crunchydata.com/data": "postgres",\n "postgres-operator.crunchydata.com/instance": "additional-volumes-instance1-n8pg",\n "postgres-operator.crunchydata.com/instance-set": "instance1"\n },\n "name": "additional-volumes-instance1-n8pg",\n "namespace": "kuttl-test-intimate-garfish",\n "ownerReferences": [\n {\n "apiVersion": "upstream.pgv2.percona.com/v1beta1",\n "blockOwnerDeletion": true,\n "controller": true,\n "kind": "PostgresCluster",\n "name": "additional-volumes",\n "uid": "b795649f-550b-4283-b2ef-eca573235e5a"\n }\n ],\n "resourceVersion": "1787163189863071003",\n "uid": "c2983a30-d942-42e2-9d6a-3e99691891fd"\n },\n "spec": {\n "persistentVolumeClaimRetentionPolicy": {\n "whenDeleted": "Retain",\n "whenScaled": "Retain"\n },\n "podManagementPolicy": "OrderedReady",\n "replicas": 1,\n "revisionHistoryLimit": 0,\n "selector": {\n "matchLabels": {\n "postgres-operator.crunchydata.com/cluster": "additional-volumes",\n "postgres-operator.crunchydata.com/instance": "additional-volumes-instance1-n8pg",\n "postgres-operator.crunchydata.com/instance-set": "instance1"\n }\n },\n "serviceName": "additional-volumes-pods",\n "template": {\n "metadata": {\n "annotations": {\n "kubectl.kubernetes.io/default-container": "database",\n "pgv2.percona.com/logcollector-config-hash": "d9a116e02b828bdc02165325e92799d82961fb499041814c7c765d0ce263ce77"\n },\n "creationTimestamp": null,\n "labels": {\n "app.kubernetes.io/component": "pg",\n "app.kubernetes.io/instance": "additional-volumes",\n "app.kubernetes.io/managed-by": "percona-postgresql-operator",\n "app.kubernetes.io/name": "percona-postgresql",\n "app.kubernetes.io/part-of": "percona-postgresql",\n "pgv2.percona.com/version": "3.2.0",\n "postgres-operator.crunchydata.com/cluster": "additional-volumes",\n "postgres-operator.crunchydata.com/data": "postgres",\n "postgres-operator.crunchydata.com/instance": "additional-volumes-instance1-n8pg",\n "postgres-operator.crunchydata.com/instance-set": "instance1",\n "postgres-operator.crunchydata.com/patroni": "additional-volumes-ha"\n }\n },\n "spec": {\n "affinity": {\n "podAntiAffinity": {\n "preferredDuringSchedulingIgnoredDuringExecution": [\n {\n "podAffinityTerm": {\n "labelSelector": {\n "matchLabels": {\n "postgres-operator.crunchydata.com/data": "postgres"\n }\n },\n "topologyKey": "kubernetes.io/hostname"\n },\n "weight": 1\n }\n ]\n }\n },\n "containers": [\n {\n "command": [\n "/opt/crunchy/bin/postgres-entrypoint.sh",\n "patroni",\n "/etc/patroni"\n ],\n "env": [\n {\n "name": "PGDATA",\n "value": "/pgdata/pg18"\n },\n {\n "name": "PGHOST",\n "value": "/tmp/postgres"\n },\n {\n "name": "PGPORT",\n "value": "5432"\n },\n {\n "name": "KRB5_CONFIG",\n "value": "/etc/postgres/krb5.conf"\n },\n {\n "name": "KRB5RCACHEDIR",\n "value": "/tmp"\n },\n {\n "name": "LDAPTLS_CACERT",\n "value": "/etc/postgres/ldap/ca.crt"\n },\n {\n "name": "LC_ALL",\n "value": "en_US.utf-8"\n },\n {\n "name": "LANG",\n "value": "en_US.utf-8"\n },\n {\n "name": "PATRONI_NAME",\n "valueFrom": {\n "fieldRef": {\n "apiVersion": "v1",\n "fieldPath": "metadata.name"\n }\n }\n },\n {\n "name": "PATRONI_KUBERNETES_POD_IP",\n "valueFrom": {\n "fieldRef": {\n "apiVersion": "v1",\n "fieldPath": "status.podIP"\n }\n }\n },\n {\n "name": "PATRONI_KUBERNETES_PORTS",\n "value": "- name: postgres\\n port: 5432\\n protocol: TCP\\n"\n },\n {\n "name": "PATRONI_POSTGRESQL_CONNECT_ADDRESS",\n "value": "$(PATRONI_NAME).additional-volumes-pods:5432"\n },\n {\n "name": "PATRONI_POSTGRESQL_LISTEN",\n "value": "*:5432"\n },\n {\n "name": "PATRONI_POSTGRESQL_CONFIG_DIR",\n "value": "/pgdata/pg18"\n },\n {\n "name": "PATRONI_POSTGRESQL_DATA_DIR",\n "value": "/pgdata/pg18"\n },\n {\n "name": "PATRONI_RESTAPI_CONNECT_ADDRESS",\n "value": "$(PATRONI_NAME).additional-volumes-pods:8008"\n },\n {\n "name": "PATRONI_RESTAPI_LISTEN",\n "value": "*:8008"\n },\n {\n "name": "PATRONICTL_CONFIG_FILE",\n "value": "/etc/patroni"\n },\n {\n "name": "LD_PRELOAD",\n "value": "/usr/lib64/libnss_wrapper.so"\n },\n {\n "name": "NSS_WRAPPER_PASSWD",\n "value": "/tmp/nss_wrapper/postgres/passwd"\n },\n {\n "name": "NSS_WRAPPER_GROUP",\n "value": "/tmp/nss_wrapper/postgres/group"\n }\n ],\n "image": "docker.io/perconalab/percona-postgresql-operator:main-ppg18-postgres",\n "imagePullPolicy": "Always",\n "livenessProbe": {\n "exec": {\n "command": [\n "bash",\n "-c",\n "/opt/crunchy/bin/postgres-liveness-check.sh"\n ]\n },\n "failureThreshold": 3,\n "initialDelaySeconds": 3,\n "periodSeconds": 10,\n "successThreshold": 1,\n "timeoutSeconds": 5\n },\n "name": "database",\n "ports": [\n {\n "containerPort": 5432,\n "name": "postgres",\n "protocol": "TCP"\n }\n ],\n "readinessProbe": {\n "exec": {\n "command": [\n "bash",\n "-c",\n "/opt/crunchy/bin/postgres-readiness-check.sh"\n ]\n },\n "failureThreshold": 3,\n "initialDelaySeconds": 3,\n "periodSeconds": 10,\n "successThreshold": 1,\n "timeoutSeconds": 5\n },\n "resources": {},\n "securityContext": {\n "allowPrivilegeEscalation": false,\n "capabilities": {\n "drop": [\n "ALL"\n ]\n },\n "privileged": false,\n "readOnlyRootFilesystem": true,\n "runAsNonRoot": true,\n "seccompProfile": {\n "type": "RuntimeDefault"\n }\n },\n "terminationMessagePath": "/dev/termination-log",\n "terminationMessagePolicy": "File",\n "volumeMounts": [\n {\n "mountPath": "/pgconf/tls",\n "name": "cert-volume",\n "readOnly": true\n },\n {\n "mountPath": "/pgdata",\n "name": "postgres-data"\n },\n {\n "mountPath": "/etc/database-containerinfo",\n "name": "database-containerinfo",\n "readOnly": true\n },\n {\n "mountPath": "/tablespaces/myts",\n "name": "tablespace-myts"\n },\n {\n "mountPath": "/pgwal",\n "name": "postgres-wal"\n },\n {\n "mountPath": "/pglogs",\n "name": "postgres-logs"\n },\n {\n "mountPath": "/etc/pgbackrest/conf.d",\n "name": "pgbackrest-config",\n "readOnly": true\n },\n {\n "mountPath": "/etc/patroni",\n "name": "patroni-config",\n "readOnly": true\n },\n {\n "mountPath": "/opt/crunchy",\n "name": "crunchy-bin"\n },\n {\n "mountPath": "/tmp",\n "name": "tmp"\n },\n {\n "mountPath": "/dev/shm",\n "name": "dshm"\n }\n ]\n },\n {\n "command": [\n "bash",\n "-ceu",\n "--",\n "monitor() {\\n# Parameters for curl when managing autogrow annotation.\\nAPISERVER=\\"https://kubernetes.default.svc\\"\\nSERVICEACCOUNT=\\"/var/run/secrets/kubernetes.io/serviceaccount\\"\\nNAMESPACE=$(cat ${SERVICEACCOUNT}/namespace)\\nTOKEN=$(cat ${SERVICEACCOUNT}/token)\\nCACERT=${SERVICEACCOUNT}/ca.crt\\n\\ndeclare -r directory=\\"/pgconf/tls\\"\\nexec {fd}\\u003c\\u003e \\u003c(:||:)\\nwhile read -r -t 5 -u \\"${fd}\\" ||:; do\\n # Manage replication certificate.\\n if [[ \\"${directory}\\" -nt \\"/proc/self/fd/${fd}\\" ]] \\u0026\\u0026\\n install -D --mode=0600 -t \\"/tmp/replication\\" \\"${directory}\\"/{replication/tls.crt,replication/tls.key,replication/ca.crt} \\u0026\\u0026\\n pkill -HUP --exact --parent=1 postgres\\n then\\n exec {fd}\\u003e\\u0026- \\u0026\\u0026 exec {fd}\\u003c\\u003e \\u003c(:||:)\\n stat --format=\'Loaded certificates dated %y\' \\"${directory}\\"\\n fi\\n\\ndone\\n}; export -f monitor; exec -a \\"$0\\" bash -ceu monitor",\n "replication-cert-copy"\n ],\n "image": "docker.io/perconalab/percona-postgresql-operator:main-ppg18-postgres",\n "imagePullPolicy": "Always",\n "name": "replication-cert-copy",\n "resources": {},\n "securityContext": {\n "allowPrivilegeEscalation": false,\n "capabilities": {\n "drop": [\n "ALL"\n ]\n },\n "privileged": false,\n "readOnlyRootFilesystem": true,\n "runAsNonRoot": true,\n "seccompProfile": {\n "type": "RuntimeDefault"\n }\n },\n "terminationMessagePath": "/dev/termination-log",\n "terminationMessagePolicy": "File",\n "volumeMounts": [\n {\n "mountPath": "/pgconf/tls",\n "name": "cert-volume",\n "readOnly": true\n },\n {\n "mountPath": "/pgdata",\n "name": "postgres-data"\n },\n {\n "mountPath": "/tmp",\n "name": "tmp"\n }\n ]\n },\n {\n "args": [\n "fluent-bit"\n ],\n "command": [\n "/opt/crunchy/logcollector/entrypoint.sh"\n ],\n "env": [\n {\n "name": "PG_LOG_DIR",\n "value": "/pgdata/pg18/log"\n },\n {\n "name": "PGBACKREST_LOG_DIR",\n "value": "/pgdata/pgbackrest/log"\n },\n {\n "name": "POD_NAMESPACE",\n "valueFrom": {\n "fieldRef": {\n "apiVersion": "v1",\n "fieldPath": "metadata.namespace"\n }\n }\n },\n {\n "name": "POD_NAME",\n "valueFrom": {\n "fieldRef": {\n "apiVersion": "v1",\n "fieldPath": "metadata.name"\n }\n }\n }\n ],\n "image": "docker.io/perconalab/fluentbit:main-logcollector",\n "imagePullPolicy": "IfNotPresent",\n "name": "logs",\n "resources": {},\n "securityContext": {\n "allowPrivilegeEscalation": false,\n "capabilities": {\n "drop": [\n "ALL"\n ]\n },\n "privileged": false,\n "runAsGroup": 26,\n "runAsNonRoot": true,\n "runAsUser": 26,\n "seccompProfile": {\n "type": "RuntimeDefault"\n }\n },\n "terminationMessagePath": "/dev/termination-log",\n "terminationMessagePolicy": "File",\n "volumeMounts": [\n {\n "mountPath": "/pgdata",\n "name": "postgres-data"\n },\n {\n "mountPath": "/opt/crunchy",\n "name": "crunchy-bin"\n },\n {\n "mountPath": "/tmp",\n "name": "tmp"\n }\n ]\n },\n {\n "args": [\n "logrotate"\n ],\n "command": [\n "/opt/crunchy/logcollector/entrypoint.sh"\n ],\n "env": [\n {\n "name": "POD_NAMESPACE",\n "valueFrom": {\n "fieldRef": {\n "apiVersion": "v1",\n "fieldPath": "metadata.namespace"\n }\n }\n },\n {\n "name": "POD_NAME",\n "valueFrom": {\n "fieldRef": {\n "apiVersion": "v1",\n "fieldPath": "metadata.name"\n }\n }\n },\n {\n "name": "LOGROTATE_SCHEDULE",\n "value": "0 0 * * *"\n },\n {\n "name": "LD_PRELOAD",\n "value": "/tmp/nss_wrapper/libnss_wrapper.so"\n },\n {\n "name": "NSS_WRAPPER_PASSWD",\n "value": "/tmp/nss_wrapper/postgres/passwd"\n },\n {\n "name": "NSS_WRAPPER_GROUP",\n "value": "/tmp/nss_wrapper/postgres/group"\n }\n ],\n "image": "docker.io/perconalab/fluentbit:main-logcollector",\n "imagePullPolicy": "IfNotPresent",\n "name": "logrotate",\n "resources": {},\n "securityContext": {\n "allowPrivilegeEscalation": false,\n "capabilities": {\n "drop": [\n "ALL"\n ]\n },\n "privileged": false,\n "runAsGroup": 26,\n "runAsNonRoot": true,\n "runAsUser": 26,\n "seccompProfile": {\n "type": "RuntimeDefault"\n }\n },\n "terminationMessagePath": "/dev/termination-log",\n "terminationMessagePolicy": "File",\n "volumeMounts": [\n {\n "mountPath": "/pgdata",\n "name": "postgres-data"\n },\n {\n "mountPath": "/opt/crunchy",\n "name": "crunchy-bin"\n },\n {\n "mountPath": "/tmp",\n "name": "tmp"\n }\n ]\n },\n {\n "command": [\n "pgbackrest",\n "server"\n ],\n "env": [\n {\n "name": "LD_PRELOAD",\n "value": "/usr/lib64/libnss_wrapper.so"\n },\n {\n "name": "NSS_WRAPPER_PASSWD",\n "value": "/tmp/nss_wrapper/postgres/passwd"\n },\n {\n "name": "NSS_WRAPPER_GROUP",\n "value": "/tmp/nss_wrapper/postgres/group"\n }\n ],\n "image": "docker.io/perconalab/percona-postgresql-operator:main-pgbackrest18",\n "imagePullPolicy": "Always",\n "livenessProbe": {\n "exec": {\n "command": [\n "pgbackrest",\n "server-ping"\n ]\n },\n "failureThreshold": 3,\n "periodSeconds": 10,\n "successThreshold": 1,\n "timeoutSeconds": 1\n },\n "name": "pgbackrest",\n "resources": {},\n "securityContext": {\n "allowPrivilegeEscalation": false,\n "capabilities": {\n "drop": [\n "ALL"\n ]\n },\n "privileged": false,\n "readOnlyRootFilesystem": true,\n "runAsNonRoot": true,\n "seccompProfile": {\n "type": "RuntimeDefault"\n }\n },\n "terminationMessagePath": "/dev/termination-log",\n "terminationMessagePolicy": "File",\n "volumeMounts": [\n {\n "mountPath": "/etc/pgbackrest/server",\n "name": "pgbackrest-server",\n "readOnly": true\n },\n {\n "mountPath": "/pgdata",\n "name": "postgres-data"\n },\n {\n "mountPath": "/tablespaces/myts",\n "name": "tablespace-myts"\n },\n {\n "mountPath": "/pgwal",\n "name": "postgres-wal"\n },\n {\n "mountPath": "/etc/pgbackrest/conf.d",\n "name": "pgbackrest-config",\n "readOnly": true\n },\n {\n "mountPath": "/tmp",\n "name": "tmp"\n }\n ]\n },\n {\n "command": [\n "bash",\n "-ceu",\n "--",\n "monitor() {\\nexec {fd}\\u003c\\u003e \\u003c(:||:)\\nuntil read -r -t 5 -u \\"${fd}\\"; do\\n if\\n [[ \\"${filename}\\" -nt \\"/proc/self/fd/${fd}\\" ]] \\u0026\\u0026\\n pkill -HUP --exact --parent=0 pgbackrest\\n then\\n exec {fd}\\u003e\\u0026- \\u0026\\u0026 exec {fd}\\u003c\\u003e \\u003c(:||:)\\n stat --dereference --format=\'Loaded configuration dated %y\' \\"${filename}\\"\\n elif\\n { [[ \\"${directory}\\" -nt \\"/proc/self/fd/${fd}\\" ]] ||\\n [[ \\"${authority}\\" -nt \\"/proc/self/fd/${fd}\\" ]]\\n } \\u0026\\u0026\\n pkill -HUP --exact --parent=0 pgbackrest\\n then\\n exec {fd}\\u003e\\u0026- \\u0026\\u0026 exec {fd}\\u003c\\u003e \\u003c(:||:)\\n stat --format=\'Loaded certificates dated %y\' \\"${directory}\\"\\n fi\\ndone\\n}; export directory=\\"$1\\" authority=\\"$2\\" filename=\\"$3\\"; export -f monitor; exec -a \\"$0\\" bash -ceu monitor",\n "pgbackrest-config",\n "/etc/pgbackrest/server",\n "/etc/pgbackrest/conf.d/~postgres-operator/tls-ca.crt",\n "/etc/pgbackrest/conf.d/~postgres-operator_server.conf"\n ],\n "image": "docker.io/perconalab/percona-postgresql-operator:main-pgbackrest18",\n "imagePullPolicy": "Always",\n "name": "pgbackrest-config",\n "resources": {},\n "securityContext": {\n "allowPrivilegeEscalation": false,\n "capabilities": {\n "drop": [\n "ALL"\n ]\n },\n "privileged": false,\n "readOnlyRootFilesystem": true,\n "runAsNonRoot": true,\n "seccompProfile": {\n "type": "RuntimeDefault"\n }\n },\n "terminationMessagePath": "/dev/termination-log",\n "terminationMessagePolicy": "File",\n "volumeMounts": [\n {\n "mountPath": "/etc/pgbackrest/server",\n "name": "pgbackrest-server",\n "readOnly": true\n },\n {\n "mountPath": "/etc/pgbackrest/conf.d",\n "name": "pgbackrest-config",\n "readOnly": true\n },\n {\n "mountPath": "/tmp",\n "name": "tmp"\n }\n ]\n }\n ],\n "dnsPolicy": "ClusterFirst",\n "enableServiceLinks": false,\n "initContainers": [\n {\n "command": [\n "/usr/local/bin/init-entrypoint.sh"\n ],\n "image": "docker.io/perconalab/percona-postgresql-operator:PR-1760-4947a0272",\n "imagePullPolicy": "Always",\n "name": "database-init",\n "resources": {},\n "securityContext": {\n "allowPrivilegeEscalation": false,\n "capabilities": {\n "drop": [\n "ALL"\n ]\n },\n "privileged": false,\n "readOnlyRootFilesystem": true,\n "runAsNonRoot": true,\n "seccompProfile": {\n "type": "RuntimeDefault"\n }\n },\n "terminationMessagePath": "/dev/termination-log",\n "terminationMessagePolicy": "File",\n "volumeMounts": [\n {\n "mountPath": "/opt/crunchy",\n "name": "crunchy-bin"\n },\n {\n "mountPath": "/tmp",\n "name": "tmp"\n }\n ]\n },\n {\n "command": [\n "bash",\n "-ceu",\n "--",\n "declare -r expected_major_version=\\"$1\\" pgwal_directory=\\"$2\\" pgbrLog_directory=\\"$3\\"\\npermissions() { while [[ -n \\"$1\\" ]]; do set \\"${1%/*}\\" \\"$@\\"; done; shift; stat -Lc \'%A %4u %4g %n\' \\"$@\\"; }\\nhalt() { local rc=$?; \\u003e\\u00262 echo \\"$@\\"; exit \\"${rc/#0/1}\\"; }\\nresults() { printf \'::postgres-operator: %s::%s\\\\n\' \\"$@\\"; }\\nrecreate() (\\n local tmp; tmp=$(mktemp -d -p \\"${1%/*}\\"); GLOBIGNORE=\'.:..\'; set -x\\n chmod \\"$2\\" \\"${tmp}\\"; mv \\"$1\\"/* \\"${tmp}\\"; rmdir \\"$1\\"; mv \\"${tmp}\\" \\"$1\\"\\n)\\nsafelink() (\\n local desired=\\"$1\\" name=\\"$2\\" current\\n current=$(realpath \\"${name}\\")\\n if [[ \\"${current}\\" == \\"${desired}\\" ]]; then return; fi\\n set -x; mv --no-target-directory \\"${current}\\" \\"${desired}\\"\\n ln --no-dereference --force --symbolic \\"${desired}\\" \\"${name}\\"\\n)\\necho Initializing ...\\nresults \'uid\' \\"$(id -u ||:)\\" \'gid\' \\"$(id -G ||:)\\"\\nif [[ \\"${pgwal_directory}\\" == *\\"pgwal/\\"* ]] \\u0026\\u0026 [[ ! -d \\"/pgwal/pgbackrest-spool\\" ]];then rm -rf \\"/pgdata/pgbackrest-spool\\" \\u0026\\u0026 mkdir -p \\"/pgwal/pgbackrest-spool\\" \\u0026\\u0026 ln --force --symbolic \\"/pgwal/pgbackrest-spool\\" \\"/pgdata/pgbackrest-spool\\";fi\\nif [[ ! -e \\"/pgdata/pgbackrest-spool\\" ]];then rm -rf /pgdata/pgbackrest-spool;fi\\nif [[ ! -e \\"/pgdata/logs/postgres\\" ]];then rm -rf \\"/pgdata/logs/postgres\\";fi\\nif [[ ! -e \\"${pgbrLog_directory}\\" ]];then rm -rf \\"${pgbrLog_directory}\\";fi\\nif [[ -d \\"/pglogs\\" ]];then install --directory --mode=0775 \\"/pglogs/postgres\\" \\"/pglogs/pgbackrest/log\\";if [[ ! -L \\"/pgdata/logs/postgres\\" ]];then mkdir -p \\"/pgdata/logs\\" \\u0026\\u0026 rm -rf \\"/pgdata/logs/postgres\\" \\u0026\\u0026 ln --symbolic \\"/pglogs/postgres\\" \\"/pgdata/logs/postgres\\";fi;if [[ ! -L \\"${pgbrLog_directory}\\" ]];then mkdir -p \\"${pgbrLog_directory%/*}\\" \\u0026\\u0026 rm -rf \\"${pgbrLog_directory}\\" \\u0026\\u0026 ln --symbolic \\"/pglogs/pgbackrest/log\\" \\"${pgbrLog_directory}\\";fi;fi\\nresults \'postgres path\' \\"$(command -v postgres ||:)\\"\\nresults \'postgres version\' \\"${postgres_version:=$(postgres --version ||:)}\\"\\n[[ \\"${postgres_version}\\" =~ \\") ${expected_major_version}\\"($|[^0-9]) ]] ||\\nhalt Expected PostgreSQL version \\"${expected_major_version}\\"\\nresults \'config directory\' \\"${PGDATA:?}\\"\\npostgres_data_directory=$([[ -d \\"${PGDATA}\\" ]] \\u0026\\u0026 postgres -C data_directory || echo \\"${PGDATA}\\")\\nresults \'data directory\' \\"${postgres_data_directory}\\"\\n[[ \\"${postgres_data_directory}\\" == \\"${PGDATA}\\" ]] ||\\nhalt Expected matching config and data directories\\nbootstrap_dir=\\"${postgres_data_directory}_bootstrap\\"\\n[[ -d \\"${bootstrap_dir}\\" ]] \\u0026\\u0026 results \'bootstrap directory\' \\"${bootstrap_dir}\\"\\n[[ -d \\"${bootstrap_dir}\\" ]] \\u0026\\u0026 postgres_data_directory=\\"${bootstrap_dir}\\"\\nif [[ ! -e \\"${postgres_data_directory}\\" || -O \\"${postgres_data_directory}\\" ]]; then\\ninstall --directory --mode=0700 \\"${postgres_data_directory}\\"\\nelif [[ -w \\"${postgres_data_directory}\\" \\u0026\\u0026 -g \\"${postgres_data_directory}\\" ]]; then\\nrecreate \\"${postgres_data_directory}\\" \'0700\'\\nelse (halt Permissions!); fi ||\\nhalt \\"$(permissions \\"${postgres_data_directory}\\" ||:)\\"\\nresults \'pgBackRest log directory\' \\"${pgbrLog_directory}\\"\\ninstall --directory --mode=0775 \\"${pgbrLog_directory}\\" ||\\nhalt \\"$(permissions \\"${pgbrLog_directory}\\" ||:)\\"\\ninstall -D --mode=0600 -t \\"/tmp/replication\\" \\"/pgconf/tls/replication\\"/{tls.crt,tls.key,ca.crt}\\n\\ntablespace_dir=/tablespaces/myts/data\\nif [[ ! -e \\"${tablespace_dir}\\" || -O \\"${tablespace_dir}\\" ]]; then\\ninstall --directory --mode=0700 \\"${tablespace_dir}\\"\\nelif [[ -w \\"${tablespace_dir}\\" \\u0026\\u0026 -g \\"${tablespace_dir}\\" ]]; then\\nrecreate \\"${tablespace_dir}\\" \'0700\'\\nelse (halt Permissions!); fi ||\\nhalt \\"$(permissions \\"${tablespace_dir}\\" ||:)\\"\\n[[ -f \\"${postgres_data_directory}/PG_VERSION\\" ]] || exit 0\\nresults \'data version\' \\"${postgres_data_version:=$(\\u003c \\"${postgres_data_directory}/PG_VERSION\\")}\\"\\n[[ \\"${postgres_data_version}\\" == \\"${expected_major_version}\\" ]] ||\\nhalt Expected PostgreSQL data version \\"${expected_major_version}\\"\\n[[ ! -f \\"${postgres_data_directory}/postgresql.conf\\" ]] \\u0026\\u0026\\ntouch \\"${postgres_data_directory}/postgresql.conf\\"\\nsafelink \\"${pgwal_directory}\\" \\"${postgres_data_directory}/pg_wal\\"\\nresults \'wal directory\' \\"$(realpath \\"${postgres_data_directory}/pg_wal\\" ||:)\\"\\nrm -f \\"${postgres_data_directory}/recovery.signal\\"",\n "startup",\n "18",\n "/pgwal/pg18_wal",\n "/pgdata/pgbackrest/log"\n ],\n "env": [\n {\n "name": "PGDATA",\n "value": "/pgdata/pg18"\n },\n {\n "name": "PGHOST",\n "value": "/tmp/postgres"\n },\n {\n "name": "PGPORT",\n "value": "5432"\n },\n {\n "name": "KRB5_CONFIG",\n "value": "/etc/postgres/krb5.conf"\n },\n {\n "name": "KRB5RCACHEDIR",\n "value": "/tmp"\n },\n {\n "name": "LDAPTLS_CACERT",\n "value": "/etc/postgres/ldap/ca.crt"\n },\n {\n "name": "LC_ALL",\n "value": "en_US.utf-8"\n },\n {\n "name": "LANG",\n "value": "en_US.utf-8"\n }\n ],\n "image": "docker.io/perconalab/percona-postgresql-operator:main-ppg18-postgres",\n "imagePullPolicy": "Always",\n "name": "postgres-startup",\n "resources": {},\n "securityContext": {\n "allowPrivilegeEscalation": false,\n "capabilities": {\n "drop": [\n "ALL"\n ]\n },\n "privileged": false,\n "readOnlyRootFilesystem": true,\n "runAsNonRoot": true,\n "seccompProfile": {\n "type": "RuntimeDefault"\n }\n },\n "terminationMessagePath": "/dev/termination-log",\n "terminationMessagePolicy": "File",\n "volumeMounts": [\n {\n "mountPath": "/pgconf/tls",\n "name": "cert-volume",\n "readOnly": true\n },\n {\n "mountPath": "/pgdata",\n "name": "postgres-data"\n },\n {\n "mountPath": "/tablespaces/myts",\n "name": "tablespace-myts"\n },\n {\n "mountPath": "/pgwal",\n "name": "postgres-wal"\n },\n {\n "mountPath": "/pglogs",\n "name": "postgres-logs"\n },\n {\n "mountPath": "/tmp",\n "name": "tmp"\n }\n ]\n },\n {\n "command": [\n "bash",\n "-c",\n "mkdir -p /tmp/nss_wrapper \\u0026\\u0026 { [[ -f /tmp/nss_wrapper/libnss_wrapper.so ]] || cp /usr/lib64/libnss_wrapper.so /tmp/nss_wrapper/libnss_wrapper.so; }"\n ],\n "image": "docker.io/perconalab/percona-postgresql-operator:main-ppg18-postgres",\n "imagePullPolicy": "Always",\n "name": "nss-wrapper-init-logcollector",\n "resources": {},\n "securityContext": {\n "allowPrivilegeEscalation": false,\n "capabilities": {\n "drop": [\n "ALL"\n ]\n },\n "privileged": false,\n "runAsGroup": 26,\n "runAsNonRoot": true,\n "runAsUser": 26,\n "seccompProfile": {\n "type": "RuntimeDefault"\n }\n },\n "terminationMessagePath": "/dev/termination-log",\n "terminationMessagePolicy": "File",\n "volumeMounts": [\n {\n "mountPath": "/tmp",\n "name": "tmp"\n }\n ]\n },\n {\n "command": [\n "bash",\n "-c",\n "export NSS_WRAPPER_SUBDIR=postgres CRUNCHY_NSS_USERNAME=postgres CRUNCHY_NSS_USER_DESC=\\"postgres\\" \\n# Define nss_wrapper directory and passwd \\u0026 group files that will be utilized by nss_wrapper. The\\n# nss_wrapper_env.sh script (which also sets these vars) isn\'t sourced here since the nss_wrapper\\n# has not yet been setup, and we therefore don\'t yet want the nss_wrapper vars in the environment.\\nmkdir -p /tmp/nss_wrapper\\nchmod g+rwx /tmp/nss_wrapper\\n\\nNSS_WRAPPER_DIR=\\"/tmp/nss_wrapper/${NSS_WRAPPER_SUBDIR}\\"\\nNSS_WRAPPER_PASSWD=\\"${NSS_WRAPPER_DIR}/passwd\\"\\nNSS_WRAPPER_GROUP=\\"${NSS_WRAPPER_DIR}/group\\"\\n\\n# create the nss_wrapper directory\\nmkdir -p \\"${NSS_WRAPPER_DIR}\\"\\n\\n# grab the current user ID and group ID\\nUSER_ID=$(id -u)\\nexport USER_ID\\nGROUP_ID=$(id -g)\\nexport GROUP_ID\\n\\n# get copies of the passwd and group files\\n[[ -f \\"${NSS_WRAPPER_PASSWD}\\" ]] || cp \\"/etc/passwd\\" \\"${NSS_WRAPPER_PASSWD}\\"\\n[[ -f \\"${NSS_WRAPPER_GROUP}\\" ]] || cp \\"/etc/group\\" \\"${NSS_WRAPPER_GROUP}\\"\\n\\n# if the username is missing from the passwd file, then add it\\nif [[ ! $(cat \\"${NSS_WRAPPER_PASSWD}\\") =~ ${CRUNCHY_NSS_USERNAME}:x:${USER_ID} ]]; then\\n echo \\"nss_wrapper: adding user\\"\\n passwd_tmp=\\"${NSS_WRAPPER_DIR}/passwd_tmp\\"\\n cp \\"${NSS_WRAPPER_PASSWD}\\" \\"${passwd_tmp}\\"\\n sed -i \\"/${CRUNCHY_NSS_USERNAME}:x:/d\\" \\"${passwd_tmp}\\"\\n # needed for OCP 4.x because crio updates /etc/passwd with an entry for USER_ID\\n sed -i \\"/${USER_ID}:x:/d\\" \\"${passwd_tmp}\\"\\n printf \'${CRUNCHY_NSS_USERNAME}:x:${USER_ID}:${GROUP_ID}:${CRUNCHY_NSS_USER_DESC}:${HOME}:/bin/bash\\\\n\' \\u003e\\u003e \\"${passwd_tmp}\\"\\n envsubst \\u003c \\"${passwd_tmp}\\" \\u003e \\"${NSS_WRAPPER_PASSWD}\\"\\n rm \\"${passwd_tmp}\\"\\nelse\\n echo \\"nss_wrapper: user exists\\"\\nfi\\n\\n# if the username (which will be the same as the group name) is missing from group file, then add it\\nif [[ ! $(cat \\"${NSS_WRAPPER_GROUP}\\") =~ ${CRUNCHY_NSS_USERNAME}:x:${USER_ID} ]]; then\\n echo \\"nss_wrapper: adding group\\"\\n group_tmp=\\"${NSS_WRAPPER_DIR}/group_tmp\\"\\n cp \\"${NSS_WRAPPER_GROUP}\\" \\"${group_tmp}\\"\\n sed -i \\"/${CRUNCHY_NSS_USERNAME}:x:/d\\" \\"${group_tmp}\\"\\n printf \'${CRUNCHY_NSS_USERNAME}:x:${USER_ID}:${CRUNCHY_NSS_USERNAME}\\\\n\' \\u003e\\u003e \\"${group_tmp}\\"\\n envsubst \\u003c \\"${group_tmp}\\" \\u003e \\"${NSS_WRAPPER_GROUP}\\"\\n rm \\"${group_tmp}\\"\\nelse\\n echo \\"nss_wrapper: group exists\\"\\nfi\\n\\n# export the nss_wrapper env vars\\n# define nss_wrapper directory and passwd \\u0026 group files that will be utilized by nss_wrapper\\nNSS_WRAPPER_DIR=\\"/tmp/nss_wrapper/${NSS_WRAPPER_SUBDIR}\\"\\nNSS_WRAPPER_PASSWD=\\"${NSS_WRAPPER_DIR}/passwd\\"\\nNSS_WRAPPER_GROUP=\\"${NSS_WRAPPER_DIR}/group\\"\\n\\nexport LD_PRELOAD=/usr/lib64/libnss_wrapper.so\\nexport NSS_WRAPPER_PASSWD=\\"${NSS_WRAPPER_PASSWD}\\"\\nexport NSS_WRAPPER_GROUP=\\"${NSS_WRAPPER_GROUP}\\"\\n\\necho \\"nss_wrapper: environment configured\\"\\n"\n ],\n "image": "docker.io/perconalab/percona-postgresql-operator:main-ppg18-postgres",\n "imagePullPolicy": "Always",\n "name": "nss-wrapper-init",\n "resources": {},\n "securityContext": {\n "allowPrivilegeEscalation": false,\n "capabilities": {\n "drop": [\n "ALL"\n ]\n },\n "privileged": false,\n "readOnlyRootFilesystem": true,\n "runAsNonRoot": true,\n "seccompProfile": {\n "type": "RuntimeDefault"\n }\n },\n "terminationMessagePath": "/dev/termination-log",\n "terminationMessagePolicy": "File",\n "volumeMounts": [\n {\n "mountPath": "/tmp",\n "name": "tmp"\n }\n ]\n }\n ],\n "restartPolicy": "Always",\n "schedulerName": "default-scheduler",\n "securityContext": {\n "fsGroup": 26,\n "fsGroupChangePolicy": "OnRootMismatch"\n },\n "serviceAccount": "additional-volumes-instance",\n "serviceAccountName": "additional-volumes-instance",\n "shareProcessNamespace": true,\n "terminationGracePeriodSeconds": 30,\n "topologySpreadConstraints": [\n {\n "labelSelector": {\n "matchExpressions": [\n {\n "key": "postgres-operator.crunchydata.com/data",\n "operator": "In",\n "values": [\n "postgres",\n "pgbackrest"\n ]\n }\n ],\n "matchLabels": {\n "postgres-operator.crunchydata.com/cluster": "additional-volumes"\n }\n },\n "maxSkew": 1,\n "topologyKey": "kubernetes.io/hostname",\n "whenUnsatisfiable": "ScheduleAnyway"\n },\n {\n "labelSelector": {\n "matchExpressions": [\n {\n "key": "postgres-operator.crunchydata.com/data",\n "operator": "In",\n "values": [\n "postgres",\n "pgbackrest"\n ]\n }\n ],\n "matchLabels": {\n "postgres-operator.crunchydata.com/cluster": "additional-volumes"\n }\n },\n "maxSkew": 1,\n "topologyKey": "topology.kubernetes.io/zone",\n "whenUnsatisfiable": "ScheduleAnyway"\n }\n ],\n "volumes": [\n {\n "name": "cert-volume",\n "projected": {\n "defaultMode": 384,\n "sources": [\n {\n "secret": {\n "items": [\n {\n "key": "tls.crt",\n "path": "tls.crt"\n },\n {\n "key": "tls.key",\n "path": "tls.key"\n },\n {\n "key": "ca.crt",\n "path": "ca.crt"\n }\n ],\n "name": "additional-volumes-cluster-cert"\n }\n },\n {\n "secret": {\n "items": [\n {\n "key": "tls.crt",\n "path": "replication/tls.crt"\n },\n {\n "key": "tls.key",\n "path": "replication/tls.key"\n },\n {\n "key": "ca.crt",\n "path": "replication/ca.crt"\n }\n ],\n "name": "additional-volumes-replication-cert"\n }\n }\n ]\n }\n },\n {\n "name": "postgres-data",\n "persistentVolumeClaim": {\n "claimName": "additional-volumes-instance1-n8pg-pgdata"\n }\n },\n {\n "downwardAPI": {\n "defaultMode": 420,\n "items": [\n {\n "path": "cpu_limit",\n "resourceFieldRef": {\n "containerName": "database",\n "divisor": "1m",\n "resource": "limits.cpu"\n }\n },\n {\n "path": "cpu_request",\n "resourceFieldRef": {\n "containerName": "database",\n "divisor": "1m",\n "resource": "requests.cpu"\n }\n },\n {\n "path": "mem_limit",\n "resourceFieldRef": {\n "containerName": "database",\n "divisor": "1Mi",\n "resource": "limits.memory"\n }\n },\n {\n "path": "mem_request",\n "resourceFieldRef": {\n "containerName": "database",\n "divisor": "1Mi",\n "resource": "requests.memory"\n }\n },\n {\n "fieldRef": {\n "apiVersion": "v1",\n "fieldPath": "metadata.labels"\n },\n "path": "labels"\n },\n {\n "fieldRef": {\n "apiVersion": "v1",\n "fieldPath": "metadata.annotations"\n },\n "path": "annotations"\n }\n ]\n },\n "name": "database-containerinfo"\n },\n {\n "name": "tablespace-myts",\n "persistentVolumeClaim": {\n "claimName": "additional-volumes-instance1-n8pg-myts-tablespace"\n }\n },\n {\n "name": "postgres-wal",\n "persistentVolumeClaim": {\n "claimName": "additional-volumes-instance1-n8pg-pgwal"\n }\n },\n {\n "name": "postgres-logs",\n "persistentVolumeClaim": {\n "claimName": "additional-volumes-instance1-n8pg-pglogs"\n }\n },\n {\n "name": "pgbackrest-server",\n "projected": {\n "defaultMode": 420,\n "sources": [\n {\n "secret": {\n "items": [\n {\n "key": "pgbackrest-server.crt",\n "path": "server-tls.crt"\n },\n {\n "key": "pgbackrest-server.key",\n "mode": 384,\n "path": "server-tls.key"\n }\n ],\n "name": "additional-volumes-instance1-n8pg-certs"\n }\n }\n ]\n }\n },\n {\n "name": "pgbackrest-config",\n "projected": {\n "defaultMode": 420,\n "sources": [\n {\n "configMap": {\n "items": [\n {\n "key": "pgbackrest_instance.conf",\n "path": "pgbackrest_instance.conf"\n },\n {\n "key": "config-hash",\n "path": "config-hash"\n },\n {\n "key": "pgbackrest-server.conf",\n "path": "~postgres-operator_server.conf"\n }\n ],\n "name": "additional-volumes-pgbackrest-config"\n }\n },\n {\n "secret": {\n "items": [\n {\n "key": "pgbackrest.ca-roots",\n "path": "~postgres-operator/tls-ca.crt"\n },\n {\n "key": "pgbackrest-client.crt",\n "path": "~postgres-operator/client-tls.crt"\n },\n {\n "key": "pgbackrest-client.key",\n "mode": 384,\n "path": "~postgres-operator/client-tls.key"\n }\n ],\n "name": "additional-volumes-pgbackrest"\n }\n }\n ]\n }\n },\n {\n "name": "patroni-config",\n "projected": {\n "defaultMode": 420,\n "sources": [\n {\n "configMap": {\n "items": [\n {\n "key": "patroni.yaml",\n "path": "~postgres-operator_cluster.yaml"\n }\n ],\n "name": "additional-volumes-config"\n }\n },\n {\n "configMap": {\n "items": [\n {\n "key": "patroni.yaml",\n "path": "~postgres-operator_instance.yaml"\n }\n ],\n "name": "additional-volumes-instance1-n8pg-config"\n }\n },\n {\n "secret": {\n "items": [\n {\n "key": "patroni.ca-roots",\n "path": "~postgres-operator/patroni.ca-roots"\n },\n {\n "key": "patroni.crt-combined",\n "path": "~postgres-operator/patroni.crt+key"\n }\n ],\n "name": "additional-volumes-instance1-n8pg-certs"\n }\n }\n ]\n }\n },\n {\n "emptyDir": {},\n "name": "crunchy-bin"\n },\n {\n "emptyDir": {\n "sizeLimit": "2Gi"\n },\n "name": "tmp"\n },\n {\n "emptyDir": {\n "medium": "Memory"\n },\n "name": "dshm"\n }\n ]\n }\n },\n "updateStrategy": {\n "type": "OnDelete"\n }\n },\n "status": {\n "availableReplicas": 1,\n "collisionCount": 0,\n "currentReplicas": 1,\n "currentRevision": "additional-volumes-instance1-n8pg-7f58bcfdb6",\n "observedGeneration": 1,\n "readyReplicas": 1,\n "replicas": 1,\n "updateRevision": "additional-volumes-instance1-n8pg-7f58bcfdb6",\n "updatedReplicas": 1\n }\n },\n {\n "apiVersion": "apps/v1",\n "kind": "StatefulSet",\n "metadata": {\n "annotations": {\n "pgv2.percona.com/logcollector-config-hash": "d9a116e02b828bdc02165325e92799d82961fb499041814c7c765d0ce263ce77"\n },\n "creationTimestamp": "2026-08-19T18:12:05Z",\n "generation": 1,\n "labels": {\n "app.kubernetes.io/component": "pg",\n "app.kubernetes.io/instance": "additional-volumes",\n "app.kubernetes.io/managed-by": "percona-postgresql-operator",\n "app.kubernetes.io/name": "percona-postgresql",\n "app.kubernetes.io/part-of": "percona-postgresql",\n "pgv2.percona.com/version": "3.2.0",\n "postgres-operator.crunchydata.com/cluster": "additional-volumes",\n "postgres-operator.crunchydata.com/data": "postgres",\n "postgres-operator.crunchydata.com/instance": "additional-volumes-instance1-xvbw",\n "postgres-operator.crunchydata.com/instance-set": "instance1"\n },\n "name": "additional-volumes-instance1-xvbw",\n "namespace": "kuttl-test-intimate-garfish",\n "ownerReferences": [\n {\n "apiVersion": "upstream.pgv2.percona.com/v1beta1",\n "blockOwnerDeletion": true,\n "controller": true,\n "kind": "PostgresCluster",\n "name": "additional-volumes",\n "uid": "b795649f-550b-4283-b2ef-eca573235e5a"\n }\n ],\n "resourceVersion": "1787163193859951017",\n "uid": "ff0eabc4-a14f-43d4-85da-3372e3c9c0da"\n },\n "spec": {\n "persistentVolumeClaimRetentionPolicy": {\n "whenDeleted": "Retain",\n "whenScaled": "Retain"\n },\n "podManagementPolicy": "OrderedReady",\n "replicas": 1,\n "revisionHistoryLimit": 0,\n "selector": {\n "matchLabels": {\n "postgres-operator.crunchydata.com/cluster": "additional-volumes",\n "postgres-operator.crunchydata.com/instance": "additional-volumes-instance1-xvbw",\n "postgres-operator.crunchydata.com/instance-set": "instance1"\n }\n },\n "serviceName": "additional-volumes-pods",\n "template": {\n "metadata": {\n "annotations": {\n "kubectl.kubernetes.io/default-container": "database",\n "pgv2.percona.com/logcollector-config-hash": "d9a116e02b828bdc02165325e92799d82961fb499041814c7c765d0ce263ce77"\n },\n "creationTimestamp": null,\n "labels": {\n "app.kubernetes.io/component": "pg",\n "app.kubernetes.io/instance": "additional-volumes",\n "app.kubernetes.io/managed-by": "percona-postgresql-operator",\n "app.kubernetes.io/name": "percona-postgresql",\n "app.kubernetes.io/part-of": "percona-postgresql",\n "pgv2.percona.com/version": "3.2.0",\n "postgres-operator.crunchydata.com/cluster": "additional-volumes",\n "postgres-operator.crunchydata.com/data": "postgres",\n "postgres-operator.crunchydata.com/instance": "additional-volumes-instance1-xvbw",\n "postgres-operator.crunchydata.com/instance-set": "instance1",\n "postgres-operator.crunchydata.com/patroni": "additional-volumes-ha"\n }\n },\n "spec": {\n "affinity": {\n "podAntiAffinity": {\n "preferredDuringSchedulingIgnoredDuringExecution": [\n {\n "podAffinityTerm": {\n "labelSelector": {\n "matchLabels": {\n "postgres-operator.crunchydata.com/data": "postgres"\n }\n },\n "topologyKey": "kubernetes.io/hostname"\n },\n "weight": 1\n }\n ]\n }\n },\n "containers": [\n {\n "command": [\n "/opt/crunchy/bin/postgres-entrypoint.sh",\n "patroni",\n "/etc/patroni"\n ],\n "env": [\n {\n "name": "PGDATA",\n "value": "/pgdata/pg18"\n },\n {\n "name": "PGHOST",\n "value": "/tmp/postgres"\n },\n {\n "name": "PGPORT",\n "value": "5432"\n },\n {\n "name": "KRB5_CONFIG",\n "value": "/etc/postgres/krb5.conf"\n },\n {\n "name": "KRB5RCACHEDIR",\n "value": "/tmp"\n },\n {\n "name": "LDAPTLS_CACERT",\n "value": "/etc/postgres/ldap/ca.crt"\n },\n {\n "name": "LC_ALL",\n "value": "en_US.utf-8"\n },\n {\n "name": "LANG",\n "value": "en_US.utf-8"\n },\n {\n "name": "PATRONI_NAME",\n "valueFrom": {\n "fieldRef": {\n "apiVersion": "v1",\n "fieldPath": "metadata.name"\n }\n }\n },\n {\n "name": "PATRONI_KUBERNETES_POD_IP",\n "valueFrom": {\n "fieldRef": {\n "apiVersion": "v1",\n "fieldPath": "status.podIP"\n }\n }\n },\n {\n "name": "PATRONI_KUBERNETES_PORTS",\n "value": "- name: postgres\\n port: 5432\\n protocol: TCP\\n"\n },\n {\n "name": "PATRONI_POSTGRESQL_CONNECT_ADDRESS",\n "value": "$(PATRONI_NAME).additional-volumes-pods:5432"\n },\n {\n "name": "PATRONI_POSTGRESQL_LISTEN",\n "value": "*:5432"\n },\n {\n "name": "PATRONI_POSTGRESQL_CONFIG_DIR",\n "value": "/pgdata/pg18"\n },\n {\n "name": "PATRONI_POSTGRESQL_DATA_DIR",\n "value": "/pgdata/pg18"\n },\n {\n "name": "PATRONI_RESTAPI_CONNECT_ADDRESS",\n "value": "$(PATRONI_NAME).additional-volumes-pods:8008"\n },\n {\n "name": "PATRONI_RESTAPI_LISTEN",\n "value": "*:8008"\n },\n {\n "name": "PATRONICTL_CONFIG_FILE",\n "value": "/etc/patroni"\n },\n {\n "name": "LD_PRELOAD",\n "value": "/usr/lib64/libnss_wrapper.so"\n },\n {\n "name": "NSS_WRAPPER_PASSWD",\n "value": "/tmp/nss_wrapper/postgres/passwd"\n },\n {\n "name": "NSS_WRAPPER_GROUP",\n "value": "/tmp/nss_wrapper/postgres/group"\n }\n ],\n "image": "docker.io/perconalab/percona-postgresql-operator:main-ppg18-postgres",\n "imagePullPolicy": "Always",\n "livenessProbe": {\n "exec": {\n "command": [\n "bash",\n "-c",\n "/opt/crunchy/bin/postgres-liveness-check.sh"\n ]\n },\n "failureThreshold": 3,\n "initialDelaySeconds": 3,\n "periodSeconds": 10,\n "successThreshold": 1,\n "timeoutSeconds": 5\n },\n "name": "database",\n "ports": [\n {\n "containerPort": 5432,\n "name": "postgres",\n "protocol": "TCP"\n }\n ],\n "readinessProbe": {\n "exec": {\n "command": [\n "bash",\n "-c",\n "/opt/crunchy/bin/postgres-readiness-check.sh"\n ]\n },\n "failureThreshold": 3,\n "initialDelaySeconds": 3,\n "periodSeconds": 10,\n "successThreshold": 1,\n "timeoutSeconds": 5\n },\n "resources": {},\n "securityContext": {\n "allowPrivilegeEscalation": false,\n "capabilities": {\n "drop": [\n "ALL"\n ]\n },\n "privileged": false,\n "readOnlyRootFilesystem": true,\n "runAsNonRoot": true,\n "seccompProfile": {\n "type": "RuntimeDefault"\n }\n },\n "terminationMessagePath": "/dev/termination-log",\n "terminationMessagePolicy": "File",\n "volumeMounts": [\n {\n "mountPath": "/pgconf/tls",\n "name": "cert-volume",\n "readOnly": true\n },\n {\n "mountPath": "/pgdata",\n "name": "postgres-data"\n },\n {\n "mountPath": "/etc/database-containerinfo",\n "name": "database-containerinfo",\n "readOnly": true\n },\n {\n "mountPath": "/tablespaces/myts",\n "name": "tablespace-myts"\n },\n {\n "mountPath": "/pgwal",\n "name": "postgres-wal"\n },\n {\n "mountPath": "/pglogs",\n "name": "postgres-logs"\n },\n {\n "mountPath": "/etc/pgbackrest/conf.d",\n "name": "pgbackrest-config",\n "readOnly": true\n },\n {\n "mountPath": "/etc/patroni",\n "name": "patroni-config",\n "readOnly": true\n },\n {\n "mountPath": "/opt/crunchy",\n "name": "crunchy-bin"\n },\n {\n "mountPath": "/tmp",\n "name": "tmp"\n },\n {\n "mountPath": "/dev/shm",\n "name": "dshm"\n }\n ]\n },\n {\n "command": [\n "bash",\n "-ceu",\n "--",\n "monitor() {\\n# Parameters for curl when managing autogrow annotation.\\nAPISERVER=\\"https://kubernetes.default.svc\\"\\nSERVICEACCOUNT=\\"/var/run/secrets/kubernetes.io/serviceaccount\\"\\nNAMESPACE=$(cat ${SERVICEACCOUNT}/namespace)\\nTOKEN=$(cat ${SERVICEACCOUNT}/token)\\nCACERT=${SERVICEACCOUNT}/ca.crt\\n\\ndeclare -r directory=\\"/pgconf/tls\\"\\nexec {fd}\\u003c\\u003e \\u003c(:||:)\\nwhile read -r -t 5 -u \\"${fd}\\" ||:; do\\n # Manage replication certificate.\\n if [[ \\"${directory}\\" -nt \\"/proc/self/fd/${fd}\\" ]] \\u0026\\u0026\\n install -D --mode=0600 -t \\"/tmp/replication\\" \\"${directory}\\"/{replication/tls.crt,replication/tls.key,replication/ca.crt} \\u0026\\u0026\\n pkill -HUP --exact --parent=1 postgres\\n then\\n exec {fd}\\u003e\\u0026- \\u0026\\u0026 exec {fd}\\u003c\\u003e \\u003c(:||:)\\n stat --format=\'Loaded certificates dated %y\' \\"${directory}\\"\\n fi\\n\\ndone\\n}; export -f monitor; exec -a \\"$0\\" bash -ceu monitor",\n "replication-cert-copy"\n ],\n "image": "docker.io/perconalab/percona-postgresql-operator:main-ppg18-postgres",\n "imagePullPolicy": "Always",\n "name": "replication-cert-copy",\n "resources": {},\n "securityContext": {\n "allowPrivilegeEscalation": false,\n "capabilities": {\n "drop": [\n "ALL"\n ]\n },\n "privileged": false,\n "readOnlyRootFilesystem": true,\n "runAsNonRoot": true,\n "seccompProfile": {\n "type": "RuntimeDefault"\n }\n },\n "terminationMessagePath": "/dev/termination-log",\n "terminationMessagePolicy": "File",\n "volumeMounts": [\n {\n "mountPath": "/pgconf/tls",\n "name": "cert-volume",\n "readOnly": true\n },\n {\n "mountPath": "/pgdata",\n "name": "postgres-data"\n },\n {\n "mountPath": "/tmp",\n "name": "tmp"\n }\n ]\n },\n {\n "args": [\n "fluent-bit"\n ],\n "command": [\n "/opt/crunchy/logcollector/entrypoint.sh"\n ],\n "env": [\n {\n "name": "PG_LOG_DIR",\n "value": "/pgdata/pg18/log"\n },\n {\n "name": "PGBACKREST_LOG_DIR",\n "value": "/pgdata/pgbackrest/log"\n },\n {\n "name": "POD_NAMESPACE",\n "valueFrom": {\n "fieldRef": {\n "apiVersion": "v1",\n "fieldPath": "metadata.namespace"\n }\n }\n },\n {\n "name": "POD_NAME",\n "valueFrom": {\n "fieldRef": {\n "apiVersion": "v1",\n "fieldPath": "metadata.name"\n }\n }\n }\n ],\n "image": "docker.io/perconalab/fluentbit:main-logcollector",\n "imagePullPolicy": "IfNotPresent",\n "name": "logs",\n "resources": {},\n "securityContext": {\n "allowPrivilegeEscalation": false,\n "capabilities": {\n "drop": [\n "ALL"\n ]\n },\n "privileged": false,\n "runAsGroup": 26,\n "runAsNonRoot": true,\n "runAsUser": 26,\n "seccompProfile": {\n "type": "RuntimeDefault"\n }\n },\n "terminationMessagePath": "/dev/termination-log",\n "terminationMessagePolicy": "File",\n "volumeMounts": [\n {\n "mountPath": "/pgdata",\n "name": "postgres-data"\n },\n {\n "mountPath": "/opt/crunchy",\n "name": "crunchy-bin"\n },\n {\n "mountPath": "/tmp",\n "name": "tmp"\n }\n ]\n },\n {\n "args": [\n "logrotate"\n ],\n "command": [\n "/opt/crunchy/logcollector/entrypoint.sh"\n ],\n "env": [\n {\n "name": "POD_NAMESPACE",\n "valueFrom": {\n "fieldRef": {\n "apiVersion": "v1",\n "fieldPath": "metadata.namespace"\n }\n }\n },\n {\n "name": "POD_NAME",\n "valueFrom": {\n "fieldRef": {\n "apiVersion": "v1",\n "fieldPath": "metadata.name"\n }\n }\n },\n {\n "name": "LOGROTATE_SCHEDULE",\n "value": "0 0 * * *"\n },\n {\n "name": "LD_PRELOAD",\n "value": "/tmp/nss_wrapper/libnss_wrapper.so"\n },\n {\n "name": "NSS_WRAPPER_PASSWD",\n "value": "/tmp/nss_wrapper/postgres/passwd"\n },\n {\n "name": "NSS_WRAPPER_GROUP",\n "value": "/tmp/nss_wrapper/postgres/group"\n }\n ],\n "image": "docker.io/perconalab/fluentbit:main-logcollector",\n "imagePullPolicy": "IfNotPresent",\n "name": "logrotate",\n "resources": {},\n "securityContext": {\n "allowPrivilegeEscalation": false,\n "capabilities": {\n "drop": [\n "ALL"\n ]\n },\n "privileged": false,\n "runAsGroup": 26,\n "runAsNonRoot": true,\n "runAsUser": 26,\n "seccompProfile": {\n "type": "RuntimeDefault"\n }\n },\n "terminationMessagePath": "/dev/termination-log",\n "terminationMessagePolicy": "File",\n "volumeMounts": [\n {\n "mountPath": "/pgdata",\n "name": "postgres-data"\n },\n {\n "mountPath": "/opt/crunchy",\n "name": "crunchy-bin"\n },\n {\n "mountPath": "/tmp",\n "name": "tmp"\n }\n ]\n },\n {\n "command": [\n "pgbackrest",\n "server"\n ],\n "env": [\n {\n "name": "LD_PRELOAD",\n "value": "/usr/lib64/libnss_wrapper.so"\n },\n {\n "name": "NSS_WRAPPER_PASSWD",\n "value": "/tmp/nss_wrapper/postgres/passwd"\n },\n {\n "name": "NSS_WRAPPER_GROUP",\n "value": "/tmp/nss_wrapper/postgres/group"\n }\n ],\n "image": "docker.io/perconalab/percona-postgresql-operator:main-pgbackrest18",\n "imagePullPolicy": "Always",\n "livenessProbe": {\n "exec": {\n "command": [\n "pgbackrest",\n "server-ping"\n ]\n },\n "failureThreshold": 3,\n "periodSeconds": 10,\n "successThreshold": 1,\n "timeoutSeconds": 1\n },\n "name": "pgbackrest",\n "resources": {},\n "securityContext": {\n "allowPrivilegeEscalation": false,\n "capabilities": {\n "drop": [\n "ALL"\n ]\n },\n "privileged": false,\n "readOnlyRootFilesystem": true,\n "runAsNonRoot": true,\n "seccompProfile": {\n "type": "RuntimeDefault"\n }\n },\n "terminationMessagePath": "/dev/termination-log",\n "terminationMessagePolicy": "File",\n "volumeMounts": [\n {\n "mountPath": "/etc/pgbackrest/server",\n "name": "pgbackrest-server",\n "readOnly": true\n },\n {\n "mountPath": "/pgdata",\n "name": "postgres-data"\n },\n {\n "mountPath": "/tablespaces/myts",\n "name": "tablespace-myts"\n },\n {\n "mountPath": "/pgwal",\n "name": "postgres-wal"\n },\n {\n "mountPath": "/etc/pgbackrest/conf.d",\n "name": "pgbackrest-config",\n "readOnly": true\n },\n {\n "mountPath": "/tmp",\n "name": "tmp"\n }\n ]\n },\n {\n "command": [\n "bash",\n "-ceu",\n "--",\n "monitor() {\\nexec {fd}\\u003c\\u003e \\u003c(:||:)\\nuntil read -r -t 5 -u \\"${fd}\\"; do\\n if\\n [[ \\"${filename}\\" -nt \\"/proc/self/fd/${fd}\\" ]] \\u0026\\u0026\\n pkill -HUP --exact --parent=0 pgbackrest\\n then\\n exec {fd}\\u003e\\u0026- \\u0026\\u0026 exec {fd}\\u003c\\u003e \\u003c(:||:)\\n stat --dereference --format=\'Loaded configuration dated %y\' \\"${filename}\\"\\n elif\\n { [[ \\"${directory}\\" -nt \\"/proc/self/fd/${fd}\\" ]] ||\\n [[ \\"${authority}\\" -nt \\"/proc/self/fd/${fd}\\" ]]\\n } \\u0026\\u0026\\n pkill -HUP --exact --parent=0 pgbackrest\\n then\\n exec {fd}\\u003e\\u0026- \\u0026\\u0026 exec {fd}\\u003c\\u003e \\u003c(:||:)\\n stat --format=\'Loaded certificates dated %y\' \\"${directory}\\"\\n fi\\ndone\\n}; export directory=\\"$1\\" authority=\\"$2\\" filename=\\"$3\\"; export -f monitor; exec -a \\"$0\\" bash -ceu monitor",\n "pgbackrest-config",\n "/etc/pgbackrest/server",\n "/etc/pgbackrest/conf.d/~postgres-operator/tls-ca.crt",\n "/etc/pgbackrest/conf.d/~postgres-operator_server.conf"\n ],\n "image": "docker.io/perconalab/percona-postgresql-operator:main-pgbackrest18",\n "imagePullPolicy": "Always",\n "name": "pgbackrest-config",\n "resources": {},\n "securityContext": {\n "allowPrivilegeEscalation": false,\n "capabilities": {\n "drop": [\n "ALL"\n ]\n },\n "privileged": false,\n "readOnlyRootFilesystem": true,\n "runAsNonRoot": true,\n "seccompProfile": {\n "type": "RuntimeDefault"\n }\n },\n "terminationMessagePath": "/dev/termination-log",\n "terminationMessagePolicy": "File",\n "volumeMounts": [\n {\n "mountPath": "/etc/pgbackrest/server",\n "name": "pgbackrest-server",\n "readOnly": true\n },\n {\n "mountPath": "/etc/pgbackrest/conf.d",\n "name": "pgbackrest-config",\n "readOnly": true\n },\n {\n "mountPath": "/tmp",\n "name": "tmp"\n }\n ]\n }\n ],\n "dnsPolicy": "ClusterFirst",\n "enableServiceLinks": false,\n "initContainers": [\n {\n "command": [\n "/usr/local/bin/init-entrypoint.sh"\n ],\n "image": "docker.io/perconalab/percona-postgresql-operator:PR-1760-4947a0272",\n "imagePullPolicy": "Always",\n "name": "database-init",\n "resources": {},\n "securityContext": {\n "allowPrivilegeEscalation": false,\n "capabilities": {\n "drop": [\n "ALL"\n ]\n },\n "privileged": false,\n "readOnlyRootFilesystem": true,\n "runAsNonRoot": true,\n "seccompProfile": {\n "type": "RuntimeDefault"\n }\n },\n "terminationMessagePath": "/dev/termination-log",\n "terminationMessagePolicy": "File",\n "volumeMounts": [\n {\n "mountPath": "/opt/crunchy",\n "name": "crunchy-bin"\n },\n {\n "mountPath": "/tmp",\n "name": "tmp"\n }\n ]\n },\n {\n "command": [\n "bash",\n "-ceu",\n "--",\n "declare -r expected_major_version=\\"$1\\" pgwal_directory=\\"$2\\" pgbrLog_directory=\\"$3\\"\\npermissions() { while [[ -n \\"$1\\" ]]; do set \\"${1%/*}\\" \\"$@\\"; done; shift; stat -Lc \'%A %4u %4g %n\' \\"$@\\"; }\\nhalt() { local rc=$?; \\u003e\\u00262 echo \\"$@\\"; exit \\"${rc/#0/1}\\"; }\\nresults() { printf \'::postgres-operator: %s::%s\\\\n\' \\"$@\\"; }\\nrecreate() (\\n local tmp; tmp=$(mktemp -d -p \\"${1%/*}\\"); GLOBIGNORE=\'.:..\'; set -x\\n chmod \\"$2\\" \\"${tmp}\\"; mv \\"$1\\"/* \\"${tmp}\\"; rmdir \\"$1\\"; mv \\"${tmp}\\" \\"$1\\"\\n)\\nsafelink() (\\n local desired=\\"$1\\" name=\\"$2\\" current\\n current=$(realpath \\"${name}\\")\\n if [[ \\"${current}\\" == \\"${desired}\\" ]]; then return; fi\\n set -x; mv --no-target-directory \\"${current}\\" \\"${desired}\\"\\n ln --no-dereference --force --symbolic \\"${desired}\\" \\"${name}\\"\\n)\\necho Initializing ...\\nresults \'uid\' \\"$(id -u ||:)\\" \'gid\' \\"$(id -G ||:)\\"\\nif [[ \\"${pgwal_directory}\\" == *\\"pgwal/\\"* ]] \\u0026\\u0026 [[ ! -d \\"/pgwal/pgbackrest-spool\\" ]];then rm -rf \\"/pgdata/pgbackrest-spool\\" \\u0026\\u0026 mkdir -p \\"/pgwal/pgbackrest-spool\\" \\u0026\\u0026 ln --force --symbolic \\"/pgwal/pgbackrest-spool\\" \\"/pgdata/pgbackrest-spool\\";fi\\nif [[ ! -e \\"/pgdata/pgbackrest-spool\\" ]];then rm -rf /pgdata/pgbackrest-spool;fi\\nif [[ ! -e \\"/pgdata/logs/postgres\\" ]];then rm -rf \\"/pgdata/logs/postgres\\";fi\\nif [[ ! -e \\"${pgbrLog_directory}\\" ]];then rm -rf \\"${pgbrLog_directory}\\";fi\\nif [[ -d \\"/pglogs\\" ]];then install --directory --mode=0775 \\"/pglogs/postgres\\" \\"/pglogs/pgbackrest/log\\";if [[ ! -L \\"/pgdata/logs/postgres\\" ]];then mkdir -p \\"/pgdata/logs\\" \\u0026\\u0026 rm -rf \\"/pgdata/logs/postgres\\" \\u0026\\u0026 ln --symbolic \\"/pglogs/postgres\\" \\"/pgdata/logs/postgres\\";fi;if [[ ! -L \\"${pgbrLog_directory}\\" ]];then mkdir -p \\"${pgbrLog_directory%/*}\\" \\u0026\\u0026 rm -rf \\"${pgbrLog_directory}\\" \\u0026\\u0026 ln --symbolic \\"/pglogs/pgbackrest/log\\" \\"${pgbrLog_directory}\\";fi;fi\\nresults \'postgres path\' \\"$(command -v postgres ||:)\\"\\nresults \'postgres version\' \\"${postgres_version:=$(postgres --version ||:)}\\"\\n[[ \\"${postgres_version}\\" =~ \\") ${expected_major_version}\\"($|[^0-9]) ]] ||\\nhalt Expected PostgreSQL version \\"${expected_major_version}\\"\\nresults \'config directory\' \\"${PGDATA:?}\\"\\npostgres_data_directory=$([[ -d \\"${PGDATA}\\" ]] \\u0026\\u0026 postgres -C data_directory || echo \\"${PGDATA}\\")\\nresults \'data directory\' \\"${postgres_data_directory}\\"\\n[[ \\"${postgres_data_directory}\\" == \\"${PGDATA}\\" ]] ||\\nhalt Expected matching config and data directories\\nbootstrap_dir=\\"${postgres_data_directory}_bootstrap\\"\\n[[ -d \\"${bootstrap_dir}\\" ]] \\u0026\\u0026 results \'bootstrap directory\' \\"${bootstrap_dir}\\"\\n[[ -d \\"${bootstrap_dir}\\" ]] \\u0026\\u0026 postgres_data_directory=\\"${bootstrap_dir}\\"\\nif [[ ! -e \\"${postgres_data_directory}\\" || -O \\"${postgres_data_directory}\\" ]]; then\\ninstall --directory --mode=0700 \\"${postgres_data_directory}\\"\\nelif [[ -w \\"${postgres_data_directory}\\" \\u0026\\u0026 -g \\"${postgres_data_directory}\\" ]]; then\\nrecreate \\"${postgres_data_directory}\\" \'0700\'\\nelse (halt Permissions!); fi ||\\nhalt \\"$(permissions \\"${postgres_data_directory}\\" ||:)\\"\\nresults \'pgBackRest log directory\' \\"${pgbrLog_directory}\\"\\ninstall --directory --mode=0775 \\"${pgbrLog_directory}\\" ||\\nhalt \\"$(permissions \\"${pgbrLog_directory}\\" ||:)\\"\\ninstall -D --mode=0600 -t \\"/tmp/replication\\" \\"/pgconf/tls/replication\\"/{tls.crt,tls.key,ca.crt}\\n\\ntablespace_dir=/tablespaces/myts/data\\nif [[ ! -e \\"${tablespace_dir}\\" || -O \\"${tablespace_dir}\\" ]]; then\\ninstall --directory --mode=0700 \\"${tablespace_dir}\\"\\nelif [[ -w \\"${tablespace_dir}\\" \\u0026\\u0026 -g \\"${tablespace_dir}\\" ]]; then\\nrecreate \\"${tablespace_dir}\\" \'0700\'\\nelse (halt Permissions!); fi ||\\nhalt \\"$(permissions \\"${tablespace_dir}\\" ||:)\\"\\n[[ -f \\"${postgres_data_directory}/PG_VERSION\\" ]] || exit 0\\nresults \'data version\' \\"${postgres_data_version:=$(\\u003c \\"${postgres_data_directory}/PG_VERSION\\")}\\"\\n[[ \\"${postgres_data_version}\\" == \\"${expected_major_version}\\" ]] ||\\nhalt Expected PostgreSQL data version \\"${expected_major_version}\\"\\n[[ ! -f \\"${postgres_data_directory}/postgresql.conf\\" ]] \\u0026\\u0026\\ntouch \\"${postgres_data_directory}/postgresql.conf\\"\\nsafelink \\"${pgwal_directory}\\" \\"${postgres_data_directory}/pg_wal\\"\\nresults \'wal directory\' \\"$(realpath \\"${postgres_data_directory}/pg_wal\\" ||:)\\"\\nrm -f \\"${postgres_data_directory}/recovery.signal\\"",\n "startup",\n "18",\n "/pgwal/pg18_wal",\n "/pgdata/pgbackrest/log"\n ],\n "env": [\n {\n "name": "PGDATA",\n "value": "/pgdata/pg18"\n },\n {\n "name": "PGHOST",\n "value": "/tmp/postgres"\n },\n {\n "name": "PGPORT",\n "value": "5432"\n },\n {\n "name": "KRB5_CONFIG",\n "value": "/etc/postgres/krb5.conf"\n },\n {\n "name": "KRB5RCACHEDIR",\n "value": "/tmp"\n },\n {\n "name": "LDAPTLS_CACERT",\n "value": "/etc/postgres/ldap/ca.crt"\n },\n {\n "name": "LC_ALL",\n "value": "en_US.utf-8"\n },\n {\n "name": "LANG",\n "value": "en_US.utf-8"\n }\n ],\n "image": "docker.io/perconalab/percona-postgresql-operator:main-ppg18-postgres",\n "imagePullPolicy": "Always",\n "name": "postgres-startup",\n "resources": {},\n "securityContext": {\n "allowPrivilegeEscalation": false,\n "capabilities": {\n "drop": [\n "ALL"\n ]\n },\n "privileged": false,\n "readOnlyRootFilesystem": true,\n "runAsNonRoot": true,\n "seccompProfile": {\n "type": "RuntimeDefault"\n }\n },\n "terminationMessagePath": "/dev/termination-log",\n "terminationMessagePolicy": "File",\n "volumeMounts": [\n {\n "mountPath": "/pgconf/tls",\n "name": "cert-volume",\n "readOnly": true\n },\n {\n "mountPath": "/pgdata",\n "name": "postgres-data"\n },\n {\n "mountPath": "/tablespaces/myts",\n "name": "tablespace-myts"\n },\n {\n "mountPath": "/pgwal",\n "name": "postgres-wal"\n },\n {\n "mountPath": "/pglogs",\n "name": "postgres-logs"\n },\n {\n "mountPath": "/tmp",\n "name": "tmp"\n }\n ]\n },\n {\n "command": [\n "bash",\n "-c",\n "mkdir -p /tmp/nss_wrapper \\u0026\\u0026 { [[ -f /tmp/nss_wrapper/libnss_wrapper.so ]] || cp /usr/lib64/libnss_wrapper.so /tmp/nss_wrapper/libnss_wrapper.so; }"\n ],\n "image": "docker.io/perconalab/percona-postgresql-operator:main-ppg18-postgres",\n "imagePullPolicy": "Always",\n "name": "nss-wrapper-init-logcollector",\n "resources": {},\n "securityContext": {\n "allowPrivilegeEscalation": false,\n "capabilities": {\n "drop": [\n "ALL"\n ]\n },\n "privileged": false,\n "runAsGroup": 26,\n "runAsNonRoot": true,\n "runAsUser": 26,\n "seccompProfile": {\n "type": "RuntimeDefault"\n }\n },\n "terminationMessagePath": "/dev/termination-log",\n "terminationMessagePolicy": "File",\n "volumeMounts": [\n {\n "mountPath": "/tmp",\n "name": "tmp"\n }\n ]\n },\n {\n "command": [\n "bash",\n "-c",\n "export NSS_WRAPPER_SUBDIR=postgres CRUNCHY_NSS_USERNAME=postgres CRUNCHY_NSS_USER_DESC=\\"postgres\\" \\n# Define nss_wrapper directory and passwd \\u0026 group files that will be utilized by nss_wrapper. The\\n# nss_wrapper_env.sh script (which also sets these vars) isn\'t sourced here since the nss_wrapper\\n# has not yet been setup, and we therefore don\'t yet want the nss_wrapper vars in the environment.\\nmkdir -p /tmp/nss_wrapper\\nchmod g+rwx /tmp/nss_wrapper\\n\\nNSS_WRAPPER_DIR=\\"/tmp/nss_wrapper/${NSS_WRAPPER_SUBDIR}\\"\\nNSS_WRAPPER_PASSWD=\\"${NSS_WRAPPER_DIR}/passwd\\"\\nNSS_WRAPPER_GROUP=\\"${NSS_WRAPPER_DIR}/group\\"\\n\\n# create the nss_wrapper directory\\nmkdir -p \\"${NSS_WRAPPER_DIR}\\"\\n\\n# grab the current user ID and group ID\\nUSER_ID=$(id -u)\\nexport USER_ID\\nGROUP_ID=$(id -g)\\nexport GROUP_ID\\n\\n# get copies of the passwd and group files\\n[[ -f \\"${NSS_WRAPPER_PASSWD}\\" ]] || cp \\"/etc/passwd\\" \\"${NSS_WRAPPER_PASSWD}\\"\\n[[ -f \\"${NSS_WRAPPER_GROUP}\\" ]] || cp \\"/etc/group\\" \\"${NSS_WRAPPER_GROUP}\\"\\n\\n# if the username is missing from the passwd file, then add it\\nif [[ ! $(cat \\"${NSS_WRAPPER_PASSWD}\\") =~ ${CRUNCHY_NSS_USERNAME}:x:${USER_ID} ]]; then\\n echo \\"nss_wrapper: adding user\\"\\n passwd_tmp=\\"${NSS_WRAPPER_DIR}/passwd_tmp\\"\\n cp \\"${NSS_WRAPPER_PASSWD}\\" \\"${passwd_tmp}\\"\\n sed -i \\"/${CRUNCHY_NSS_USERNAME}:x:/d\\" \\"${passwd_tmp}\\"\\n # needed for OCP 4.x because crio updates /etc/passwd with an entry for USER_ID\\n sed -i \\"/${USER_ID}:x:/d\\" \\"${passwd_tmp}\\"\\n printf \'${CRUNCHY_NSS_USERNAME}:x:${USER_ID}:${GROUP_ID}:${CRUNCHY_NSS_USER_DESC}:${HOME}:/bin/bash\\\\n\' \\u003e\\u003e \\"${passwd_tmp}\\"\\n envsubst \\u003c \\"${passwd_tmp}\\" \\u003e \\"${NSS_WRAPPER_PASSWD}\\"\\n rm \\"${passwd_tmp}\\"\\nelse\\n echo \\"nss_wrapper: user exists\\"\\nfi\\n\\n# if the username (which will be the same as the group name) is missing from group file, then add it\\nif [[ ! $(cat \\"${NSS_WRAPPER_GROUP}\\") =~ ${CRUNCHY_NSS_USERNAME}:x:${USER_ID} ]]; then\\n echo \\"nss_wrapper: adding group\\"\\n group_tmp=\\"${NSS_WRAPPER_DIR}/group_tmp\\"\\n cp \\"${NSS_WRAPPER_GROUP}\\" \\"${group_tmp}\\"\\n sed -i \\"/${CRUNCHY_NSS_USERNAME}:x:/d\\" \\"${group_tmp}\\"\\n printf \'${CRUNCHY_NSS_USERNAME}:x:${USER_ID}:${CRUNCHY_NSS_USERNAME}\\\\n\' \\u003e\\u003e \\"${group_tmp}\\"\\n envsubst \\u003c \\"${group_tmp}\\" \\u003e \\"${NSS_WRAPPER_GROUP}\\"\\n rm \\"${group_tmp}\\"\\nelse\\n echo \\"nss_wrapper: group exists\\"\\nfi\\n\\n# export the nss_wrapper env vars\\n# define nss_wrapper directory and passwd \\u0026 group files that will be utilized by nss_wrapper\\nNSS_WRAPPER_DIR=\\"/tmp/nss_wrapper/${NSS_WRAPPER_SUBDIR}\\"\\nNSS_WRAPPER_PASSWD=\\"${NSS_WRAPPER_DIR}/passwd\\"\\nNSS_WRAPPER_GROUP=\\"${NSS_WRAPPER_DIR}/group\\"\\n\\nexport LD_PRELOAD=/usr/lib64/libnss_wrapper.so\\nexport NSS_WRAPPER_PASSWD=\\"${NSS_WRAPPER_PASSWD}\\"\\nexport NSS_WRAPPER_GROUP=\\"${NSS_WRAPPER_GROUP}\\"\\n\\necho \\"nss_wrapper: environment configured\\"\\n"\n ],\n "image": "docker.io/perconalab/percona-postgresql-operator:main-ppg18-postgres",\n "imagePullPolicy": "Always",\n "name": "nss-wrapper-init",\n "resources": {},\n "securityContext": {\n "allowPrivilegeEscalation": false,\n "capabilities": {\n "drop": [\n "ALL"\n ]\n },\n "privileged": false,\n "readOnlyRootFilesystem": true,\n "runAsNonRoot": true,\n "seccompProfile": {\n "type": "RuntimeDefault"\n }\n },\n "terminationMessagePath": "/dev/termination-log",\n "terminationMessagePolicy": "File",\n "volumeMounts": [\n {\n "mountPath": "/tmp",\n "name": "tmp"\n }\n ]\n }\n ],\n "restartPolicy": "Always",\n "schedulerName": "default-scheduler",\n "securityContext": {\n "fsGroup": 26,\n "fsGroupChangePolicy": "OnRootMismatch"\n },\n "serviceAccount": "additional-volumes-instance",\n "serviceAccountName": "additional-volumes-instance",\n "shareProcessNamespace": true,\n "terminationGracePeriodSeconds": 30,\n "topologySpreadConstraints": [\n {\n "labelSelector": {\n "matchExpressions": [\n {\n "key": "postgres-operator.crunchydata.com/data",\n "operator": "In",\n "values": [\n "postgres",\n "pgbackrest"\n ]\n }\n ],\n "matchLabels": {\n "postgres-operator.crunchydata.com/cluster": "additional-volumes"\n }\n },\n "maxSkew": 1,\n "topologyKey": "kubernetes.io/hostname",\n "whenUnsatisfiable": "ScheduleAnyway"\n },\n {\n "labelSelector": {\n "matchExpressions": [\n {\n "key": "postgres-operator.crunchydata.com/data",\n "operator": "In",\n "values": [\n "postgres",\n "pgbackrest"\n ]\n }\n ],\n "matchLabels": {\n "postgres-operator.crunchydata.com/cluster": "additional-volumes"\n }\n },\n "maxSkew": 1,\n "topologyKey": "topology.kubernetes.io/zone",\n "whenUnsatisfiable": "ScheduleAnyway"\n }\n ],\n "volumes": [\n {\n "name": "cert-volume",\n "projected": {\n "defaultMode": 384,\n "sources": [\n {\n "secret": {\n "items": [\n {\n "key": "tls.crt",\n "path": "tls.crt"\n },\n {\n "key": "tls.key",\n "path": "tls.key"\n },\n {\n "key": "ca.crt",\n "path": "ca.crt"\n }\n ],\n "name": "additional-volumes-cluster-cert"\n }\n },\n {\n "secret": {\n "items": [\n {\n "key": "tls.crt",\n "path": "replication/tls.crt"\n },\n {\n "key": "tls.key",\n "path": "replication/tls.key"\n },\n {\n "key": "ca.crt",\n "path": "replication/ca.crt"\n }\n ],\n "name": "additional-volumes-replication-cert"\n }\n }\n ]\n }\n },\n {\n "name": "postgres-data",\n "persistentVolumeClaim": {\n "claimName": "additional-volumes-instance1-xvbw-pgdata"\n }\n },\n {\n "downwardAPI": {\n "defaultMode": 420,\n "items": [\n {\n "path": "cpu_limit",\n "resourceFieldRef": {\n "containerName": "database",\n "divisor": "1m",\n "resource": "limits.cpu"\n }\n },\n {\n "path": "cpu_request",\n "resourceFieldRef": {\n "containerName": "database",\n "divisor": "1m",\n "resource": "requests.cpu"\n }\n },\n {\n "path": "mem_limit",\n "resourceFieldRef": {\n "containerName": "database",\n "divisor": "1Mi",\n "resource": "limits.memory"\n }\n },\n {\n "path": "mem_request",\n "resourceFieldRef": {\n "containerName": "database",\n "divisor": "1Mi",\n "resource": "requests.memory"\n }\n },\n {\n "fieldRef": {\n "apiVersion": "v1",\n "fieldPath": "metadata.labels"\n },\n "path": "labels"\n },\n {\n "fieldRef": {\n "apiVersion": "v1",\n "fieldPath": "metadata.annotations"\n },\n "path": "annotations"\n }\n ]\n },\n "name": "database-containerinfo"\n },\n {\n "name": "tablespace-myts",\n "persistentVolumeClaim": {\n "claimName": "additional-volumes-instance1-xvbw-myts-tablespace"\n }\n },\n {\n "name": "postgres-wal",\n "persistentVolumeClaim": {\n "claimName": "additional-volumes-instance1-xvbw-pgwal"\n }\n },\n {\n "name": "postgres-logs",\n "persistentVolumeClaim": {\n "claimName": "additional-volumes-instance1-xvbw-pglogs"\n }\n },\n {\n "name": "pgbackrest-server",\n "projected": {\n "defaultMode": 420,\n "sources": [\n {\n "secret": {\n "items": [\n {\n "key": "pgbackrest-server.crt",\n "path": "server-tls.crt"\n },\n {\n "key": "pgbackrest-server.key",\n "mode": 384,\n "path": "server-tls.key"\n }\n ],\n "name": "additional-volumes-instance1-xvbw-certs"\n }\n }\n ]\n }\n },\n {\n "name": "pgbackrest-config",\n "projected": {\n "defaultMode": 420,\n "sources": [\n {\n "configMap": {\n "items": [\n {\n "key": "pgbackrest_instance.conf",\n "path": "pgbackrest_instance.conf"\n },\n {\n "key": "config-hash",\n "path": "config-hash"\n },\n {\n "key": "pgbackrest-server.conf",\n "path": "~postgres-operator_server.conf"\n }\n ],\n "name": "additional-volumes-pgbackrest-config"\n }\n },\n {\n "secret": {\n "items": [\n {\n "key": "pgbackrest.ca-roots",\n "path": "~postgres-operator/tls-ca.crt"\n },\n {\n "key": "pgbackrest-client.crt",\n "path": "~postgres-operator/client-tls.crt"\n },\n {\n "key": "pgbackrest-client.key",\n "mode": 384,\n "path": "~postgres-operator/client-tls.key"\n }\n ],\n "name": "additional-volumes-pgbackrest"\n }\n }\n ]\n }\n },\n {\n "name": "patroni-config",\n "projected": {\n "defaultMode": 420,\n "sources": [\n {\n "configMap": {\n "items": [\n {\n "key": "patroni.yaml",\n "path": "~postgres-operator_cluster.yaml"\n }\n ],\n "name": "additional-volumes-config"\n }\n },\n {\n "configMap": {\n "items": [\n {\n "key": "patroni.yaml",\n "path": "~postgres-operator_instance.yaml"\n }\n ],\n "name": "additional-volumes-instance1-xvbw-config"\n }\n },\n {\n "secret": {\n "items": [\n {\n "key": "patroni.ca-roots",\n "path": "~postgres-operator/patroni.ca-roots"\n },\n {\n "key": "patroni.crt-combined",\n "path": "~postgres-operator/patroni.crt+key"\n }\n ],\n "name": "additional-volumes-instance1-xvbw-certs"\n }\n }\n ]\n }\n },\n {\n "emptyDir": {},\n "name": "crunchy-bin"\n },\n {\n "emptyDir": {\n "sizeLimit": "2Gi"\n },\n "name": "tmp"\n },\n {\n "emptyDir": {\n "medium": "Memory"\n },\n "name": "dshm"\n }\n ]\n }\n },\n "updateStrategy": {\n "type": "OnDelete"\n }\n },\n "status": {\n "availableReplicas": 1,\n "collisionCount": 0,\n "currentReplicas": 1,\n "currentRevision": "additional-volumes-instance1-xvbw-7dcb456674",\n "observedGeneration": 1,\n "readyReplicas": 1,\n "replicas": 1,\n "updateRevision": "additional-volumes-instance1-xvbw-7dcb456674",\n "updatedReplicas": 1\n }\n }\n ],\n "kind": "List",\n "metadata": {\n "resourceVersion": ""\n }\n}' logger.go:42: 18:13:51 | additional-volumes/2-verify-volumes | + jq -e --arg p /pglogs $'.items[0].spec.template.spec.initContainers[]\n | select(.name == "postgres-startup") | .volumeMounts[]\n | select(.mountPath == $p)' logger.go:42: 18:13:51 | additional-volumes/2-verify-volumes | + printf '%s\n' $'{\n "apiVersion": "v1",\n "items": [\n {\n "apiVersion": "apps/v1",\n "kind": "StatefulSet",\n "metadata": {\n "annotations": {\n "pgv2.percona.com/logcollector-config-hash": "d9a116e02b828bdc02165325e92799d82961fb499041814c7c765d0ce263ce77"\n },\n "creationTimestamp": "2026-08-19T18:12:04Z",\n "generation": 1,\n "labels": {\n "app.kubernetes.io/component": "pg",\n "app.kubernetes.io/instance": "additional-volumes",\n "app.kubernetes.io/managed-by": "percona-postgresql-operator",\n "app.kubernetes.io/name": "percona-postgresql",\n "app.kubernetes.io/part-of": "percona-postgresql",\n "pgv2.percona.com/version": "3.2.0",\n "postgres-operator.crunchydata.com/cluster": "additional-volumes",\n "postgres-operator.crunchydata.com/data": "postgres",\n "postgres-operator.crunchydata.com/instance": "additional-volumes-instance1-24br",\n "postgres-operator.crunchydata.com/instance-set": "instance1"\n },\n "name": "additional-volumes-instance1-24br",\n "namespace": "kuttl-test-intimate-garfish",\n "ownerReferences": [\n {\n "apiVersion": "upstream.pgv2.percona.com/v1beta1",\n "blockOwnerDeletion": true,\n "controller": true,\n "kind": "PostgresCluster",\n "name": "additional-volumes",\n "uid": "b795649f-550b-4283-b2ef-eca573235e5a"\n }\n ],\n "resourceVersion": "1787163196013855005",\n "uid": "471c7b02-6f1c-4f53-a6b2-557d95701703"\n },\n "spec": {\n "persistentVolumeClaimRetentionPolicy": {\n "whenDeleted": "Retain",\n "whenScaled": "Retain"\n },\n "podManagementPolicy": "OrderedReady",\n "replicas": 1,\n "revisionHistoryLimit": 0,\n "selector": {\n "matchLabels": {\n "postgres-operator.crunchydata.com/cluster": "additional-volumes",\n "postgres-operator.crunchydata.com/instance": "additional-volumes-instance1-24br",\n "postgres-operator.crunchydata.com/instance-set": "instance1"\n }\n },\n "serviceName": "additional-volumes-pods",\n "template": {\n "metadata": {\n "annotations": {\n "kubectl.kubernetes.io/default-container": "database",\n "pgv2.percona.com/logcollector-config-hash": "d9a116e02b828bdc02165325e92799d82961fb499041814c7c765d0ce263ce77"\n },\n "creationTimestamp": null,\n "labels": {\n "app.kubernetes.io/component": "pg",\n "app.kubernetes.io/instance": "additional-volumes",\n "app.kubernetes.io/managed-by": "percona-postgresql-operator",\n "app.kubernetes.io/name": "percona-postgresql",\n "app.kubernetes.io/part-of": "percona-postgresql",\n "pgv2.percona.com/version": "3.2.0",\n "postgres-operator.crunchydata.com/cluster": "additional-volumes",\n "postgres-operator.crunchydata.com/data": "postgres",\n "postgres-operator.crunchydata.com/instance": "additional-volumes-instance1-24br",\n "postgres-operator.crunchydata.com/instance-set": "instance1",\n "postgres-operator.crunchydata.com/patroni": "additional-volumes-ha"\n }\n },\n "spec": {\n "affinity": {\n "podAntiAffinity": {\n "preferredDuringSchedulingIgnoredDuringExecution": [\n {\n "podAffinityTerm": {\n "labelSelector": {\n "matchLabels": {\n "postgres-operator.crunchydata.com/data": "postgres"\n }\n },\n "topologyKey": "kubernetes.io/hostname"\n },\n "weight": 1\n }\n ]\n }\n },\n "containers": [\n {\n "command": [\n "/opt/crunchy/bin/postgres-entrypoint.sh",\n "patroni",\n "/etc/patroni"\n ],\n "env": [\n {\n "name": "PGDATA",\n "value": "/pgdata/pg18"\n },\n {\n "name": "PGHOST",\n "value": "/tmp/postgres"\n },\n {\n "name": "PGPORT",\n "value": "5432"\n },\n {\n "name": "KRB5_CONFIG",\n "value": "/etc/postgres/krb5.conf"\n },\n {\n "name": "KRB5RCACHEDIR",\n "value": "/tmp"\n },\n {\n "name": "LDAPTLS_CACERT",\n "value": "/etc/postgres/ldap/ca.crt"\n },\n {\n "name": "LC_ALL",\n "value": "en_US.utf-8"\n },\n {\n "name": "LANG",\n "value": "en_US.utf-8"\n },\n {\n "name": "PATRONI_NAME",\n "valueFrom": {\n "fieldRef": {\n "apiVersion": "v1",\n "fieldPath": "metadata.name"\n }\n }\n },\n {\n "name": "PATRONI_KUBERNETES_POD_IP",\n "valueFrom": {\n "fieldRef": {\n "apiVersion": "v1",\n "fieldPath": "status.podIP"\n }\n }\n },\n {\n "name": "PATRONI_KUBERNETES_PORTS",\n "value": "- name: postgres\\n port: 5432\\n protocol: TCP\\n"\n },\n {\n "name": "PATRONI_POSTGRESQL_CONNECT_ADDRESS",\n "value": "$(PATRONI_NAME).additional-volumes-pods:5432"\n },\n {\n "name": "PATRONI_POSTGRESQL_LISTEN",\n "value": "*:5432"\n },\n {\n "name": "PATRONI_POSTGRESQL_CONFIG_DIR",\n "value": "/pgdata/pg18"\n },\n {\n "name": "PATRONI_POSTGRESQL_DATA_DIR",\n "value": "/pgdata/pg18"\n },\n {\n "name": "PATRONI_RESTAPI_CONNECT_ADDRESS",\n "value": "$(PATRONI_NAME).additional-volumes-pods:8008"\n },\n {\n "name": "PATRONI_RESTAPI_LISTEN",\n "value": "*:8008"\n },\n {\n "name": "PATRONICTL_CONFIG_FILE",\n "value": "/etc/patroni"\n },\n {\n "name": "LD_PRELOAD",\n "value": "/usr/lib64/libnss_wrapper.so"\n },\n {\n "name": "NSS_WRAPPER_PASSWD",\n "value": "/tmp/nss_wrapper/postgres/passwd"\n },\n {\n "name": "NSS_WRAPPER_GROUP",\n "value": "/tmp/nss_wrapper/postgres/group"\n }\n ],\n "image": "docker.io/perconalab/percona-postgresql-operator:main-ppg18-postgres",\n "imagePullPolicy": "Always",\n "livenessProbe": {\n "exec": {\n "command": [\n "bash",\n "-c",\n "/opt/crunchy/bin/postgres-liveness-check.sh"\n ]\n },\n "failureThreshold": 3,\n "initialDelaySeconds": 3,\n "periodSeconds": 10,\n "successThreshold": 1,\n "timeoutSeconds": 5\n },\n "name": "database",\n "ports": [\n {\n "containerPort": 5432,\n "name": "postgres",\n "protocol": "TCP"\n }\n ],\n "readinessProbe": {\n "exec": {\n "command": [\n "bash",\n "-c",\n "/opt/crunchy/bin/postgres-readiness-check.sh"\n ]\n },\n "failureThreshold": 3,\n "initialDelaySeconds": 3,\n "periodSeconds": 10,\n "successThreshold": 1,\n "timeoutSeconds": 5\n },\n "resources": {},\n "securityContext": {\n "allowPrivilegeEscalation": false,\n "capabilities": {\n "drop": [\n "ALL"\n ]\n },\n "privileged": false,\n "readOnlyRootFilesystem": true,\n "runAsNonRoot": true,\n "seccompProfile": {\n "type": "RuntimeDefault"\n }\n },\n "terminationMessagePath": "/dev/termination-log",\n "terminationMessagePolicy": "File",\n "volumeMounts": [\n {\n "mountPath": "/pgconf/tls",\n "name": "cert-volume",\n "readOnly": true\n },\n {\n "mountPath": "/pgdata",\n "name": "postgres-data"\n },\n {\n "mountPath": "/etc/database-containerinfo",\n "name": "database-containerinfo",\n "readOnly": true\n },\n {\n "mountPath": "/tablespaces/myts",\n "name": "tablespace-myts"\n },\n {\n "mountPath": "/pgwal",\n "name": "postgres-wal"\n },\n {\n "mountPath": "/pglogs",\n "name": "postgres-logs"\n },\n {\n "mountPath": "/etc/pgbackrest/conf.d",\n "name": "pgbackrest-config",\n "readOnly": true\n },\n {\n "mountPath": "/etc/patroni",\n "name": "patroni-config",\n "readOnly": true\n },\n {\n "mountPath": "/opt/crunchy",\n "name": "crunchy-bin"\n },\n {\n "mountPath": "/tmp",\n "name": "tmp"\n },\n {\n "mountPath": "/dev/shm",\n "name": "dshm"\n }\n ]\n },\n {\n "command": [\n "bash",\n "-ceu",\n "--",\n "monitor() {\\n# Parameters for curl when managing autogrow annotation.\\nAPISERVER=\\"https://kubernetes.default.svc\\"\\nSERVICEACCOUNT=\\"/var/run/secrets/kubernetes.io/serviceaccount\\"\\nNAMESPACE=$(cat ${SERVICEACCOUNT}/namespace)\\nTOKEN=$(cat ${SERVICEACCOUNT}/token)\\nCACERT=${SERVICEACCOUNT}/ca.crt\\n\\ndeclare -r directory=\\"/pgconf/tls\\"\\nexec {fd}\\u003c\\u003e \\u003c(:||:)\\nwhile read -r -t 5 -u \\"${fd}\\" ||:; do\\n # Manage replication certificate.\\n if [[ \\"${directory}\\" -nt \\"/proc/self/fd/${fd}\\" ]] \\u0026\\u0026\\n install -D --mode=0600 -t \\"/tmp/replication\\" \\"${directory}\\"/{replication/tls.crt,replication/tls.key,replication/ca.crt} \\u0026\\u0026\\n pkill -HUP --exact --parent=1 postgres\\n then\\n exec {fd}\\u003e\\u0026- \\u0026\\u0026 exec {fd}\\u003c\\u003e \\u003c(:||:)\\n stat --format=\'Loaded certificates dated %y\' \\"${directory}\\"\\n fi\\n\\ndone\\n}; export -f monitor; exec -a \\"$0\\" bash -ceu monitor",\n "replication-cert-copy"\n ],\n "image": "docker.io/perconalab/percona-postgresql-operator:main-ppg18-postgres",\n "imagePullPolicy": "Always",\n "name": "replication-cert-copy",\n "resources": {},\n "securityContext": {\n "allowPrivilegeEscalation": false,\n "capabilities": {\n "drop": [\n "ALL"\n ]\n },\n "privileged": false,\n "readOnlyRootFilesystem": true,\n "runAsNonRoot": true,\n "seccompProfile": {\n "type": "RuntimeDefault"\n }\n },\n "terminationMessagePath": "/dev/termination-log",\n "terminationMessagePolicy": "File",\n "volumeMounts": [\n {\n "mountPath": "/pgconf/tls",\n "name": "cert-volume",\n "readOnly": true\n },\n {\n "mountPath": "/pgdata",\n "name": "postgres-data"\n },\n {\n "mountPath": "/tmp",\n "name": "tmp"\n }\n ]\n },\n {\n "args": [\n "fluent-bit"\n ],\n "command": [\n "/opt/crunchy/logcollector/entrypoint.sh"\n ],\n "env": [\n {\n "name": "PG_LOG_DIR",\n "value": "/pgdata/pg18/log"\n },\n {\n "name": "PGBACKREST_LOG_DIR",\n "value": "/pgdata/pgbackrest/log"\n },\n {\n "name": "POD_NAMESPACE",\n "valueFrom": {\n "fieldRef": {\n "apiVersion": "v1",\n "fieldPath": "metadata.namespace"\n }\n }\n },\n {\n "name": "POD_NAME",\n "valueFrom": {\n "fieldRef": {\n "apiVersion": "v1",\n "fieldPath": "metadata.name"\n }\n }\n }\n ],\n "image": "docker.io/perconalab/fluentbit:main-logcollector",\n "imagePullPolicy": "IfNotPresent",\n "name": "logs",\n "resources": {},\n "securityContext": {\n "allowPrivilegeEscalation": false,\n "capabilities": {\n "drop": [\n "ALL"\n ]\n },\n "privileged": false,\n "runAsGroup": 26,\n "runAsNonRoot": true,\n "runAsUser": 26,\n "seccompProfile": {\n "type": "RuntimeDefault"\n }\n },\n "terminationMessagePath": "/dev/termination-log",\n "terminationMessagePolicy": "File",\n "volumeMounts": [\n {\n "mountPath": "/pgdata",\n "name": "postgres-data"\n },\n {\n "mountPath": "/opt/crunchy",\n "name": "crunchy-bin"\n },\n {\n "mountPath": "/tmp",\n "name": "tmp"\n }\n ]\n },\n {\n "args": [\n "logrotate"\n ],\n "command": [\n "/opt/crunchy/logcollector/entrypoint.sh"\n ],\n "env": [\n {\n "name": "POD_NAMESPACE",\n "valueFrom": {\n "fieldRef": {\n "apiVersion": "v1",\n "fieldPath": "metadata.namespace"\n }\n }\n },\n {\n "name": "POD_NAME",\n "valueFrom": {\n "fieldRef": {\n "apiVersion": "v1",\n "fieldPath": "metadata.name"\n }\n }\n },\n {\n "name": "LOGROTATE_SCHEDULE",\n "value": "0 0 * * *"\n },\n {\n "name": "LD_PRELOAD",\n "value": "/tmp/nss_wrapper/libnss_wrapper.so"\n },\n {\n "name": "NSS_WRAPPER_PASSWD",\n "value": "/tmp/nss_wrapper/postgres/passwd"\n },\n {\n "name": "NSS_WRAPPER_GROUP",\n "value": "/tmp/nss_wrapper/postgres/group"\n }\n ],\n "image": "docker.io/perconalab/fluentbit:main-logcollector",\n "imagePullPolicy": "IfNotPresent",\n "name": "logrotate",\n "resources": {},\n "securityContext": {\n "allowPrivilegeEscalation": false,\n "capabilities": {\n "drop": [\n "ALL"\n ]\n },\n "privileged": false,\n "runAsGroup": 26,\n "runAsNonRoot": true,\n "runAsUser": 26,\n "seccompProfile": {\n "type": "RuntimeDefault"\n }\n },\n "terminationMessagePath": "/dev/termination-log",\n "terminationMessagePolicy": "File",\n "volumeMounts": [\n {\n "mountPath": "/pgdata",\n "name": "postgres-data"\n },\n {\n "mountPath": "/opt/crunchy",\n "name": "crunchy-bin"\n },\n {\n "mountPath": "/tmp",\n "name": "tmp"\n }\n ]\n },\n {\n "command": [\n "pgbackrest",\n "server"\n ],\n "env": [\n {\n "name": "LD_PRELOAD",\n "value": "/usr/lib64/libnss_wrapper.so"\n },\n {\n "name": "NSS_WRAPPER_PASSWD",\n "value": "/tmp/nss_wrapper/postgres/passwd"\n },\n {\n "name": "NSS_WRAPPER_GROUP",\n "value": "/tmp/nss_wrapper/postgres/group"\n }\n ],\n "image": "docker.io/perconalab/percona-postgresql-operator:main-pgbackrest18",\n "imagePullPolicy": "Always",\n "livenessProbe": {\n "exec": {\n "command": [\n "pgbackrest",\n "server-ping"\n ]\n },\n "failureThreshold": 3,\n "periodSeconds": 10,\n "successThreshold": 1,\n "timeoutSeconds": 1\n },\n "name": "pgbackrest",\n "resources": {},\n "securityContext": {\n "allowPrivilegeEscalation": false,\n "capabilities": {\n "drop": [\n "ALL"\n ]\n },\n "privileged": false,\n "readOnlyRootFilesystem": true,\n "runAsNonRoot": true,\n "seccompProfile": {\n "type": "RuntimeDefault"\n }\n },\n "terminationMessagePath": "/dev/termination-log",\n "terminationMessagePolicy": "File",\n "volumeMounts": [\n {\n "mountPath": "/etc/pgbackrest/server",\n "name": "pgbackrest-server",\n "readOnly": true\n },\n {\n "mountPath": "/pgdata",\n "name": "postgres-data"\n },\n {\n "mountPath": "/tablespaces/myts",\n "name": "tablespace-myts"\n },\n {\n "mountPath": "/pgwal",\n "name": "postgres-wal"\n },\n {\n "mountPath": "/etc/pgbackrest/conf.d",\n "name": "pgbackrest-config",\n "readOnly": true\n },\n {\n "mountPath": "/tmp",\n "name": "tmp"\n }\n ]\n },\n {\n "command": [\n "bash",\n "-ceu",\n "--",\n "monitor() {\\nexec {fd}\\u003c\\u003e \\u003c(:||:)\\nuntil read -r -t 5 -u \\"${fd}\\"; do\\n if\\n [[ \\"${filename}\\" -nt \\"/proc/self/fd/${fd}\\" ]] \\u0026\\u0026\\n pkill -HUP --exact --parent=0 pgbackrest\\n then\\n exec {fd}\\u003e\\u0026- \\u0026\\u0026 exec {fd}\\u003c\\u003e \\u003c(:||:)\\n stat --dereference --format=\'Loaded configuration dated %y\' \\"${filename}\\"\\n elif\\n { [[ \\"${directory}\\" -nt \\"/proc/self/fd/${fd}\\" ]] ||\\n [[ \\"${authority}\\" -nt \\"/proc/self/fd/${fd}\\" ]]\\n } \\u0026\\u0026\\n pkill -HUP --exact --parent=0 pgbackrest\\n then\\n exec {fd}\\u003e\\u0026- \\u0026\\u0026 exec {fd}\\u003c\\u003e \\u003c(:||:)\\n stat --format=\'Loaded certificates dated %y\' \\"${directory}\\"\\n fi\\ndone\\n}; export directory=\\"$1\\" authority=\\"$2\\" filename=\\"$3\\"; export -f monitor; exec -a \\"$0\\" bash -ceu monitor",\n "pgbackrest-config",\n "/etc/pgbackrest/server",\n "/etc/pgbackrest/conf.d/~postgres-operator/tls-ca.crt",\n "/etc/pgbackrest/conf.d/~postgres-operator_server.conf"\n ],\n "image": "docker.io/perconalab/percona-postgresql-operator:main-pgbackrest18",\n "imagePullPolicy": "Always",\n "name": "pgbackrest-config",\n "resources": {},\n "securityContext": {\n "allowPrivilegeEscalation": false,\n "capabilities": {\n "drop": [\n "ALL"\n ]\n },\n "privileged": false,\n "readOnlyRootFilesystem": true,\n "runAsNonRoot": true,\n "seccompProfile": {\n "type": "RuntimeDefault"\n }\n },\n "terminationMessagePath": "/dev/termination-log",\n "terminationMessagePolicy": "File",\n "volumeMounts": [\n {\n "mountPath": "/etc/pgbackrest/server",\n "name": "pgbackrest-server",\n "readOnly": true\n },\n {\n "mountPath": "/etc/pgbackrest/conf.d",\n "name": "pgbackrest-config",\n "readOnly": true\n },\n {\n "mountPath": "/tmp",\n "name": "tmp"\n }\n ]\n }\n ],\n "dnsPolicy": "ClusterFirst",\n "enableServiceLinks": false,\n "initContainers": [\n {\n "command": [\n "/usr/local/bin/init-entrypoint.sh"\n ],\n "image": "docker.io/perconalab/percona-postgresql-operator:PR-1760-4947a0272",\n "imagePullPolicy": "Always",\n "name": "database-init",\n "resources": {},\n "securityContext": {\n "allowPrivilegeEscalation": false,\n "capabilities": {\n "drop": [\n "ALL"\n ]\n },\n "privileged": false,\n "readOnlyRootFilesystem": true,\n "runAsNonRoot": true,\n "seccompProfile": {\n "type": "RuntimeDefault"\n }\n },\n "terminationMessagePath": "/dev/termination-log",\n "terminationMessagePolicy": "File",\n "volumeMounts": [\n {\n "mountPath": "/opt/crunchy",\n "name": "crunchy-bin"\n },\n {\n "mountPath": "/tmp",\n "name": "tmp"\n }\n ]\n },\n {\n "command": [\n "bash",\n "-ceu",\n "--",\n "declare -r expected_major_version=\\"$1\\" pgwal_directory=\\"$2\\" pgbrLog_directory=\\"$3\\"\\npermissions() { while [[ -n \\"$1\\" ]]; do set \\"${1%/*}\\" \\"$@\\"; done; shift; stat -Lc \'%A %4u %4g %n\' \\"$@\\"; }\\nhalt() { local rc=$?; \\u003e\\u00262 echo \\"$@\\"; exit \\"${rc/#0/1}\\"; }\\nresults() { printf \'::postgres-operator: %s::%s\\\\n\' \\"$@\\"; }\\nrecreate() (\\n local tmp; tmp=$(mktemp -d -p \\"${1%/*}\\"); GLOBIGNORE=\'.:..\'; set -x\\n chmod \\"$2\\" \\"${tmp}\\"; mv \\"$1\\"/* \\"${tmp}\\"; rmdir \\"$1\\"; mv \\"${tmp}\\" \\"$1\\"\\n)\\nsafelink() (\\n local desired=\\"$1\\" name=\\"$2\\" current\\n current=$(realpath \\"${name}\\")\\n if [[ \\"${current}\\" == \\"${desired}\\" ]]; then return; fi\\n set -x; mv --no-target-directory \\"${current}\\" \\"${desired}\\"\\n ln --no-dereference --force --symbolic \\"${desired}\\" \\"${name}\\"\\n)\\necho Initializing ...\\nresults \'uid\' \\"$(id -u ||:)\\" \'gid\' \\"$(id -G ||:)\\"\\nif [[ \\"${pgwal_directory}\\" == *\\"pgwal/\\"* ]] \\u0026\\u0026 [[ ! -d \\"/pgwal/pgbackrest-spool\\" ]];then rm -rf \\"/pgdata/pgbackrest-spool\\" \\u0026\\u0026 mkdir -p \\"/pgwal/pgbackrest-spool\\" \\u0026\\u0026 ln --force --symbolic \\"/pgwal/pgbackrest-spool\\" \\"/pgdata/pgbackrest-spool\\";fi\\nif [[ ! -e \\"/pgdata/pgbackrest-spool\\" ]];then rm -rf /pgdata/pgbackrest-spool;fi\\nif [[ ! -e \\"/pgdata/logs/postgres\\" ]];then rm -rf \\"/pgdata/logs/postgres\\";fi\\nif [[ ! -e \\"${pgbrLog_directory}\\" ]];then rm -rf \\"${pgbrLog_directory}\\";fi\\nif [[ -d \\"/pglogs\\" ]];then install --directory --mode=0775 \\"/pglogs/postgres\\" \\"/pglogs/pgbackrest/log\\";if [[ ! -L \\"/pgdata/logs/postgres\\" ]];then mkdir -p \\"/pgdata/logs\\" \\u0026\\u0026 rm -rf \\"/pgdata/logs/postgres\\" \\u0026\\u0026 ln --symbolic \\"/pglogs/postgres\\" \\"/pgdata/logs/postgres\\";fi;if [[ ! -L \\"${pgbrLog_directory}\\" ]];then mkdir -p \\"${pgbrLog_directory%/*}\\" \\u0026\\u0026 rm -rf \\"${pgbrLog_directory}\\" \\u0026\\u0026 ln --symbolic \\"/pglogs/pgbackrest/log\\" \\"${pgbrLog_directory}\\";fi;fi\\nresults \'postgres path\' \\"$(command -v postgres ||:)\\"\\nresults \'postgres version\' \\"${postgres_version:=$(postgres --version ||:)}\\"\\n[[ \\"${postgres_version}\\" =~ \\") ${expected_major_version}\\"($|[^0-9]) ]] ||\\nhalt Expected PostgreSQL version \\"${expected_major_version}\\"\\nresults \'config directory\' \\"${PGDATA:?}\\"\\npostgres_data_directory=$([[ -d \\"${PGDATA}\\" ]] \\u0026\\u0026 postgres -C data_directory || echo \\"${PGDATA}\\")\\nresults \'data directory\' \\"${postgres_data_directory}\\"\\n[[ \\"${postgres_data_directory}\\" == \\"${PGDATA}\\" ]] ||\\nhalt Expected matching config and data directories\\nbootstrap_dir=\\"${postgres_data_directory}_bootstrap\\"\\n[[ -d \\"${bootstrap_dir}\\" ]] \\u0026\\u0026 results \'bootstrap directory\' \\"${bootstrap_dir}\\"\\n[[ -d \\"${bootstrap_dir}\\" ]] \\u0026\\u0026 postgres_data_directory=\\"${bootstrap_dir}\\"\\nif [[ ! -e \\"${postgres_data_directory}\\" || -O \\"${postgres_data_directory}\\" ]]; then\\ninstall --directory --mode=0700 \\"${postgres_data_directory}\\"\\nelif [[ -w \\"${postgres_data_directory}\\" \\u0026\\u0026 -g \\"${postgres_data_directory}\\" ]]; then\\nrecreate \\"${postgres_data_directory}\\" \'0700\'\\nelse (halt Permissions!); fi ||\\nhalt \\"$(permissions \\"${postgres_data_directory}\\" ||:)\\"\\nresults \'pgBackRest log directory\' \\"${pgbrLog_directory}\\"\\ninstall --directory --mode=0775 \\"${pgbrLog_directory}\\" ||\\nhalt \\"$(permissions \\"${pgbrLog_directory}\\" ||:)\\"\\ninstall -D --mode=0600 -t \\"/tmp/replication\\" \\"/pgconf/tls/replication\\"/{tls.crt,tls.key,ca.crt}\\n\\ntablespace_dir=/tablespaces/myts/data\\nif [[ ! -e \\"${tablespace_dir}\\" || -O \\"${tablespace_dir}\\" ]]; then\\ninstall --directory --mode=0700 \\"${tablespace_dir}\\"\\nelif [[ -w \\"${tablespace_dir}\\" \\u0026\\u0026 -g \\"${tablespace_dir}\\" ]]; then\\nrecreate \\"${tablespace_dir}\\" \'0700\'\\nelse (halt Permissions!); fi ||\\nhalt \\"$(permissions \\"${tablespace_dir}\\" ||:)\\"\\n[[ -f \\"${postgres_data_directory}/PG_VERSION\\" ]] || exit 0\\nresults \'data version\' \\"${postgres_data_version:=$(\\u003c \\"${postgres_data_directory}/PG_VERSION\\")}\\"\\n[[ \\"${postgres_data_version}\\" == \\"${expected_major_version}\\" ]] ||\\nhalt Expected PostgreSQL data version \\"${expected_major_version}\\"\\n[[ ! -f \\"${postgres_data_directory}/postgresql.conf\\" ]] \\u0026\\u0026\\ntouch \\"${postgres_data_directory}/postgresql.conf\\"\\nsafelink \\"${pgwal_directory}\\" \\"${postgres_data_directory}/pg_wal\\"\\nresults \'wal directory\' \\"$(realpath \\"${postgres_data_directory}/pg_wal\\" ||:)\\"\\nrm -f \\"${postgres_data_directory}/recovery.signal\\"",\n "startup",\n "18",\n "/pgwal/pg18_wal",\n "/pgdata/pgbackrest/log"\n ],\n "env": [\n {\n "name": "PGDATA",\n "value": "/pgdata/pg18"\n },\n {\n "name": "PGHOST",\n "value": "/tmp/postgres"\n },\n {\n "name": "PGPORT",\n "value": "5432"\n },\n {\n "name": "KRB5_CONFIG",\n "value": "/etc/postgres/krb5.conf"\n },\n {\n "name": "KRB5RCACHEDIR",\n "value": "/tmp"\n },\n {\n "name": "LDAPTLS_CACERT",\n "value": "/etc/postgres/ldap/ca.crt"\n },\n {\n "name": "LC_ALL",\n "value": "en_US.utf-8"\n },\n {\n "name": "LANG",\n "value": "en_US.utf-8"\n }\n ],\n "image": "docker.io/perconalab/percona-postgresql-operator:main-ppg18-postgres",\n "imagePullPolicy": "Always",\n "name": "postgres-startup",\n "resources": {},\n "securityContext": {\n "allowPrivilegeEscalation": false,\n "capabilities": {\n "drop": [\n "ALL"\n ]\n },\n "privileged": false,\n "readOnlyRootFilesystem": true,\n "runAsNonRoot": true,\n "seccompProfile": {\n "type": "RuntimeDefault"\n }\n },\n "terminationMessagePath": "/dev/termination-log",\n "terminationMessagePolicy": "File",\n "volumeMounts": [\n {\n "mountPath": "/pgconf/tls",\n "name": "cert-volume",\n "readOnly": true\n },\n {\n "mountPath": "/pgdata",\n "name": "postgres-data"\n },\n {\n "mountPath": "/tablespaces/myts",\n "name": "tablespace-myts"\n },\n {\n "mountPath": "/pgwal",\n "name": "postgres-wal"\n },\n {\n "mountPath": "/pglogs",\n "name": "postgres-logs"\n },\n {\n "mountPath": "/tmp",\n "name": "tmp"\n }\n ]\n },\n {\n "command": [\n "bash",\n "-c",\n "mkdir -p /tmp/nss_wrapper \\u0026\\u0026 { [[ -f /tmp/nss_wrapper/libnss_wrapper.so ]] || cp /usr/lib64/libnss_wrapper.so /tmp/nss_wrapper/libnss_wrapper.so; }"\n ],\n "image": "docker.io/perconalab/percona-postgresql-operator:main-ppg18-postgres",\n "imagePullPolicy": "Always",\n "name": "nss-wrapper-init-logcollector",\n "resources": {},\n "securityContext": {\n "allowPrivilegeEscalation": false,\n "capabilities": {\n "drop": [\n "ALL"\n ]\n },\n "privileged": false,\n "runAsGroup": 26,\n "runAsNonRoot": true,\n "runAsUser": 26,\n "seccompProfile": {\n "type": "RuntimeDefault"\n }\n },\n "terminationMessagePath": "/dev/termination-log",\n "terminationMessagePolicy": "File",\n "volumeMounts": [\n {\n "mountPath": "/tmp",\n "name": "tmp"\n }\n ]\n },\n {\n "command": [\n "bash",\n "-c",\n "export NSS_WRAPPER_SUBDIR=postgres CRUNCHY_NSS_USERNAME=postgres CRUNCHY_NSS_USER_DESC=\\"postgres\\" \\n# Define nss_wrapper directory and passwd \\u0026 group files that will be utilized by nss_wrapper. The\\n# nss_wrapper_env.sh script (which also sets these vars) isn\'t sourced here since the nss_wrapper\\n# has not yet been setup, and we therefore don\'t yet want the nss_wrapper vars in the environment.\\nmkdir -p /tmp/nss_wrapper\\nchmod g+rwx /tmp/nss_wrapper\\n\\nNSS_WRAPPER_DIR=\\"/tmp/nss_wrapper/${NSS_WRAPPER_SUBDIR}\\"\\nNSS_WRAPPER_PASSWD=\\"${NSS_WRAPPER_DIR}/passwd\\"\\nNSS_WRAPPER_GROUP=\\"${NSS_WRAPPER_DIR}/group\\"\\n\\n# create the nss_wrapper directory\\nmkdir -p \\"${NSS_WRAPPER_DIR}\\"\\n\\n# grab the current user ID and group ID\\nUSER_ID=$(id -u)\\nexport USER_ID\\nGROUP_ID=$(id -g)\\nexport GROUP_ID\\n\\n# get copies of the passwd and group files\\n[[ -f \\"${NSS_WRAPPER_PASSWD}\\" ]] || cp \\"/etc/passwd\\" \\"${NSS_WRAPPER_PASSWD}\\"\\n[[ -f \\"${NSS_WRAPPER_GROUP}\\" ]] || cp \\"/etc/group\\" \\"${NSS_WRAPPER_GROUP}\\"\\n\\n# if the username is missing from the passwd file, then add it\\nif [[ ! $(cat \\"${NSS_WRAPPER_PASSWD}\\") =~ ${CRUNCHY_NSS_USERNAME}:x:${USER_ID} ]]; then\\n echo \\"nss_wrapper: adding user\\"\\n passwd_tmp=\\"${NSS_WRAPPER_DIR}/passwd_tmp\\"\\n cp \\"${NSS_WRAPPER_PASSWD}\\" \\"${passwd_tmp}\\"\\n sed -i \\"/${CRUNCHY_NSS_USERNAME}:x:/d\\" \\"${passwd_tmp}\\"\\n # needed for OCP 4.x because crio updates /etc/passwd with an entry for USER_ID\\n sed -i \\"/${USER_ID}:x:/d\\" \\"${passwd_tmp}\\"\\n printf \'${CRUNCHY_NSS_USERNAME}:x:${USER_ID}:${GROUP_ID}:${CRUNCHY_NSS_USER_DESC}:${HOME}:/bin/bash\\\\n\' \\u003e\\u003e \\"${passwd_tmp}\\"\\n envsubst \\u003c \\"${passwd_tmp}\\" \\u003e \\"${NSS_WRAPPER_PASSWD}\\"\\n rm \\"${passwd_tmp}\\"\\nelse\\n echo \\"nss_wrapper: user exists\\"\\nfi\\n\\n# if the username (which will be the same as the group name) is missing from group file, then add it\\nif [[ ! $(cat \\"${NSS_WRAPPER_GROUP}\\") =~ ${CRUNCHY_NSS_USERNAME}:x:${USER_ID} ]]; then\\n echo \\"nss_wrapper: adding group\\"\\n group_tmp=\\"${NSS_WRAPPER_DIR}/group_tmp\\"\\n cp \\"${NSS_WRAPPER_GROUP}\\" \\"${group_tmp}\\"\\n sed -i \\"/${CRUNCHY_NSS_USERNAME}:x:/d\\" \\"${group_tmp}\\"\\n printf \'${CRUNCHY_NSS_USERNAME}:x:${USER_ID}:${CRUNCHY_NSS_USERNAME}\\\\n\' \\u003e\\u003e \\"${group_tmp}\\"\\n envsubst \\u003c \\"${group_tmp}\\" \\u003e \\"${NSS_WRAPPER_GROUP}\\"\\n rm \\"${group_tmp}\\"\\nelse\\n echo \\"nss_wrapper: group exists\\"\\nfi\\n\\n# export the nss_wrapper env vars\\n# define nss_wrapper directory and passwd \\u0026 group files that will be utilized by nss_wrapper\\nNSS_WRAPPER_DIR=\\"/tmp/nss_wrapper/${NSS_WRAPPER_SUBDIR}\\"\\nNSS_WRAPPER_PASSWD=\\"${NSS_WRAPPER_DIR}/passwd\\"\\nNSS_WRAPPER_GROUP=\\"${NSS_WRAPPER_DIR}/group\\"\\n\\nexport LD_PRELOAD=/usr/lib64/libnss_wrapper.so\\nexport NSS_WRAPPER_PASSWD=\\"${NSS_WRAPPER_PASSWD}\\"\\nexport NSS_WRAPPER_GROUP=\\"${NSS_WRAPPER_GROUP}\\"\\n\\necho \\"nss_wrapper: environment configured\\"\\n"\n ],\n "image": "docker.io/perconalab/percona-postgresql-operator:main-ppg18-postgres",\n "imagePullPolicy": "Always",\n "name": "nss-wrapper-init",\n "resources": {},\n "securityContext": {\n "allowPrivilegeEscalation": false,\n "capabilities": {\n "drop": [\n "ALL"\n ]\n },\n "privileged": false,\n "readOnlyRootFilesystem": true,\n "runAsNonRoot": true,\n "seccompProfile": {\n "type": "RuntimeDefault"\n }\n },\n "terminationMessagePath": "/dev/termination-log",\n "terminationMessagePolicy": "File",\n "volumeMounts": [\n {\n "mountPath": "/tmp",\n "name": "tmp"\n }\n ]\n }\n ],\n "restartPolicy": "Always",\n "schedulerName": "default-scheduler",\n "securityContext": {\n "fsGroup": 26,\n "fsGroupChangePolicy": "OnRootMismatch"\n },\n "serviceAccount": "additional-volumes-instance",\n "serviceAccountName": "additional-volumes-instance",\n "shareProcessNamespace": true,\n "terminationGracePeriodSeconds": 30,\n "topologySpreadConstraints": [\n {\n "labelSelector": {\n "matchExpressions": [\n {\n "key": "postgres-operator.crunchydata.com/data",\n "operator": "In",\n "values": [\n "postgres",\n "pgbackrest"\n ]\n }\n ],\n "matchLabels": {\n "postgres-operator.crunchydata.com/cluster": "additional-volumes"\n }\n },\n "maxSkew": 1,\n "topologyKey": "kubernetes.io/hostname",\n "whenUnsatisfiable": "ScheduleAnyway"\n },\n {\n "labelSelector": {\n "matchExpressions": [\n {\n "key": "postgres-operator.crunchydata.com/data",\n "operator": "In",\n "values": [\n "postgres",\n "pgbackrest"\n ]\n }\n ],\n "matchLabels": {\n "postgres-operator.crunchydata.com/cluster": "additional-volumes"\n }\n },\n "maxSkew": 1,\n "topologyKey": "topology.kubernetes.io/zone",\n "whenUnsatisfiable": "ScheduleAnyway"\n }\n ],\n "volumes": [\n {\n "name": "cert-volume",\n "projected": {\n "defaultMode": 384,\n "sources": [\n {\n "secret": {\n "items": [\n {\n "key": "tls.crt",\n "path": "tls.crt"\n },\n {\n "key": "tls.key",\n "path": "tls.key"\n },\n {\n "key": "ca.crt",\n "path": "ca.crt"\n }\n ],\n "name": "additional-volumes-cluster-cert"\n }\n },\n {\n "secret": {\n "items": [\n {\n "key": "tls.crt",\n "path": "replication/tls.crt"\n },\n {\n "key": "tls.key",\n "path": "replication/tls.key"\n },\n {\n "key": "ca.crt",\n "path": "replication/ca.crt"\n }\n ],\n "name": "additional-volumes-replication-cert"\n }\n }\n ]\n }\n },\n {\n "name": "postgres-data",\n "persistentVolumeClaim": {\n "claimName": "additional-volumes-instance1-24br-pgdata"\n }\n },\n {\n "downwardAPI": {\n "defaultMode": 420,\n "items": [\n {\n "path": "cpu_limit",\n "resourceFieldRef": {\n "containerName": "database",\n "divisor": "1m",\n "resource": "limits.cpu"\n }\n },\n {\n "path": "cpu_request",\n "resourceFieldRef": {\n "containerName": "database",\n "divisor": "1m",\n "resource": "requests.cpu"\n }\n },\n {\n "path": "mem_limit",\n "resourceFieldRef": {\n "containerName": "database",\n "divisor": "1Mi",\n "resource": "limits.memory"\n }\n },\n {\n "path": "mem_request",\n "resourceFieldRef": {\n "containerName": "database",\n "divisor": "1Mi",\n "resource": "requests.memory"\n }\n },\n {\n "fieldRef": {\n "apiVersion": "v1",\n "fieldPath": "metadata.labels"\n },\n "path": "labels"\n },\n {\n "fieldRef": {\n "apiVersion": "v1",\n "fieldPath": "metadata.annotations"\n },\n "path": "annotations"\n }\n ]\n },\n "name": "database-containerinfo"\n },\n {\n "name": "tablespace-myts",\n "persistentVolumeClaim": {\n "claimName": "additional-volumes-instance1-24br-myts-tablespace"\n }\n },\n {\n "name": "postgres-wal",\n "persistentVolumeClaim": {\n "claimName": "additional-volumes-instance1-24br-pgwal"\n }\n },\n {\n "name": "postgres-logs",\n "persistentVolumeClaim": {\n "claimName": "additional-volumes-instance1-24br-pglogs"\n }\n },\n {\n "name": "pgbackrest-server",\n "projected": {\n "defaultMode": 420,\n "sources": [\n {\n "secret": {\n "items": [\n {\n "key": "pgbackrest-server.crt",\n "path": "server-tls.crt"\n },\n {\n "key": "pgbackrest-server.key",\n "mode": 384,\n "path": "server-tls.key"\n }\n ],\n "name": "additional-volumes-instance1-24br-certs"\n }\n }\n ]\n }\n },\n {\n "name": "pgbackrest-config",\n "projected": {\n "defaultMode": 420,\n "sources": [\n {\n "configMap": {\n "items": [\n {\n "key": "pgbackrest_instance.conf",\n "path": "pgbackrest_instance.conf"\n },\n {\n "key": "config-hash",\n "path": "config-hash"\n },\n {\n "key": "pgbackrest-server.conf",\n "path": "~postgres-operator_server.conf"\n }\n ],\n "name": "additional-volumes-pgbackrest-config"\n }\n },\n {\n "secret": {\n "items": [\n {\n "key": "pgbackrest.ca-roots",\n "path": "~postgres-operator/tls-ca.crt"\n },\n {\n "key": "pgbackrest-client.crt",\n "path": "~postgres-operator/client-tls.crt"\n },\n {\n "key": "pgbackrest-client.key",\n "mode": 384,\n "path": "~postgres-operator/client-tls.key"\n }\n ],\n "name": "additional-volumes-pgbackrest"\n }\n }\n ]\n }\n },\n {\n "name": "patroni-config",\n "projected": {\n "defaultMode": 420,\n "sources": [\n {\n "configMap": {\n "items": [\n {\n "key": "patroni.yaml",\n "path": "~postgres-operator_cluster.yaml"\n }\n ],\n "name": "additional-volumes-config"\n }\n },\n {\n "configMap": {\n "items": [\n {\n "key": "patroni.yaml",\n "path": "~postgres-operator_instance.yaml"\n }\n ],\n "name": "additional-volumes-instance1-24br-config"\n }\n },\n {\n "secret": {\n "items": [\n {\n "key": "patroni.ca-roots",\n "path": "~postgres-operator/patroni.ca-roots"\n },\n {\n "key": "patroni.crt-combined",\n "path": "~postgres-operator/patroni.crt+key"\n }\n ],\n "name": "additional-volumes-instance1-24br-certs"\n }\n }\n ]\n }\n },\n {\n "emptyDir": {},\n "name": "crunchy-bin"\n },\n {\n "emptyDir": {\n "sizeLimit": "2Gi"\n },\n "name": "tmp"\n },\n {\n "emptyDir": {\n "medium": "Memory"\n },\n "name": "dshm"\n }\n ]\n }\n },\n "updateStrategy": {\n "type": "OnDelete"\n }\n },\n "status": {\n "availableReplicas": 1,\n "collisionCount": 0,\n "currentReplicas": 1,\n "currentRevision": "additional-volumes-instance1-24br-6849b5b674",\n "observedGeneration": 1,\n "readyReplicas": 1,\n "replicas": 1,\n "updateRevision": "additional-volumes-instance1-24br-6849b5b674",\n "updatedReplicas": 1\n }\n },\n {\n "apiVersion": "apps/v1",\n "kind": "StatefulSet",\n "metadata": {\n "annotations": {\n "pgv2.percona.com/logcollector-config-hash": "d9a116e02b828bdc02165325e92799d82961fb499041814c7c765d0ce263ce77"\n },\n "creationTimestamp": "2026-08-19T18:12:06Z",\n "generation": 1,\n "labels": {\n "app.kubernetes.io/component": "pg",\n "app.kubernetes.io/instance": "additional-volumes",\n "app.kubernetes.io/managed-by": "percona-postgresql-operator",\n "app.kubernetes.io/name": "percona-postgresql",\n "app.kubernetes.io/part-of": "percona-postgresql",\n "pgv2.percona.com/version": "3.2.0",\n "postgres-operator.crunchydata.com/cluster": "additional-volumes",\n "postgres-operator.crunchydata.com/data": "postgres",\n "postgres-operator.crunchydata.com/instance": "additional-volumes-instance1-n8pg",\n "postgres-operator.crunchydata.com/instance-set": "instance1"\n },\n "name": "additional-volumes-instance1-n8pg",\n "namespace": "kuttl-test-intimate-garfish",\n "ownerReferences": [\n {\n "apiVersion": "upstream.pgv2.percona.com/v1beta1",\n "blockOwnerDeletion": true,\n "controller": true,\n "kind": "PostgresCluster",\n "name": "additional-volumes",\n "uid": "b795649f-550b-4283-b2ef-eca573235e5a"\n }\n ],\n "resourceVersion": "1787163189863071003",\n "uid": "c2983a30-d942-42e2-9d6a-3e99691891fd"\n },\n "spec": {\n "persistentVolumeClaimRetentionPolicy": {\n "whenDeleted": "Retain",\n "whenScaled": "Retain"\n },\n "podManagementPolicy": "OrderedReady",\n "replicas": 1,\n "revisionHistoryLimit": 0,\n "selector": {\n "matchLabels": {\n "postgres-operator.crunchydata.com/cluster": "additional-volumes",\n "postgres-operator.crunchydata.com/instance": "additional-volumes-instance1-n8pg",\n "postgres-operator.crunchydata.com/instance-set": "instance1"\n }\n },\n "serviceName": "additional-volumes-pods",\n "template": {\n "metadata": {\n "annotations": {\n "kubectl.kubernetes.io/default-container": "database",\n "pgv2.percona.com/logcollector-config-hash": "d9a116e02b828bdc02165325e92799d82961fb499041814c7c765d0ce263ce77"\n },\n "creationTimestamp": null,\n "labels": {\n "app.kubernetes.io/component": "pg",\n "app.kubernetes.io/instance": "additional-volumes",\n "app.kubernetes.io/managed-by": "percona-postgresql-operator",\n "app.kubernetes.io/name": "percona-postgresql",\n "app.kubernetes.io/part-of": "percona-postgresql",\n "pgv2.percona.com/version": "3.2.0",\n "postgres-operator.crunchydata.com/cluster": "additional-volumes",\n "postgres-operator.crunchydata.com/data": "postgres",\n "postgres-operator.crunchydata.com/instance": "additional-volumes-instance1-n8pg",\n "postgres-operator.crunchydata.com/instance-set": "instance1",\n "postgres-operator.crunchydata.com/patroni": "additional-volumes-ha"\n }\n },\n "spec": {\n "affinity": {\n "podAntiAffinity": {\n "preferredDuringSchedulingIgnoredDuringExecution": [\n {\n "podAffinityTerm": {\n "labelSelector": {\n "matchLabels": {\n "postgres-operator.crunchydata.com/data": "postgres"\n }\n },\n "topologyKey": "kubernetes.io/hostname"\n },\n "weight": 1\n }\n ]\n }\n },\n "containers": [\n {\n "command": [\n "/opt/crunchy/bin/postgres-entrypoint.sh",\n "patroni",\n "/etc/patroni"\n ],\n "env": [\n {\n "name": "PGDATA",\n "value": "/pgdata/pg18"\n },\n {\n "name": "PGHOST",\n "value": "/tmp/postgres"\n },\n {\n "name": "PGPORT",\n "value": "5432"\n },\n {\n "name": "KRB5_CONFIG",\n "value": "/etc/postgres/krb5.conf"\n },\n {\n "name": "KRB5RCACHEDIR",\n "value": "/tmp"\n },\n {\n "name": "LDAPTLS_CACERT",\n "value": "/etc/postgres/ldap/ca.crt"\n },\n {\n "name": "LC_ALL",\n "value": "en_US.utf-8"\n },\n {\n "name": "LANG",\n "value": "en_US.utf-8"\n },\n {\n "name": "PATRONI_NAME",\n "valueFrom": {\n "fieldRef": {\n "apiVersion": "v1",\n "fieldPath": "metadata.name"\n }\n }\n },\n {\n "name": "PATRONI_KUBERNETES_POD_IP",\n "valueFrom": {\n "fieldRef": {\n "apiVersion": "v1",\n "fieldPath": "status.podIP"\n }\n }\n },\n {\n "name": "PATRONI_KUBERNETES_PORTS",\n "value": "- name: postgres\\n port: 5432\\n protocol: TCP\\n"\n },\n {\n "name": "PATRONI_POSTGRESQL_CONNECT_ADDRESS",\n "value": "$(PATRONI_NAME).additional-volumes-pods:5432"\n },\n {\n "name": "PATRONI_POSTGRESQL_LISTEN",\n "value": "*:5432"\n },\n {\n "name": "PATRONI_POSTGRESQL_CONFIG_DIR",\n "value": "/pgdata/pg18"\n },\n {\n "name": "PATRONI_POSTGRESQL_DATA_DIR",\n "value": "/pgdata/pg18"\n },\n {\n "name": "PATRONI_RESTAPI_CONNECT_ADDRESS",\n "value": "$(PATRONI_NAME).additional-volumes-pods:8008"\n },\n {\n "name": "PATRONI_RESTAPI_LISTEN",\n "value": "*:8008"\n },\n {\n "name": "PATRONICTL_CONFIG_FILE",\n "value": "/etc/patroni"\n },\n {\n "name": "LD_PRELOAD",\n "value": "/usr/lib64/libnss_wrapper.so"\n },\n {\n "name": "NSS_WRAPPER_PASSWD",\n "value": "/tmp/nss_wrapper/postgres/passwd"\n },\n {\n "name": "NSS_WRAPPER_GROUP",\n "value": "/tmp/nss_wrapper/postgres/group"\n }\n ],\n "image": "docker.io/perconalab/percona-postgresql-operator:main-ppg18-postgres",\n "imagePullPolicy": "Always",\n "livenessProbe": {\n "exec": {\n "command": [\n "bash",\n "-c",\n "/opt/crunchy/bin/postgres-liveness-check.sh"\n ]\n },\n "failureThreshold": 3,\n "initialDelaySeconds": 3,\n "periodSeconds": 10,\n "successThreshold": 1,\n "timeoutSeconds": 5\n },\n "name": "database",\n "ports": [\n {\n "containerPort": 5432,\n "name": "postgres",\n "protocol": "TCP"\n }\n ],\n "readinessProbe": {\n "exec": {\n "command": [\n "bash",\n "-c",\n "/opt/crunchy/bin/postgres-readiness-check.sh"\n ]\n },\n "failureThreshold": 3,\n "initialDelaySeconds": 3,\n "periodSeconds": 10,\n "successThreshold": 1,\n "timeoutSeconds": 5\n },\n "resources": {},\n "securityContext": {\n "allowPrivilegeEscalation": false,\n "capabilities": {\n "drop": [\n "ALL"\n ]\n },\n "privileged": false,\n "readOnlyRootFilesystem": true,\n "runAsNonRoot": true,\n "seccompProfile": {\n "type": "RuntimeDefault"\n }\n },\n "terminationMessagePath": "/dev/termination-log",\n "terminationMessagePolicy": "File",\n "volumeMounts": [\n {\n "mountPath": "/pgconf/tls",\n "name": "cert-volume",\n "readOnly": true\n },\n {\n "mountPath": "/pgdata",\n "name": "postgres-data"\n },\n {\n "mountPath": "/etc/database-containerinfo",\n "name": "database-containerinfo",\n "readOnly": true\n },\n {\n "mountPath": "/tablespaces/myts",\n "name": "tablespace-myts"\n },\n {\n "mountPath": "/pgwal",\n "name": "postgres-wal"\n },\n {\n "mountPath": "/pglogs",\n "name": "postgres-logs"\n },\n {\n "mountPath": "/etc/pgbackrest/conf.d",\n "name": "pgbackrest-config",\n "readOnly": true\n },\n {\n "mountPath": "/etc/patroni",\n "name": "patroni-config",\n "readOnly": true\n },\n {\n "mountPath": "/opt/crunchy",\n "name": "crunchy-bin"\n },\n {\n "mountPath": "/tmp",\n "name": "tmp"\n },\n {\n "mountPath": "/dev/shm",\n "name": "dshm"\n }\n ]\n },\n {\n "command": [\n "bash",\n "-ceu",\n "--",\n "monitor() {\\n# Parameters for curl when managing autogrow annotation.\\nAPISERVER=\\"https://kubernetes.default.svc\\"\\nSERVICEACCOUNT=\\"/var/run/secrets/kubernetes.io/serviceaccount\\"\\nNAMESPACE=$(cat ${SERVICEACCOUNT}/namespace)\\nTOKEN=$(cat ${SERVICEACCOUNT}/token)\\nCACERT=${SERVICEACCOUNT}/ca.crt\\n\\ndeclare -r directory=\\"/pgconf/tls\\"\\nexec {fd}\\u003c\\u003e \\u003c(:||:)\\nwhile read -r -t 5 -u \\"${fd}\\" ||:; do\\n # Manage replication certificate.\\n if [[ \\"${directory}\\" -nt \\"/proc/self/fd/${fd}\\" ]] \\u0026\\u0026\\n install -D --mode=0600 -t \\"/tmp/replication\\" \\"${directory}\\"/{replication/tls.crt,replication/tls.key,replication/ca.crt} \\u0026\\u0026\\n pkill -HUP --exact --parent=1 postgres\\n then\\n exec {fd}\\u003e\\u0026- \\u0026\\u0026 exec {fd}\\u003c\\u003e \\u003c(:||:)\\n stat --format=\'Loaded certificates dated %y\' \\"${directory}\\"\\n fi\\n\\ndone\\n}; export -f monitor; exec -a \\"$0\\" bash -ceu monitor",\n "replication-cert-copy"\n ],\n "image": "docker.io/perconalab/percona-postgresql-operator:main-ppg18-postgres",\n "imagePullPolicy": "Always",\n "name": "replication-cert-copy",\n "resources": {},\n "securityContext": {\n "allowPrivilegeEscalation": false,\n "capabilities": {\n "drop": [\n "ALL"\n ]\n },\n "privileged": false,\n "readOnlyRootFilesystem": true,\n "runAsNonRoot": true,\n "seccompProfile": {\n "type": "RuntimeDefault"\n }\n },\n "terminationMessagePath": "/dev/termination-log",\n "terminationMessagePolicy": "File",\n "volumeMounts": [\n {\n "mountPath": "/pgconf/tls",\n "name": "cert-volume",\n "readOnly": true\n },\n {\n "mountPath": "/pgdata",\n "name": "postgres-data"\n },\n {\n "mountPath": "/tmp",\n "name": "tmp"\n }\n ]\n },\n {\n "args": [\n "fluent-bit"\n ],\n "command": [\n "/opt/crunchy/logcollector/entrypoint.sh"\n ],\n "env": [\n {\n "name": "PG_LOG_DIR",\n "value": "/pgdata/pg18/log"\n },\n {\n "name": "PGBACKREST_LOG_DIR",\n "value": "/pgdata/pgbackrest/log"\n },\n {\n "name": "POD_NAMESPACE",\n "valueFrom": {\n "fieldRef": {\n "apiVersion": "v1",\n "fieldPath": "metadata.namespace"\n }\n }\n },\n {\n "name": "POD_NAME",\n "valueFrom": {\n "fieldRef": {\n "apiVersion": "v1",\n "fieldPath": "metadata.name"\n }\n }\n }\n ],\n "image": "docker.io/perconalab/fluentbit:main-logcollector",\n "imagePullPolicy": "IfNotPresent",\n "name": "logs",\n "resources": {},\n "securityContext": {\n "allowPrivilegeEscalation": false,\n "capabilities": {\n "drop": [\n "ALL"\n ]\n },\n "privileged": false,\n "runAsGroup": 26,\n "runAsNonRoot": true,\n "runAsUser": 26,\n "seccompProfile": {\n "type": "RuntimeDefault"\n }\n },\n "terminationMessagePath": "/dev/termination-log",\n "terminationMessagePolicy": "File",\n "volumeMounts": [\n {\n "mountPath": "/pgdata",\n "name": "postgres-data"\n },\n {\n "mountPath": "/opt/crunchy",\n "name": "crunchy-bin"\n },\n {\n "mountPath": "/tmp",\n "name": "tmp"\n }\n ]\n },\n {\n "args": [\n "logrotate"\n ],\n "command": [\n "/opt/crunchy/logcollector/entrypoint.sh"\n ],\n "env": [\n {\n "name": "POD_NAMESPACE",\n "valueFrom": {\n "fieldRef": {\n "apiVersion": "v1",\n "fieldPath": "metadata.namespace"\n }\n }\n },\n {\n "name": "POD_NAME",\n "valueFrom": {\n "fieldRef": {\n "apiVersion": "v1",\n "fieldPath": "metadata.name"\n }\n }\n },\n {\n "name": "LOGROTATE_SCHEDULE",\n "value": "0 0 * * *"\n },\n {\n "name": "LD_PRELOAD",\n "value": "/tmp/nss_wrapper/libnss_wrapper.so"\n },\n {\n "name": "NSS_WRAPPER_PASSWD",\n "value": "/tmp/nss_wrapper/postgres/passwd"\n },\n {\n "name": "NSS_WRAPPER_GROUP",\n "value": "/tmp/nss_wrapper/postgres/group"\n }\n ],\n "image": "docker.io/perconalab/fluentbit:main-logcollector",\n "imagePullPolicy": "IfNotPresent",\n "name": "logrotate",\n "resources": {},\n "securityContext": {\n "allowPrivilegeEscalation": false,\n "capabilities": {\n "drop": [\n "ALL"\n ]\n },\n "privileged": false,\n "runAsGroup": 26,\n "runAsNonRoot": true,\n "runAsUser": 26,\n "seccompProfile": {\n "type": "RuntimeDefault"\n }\n },\n "terminationMessagePath": "/dev/termination-log",\n "terminationMessagePolicy": "File",\n "volumeMounts": [\n {\n "mountPath": "/pgdata",\n "name": "postgres-data"\n },\n {\n "mountPath": "/opt/crunchy",\n "name": "crunchy-bin"\n },\n {\n "mountPath": "/tmp",\n "name": "tmp"\n }\n ]\n },\n {\n "command": [\n "pgbackrest",\n "server"\n ],\n "env": [\n {\n "name": "LD_PRELOAD",\n "value": "/usr/lib64/libnss_wrapper.so"\n },\n {\n "name": "NSS_WRAPPER_PASSWD",\n "value": "/tmp/nss_wrapper/postgres/passwd"\n },\n {\n "name": "NSS_WRAPPER_GROUP",\n "value": "/tmp/nss_wrapper/postgres/group"\n }\n ],\n "image": "docker.io/perconalab/percona-postgresql-operator:main-pgbackrest18",\n "imagePullPolicy": "Always",\n "livenessProbe": {\n "exec": {\n "command": [\n "pgbackrest",\n "server-ping"\n ]\n },\n "failureThreshold": 3,\n "periodSeconds": 10,\n "successThreshold": 1,\n "timeoutSeconds": 1\n },\n "name": "pgbackrest",\n "resources": {},\n "securityContext": {\n "allowPrivilegeEscalation": false,\n "capabilities": {\n "drop": [\n "ALL"\n ]\n },\n "privileged": false,\n "readOnlyRootFilesystem": true,\n "runAsNonRoot": true,\n "seccompProfile": {\n "type": "RuntimeDefault"\n }\n },\n "terminationMessagePath": "/dev/termination-log",\n "terminationMessagePolicy": "File",\n "volumeMounts": [\n {\n "mountPath": "/etc/pgbackrest/server",\n "name": "pgbackrest-server",\n "readOnly": true\n },\n {\n "mountPath": "/pgdata",\n "name": "postgres-data"\n },\n {\n "mountPath": "/tablespaces/myts",\n "name": "tablespace-myts"\n },\n {\n "mountPath": "/pgwal",\n "name": "postgres-wal"\n },\n {\n "mountPath": "/etc/pgbackrest/conf.d",\n "name": "pgbackrest-config",\n "readOnly": true\n },\n {\n "mountPath": "/tmp",\n "name": "tmp"\n }\n ]\n },\n {\n "command": [\n "bash",\n "-ceu",\n "--",\n "monitor() {\\nexec {fd}\\u003c\\u003e \\u003c(:||:)\\nuntil read -r -t 5 -u \\"${fd}\\"; do\\n if\\n [[ \\"${filename}\\" -nt \\"/proc/self/fd/${fd}\\" ]] \\u0026\\u0026\\n pkill -HUP --exact --parent=0 pgbackrest\\n then\\n exec {fd}\\u003e\\u0026- \\u0026\\u0026 exec {fd}\\u003c\\u003e \\u003c(:||:)\\n stat --dereference --format=\'Loaded configuration dated %y\' \\"${filename}\\"\\n elif\\n { [[ \\"${directory}\\" -nt \\"/proc/self/fd/${fd}\\" ]] ||\\n [[ \\"${authority}\\" -nt \\"/proc/self/fd/${fd}\\" ]]\\n } \\u0026\\u0026\\n pkill -HUP --exact --parent=0 pgbackrest\\n then\\n exec {fd}\\u003e\\u0026- \\u0026\\u0026 exec {fd}\\u003c\\u003e \\u003c(:||:)\\n stat --format=\'Loaded certificates dated %y\' \\"${directory}\\"\\n fi\\ndone\\n}; export directory=\\"$1\\" authority=\\"$2\\" filename=\\"$3\\"; export -f monitor; exec -a \\"$0\\" bash -ceu monitor",\n "pgbackrest-config",\n "/etc/pgbackrest/server",\n "/etc/pgbackrest/conf.d/~postgres-operator/tls-ca.crt",\n "/etc/pgbackrest/conf.d/~postgres-operator_server.conf"\n ],\n "image": "docker.io/perconalab/percona-postgresql-operator:main-pgbackrest18",\n "imagePullPolicy": "Always",\n "name": "pgbackrest-config",\n "resources": {},\n "securityContext": {\n "allowPrivilegeEscalation": false,\n "capabilities": {\n "drop": [\n "ALL"\n ]\n },\n "privileged": false,\n "readOnlyRootFilesystem": true,\n "runAsNonRoot": true,\n "seccompProfile": {\n "type": "RuntimeDefault"\n }\n },\n "terminationMessagePath": "/dev/termination-log",\n "terminationMessagePolicy": "File",\n "volumeMounts": [\n {\n "mountPath": "/etc/pgbackrest/server",\n "name": "pgbackrest-server",\n "readOnly": true\n },\n {\n "mountPath": "/etc/pgbackrest/conf.d",\n "name": "pgbackrest-config",\n "readOnly": true\n },\n {\n "mountPath": "/tmp",\n "name": "tmp"\n }\n ]\n }\n ],\n "dnsPolicy": "ClusterFirst",\n "enableServiceLinks": false,\n "initContainers": [\n {\n "command": [\n "/usr/local/bin/init-entrypoint.sh"\n ],\n "image": "docker.io/perconalab/percona-postgresql-operator:PR-1760-4947a0272",\n "imagePullPolicy": "Always",\n "name": "database-init",\n "resources": {},\n "securityContext": {\n "allowPrivilegeEscalation": false,\n "capabilities": {\n "drop": [\n "ALL"\n ]\n },\n "privileged": false,\n "readOnlyRootFilesystem": true,\n "runAsNonRoot": true,\n "seccompProfile": {\n "type": "RuntimeDefault"\n }\n },\n "terminationMessagePath": "/dev/termination-log",\n "terminationMessagePolicy": "File",\n "volumeMounts": [\n {\n "mountPath": "/opt/crunchy",\n "name": "crunchy-bin"\n },\n {\n "mountPath": "/tmp",\n "name": "tmp"\n }\n ]\n },\n {\n "command": [\n "bash",\n "-ceu",\n "--",\n "declare -r expected_major_version=\\"$1\\" pgwal_directory=\\"$2\\" pgbrLog_directory=\\"$3\\"\\npermissions() { while [[ -n \\"$1\\" ]]; do set \\"${1%/*}\\" \\"$@\\"; done; shift; stat -Lc \'%A %4u %4g %n\' \\"$@\\"; }\\nhalt() { local rc=$?; \\u003e\\u00262 echo \\"$@\\"; exit \\"${rc/#0/1}\\"; }\\nresults() { printf \'::postgres-operator: %s::%s\\\\n\' \\"$@\\"; }\\nrecreate() (\\n local tmp; tmp=$(mktemp -d -p \\"${1%/*}\\"); GLOBIGNORE=\'.:..\'; set -x\\n chmod \\"$2\\" \\"${tmp}\\"; mv \\"$1\\"/* \\"${tmp}\\"; rmdir \\"$1\\"; mv \\"${tmp}\\" \\"$1\\"\\n)\\nsafelink() (\\n local desired=\\"$1\\" name=\\"$2\\" current\\n current=$(realpath \\"${name}\\")\\n if [[ \\"${current}\\" == \\"${desired}\\" ]]; then return; fi\\n set -x; mv --no-target-directory \\"${current}\\" \\"${desired}\\"\\n ln --no-dereference --force --symbolic \\"${desired}\\" \\"${name}\\"\\n)\\necho Initializing ...\\nresults \'uid\' \\"$(id -u ||:)\\" \'gid\' \\"$(id -G ||:)\\"\\nif [[ \\"${pgwal_directory}\\" == *\\"pgwal/\\"* ]] \\u0026\\u0026 [[ ! -d \\"/pgwal/pgbackrest-spool\\" ]];then rm -rf \\"/pgdata/pgbackrest-spool\\" \\u0026\\u0026 mkdir -p \\"/pgwal/pgbackrest-spool\\" \\u0026\\u0026 ln --force --symbolic \\"/pgwal/pgbackrest-spool\\" \\"/pgdata/pgbackrest-spool\\";fi\\nif [[ ! -e \\"/pgdata/pgbackrest-spool\\" ]];then rm -rf /pgdata/pgbackrest-spool;fi\\nif [[ ! -e \\"/pgdata/logs/postgres\\" ]];then rm -rf \\"/pgdata/logs/postgres\\";fi\\nif [[ ! -e \\"${pgbrLog_directory}\\" ]];then rm -rf \\"${pgbrLog_directory}\\";fi\\nif [[ -d \\"/pglogs\\" ]];then install --directory --mode=0775 \\"/pglogs/postgres\\" \\"/pglogs/pgbackrest/log\\";if [[ ! -L \\"/pgdata/logs/postgres\\" ]];then mkdir -p \\"/pgdata/logs\\" \\u0026\\u0026 rm -rf \\"/pgdata/logs/postgres\\" \\u0026\\u0026 ln --symbolic \\"/pglogs/postgres\\" \\"/pgdata/logs/postgres\\";fi;if [[ ! -L \\"${pgbrLog_directory}\\" ]];then mkdir -p \\"${pgbrLog_directory%/*}\\" \\u0026\\u0026 rm -rf \\"${pgbrLog_directory}\\" \\u0026\\u0026 ln --symbolic \\"/pglogs/pgbackrest/log\\" \\"${pgbrLog_directory}\\";fi;fi\\nresults \'postgres path\' \\"$(command -v postgres ||:)\\"\\nresults \'postgres version\' \\"${postgres_version:=$(postgres --version ||:)}\\"\\n[[ \\"${postgres_version}\\" =~ \\") ${expected_major_version}\\"($|[^0-9]) ]] ||\\nhalt Expected PostgreSQL version \\"${expected_major_version}\\"\\nresults \'config directory\' \\"${PGDATA:?}\\"\\npostgres_data_directory=$([[ -d \\"${PGDATA}\\" ]] \\u0026\\u0026 postgres -C data_directory || echo \\"${PGDATA}\\")\\nresults \'data directory\' \\"${postgres_data_directory}\\"\\n[[ \\"${postgres_data_directory}\\" == \\"${PGDATA}\\" ]] ||\\nhalt Expected matching config and data directories\\nbootstrap_dir=\\"${postgres_data_directory}_bootstrap\\"\\n[[ -d \\"${bootstrap_dir}\\" ]] \\u0026\\u0026 results \'bootstrap directory\' \\"${bootstrap_dir}\\"\\n[[ -d \\"${bootstrap_dir}\\" ]] \\u0026\\u0026 postgres_data_directory=\\"${bootstrap_dir}\\"\\nif [[ ! -e \\"${postgres_data_directory}\\" || -O \\"${postgres_data_directory}\\" ]]; then\\ninstall --directory --mode=0700 \\"${postgres_data_directory}\\"\\nelif [[ -w \\"${postgres_data_directory}\\" \\u0026\\u0026 -g \\"${postgres_data_directory}\\" ]]; then\\nrecreate \\"${postgres_data_directory}\\" \'0700\'\\nelse (halt Permissions!); fi ||\\nhalt \\"$(permissions \\"${postgres_data_directory}\\" ||:)\\"\\nresults \'pgBackRest log directory\' \\"${pgbrLog_directory}\\"\\ninstall --directory --mode=0775 \\"${pgbrLog_directory}\\" ||\\nhalt \\"$(permissions \\"${pgbrLog_directory}\\" ||:)\\"\\ninstall -D --mode=0600 -t \\"/tmp/replication\\" \\"/pgconf/tls/replication\\"/{tls.crt,tls.key,ca.crt}\\n\\ntablespace_dir=/tablespaces/myts/data\\nif [[ ! -e \\"${tablespace_dir}\\" || -O \\"${tablespace_dir}\\" ]]; then\\ninstall --directory --mode=0700 \\"${tablespace_dir}\\"\\nelif [[ -w \\"${tablespace_dir}\\" \\u0026\\u0026 -g \\"${tablespace_dir}\\" ]]; then\\nrecreate \\"${tablespace_dir}\\" \'0700\'\\nelse (halt Permissions!); fi ||\\nhalt \\"$(permissions \\"${tablespace_dir}\\" ||:)\\"\\n[[ -f \\"${postgres_data_directory}/PG_VERSION\\" ]] || exit 0\\nresults \'data version\' \\"${postgres_data_version:=$(\\u003c \\"${postgres_data_directory}/PG_VERSION\\")}\\"\\n[[ \\"${postgres_data_version}\\" == \\"${expected_major_version}\\" ]] ||\\nhalt Expected PostgreSQL data version \\"${expected_major_version}\\"\\n[[ ! -f \\"${postgres_data_directory}/postgresql.conf\\" ]] \\u0026\\u0026\\ntouch \\"${postgres_data_directory}/postgresql.conf\\"\\nsafelink \\"${pgwal_directory}\\" \\"${postgres_data_directory}/pg_wal\\"\\nresults \'wal directory\' \\"$(realpath \\"${postgres_data_directory}/pg_wal\\" ||:)\\"\\nrm -f \\"${postgres_data_directory}/recovery.signal\\"",\n "startup",\n "18",\n "/pgwal/pg18_wal",\n "/pgdata/pgbackrest/log"\n ],\n "env": [\n {\n "name": "PGDATA",\n "value": "/pgdata/pg18"\n },\n {\n "name": "PGHOST",\n "value": "/tmp/postgres"\n },\n {\n "name": "PGPORT",\n "value": "5432"\n },\n {\n "name": "KRB5_CONFIG",\n "value": "/etc/postgres/krb5.conf"\n },\n {\n "name": "KRB5RCACHEDIR",\n "value": "/tmp"\n },\n {\n "name": "LDAPTLS_CACERT",\n "value": "/etc/postgres/ldap/ca.crt"\n },\n {\n "name": "LC_ALL",\n "value": "en_US.utf-8"\n },\n {\n "name": "LANG",\n "value": "en_US.utf-8"\n }\n ],\n "image": "docker.io/perconalab/percona-postgresql-operator:main-ppg18-postgres",\n "imagePullPolicy": "Always",\n "name": "postgres-startup",\n "resources": {},\n "securityContext": {\n "allowPrivilegeEscalation": false,\n "capabilities": {\n "drop": [\n "ALL"\n ]\n },\n "privileged": false,\n "readOnlyRootFilesystem": true,\n "runAsNonRoot": true,\n "seccompProfile": {\n "type": "RuntimeDefault"\n }\n },\n "terminationMessagePath": "/dev/termination-log",\n "terminationMessagePolicy": "File",\n "volumeMounts": [\n {\n "mountPath": "/pgconf/tls",\n "name": "cert-volume",\n "readOnly": true\n },\n {\n "mountPath": "/pgdata",\n "name": "postgres-data"\n },\n {\n "mountPath": "/tablespaces/myts",\n "name": "tablespace-myts"\n },\n {\n "mountPath": "/pgwal",\n "name": "postgres-wal"\n },\n {\n "mountPath": "/pglogs",\n "name": "postgres-logs"\n },\n {\n "mountPath": "/tmp",\n "name": "tmp"\n }\n ]\n },\n {\n "command": [\n "bash",\n "-c",\n "mkdir -p /tmp/nss_wrapper \\u0026\\u0026 { [[ -f /tmp/nss_wrapper/libnss_wrapper.so ]] || cp /usr/lib64/libnss_wrapper.so /tmp/nss_wrapper/libnss_wrapper.so; }"\n ],\n "image": "docker.io/perconalab/percona-postgresql-operator:main-ppg18-postgres",\n "imagePullPolicy": "Always",\n "name": "nss-wrapper-init-logcollector",\n "resources": {},\n "securityContext": {\n "allowPrivilegeEscalation": false,\n "capabilities": {\n "drop": [\n "ALL"\n ]\n },\n "privileged": false,\n "runAsGroup": 26,\n "runAsNonRoot": true,\n "runAsUser": 26,\n "seccompProfile": {\n "type": "RuntimeDefault"\n }\n },\n "terminationMessagePath": "/dev/termination-log",\n "terminationMessagePolicy": "File",\n "volumeMounts": [\n {\n "mountPath": "/tmp",\n "name": "tmp"\n }\n ]\n },\n {\n "command": [\n "bash",\n "-c",\n "export NSS_WRAPPER_SUBDIR=postgres CRUNCHY_NSS_USERNAME=postgres CRUNCHY_NSS_USER_DESC=\\"postgres\\" \\n# Define nss_wrapper directory and passwd \\u0026 group files that will be utilized by nss_wrapper. The\\n# nss_wrapper_env.sh script (which also sets these vars) isn\'t sourced here since the nss_wrapper\\n# has not yet been setup, and we therefore don\'t yet want the nss_wrapper vars in the environment.\\nmkdir -p /tmp/nss_wrapper\\nchmod g+rwx /tmp/nss_wrapper\\n\\nNSS_WRAPPER_DIR=\\"/tmp/nss_wrapper/${NSS_WRAPPER_SUBDIR}\\"\\nNSS_WRAPPER_PASSWD=\\"${NSS_WRAPPER_DIR}/passwd\\"\\nNSS_WRAPPER_GROUP=\\"${NSS_WRAPPER_DIR}/group\\"\\n\\n# create the nss_wrapper directory\\nmkdir -p \\"${NSS_WRAPPER_DIR}\\"\\n\\n# grab the current user ID and group ID\\nUSER_ID=$(id -u)\\nexport USER_ID\\nGROUP_ID=$(id -g)\\nexport GROUP_ID\\n\\n# get copies of the passwd and group files\\n[[ -f \\"${NSS_WRAPPER_PASSWD}\\" ]] || cp \\"/etc/passwd\\" \\"${NSS_WRAPPER_PASSWD}\\"\\n[[ -f \\"${NSS_WRAPPER_GROUP}\\" ]] || cp \\"/etc/group\\" \\"${NSS_WRAPPER_GROUP}\\"\\n\\n# if the username is missing from the passwd file, then add it\\nif [[ ! $(cat \\"${NSS_WRAPPER_PASSWD}\\") =~ ${CRUNCHY_NSS_USERNAME}:x:${USER_ID} ]]; then\\n echo \\"nss_wrapper: adding user\\"\\n passwd_tmp=\\"${NSS_WRAPPER_DIR}/passwd_tmp\\"\\n cp \\"${NSS_WRAPPER_PASSWD}\\" \\"${passwd_tmp}\\"\\n sed -i \\"/${CRUNCHY_NSS_USERNAME}:x:/d\\" \\"${passwd_tmp}\\"\\n # needed for OCP 4.x because crio updates /etc/passwd with an entry for USER_ID\\n sed -i \\"/${USER_ID}:x:/d\\" \\"${passwd_tmp}\\"\\n printf \'${CRUNCHY_NSS_USERNAME}:x:${USER_ID}:${GROUP_ID}:${CRUNCHY_NSS_USER_DESC}:${HOME}:/bin/bash\\\\n\' \\u003e\\u003e \\"${passwd_tmp}\\"\\n envsubst \\u003c \\"${passwd_tmp}\\" \\u003e \\"${NSS_WRAPPER_PASSWD}\\"\\n rm \\"${passwd_tmp}\\"\\nelse\\n echo \\"nss_wrapper: user exists\\"\\nfi\\n\\n# if the username (which will be the same as the group name) is missing from group file, then add it\\nif [[ ! $(cat \\"${NSS_WRAPPER_GROUP}\\") =~ ${CRUNCHY_NSS_USERNAME}:x:${USER_ID} ]]; then\\n echo \\"nss_wrapper: adding group\\"\\n group_tmp=\\"${NSS_WRAPPER_DIR}/group_tmp\\"\\n cp \\"${NSS_WRAPPER_GROUP}\\" \\"${group_tmp}\\"\\n sed -i \\"/${CRUNCHY_NSS_USERNAME}:x:/d\\" \\"${group_tmp}\\"\\n printf \'${CRUNCHY_NSS_USERNAME}:x:${USER_ID}:${CRUNCHY_NSS_USERNAME}\\\\n\' \\u003e\\u003e \\"${group_tmp}\\"\\n envsubst \\u003c \\"${group_tmp}\\" \\u003e \\"${NSS_WRAPPER_GROUP}\\"\\n rm \\"${group_tmp}\\"\\nelse\\n echo \\"nss_wrapper: group exists\\"\\nfi\\n\\n# export the nss_wrapper env vars\\n# define nss_wrapper directory and passwd \\u0026 group files that will be utilized by nss_wrapper\\nNSS_WRAPPER_DIR=\\"/tmp/nss_wrapper/${NSS_WRAPPER_SUBDIR}\\"\\nNSS_WRAPPER_PASSWD=\\"${NSS_WRAPPER_DIR}/passwd\\"\\nNSS_WRAPPER_GROUP=\\"${NSS_WRAPPER_DIR}/group\\"\\n\\nexport LD_PRELOAD=/usr/lib64/libnss_wrapper.so\\nexport NSS_WRAPPER_PASSWD=\\"${NSS_WRAPPER_PASSWD}\\"\\nexport NSS_WRAPPER_GROUP=\\"${NSS_WRAPPER_GROUP}\\"\\n\\necho \\"nss_wrapper: environment configured\\"\\n"\n ],\n "image": "docker.io/perconalab/percona-postgresql-operator:main-ppg18-postgres",\n "imagePullPolicy": "Always",\n "name": "nss-wrapper-init",\n "resources": {},\n "securityContext": {\n "allowPrivilegeEscalation": false,\n "capabilities": {\n "drop": [\n "ALL"\n ]\n },\n "privileged": false,\n "readOnlyRootFilesystem": true,\n "runAsNonRoot": true,\n "seccompProfile": {\n "type": "RuntimeDefault"\n }\n },\n "terminationMessagePath": "/dev/termination-log",\n "terminationMessagePolicy": "File",\n "volumeMounts": [\n {\n "mountPath": "/tmp",\n "name": "tmp"\n }\n ]\n }\n ],\n "restartPolicy": "Always",\n "schedulerName": "default-scheduler",\n "securityContext": {\n "fsGroup": 26,\n "fsGroupChangePolicy": "OnRootMismatch"\n },\n "serviceAccount": "additional-volumes-instance",\n "serviceAccountName": "additional-volumes-instance",\n "shareProcessNamespace": true,\n "terminationGracePeriodSeconds": 30,\n "topologySpreadConstraints": [\n {\n "labelSelector": {\n "matchExpressions": [\n {\n "key": "postgres-operator.crunchydata.com/data",\n "operator": "In",\n "values": [\n "postgres",\n "pgbackrest"\n ]\n }\n ],\n "matchLabels": {\n "postgres-operator.crunchydata.com/cluster": "additional-volumes"\n }\n },\n "maxSkew": 1,\n "topologyKey": "kubernetes.io/hostname",\n "whenUnsatisfiable": "ScheduleAnyway"\n },\n {\n "labelSelector": {\n "matchExpressions": [\n {\n "key": "postgres-operator.crunchydata.com/data",\n "operator": "In",\n "values": [\n "postgres",\n "pgbackrest"\n ]\n }\n ],\n "matchLabels": {\n "postgres-operator.crunchydata.com/cluster": "additional-volumes"\n }\n },\n "maxSkew": 1,\n "topologyKey": "topology.kubernetes.io/zone",\n "whenUnsatisfiable": "ScheduleAnyway"\n }\n ],\n "volumes": [\n {\n "name": "cert-volume",\n "projected": {\n "defaultMode": 384,\n "sources": [\n {\n "secret": {\n "items": [\n {\n "key": "tls.crt",\n "path": "tls.crt"\n },\n {\n "key": "tls.key",\n "path": "tls.key"\n },\n {\n "key": "ca.crt",\n "path": "ca.crt"\n }\n ],\n "name": "additional-volumes-cluster-cert"\n }\n },\n {\n "secret": {\n "items": [\n {\n "key": "tls.crt",\n "path": "replication/tls.crt"\n },\n {\n "key": "tls.key",\n "path": "replication/tls.key"\n },\n {\n "key": "ca.crt",\n "path": "replication/ca.crt"\n }\n ],\n "name": "additional-volumes-replication-cert"\n }\n }\n ]\n }\n },\n {\n "name": "postgres-data",\n "persistentVolumeClaim": {\n "claimName": "additional-volumes-instance1-n8pg-pgdata"\n }\n },\n {\n "downwardAPI": {\n "defaultMode": 420,\n "items": [\n {\n "path": "cpu_limit",\n "resourceFieldRef": {\n "containerName": "database",\n "divisor": "1m",\n "resource": "limits.cpu"\n }\n },\n {\n "path": "cpu_request",\n "resourceFieldRef": {\n "containerName": "database",\n "divisor": "1m",\n "resource": "requests.cpu"\n }\n },\n {\n "path": "mem_limit",\n "resourceFieldRef": {\n "containerName": "database",\n "divisor": "1Mi",\n "resource": "limits.memory"\n }\n },\n {\n "path": "mem_request",\n "resourceFieldRef": {\n "containerName": "database",\n "divisor": "1Mi",\n "resource": "requests.memory"\n }\n },\n {\n "fieldRef": {\n "apiVersion": "v1",\n "fieldPath": "metadata.labels"\n },\n "path": "labels"\n },\n {\n "fieldRef": {\n "apiVersion": "v1",\n "fieldPath": "metadata.annotations"\n },\n "path": "annotations"\n }\n ]\n },\n "name": "database-containerinfo"\n },\n {\n "name": "tablespace-myts",\n "persistentVolumeClaim": {\n "claimName": "additional-volumes-instance1-n8pg-myts-tablespace"\n }\n },\n {\n "name": "postgres-wal",\n "persistentVolumeClaim": {\n "claimName": "additional-volumes-instance1-n8pg-pgwal"\n }\n },\n {\n "name": "postgres-logs",\n "persistentVolumeClaim": {\n "claimName": "additional-volumes-instance1-n8pg-pglogs"\n }\n },\n {\n "name": "pgbackrest-server",\n "projected": {\n "defaultMode": 420,\n "sources": [\n {\n "secret": {\n "items": [\n {\n "key": "pgbackrest-server.crt",\n "path": "server-tls.crt"\n },\n {\n "key": "pgbackrest-server.key",\n "mode": 384,\n "path": "server-tls.key"\n }\n ],\n "name": "additional-volumes-instance1-n8pg-certs"\n }\n }\n ]\n }\n },\n {\n "name": "pgbackrest-config",\n "projected": {\n "defaultMode": 420,\n "sources": [\n {\n "configMap": {\n "items": [\n {\n "key": "pgbackrest_instance.conf",\n "path": "pgbackrest_instance.conf"\n },\n {\n "key": "config-hash",\n "path": "config-hash"\n },\n {\n "key": "pgbackrest-server.conf",\n "path": "~postgres-operator_server.conf"\n }\n ],\n "name": "additional-volumes-pgbackrest-config"\n }\n },\n {\n "secret": {\n "items": [\n {\n "key": "pgbackrest.ca-roots",\n "path": "~postgres-operator/tls-ca.crt"\n },\n {\n "key": "pgbackrest-client.crt",\n "path": "~postgres-operator/client-tls.crt"\n },\n {\n "key": "pgbackrest-client.key",\n "mode": 384,\n "path": "~postgres-operator/client-tls.key"\n }\n ],\n "name": "additional-volumes-pgbackrest"\n }\n }\n ]\n }\n },\n {\n "name": "patroni-config",\n "projected": {\n "defaultMode": 420,\n "sources": [\n {\n "configMap": {\n "items": [\n {\n "key": "patroni.yaml",\n "path": "~postgres-operator_cluster.yaml"\n }\n ],\n "name": "additional-volumes-config"\n }\n },\n {\n "configMap": {\n "items": [\n {\n "key": "patroni.yaml",\n "path": "~postgres-operator_instance.yaml"\n }\n ],\n "name": "additional-volumes-instance1-n8pg-config"\n }\n },\n {\n "secret": {\n "items": [\n {\n "key": "patroni.ca-roots",\n "path": "~postgres-operator/patroni.ca-roots"\n },\n {\n "key": "patroni.crt-combined",\n "path": "~postgres-operator/patroni.crt+key"\n }\n ],\n "name": "additional-volumes-instance1-n8pg-certs"\n }\n }\n ]\n }\n },\n {\n "emptyDir": {},\n "name": "crunchy-bin"\n },\n {\n "emptyDir": {\n "sizeLimit": "2Gi"\n },\n "name": "tmp"\n },\n {\n "emptyDir": {\n "medium": "Memory"\n },\n "name": "dshm"\n }\n ]\n }\n },\n "updateStrategy": {\n "type": "OnDelete"\n }\n },\n "status": {\n "availableReplicas": 1,\n "collisionCount": 0,\n "currentReplicas": 1,\n "currentRevision": "additional-volumes-instance1-n8pg-7f58bcfdb6",\n "observedGeneration": 1,\n "readyReplicas": 1,\n "replicas": 1,\n "updateRevision": "additional-volumes-instance1-n8pg-7f58bcfdb6",\n "updatedReplicas": 1\n }\n },\n {\n "apiVersion": "apps/v1",\n "kind": "StatefulSet",\n "metadata": {\n "annotations": {\n "pgv2.percona.com/logcollector-config-hash": "d9a116e02b828bdc02165325e92799d82961fb499041814c7c765d0ce263ce77"\n },\n "creationTimestamp": "2026-08-19T18:12:05Z",\n "generation": 1,\n "labels": {\n "app.kubernetes.io/component": "pg",\n "app.kubernetes.io/instance": "additional-volumes",\n "app.kubernetes.io/managed-by": "percona-postgresql-operator",\n "app.kubernetes.io/name": "percona-postgresql",\n "app.kubernetes.io/part-of": "percona-postgresql",\n "pgv2.percona.com/version": "3.2.0",\n "postgres-operator.crunchydata.com/cluster": "additional-volumes",\n "postgres-operator.crunchydata.com/data": "postgres",\n "postgres-operator.crunchydata.com/instance": "additional-volumes-instance1-xvbw",\n "postgres-operator.crunchydata.com/instance-set": "instance1"\n },\n "name": "additional-volumes-instance1-xvbw",\n "namespace": "kuttl-test-intimate-garfish",\n "ownerReferences": [\n {\n "apiVersion": "upstream.pgv2.percona.com/v1beta1",\n "blockOwnerDeletion": true,\n "controller": true,\n "kind": "PostgresCluster",\n "name": "additional-volumes",\n "uid": "b795649f-550b-4283-b2ef-eca573235e5a"\n }\n ],\n "resourceVersion": "1787163193859951017",\n "uid": "ff0eabc4-a14f-43d4-85da-3372e3c9c0da"\n },\n "spec": {\n "persistentVolumeClaimRetentionPolicy": {\n "whenDeleted": "Retain",\n "whenScaled": "Retain"\n },\n "podManagementPolicy": "OrderedReady",\n "replicas": 1,\n "revisionHistoryLimit": 0,\n "selector": {\n "matchLabels": {\n "postgres-operator.crunchydata.com/cluster": "additional-volumes",\n "postgres-operator.crunchydata.com/instance": "additional-volumes-instance1-xvbw",\n "postgres-operator.crunchydata.com/instance-set": "instance1"\n }\n },\n "serviceName": "additional-volumes-pods",\n "template": {\n "metadata": {\n "annotations": {\n "kubectl.kubernetes.io/default-container": "database",\n "pgv2.percona.com/logcollector-config-hash": "d9a116e02b828bdc02165325e92799d82961fb499041814c7c765d0ce263ce77"\n },\n "creationTimestamp": null,\n "labels": {\n "app.kubernetes.io/component": "pg",\n "app.kubernetes.io/instance": "additional-volumes",\n "app.kubernetes.io/managed-by": "percona-postgresql-operator",\n "app.kubernetes.io/name": "percona-postgresql",\n "app.kubernetes.io/part-of": "percona-postgresql",\n "pgv2.percona.com/version": "3.2.0",\n "postgres-operator.crunchydata.com/cluster": "additional-volumes",\n "postgres-operator.crunchydata.com/data": "postgres",\n "postgres-operator.crunchydata.com/instance": "additional-volumes-instance1-xvbw",\n "postgres-operator.crunchydata.com/instance-set": "instance1",\n "postgres-operator.crunchydata.com/patroni": "additional-volumes-ha"\n }\n },\n "spec": {\n "affinity": {\n "podAntiAffinity": {\n "preferredDuringSchedulingIgnoredDuringExecution": [\n {\n "podAffinityTerm": {\n "labelSelector": {\n "matchLabels": {\n "postgres-operator.crunchydata.com/data": "postgres"\n }\n },\n "topologyKey": "kubernetes.io/hostname"\n },\n "weight": 1\n }\n ]\n }\n },\n "containers": [\n {\n "command": [\n "/opt/crunchy/bin/postgres-entrypoint.sh",\n "patroni",\n "/etc/patroni"\n ],\n "env": [\n {\n "name": "PGDATA",\n "value": "/pgdata/pg18"\n },\n {\n "name": "PGHOST",\n "value": "/tmp/postgres"\n },\n {\n "name": "PGPORT",\n "value": "5432"\n },\n {\n "name": "KRB5_CONFIG",\n "value": "/etc/postgres/krb5.conf"\n },\n {\n "name": "KRB5RCACHEDIR",\n "value": "/tmp"\n },\n {\n "name": "LDAPTLS_CACERT",\n "value": "/etc/postgres/ldap/ca.crt"\n },\n {\n "name": "LC_ALL",\n "value": "en_US.utf-8"\n },\n {\n "name": "LANG",\n "value": "en_US.utf-8"\n },\n {\n "name": "PATRONI_NAME",\n "valueFrom": {\n "fieldRef": {\n "apiVersion": "v1",\n "fieldPath": "metadata.name"\n }\n }\n },\n {\n "name": "PATRONI_KUBERNETES_POD_IP",\n "valueFrom": {\n "fieldRef": {\n "apiVersion": "v1",\n "fieldPath": "status.podIP"\n }\n }\n },\n {\n "name": "PATRONI_KUBERNETES_PORTS",\n "value": "- name: postgres\\n port: 5432\\n protocol: TCP\\n"\n },\n {\n "name": "PATRONI_POSTGRESQL_CONNECT_ADDRESS",\n "value": "$(PATRONI_NAME).additional-volumes-pods:5432"\n },\n {\n "name": "PATRONI_POSTGRESQL_LISTEN",\n "value": "*:5432"\n },\n {\n "name": "PATRONI_POSTGRESQL_CONFIG_DIR",\n "value": "/pgdata/pg18"\n },\n {\n "name": "PATRONI_POSTGRESQL_DATA_DIR",\n "value": "/pgdata/pg18"\n },\n {\n "name": "PATRONI_RESTAPI_CONNECT_ADDRESS",\n "value": "$(PATRONI_NAME).additional-volumes-pods:8008"\n },\n {\n "name": "PATRONI_RESTAPI_LISTEN",\n "value": "*:8008"\n },\n {\n "name": "PATRONICTL_CONFIG_FILE",\n "value": "/etc/patroni"\n },\n {\n "name": "LD_PRELOAD",\n "value": "/usr/lib64/libnss_wrapper.so"\n },\n {\n "name": "NSS_WRAPPER_PASSWD",\n "value": "/tmp/nss_wrapper/postgres/passwd"\n },\n {\n "name": "NSS_WRAPPER_GROUP",\n "value": "/tmp/nss_wrapper/postgres/group"\n }\n ],\n "image": "docker.io/perconalab/percona-postgresql-operator:main-ppg18-postgres",\n "imagePullPolicy": "Always",\n "livenessProbe": {\n "exec": {\n "command": [\n "bash",\n "-c",\n "/opt/crunchy/bin/postgres-liveness-check.sh"\n ]\n },\n "failureThreshold": 3,\n "initialDelaySeconds": 3,\n "periodSeconds": 10,\n "successThreshold": 1,\n "timeoutSeconds": 5\n },\n "name": "database",\n "ports": [\n {\n "containerPort": 5432,\n "name": "postgres",\n "protocol": "TCP"\n }\n ],\n "readinessProbe": {\n "exec": {\n "command": [\n "bash",\n "-c",\n "/opt/crunchy/bin/postgres-readiness-check.sh"\n ]\n },\n "failureThreshold": 3,\n "initialDelaySeconds": 3,\n "periodSeconds": 10,\n "successThreshold": 1,\n "timeoutSeconds": 5\n },\n "resources": {},\n "securityContext": {\n "allowPrivilegeEscalation": false,\n "capabilities": {\n "drop": [\n "ALL"\n ]\n },\n "privileged": false,\n "readOnlyRootFilesystem": true,\n "runAsNonRoot": true,\n "seccompProfile": {\n "type": "RuntimeDefault"\n }\n },\n "terminationMessagePath": "/dev/termination-log",\n "terminationMessagePolicy": "File",\n "volumeMounts": [\n {\n "mountPath": "/pgconf/tls",\n "name": "cert-volume",\n "readOnly": true\n },\n {\n "mountPath": "/pgdata",\n "name": "postgres-data"\n },\n {\n "mountPath": "/etc/database-containerinfo",\n "name": "database-containerinfo",\n "readOnly": true\n },\n {\n "mountPath": "/tablespaces/myts",\n "name": "tablespace-myts"\n },\n {\n "mountPath": "/pgwal",\n "name": "postgres-wal"\n },\n {\n "mountPath": "/pglogs",\n "name": "postgres-logs"\n },\n {\n "mountPath": "/etc/pgbackrest/conf.d",\n "name": "pgbackrest-config",\n "readOnly": true\n },\n {\n "mountPath": "/etc/patroni",\n "name": "patroni-config",\n "readOnly": true\n },\n {\n "mountPath": "/opt/crunchy",\n "name": "crunchy-bin"\n },\n {\n "mountPath": "/tmp",\n "name": "tmp"\n },\n {\n "mountPath": "/dev/shm",\n "name": "dshm"\n }\n ]\n },\n {\n "command": [\n "bash",\n "-ceu",\n "--",\n "monitor() {\\n# Parameters for curl when managing autogrow annotation.\\nAPISERVER=\\"https://kubernetes.default.svc\\"\\nSERVICEACCOUNT=\\"/var/run/secrets/kubernetes.io/serviceaccount\\"\\nNAMESPACE=$(cat ${SERVICEACCOUNT}/namespace)\\nTOKEN=$(cat ${SERVICEACCOUNT}/token)\\nCACERT=${SERVICEACCOUNT}/ca.crt\\n\\ndeclare -r directory=\\"/pgconf/tls\\"\\nexec {fd}\\u003c\\u003e \\u003c(:||:)\\nwhile read -r -t 5 -u \\"${fd}\\" ||:; do\\n # Manage replication certificate.\\n if [[ \\"${directory}\\" -nt \\"/proc/self/fd/${fd}\\" ]] \\u0026\\u0026\\n install -D --mode=0600 -t \\"/tmp/replication\\" \\"${directory}\\"/{replication/tls.crt,replication/tls.key,replication/ca.crt} \\u0026\\u0026\\n pkill -HUP --exact --parent=1 postgres\\n then\\n exec {fd}\\u003e\\u0026- \\u0026\\u0026 exec {fd}\\u003c\\u003e \\u003c(:||:)\\n stat --format=\'Loaded certificates dated %y\' \\"${directory}\\"\\n fi\\n\\ndone\\n}; export -f monitor; exec -a \\"$0\\" bash -ceu monitor",\n "replication-cert-copy"\n ],\n "image": "docker.io/perconalab/percona-postgresql-operator:main-ppg18-postgres",\n "imagePullPolicy": "Always",\n "name": "replication-cert-copy",\n "resources": {},\n "securityContext": {\n "allowPrivilegeEscalation": false,\n "capabilities": {\n "drop": [\n "ALL"\n ]\n },\n "privileged": false,\n "readOnlyRootFilesystem": true,\n "runAsNonRoot": true,\n "seccompProfile": {\n "type": "RuntimeDefault"\n }\n },\n "terminationMessagePath": "/dev/termination-log",\n "terminationMessagePolicy": "File",\n "volumeMounts": [\n {\n "mountPath": "/pgconf/tls",\n "name": "cert-volume",\n "readOnly": true\n },\n {\n "mountPath": "/pgdata",\n "name": "postgres-data"\n },\n {\n "mountPath": "/tmp",\n "name": "tmp"\n }\n ]\n },\n {\n "args": [\n "fluent-bit"\n ],\n "command": [\n "/opt/crunchy/logcollector/entrypoint.sh"\n ],\n "env": [\n {\n "name": "PG_LOG_DIR",\n "value": "/pgdata/pg18/log"\n },\n {\n "name": "PGBACKREST_LOG_DIR",\n "value": "/pgdata/pgbackrest/log"\n },\n {\n "name": "POD_NAMESPACE",\n "valueFrom": {\n "fieldRef": {\n "apiVersion": "v1",\n "fieldPath": "metadata.namespace"\n }\n }\n },\n {\n "name": "POD_NAME",\n "valueFrom": {\n "fieldRef": {\n "apiVersion": "v1",\n "fieldPath": "metadata.name"\n }\n }\n }\n ],\n "image": "docker.io/perconalab/fluentbit:main-logcollector",\n "imagePullPolicy": "IfNotPresent",\n "name": "logs",\n "resources": {},\n "securityContext": {\n "allowPrivilegeEscalation": false,\n "capabilities": {\n "drop": [\n "ALL"\n ]\n },\n "privileged": false,\n "runAsGroup": 26,\n "runAsNonRoot": true,\n "runAsUser": 26,\n "seccompProfile": {\n "type": "RuntimeDefault"\n }\n },\n "terminationMessagePath": "/dev/termination-log",\n "terminationMessagePolicy": "File",\n "volumeMounts": [\n {\n "mountPath": "/pgdata",\n "name": "postgres-data"\n },\n {\n "mountPath": "/opt/crunchy",\n "name": "crunchy-bin"\n },\n {\n "mountPath": "/tmp",\n "name": "tmp"\n }\n ]\n },\n {\n "args": [\n "logrotate"\n ],\n "command": [\n "/opt/crunchy/logcollector/entrypoint.sh"\n ],\n "env": [\n {\n "name": "POD_NAMESPACE",\n "valueFrom": {\n "fieldRef": {\n "apiVersion": "v1",\n "fieldPath": "metadata.namespace"\n }\n }\n },\n {\n "name": "POD_NAME",\n "valueFrom": {\n "fieldRef": {\n "apiVersion": "v1",\n "fieldPath": "metadata.name"\n }\n }\n },\n {\n "name": "LOGROTATE_SCHEDULE",\n "value": "0 0 * * *"\n },\n {\n "name": "LD_PRELOAD",\n "value": "/tmp/nss_wrapper/libnss_wrapper.so"\n },\n {\n "name": "NSS_WRAPPER_PASSWD",\n "value": "/tmp/nss_wrapper/postgres/passwd"\n },\n {\n "name": "NSS_WRAPPER_GROUP",\n "value": "/tmp/nss_wrapper/postgres/group"\n }\n ],\n "image": "docker.io/perconalab/fluentbit:main-logcollector",\n "imagePullPolicy": "IfNotPresent",\n "name": "logrotate",\n "resources": {},\n "securityContext": {\n "allowPrivilegeEscalation": false,\n "capabilities": {\n "drop": [\n "ALL"\n ]\n },\n "privileged": false,\n "runAsGroup": 26,\n "runAsNonRoot": true,\n "runAsUser": 26,\n "seccompProfile": {\n "type": "RuntimeDefault"\n }\n },\n "terminationMessagePath": "/dev/termination-log",\n "terminationMessagePolicy": "File",\n "volumeMounts": [\n {\n "mountPath": "/pgdata",\n "name": "postgres-data"\n },\n {\n "mountPath": "/opt/crunchy",\n "name": "crunchy-bin"\n },\n {\n "mountPath": "/tmp",\n "name": "tmp"\n }\n ]\n },\n {\n "command": [\n "pgbackrest",\n "server"\n ],\n "env": [\n {\n "name": "LD_PRELOAD",\n "value": "/usr/lib64/libnss_wrapper.so"\n },\n {\n "name": "NSS_WRAPPER_PASSWD",\n "value": "/tmp/nss_wrapper/postgres/passwd"\n },\n {\n "name": "NSS_WRAPPER_GROUP",\n "value": "/tmp/nss_wrapper/postgres/group"\n }\n ],\n "image": "docker.io/perconalab/percona-postgresql-operator:main-pgbackrest18",\n "imagePullPolicy": "Always",\n "livenessProbe": {\n "exec": {\n "command": [\n "pgbackrest",\n "server-ping"\n ]\n },\n "failureThreshold": 3,\n "periodSeconds": 10,\n "successThreshold": 1,\n "timeoutSeconds": 1\n },\n "name": "pgbackrest",\n "resources": {},\n "securityContext": {\n "allowPrivilegeEscalation": false,\n "capabilities": {\n "drop": [\n "ALL"\n ]\n },\n "privileged": false,\n "readOnlyRootFilesystem": true,\n "runAsNonRoot": true,\n "seccompProfile": {\n "type": "RuntimeDefault"\n }\n },\n "terminationMessagePath": "/dev/termination-log",\n "terminationMessagePolicy": "File",\n "volumeMounts": [\n {\n "mountPath": "/etc/pgbackrest/server",\n "name": "pgbackrest-server",\n "readOnly": true\n },\n {\n "mountPath": "/pgdata",\n "name": "postgres-data"\n },\n {\n "mountPath": "/tablespaces/myts",\n "name": "tablespace-myts"\n },\n {\n "mountPath": "/pgwal",\n "name": "postgres-wal"\n },\n {\n "mountPath": "/etc/pgbackrest/conf.d",\n "name": "pgbackrest-config",\n "readOnly": true\n },\n {\n "mountPath": "/tmp",\n "name": "tmp"\n }\n ]\n },\n {\n "command": [\n "bash",\n "-ceu",\n "--",\n "monitor() {\\nexec {fd}\\u003c\\u003e \\u003c(:||:)\\nuntil read -r -t 5 -u \\"${fd}\\"; do\\n if\\n [[ \\"${filename}\\" -nt \\"/proc/self/fd/${fd}\\" ]] \\u0026\\u0026\\n pkill -HUP --exact --parent=0 pgbackrest\\n then\\n exec {fd}\\u003e\\u0026- \\u0026\\u0026 exec {fd}\\u003c\\u003e \\u003c(:||:)\\n stat --dereference --format=\'Loaded configuration dated %y\' \\"${filename}\\"\\n elif\\n { [[ \\"${directory}\\" -nt \\"/proc/self/fd/${fd}\\" ]] ||\\n [[ \\"${authority}\\" -nt \\"/proc/self/fd/${fd}\\" ]]\\n } \\u0026\\u0026\\n pkill -HUP --exact --parent=0 pgbackrest\\n then\\n exec {fd}\\u003e\\u0026- \\u0026\\u0026 exec {fd}\\u003c\\u003e \\u003c(:||:)\\n stat --format=\'Loaded certificates dated %y\' \\"${directory}\\"\\n fi\\ndone\\n}; export directory=\\"$1\\" authority=\\"$2\\" filename=\\"$3\\"; export -f monitor; exec -a \\"$0\\" bash -ceu monitor",\n "pgbackrest-config",\n "/etc/pgbackrest/server",\n "/etc/pgbackrest/conf.d/~postgres-operator/tls-ca.crt",\n "/etc/pgbackrest/conf.d/~postgres-operator_server.conf"\n ],\n "image": "docker.io/perconalab/percona-postgresql-operator:main-pgbackrest18",\n "imagePullPolicy": "Always",\n "name": "pgbackrest-config",\n "resources": {},\n "securityContext": {\n "allowPrivilegeEscalation": false,\n "capabilities": {\n "drop": [\n "ALL"\n ]\n },\n "privileged": false,\n "readOnlyRootFilesystem": true,\n "runAsNonRoot": true,\n "seccompProfile": {\n "type": "RuntimeDefault"\n }\n },\n "terminationMessagePath": "/dev/termination-log",\n "terminationMessagePolicy": "File",\n "volumeMounts": [\n {\n "mountPath": "/etc/pgbackrest/server",\n "name": "pgbackrest-server",\n "readOnly": true\n },\n {\n "mountPath": "/etc/pgbackrest/conf.d",\n "name": "pgbackrest-config",\n "readOnly": true\n },\n {\n "mountPath": "/tmp",\n "name": "tmp"\n }\n ]\n }\n ],\n "dnsPolicy": "ClusterFirst",\n "enableServiceLinks": false,\n "initContainers": [\n {\n "command": [\n "/usr/local/bin/init-entrypoint.sh"\n ],\n "image": "docker.io/perconalab/percona-postgresql-operator:PR-1760-4947a0272",\n "imagePullPolicy": "Always",\n "name": "database-init",\n "resources": {},\n "securityContext": {\n "allowPrivilegeEscalation": false,\n "capabilities": {\n "drop": [\n "ALL"\n ]\n },\n "privileged": false,\n "readOnlyRootFilesystem": true,\n "runAsNonRoot": true,\n "seccompProfile": {\n "type": "RuntimeDefault"\n }\n },\n "terminationMessagePath": "/dev/termination-log",\n "terminationMessagePolicy": "File",\n "volumeMounts": [\n {\n "mountPath": "/opt/crunchy",\n "name": "crunchy-bin"\n },\n {\n "mountPath": "/tmp",\n "name": "tmp"\n }\n ]\n },\n {\n "command": [\n "bash",\n "-ceu",\n "--",\n "declare -r expected_major_version=\\"$1\\" pgwal_directory=\\"$2\\" pgbrLog_directory=\\"$3\\"\\npermissions() { while [[ -n \\"$1\\" ]]; do set \\"${1%/*}\\" \\"$@\\"; done; shift; stat -Lc \'%A %4u %4g %n\' \\"$@\\"; }\\nhalt() { local rc=$?; \\u003e\\u00262 echo \\"$@\\"; exit \\"${rc/#0/1}\\"; }\\nresults() { printf \'::postgres-operator: %s::%s\\\\n\' \\"$@\\"; }\\nrecreate() (\\n local tmp; tmp=$(mktemp -d -p \\"${1%/*}\\"); GLOBIGNORE=\'.:..\'; set -x\\n chmod \\"$2\\" \\"${tmp}\\"; mv \\"$1\\"/* \\"${tmp}\\"; rmdir \\"$1\\"; mv \\"${tmp}\\" \\"$1\\"\\n)\\nsafelink() (\\n local desired=\\"$1\\" name=\\"$2\\" current\\n current=$(realpath \\"${name}\\")\\n if [[ \\"${current}\\" == \\"${desired}\\" ]]; then return; fi\\n set -x; mv --no-target-directory \\"${current}\\" \\"${desired}\\"\\n ln --no-dereference --force --symbolic \\"${desired}\\" \\"${name}\\"\\n)\\necho Initializing ...\\nresults \'uid\' \\"$(id -u ||:)\\" \'gid\' \\"$(id -G ||:)\\"\\nif [[ \\"${pgwal_directory}\\" == *\\"pgwal/\\"* ]] \\u0026\\u0026 [[ ! -d \\"/pgwal/pgbackrest-spool\\" ]];then rm -rf \\"/pgdata/pgbackrest-spool\\" \\u0026\\u0026 mkdir -p \\"/pgwal/pgbackrest-spool\\" \\u0026\\u0026 ln --force --symbolic \\"/pgwal/pgbackrest-spool\\" \\"/pgdata/pgbackrest-spool\\";fi\\nif [[ ! -e \\"/pgdata/pgbackrest-spool\\" ]];then rm -rf /pgdata/pgbackrest-spool;fi\\nif [[ ! -e \\"/pgdata/logs/postgres\\" ]];then rm -rf \\"/pgdata/logs/postgres\\";fi\\nif [[ ! -e \\"${pgbrLog_directory}\\" ]];then rm -rf \\"${pgbrLog_directory}\\";fi\\nif [[ -d \\"/pglogs\\" ]];then install --directory --mode=0775 \\"/pglogs/postgres\\" \\"/pglogs/pgbackrest/log\\";if [[ ! -L \\"/pgdata/logs/postgres\\" ]];then mkdir -p \\"/pgdata/logs\\" \\u0026\\u0026 rm -rf \\"/pgdata/logs/postgres\\" \\u0026\\u0026 ln --symbolic \\"/pglogs/postgres\\" \\"/pgdata/logs/postgres\\";fi;if [[ ! -L \\"${pgbrLog_directory}\\" ]];then mkdir -p \\"${pgbrLog_directory%/*}\\" \\u0026\\u0026 rm -rf \\"${pgbrLog_directory}\\" \\u0026\\u0026 ln --symbolic \\"/pglogs/pgbackrest/log\\" \\"${pgbrLog_directory}\\";fi;fi\\nresults \'postgres path\' \\"$(command -v postgres ||:)\\"\\nresults \'postgres version\' \\"${postgres_version:=$(postgres --version ||:)}\\"\\n[[ \\"${postgres_version}\\" =~ \\") ${expected_major_version}\\"($|[^0-9]) ]] ||\\nhalt Expected PostgreSQL version \\"${expected_major_version}\\"\\nresults \'config directory\' \\"${PGDATA:?}\\"\\npostgres_data_directory=$([[ -d \\"${PGDATA}\\" ]] \\u0026\\u0026 postgres -C data_directory || echo \\"${PGDATA}\\")\\nresults \'data directory\' \\"${postgres_data_directory}\\"\\n[[ \\"${postgres_data_directory}\\" == \\"${PGDATA}\\" ]] ||\\nhalt Expected matching config and data directories\\nbootstrap_dir=\\"${postgres_data_directory}_bootstrap\\"\\n[[ -d \\"${bootstrap_dir}\\" ]] \\u0026\\u0026 results \'bootstrap directory\' \\"${bootstrap_dir}\\"\\n[[ -d \\"${bootstrap_dir}\\" ]] \\u0026\\u0026 postgres_data_directory=\\"${bootstrap_dir}\\"\\nif [[ ! -e \\"${postgres_data_directory}\\" || -O \\"${postgres_data_directory}\\" ]]; then\\ninstall --directory --mode=0700 \\"${postgres_data_directory}\\"\\nelif [[ -w \\"${postgres_data_directory}\\" \\u0026\\u0026 -g \\"${postgres_data_directory}\\" ]]; then\\nrecreate \\"${postgres_data_directory}\\" \'0700\'\\nelse (halt Permissions!); fi ||\\nhalt \\"$(permissions \\"${postgres_data_directory}\\" ||:)\\"\\nresults \'pgBackRest log directory\' \\"${pgbrLog_directory}\\"\\ninstall --directory --mode=0775 \\"${pgbrLog_directory}\\" ||\\nhalt \\"$(permissions \\"${pgbrLog_directory}\\" ||:)\\"\\ninstall -D --mode=0600 -t \\"/tmp/replication\\" \\"/pgconf/tls/replication\\"/{tls.crt,tls.key,ca.crt}\\n\\ntablespace_dir=/tablespaces/myts/data\\nif [[ ! -e \\"${tablespace_dir}\\" || -O \\"${tablespace_dir}\\" ]]; then\\ninstall --directory --mode=0700 \\"${tablespace_dir}\\"\\nelif [[ -w \\"${tablespace_dir}\\" \\u0026\\u0026 -g \\"${tablespace_dir}\\" ]]; then\\nrecreate \\"${tablespace_dir}\\" \'0700\'\\nelse (halt Permissions!); fi ||\\nhalt \\"$(permissions \\"${tablespace_dir}\\" ||:)\\"\\n[[ -f \\"${postgres_data_directory}/PG_VERSION\\" ]] || exit 0\\nresults \'data version\' \\"${postgres_data_version:=$(\\u003c \\"${postgres_data_directory}/PG_VERSION\\")}\\"\\n[[ \\"${postgres_data_version}\\" == \\"${expected_major_version}\\" ]] ||\\nhalt Expected PostgreSQL data version \\"${expected_major_version}\\"\\n[[ ! -f \\"${postgres_data_directory}/postgresql.conf\\" ]] \\u0026\\u0026\\ntouch \\"${postgres_data_directory}/postgresql.conf\\"\\nsafelink \\"${pgwal_directory}\\" \\"${postgres_data_directory}/pg_wal\\"\\nresults \'wal directory\' \\"$(realpath \\"${postgres_data_directory}/pg_wal\\" ||:)\\"\\nrm -f \\"${postgres_data_directory}/recovery.signal\\"",\n "startup",\n "18",\n "/pgwal/pg18_wal",\n "/pgdata/pgbackrest/log"\n ],\n "env": [\n {\n "name": "PGDATA",\n "value": "/pgdata/pg18"\n },\n {\n "name": "PGHOST",\n "value": "/tmp/postgres"\n },\n {\n "name": "PGPORT",\n "value": "5432"\n },\n {\n "name": "KRB5_CONFIG",\n "value": "/etc/postgres/krb5.conf"\n },\n {\n "name": "KRB5RCACHEDIR",\n "value": "/tmp"\n },\n {\n "name": "LDAPTLS_CACERT",\n "value": "/etc/postgres/ldap/ca.crt"\n },\n {\n "name": "LC_ALL",\n "value": "en_US.utf-8"\n },\n {\n "name": "LANG",\n "value": "en_US.utf-8"\n }\n ],\n "image": "docker.io/perconalab/percona-postgresql-operator:main-ppg18-postgres",\n "imagePullPolicy": "Always",\n "name": "postgres-startup",\n "resources": {},\n "securityContext": {\n "allowPrivilegeEscalation": false,\n "capabilities": {\n "drop": [\n "ALL"\n ]\n },\n "privileged": false,\n "readOnlyRootFilesystem": true,\n "runAsNonRoot": true,\n "seccompProfile": {\n "type": "RuntimeDefault"\n }\n },\n "terminationMessagePath": "/dev/termination-log",\n "terminationMessagePolicy": "File",\n "volumeMounts": [\n {\n "mountPath": "/pgconf/tls",\n "name": "cert-volume",\n "readOnly": true\n },\n {\n "mountPath": "/pgdata",\n "name": "postgres-data"\n },\n {\n "mountPath": "/tablespaces/myts",\n "name": "tablespace-myts"\n },\n {\n "mountPath": "/pgwal",\n "name": "postgres-wal"\n },\n {\n "mountPath": "/pglogs",\n "name": "postgres-logs"\n },\n {\n "mountPath": "/tmp",\n "name": "tmp"\n }\n ]\n },\n {\n "command": [\n "bash",\n "-c",\n "mkdir -p /tmp/nss_wrapper \\u0026\\u0026 { [[ -f /tmp/nss_wrapper/libnss_wrapper.so ]] || cp /usr/lib64/libnss_wrapper.so /tmp/nss_wrapper/libnss_wrapper.so; }"\n ],\n "image": "docker.io/perconalab/percona-postgresql-operator:main-ppg18-postgres",\n "imagePullPolicy": "Always",\n "name": "nss-wrapper-init-logcollector",\n "resources": {},\n "securityContext": {\n "allowPrivilegeEscalation": false,\n "capabilities": {\n "drop": [\n "ALL"\n ]\n },\n "privileged": false,\n "runAsGroup": 26,\n "runAsNonRoot": true,\n "runAsUser": 26,\n "seccompProfile": {\n "type": "RuntimeDefault"\n }\n },\n "terminationMessagePath": "/dev/termination-log",\n "terminationMessagePolicy": "File",\n "volumeMounts": [\n {\n "mountPath": "/tmp",\n "name": "tmp"\n }\n ]\n },\n {\n "command": [\n "bash",\n "-c",\n "export NSS_WRAPPER_SUBDIR=postgres CRUNCHY_NSS_USERNAME=postgres CRUNCHY_NSS_USER_DESC=\\"postgres\\" \\n# Define nss_wrapper directory and passwd \\u0026 group files that will be utilized by nss_wrapper. The\\n# nss_wrapper_env.sh script (which also sets these vars) isn\'t sourced here since the nss_wrapper\\n# has not yet been setup, and we therefore don\'t yet want the nss_wrapper vars in the environment.\\nmkdir -p /tmp/nss_wrapper\\nchmod g+rwx /tmp/nss_wrapper\\n\\nNSS_WRAPPER_DIR=\\"/tmp/nss_wrapper/${NSS_WRAPPER_SUBDIR}\\"\\nNSS_WRAPPER_PASSWD=\\"${NSS_WRAPPER_DIR}/passwd\\"\\nNSS_WRAPPER_GROUP=\\"${NSS_WRAPPER_DIR}/group\\"\\n\\n# create the nss_wrapper directory\\nmkdir -p \\"${NSS_WRAPPER_DIR}\\"\\n\\n# grab the current user ID and group ID\\nUSER_ID=$(id -u)\\nexport USER_ID\\nGROUP_ID=$(id -g)\\nexport GROUP_ID\\n\\n# get copies of the passwd and group files\\n[[ -f \\"${NSS_WRAPPER_PASSWD}\\" ]] || cp \\"/etc/passwd\\" \\"${NSS_WRAPPER_PASSWD}\\"\\n[[ -f \\"${NSS_WRAPPER_GROUP}\\" ]] || cp \\"/etc/group\\" \\"${NSS_WRAPPER_GROUP}\\"\\n\\n# if the username is missing from the passwd file, then add it\\nif [[ ! $(cat \\"${NSS_WRAPPER_PASSWD}\\") =~ ${CRUNCHY_NSS_USERNAME}:x:${USER_ID} ]]; then\\n echo \\"nss_wrapper: adding user\\"\\n passwd_tmp=\\"${NSS_WRAPPER_DIR}/passwd_tmp\\"\\n cp \\"${NSS_WRAPPER_PASSWD}\\" \\"${passwd_tmp}\\"\\n sed -i \\"/${CRUNCHY_NSS_USERNAME}:x:/d\\" \\"${passwd_tmp}\\"\\n # needed for OCP 4.x because crio updates /etc/passwd with an entry for USER_ID\\n sed -i \\"/${USER_ID}:x:/d\\" \\"${passwd_tmp}\\"\\n printf \'${CRUNCHY_NSS_USERNAME}:x:${USER_ID}:${GROUP_ID}:${CRUNCHY_NSS_USER_DESC}:${HOME}:/bin/bash\\\\n\' \\u003e\\u003e \\"${passwd_tmp}\\"\\n envsubst \\u003c \\"${passwd_tmp}\\" \\u003e \\"${NSS_WRAPPER_PASSWD}\\"\\n rm \\"${passwd_tmp}\\"\\nelse\\n echo \\"nss_wrapper: user exists\\"\\nfi\\n\\n# if the username (which will be the same as the group name) is missing from group file, then add it\\nif [[ ! $(cat \\"${NSS_WRAPPER_GROUP}\\") =~ ${CRUNCHY_NSS_USERNAME}:x:${USER_ID} ]]; then\\n echo \\"nss_wrapper: adding group\\"\\n group_tmp=\\"${NSS_WRAPPER_DIR}/group_tmp\\"\\n cp \\"${NSS_WRAPPER_GROUP}\\" \\"${group_tmp}\\"\\n sed -i \\"/${CRUNCHY_NSS_USERNAME}:x:/d\\" \\"${group_tmp}\\"\\n printf \'${CRUNCHY_NSS_USERNAME}:x:${USER_ID}:${CRUNCHY_NSS_USERNAME}\\\\n\' \\u003e\\u003e \\"${group_tmp}\\"\\n envsubst \\u003c \\"${group_tmp}\\" \\u003e \\"${NSS_WRAPPER_GROUP}\\"\\n rm \\"${group_tmp}\\"\\nelse\\n echo \\"nss_wrapper: group exists\\"\\nfi\\n\\n# export the nss_wrapper env vars\\n# define nss_wrapper directory and passwd \\u0026 group files that will be utilized by nss_wrapper\\nNSS_WRAPPER_DIR=\\"/tmp/nss_wrapper/${NSS_WRAPPER_SUBDIR}\\"\\nNSS_WRAPPER_PASSWD=\\"${NSS_WRAPPER_DIR}/passwd\\"\\nNSS_WRAPPER_GROUP=\\"${NSS_WRAPPER_DIR}/group\\"\\n\\nexport LD_PRELOAD=/usr/lib64/libnss_wrapper.so\\nexport NSS_WRAPPER_PASSWD=\\"${NSS_WRAPPER_PASSWD}\\"\\nexport NSS_WRAPPER_GROUP=\\"${NSS_WRAPPER_GROUP}\\"\\n\\necho \\"nss_wrapper: environment configured\\"\\n"\n ],\n "image": "docker.io/perconalab/percona-postgresql-operator:main-ppg18-postgres",\n "imagePullPolicy": "Always",\n "name": "nss-wrapper-init",\n "resources": {},\n "securityContext": {\n "allowPrivilegeEscalation": false,\n "capabilities": {\n "drop": [\n "ALL"\n ]\n },\n "privileged": false,\n "readOnlyRootFilesystem": true,\n "runAsNonRoot": true,\n "seccompProfile": {\n "type": "RuntimeDefault"\n }\n },\n "terminationMessagePath": "/dev/termination-log",\n "terminationMessagePolicy": "File",\n "volumeMounts": [\n {\n "mountPath": "/tmp",\n "name": "tmp"\n }\n ]\n }\n ],\n "restartPolicy": "Always",\n "schedulerName": "default-scheduler",\n "securityContext": {\n "fsGroup": 26,\n "fsGroupChangePolicy": "OnRootMismatch"\n },\n "serviceAccount": "additional-volumes-instance",\n "serviceAccountName": "additional-volumes-instance",\n "shareProcessNamespace": true,\n "terminationGracePeriodSeconds": 30,\n "topologySpreadConstraints": [\n {\n "labelSelector": {\n "matchExpressions": [\n {\n "key": "postgres-operator.crunchydata.com/data",\n "operator": "In",\n "values": [\n "postgres",\n "pgbackrest"\n ]\n }\n ],\n "matchLabels": {\n "postgres-operator.crunchydata.com/cluster": "additional-volumes"\n }\n },\n "maxSkew": 1,\n "topologyKey": "kubernetes.io/hostname",\n "whenUnsatisfiable": "ScheduleAnyway"\n },\n {\n "labelSelector": {\n "matchExpressions": [\n {\n "key": "postgres-operator.crunchydata.com/data",\n "operator": "In",\n "values": [\n "postgres",\n "pgbackrest"\n ]\n }\n ],\n "matchLabels": {\n "postgres-operator.crunchydata.com/cluster": "additional-volumes"\n }\n },\n "maxSkew": 1,\n "topologyKey": "topology.kubernetes.io/zone",\n "whenUnsatisfiable": "ScheduleAnyway"\n }\n ],\n "volumes": [\n {\n "name": "cert-volume",\n "projected": {\n "defaultMode": 384,\n "sources": [\n {\n "secret": {\n "items": [\n {\n "key": "tls.crt",\n "path": "tls.crt"\n },\n {\n "key": "tls.key",\n "path": "tls.key"\n },\n {\n "key": "ca.crt",\n "path": "ca.crt"\n }\n ],\n "name": "additional-volumes-cluster-cert"\n }\n },\n {\n "secret": {\n "items": [\n {\n "key": "tls.crt",\n "path": "replication/tls.crt"\n },\n {\n "key": "tls.key",\n "path": "replication/tls.key"\n },\n {\n "key": "ca.crt",\n "path": "replication/ca.crt"\n }\n ],\n "name": "additional-volumes-replication-cert"\n }\n }\n ]\n }\n },\n {\n "name": "postgres-data",\n "persistentVolumeClaim": {\n "claimName": "additional-volumes-instance1-xvbw-pgdata"\n }\n },\n {\n "downwardAPI": {\n "defaultMode": 420,\n "items": [\n {\n "path": "cpu_limit",\n "resourceFieldRef": {\n "containerName": "database",\n "divisor": "1m",\n "resource": "limits.cpu"\n }\n },\n {\n "path": "cpu_request",\n "resourceFieldRef": {\n "containerName": "database",\n "divisor": "1m",\n "resource": "requests.cpu"\n }\n },\n {\n "path": "mem_limit",\n "resourceFieldRef": {\n "containerName": "database",\n "divisor": "1Mi",\n "resource": "limits.memory"\n }\n },\n {\n "path": "mem_request",\n "resourceFieldRef": {\n "containerName": "database",\n "divisor": "1Mi",\n "resource": "requests.memory"\n }\n },\n {\n "fieldRef": {\n "apiVersion": "v1",\n "fieldPath": "metadata.labels"\n },\n "path": "labels"\n },\n {\n "fieldRef": {\n "apiVersion": "v1",\n "fieldPath": "metadata.annotations"\n },\n "path": "annotations"\n }\n ]\n },\n "name": "database-containerinfo"\n },\n {\n "name": "tablespace-myts",\n "persistentVolumeClaim": {\n "claimName": "additional-volumes-instance1-xvbw-myts-tablespace"\n }\n },\n {\n "name": "postgres-wal",\n "persistentVolumeClaim": {\n "claimName": "additional-volumes-instance1-xvbw-pgwal"\n }\n },\n {\n "name": "postgres-logs",\n "persistentVolumeClaim": {\n "claimName": "additional-volumes-instance1-xvbw-pglogs"\n }\n },\n {\n "name": "pgbackrest-server",\n "projected": {\n "defaultMode": 420,\n "sources": [\n {\n "secret": {\n "items": [\n {\n "key": "pgbackrest-server.crt",\n "path": "server-tls.crt"\n },\n {\n "key": "pgbackrest-server.key",\n "mode": 384,\n "path": "server-tls.key"\n }\n ],\n "name": "additional-volumes-instance1-xvbw-certs"\n }\n }\n ]\n }\n },\n {\n "name": "pgbackrest-config",\n "projected": {\n "defaultMode": 420,\n "sources": [\n {\n "configMap": {\n "items": [\n {\n "key": "pgbackrest_instance.conf",\n "path": "pgbackrest_instance.conf"\n },\n {\n "key": "config-hash",\n "path": "config-hash"\n },\n {\n "key": "pgbackrest-server.conf",\n "path": "~postgres-operator_server.conf"\n }\n ],\n "name": "additional-volumes-pgbackrest-config"\n }\n },\n {\n "secret": {\n "items": [\n {\n "key": "pgbackrest.ca-roots",\n "path": "~postgres-operator/tls-ca.crt"\n },\n {\n "key": "pgbackrest-client.crt",\n "path": "~postgres-operator/client-tls.crt"\n },\n {\n "key": "pgbackrest-client.key",\n "mode": 384,\n "path": "~postgres-operator/client-tls.key"\n }\n ],\n "name": "additional-volumes-pgbackrest"\n }\n }\n ]\n }\n },\n {\n "name": "patroni-config",\n "projected": {\n "defaultMode": 420,\n "sources": [\n {\n "configMap": {\n "items": [\n {\n "key": "patroni.yaml",\n "path": "~postgres-operator_cluster.yaml"\n }\n ],\n "name": "additional-volumes-config"\n }\n },\n {\n "configMap": {\n "items": [\n {\n "key": "patroni.yaml",\n "path": "~postgres-operator_instance.yaml"\n }\n ],\n "name": "additional-volumes-instance1-xvbw-config"\n }\n },\n {\n "secret": {\n "items": [\n {\n "key": "patroni.ca-roots",\n "path": "~postgres-operator/patroni.ca-roots"\n },\n {\n "key": "patroni.crt-combined",\n "path": "~postgres-operator/patroni.crt+key"\n }\n ],\n "name": "additional-volumes-instance1-xvbw-certs"\n }\n }\n ]\n }\n },\n {\n "emptyDir": {},\n "name": "crunchy-bin"\n },\n {\n "emptyDir": {\n "sizeLimit": "2Gi"\n },\n "name": "tmp"\n },\n {\n "emptyDir": {\n "medium": "Memory"\n },\n "name": "dshm"\n }\n ]\n }\n },\n "updateStrategy": {\n "type": "OnDelete"\n }\n },\n "status": {\n "availableReplicas": 1,\n "collisionCount": 0,\n "currentReplicas": 1,\n "currentRevision": "additional-volumes-instance1-xvbw-7dcb456674",\n "observedGeneration": 1,\n "readyReplicas": 1,\n "replicas": 1,\n "updateRevision": "additional-volumes-instance1-xvbw-7dcb456674",\n "updatedReplicas": 1\n }\n }\n ],\n "kind": "List",\n "metadata": {\n "resourceVersion": ""\n }\n}' logger.go:42: 18:13:51 | additional-volumes/2-verify-volumes | + i=1 logger.go:42: 18:13:51 | additional-volumes/2-verify-volumes | ++ get_instance_set_pods instance1 logger.go:42: 18:13:51 | additional-volumes/2-verify-volumes | ++ local instance=instance1 logger.go:42: 18:13:51 | additional-volumes/2-verify-volumes | ++ kubectl get pods -n kuttl-test-intimate-garfish --selector postgres-operator.crunchydata.com/instance-set=instance1 -o custom-columns=NAME:.metadata.name --no-headers logger.go:42: 18:13:51 | additional-volumes/2-verify-volumes | + for pod in $(get_instance_set_pods instance1) logger.go:42: 18:13:51 | additional-volumes/2-verify-volumes | + kubectl -n kuttl-test-intimate-garfish exec additional-volumes-instance1-24br-0 -c database -- grep -q ' /pgwal ' /proc/mounts logger.go:42: 18:13:52 | additional-volumes/2-verify-volumes | + kubectl -n kuttl-test-intimate-garfish exec additional-volumes-instance1-24br-0 -c database -- grep -q ' /pglogs ' /proc/mounts logger.go:42: 18:13:54 | additional-volumes/2-verify-volumes | + check_additional_volume_symlinks additional-volumes-instance1-24br-0 'on start' logger.go:42: 18:13:54 | additional-volumes/2-verify-volumes | + local pod=additional-volumes-instance1-24br-0 logger.go:42: 18:13:54 | additional-volumes/2-verify-volumes | + local 'when=on start' logger.go:42: 18:13:54 | additional-volumes/2-verify-volumes | + local pair link want target logger.go:42: 18:13:54 | additional-volumes/2-verify-volumes | + for pair in "/pgdata/pg${PG_VER}/pg_wal=/pgwal/pg${PG_VER}_wal" "/pgdata/pgbackrest-spool=/pgwal/pgbackrest-spool" "/pgdata/logs/postgres=/pglogs/postgres" "/pgdata/pgbackrest/log=/pglogs/pgbackrest/log" logger.go:42: 18:13:54 | additional-volumes/2-verify-volumes | + link=/pgdata/pg18/pg_wal logger.go:42: 18:13:54 | additional-volumes/2-verify-volumes | + want=/pgwal/pg18_wal logger.go:42: 18:13:54 | additional-volumes/2-verify-volumes | ++ kubectl -n kuttl-test-intimate-garfish exec additional-volumes-instance1-24br-0 -c database -- readlink /pgdata/pg18/pg_wal logger.go:42: 18:13:55 | additional-volumes/2-verify-volumes | + target=/pgwal/pg18_wal logger.go:42: 18:13:55 | additional-volumes/2-verify-volumes | + [[ /pgwal/pg18_wal != /pgwal/pg18_wal ]] logger.go:42: 18:13:55 | additional-volumes/2-verify-volumes | + for pair in "/pgdata/pg${PG_VER}/pg_wal=/pgwal/pg${PG_VER}_wal" "/pgdata/pgbackrest-spool=/pgwal/pgbackrest-spool" "/pgdata/logs/postgres=/pglogs/postgres" "/pgdata/pgbackrest/log=/pglogs/pgbackrest/log" logger.go:42: 18:13:55 | additional-volumes/2-verify-volumes | + link=/pgdata/pgbackrest-spool logger.go:42: 18:13:55 | additional-volumes/2-verify-volumes | + want=/pgwal/pgbackrest-spool logger.go:42: 18:13:55 | additional-volumes/2-verify-volumes | ++ kubectl -n kuttl-test-intimate-garfish exec additional-volumes-instance1-24br-0 -c database -- readlink /pgdata/pgbackrest-spool logger.go:42: 18:13:56 | additional-volumes/2-verify-volumes | + target=/pgwal/pgbackrest-spool logger.go:42: 18:13:56 | additional-volumes/2-verify-volumes | + [[ /pgwal/pgbackrest-spool != /pgwal/pgbackrest\-spool ]] logger.go:42: 18:13:56 | additional-volumes/2-verify-volumes | + for pair in "/pgdata/pg${PG_VER}/pg_wal=/pgwal/pg${PG_VER}_wal" "/pgdata/pgbackrest-spool=/pgwal/pgbackrest-spool" "/pgdata/logs/postgres=/pglogs/postgres" "/pgdata/pgbackrest/log=/pglogs/pgbackrest/log" logger.go:42: 18:13:56 | additional-volumes/2-verify-volumes | + link=/pgdata/logs/postgres logger.go:42: 18:13:56 | additional-volumes/2-verify-volumes | + want=/pglogs/postgres logger.go:42: 18:13:56 | additional-volumes/2-verify-volumes | ++ kubectl -n kuttl-test-intimate-garfish exec additional-volumes-instance1-24br-0 -c database -- readlink /pgdata/logs/postgres logger.go:42: 18:13:57 | additional-volumes/2-verify-volumes | + target=/pglogs/postgres logger.go:42: 18:13:57 | additional-volumes/2-verify-volumes | + [[ /pglogs/postgres != /pglogs/postgres ]] logger.go:42: 18:13:57 | additional-volumes/2-verify-volumes | + for pair in "/pgdata/pg${PG_VER}/pg_wal=/pgwal/pg${PG_VER}_wal" "/pgdata/pgbackrest-spool=/pgwal/pgbackrest-spool" "/pgdata/logs/postgres=/pglogs/postgres" "/pgdata/pgbackrest/log=/pglogs/pgbackrest/log" logger.go:42: 18:13:57 | additional-volumes/2-verify-volumes | + link=/pgdata/pgbackrest/log logger.go:42: 18:13:57 | additional-volumes/2-verify-volumes | + want=/pglogs/pgbackrest/log logger.go:42: 18:13:57 | additional-volumes/2-verify-volumes | ++ kubectl -n kuttl-test-intimate-garfish exec additional-volumes-instance1-24br-0 -c database -- readlink /pgdata/pgbackrest/log logger.go:42: 18:13:58 | additional-volumes/2-verify-volumes | + target=/pglogs/pgbackrest/log logger.go:42: 18:13:58 | additional-volumes/2-verify-volumes | + [[ /pglogs/pgbackrest/log != /pglogs/pgbackrest/log ]] logger.go:42: 18:13:58 | additional-volumes/2-verify-volumes | + kubectl -n kuttl-test-intimate-garfish exec additional-volumes-instance1-24br-0 -c database -- test -d /pglogs/postgres -a -d /pglogs/pgbackrest/log logger.go:42: 18:14:00 | additional-volumes/2-verify-volumes | ++ kubectl -n kuttl-test-intimate-garfish exec additional-volumes-instance1-24br-0 -c database -- ls /tablespaces logger.go:42: 18:14:01 | additional-volumes/2-verify-volumes | + path=myts logger.go:42: 18:14:01 | additional-volumes/2-verify-volumes | + kubectl create configmap -n kuttl-test-intimate-garfish 02-ts-path-1 --from-literal=path=/tablespaces/myts logger.go:42: 18:14:01 | additional-volumes/2-verify-volumes | configmap/02-ts-path-1 created logger.go:42: 18:14:01 | additional-volumes/2-verify-volumes | + i=2 logger.go:42: 18:14:01 | additional-volumes/2-verify-volumes | + for pod in $(get_instance_set_pods instance1) logger.go:42: 18:14:01 | additional-volumes/2-verify-volumes | + kubectl -n kuttl-test-intimate-garfish exec additional-volumes-instance1-n8pg-0 -c database -- grep -q ' /pgwal ' /proc/mounts logger.go:42: 18:14:02 | additional-volumes/2-verify-volumes | + kubectl -n kuttl-test-intimate-garfish exec additional-volumes-instance1-n8pg-0 -c database -- grep -q ' /pglogs ' /proc/mounts logger.go:42: 18:14:04 | additional-volumes/2-verify-volumes | + check_additional_volume_symlinks additional-volumes-instance1-n8pg-0 'on start' logger.go:42: 18:14:04 | additional-volumes/2-verify-volumes | + local pod=additional-volumes-instance1-n8pg-0 logger.go:42: 18:14:04 | additional-volumes/2-verify-volumes | + local 'when=on start' logger.go:42: 18:14:04 | additional-volumes/2-verify-volumes | + local pair link want target logger.go:42: 18:14:04 | additional-volumes/2-verify-volumes | + for pair in "/pgdata/pg${PG_VER}/pg_wal=/pgwal/pg${PG_VER}_wal" "/pgdata/pgbackrest-spool=/pgwal/pgbackrest-spool" "/pgdata/logs/postgres=/pglogs/postgres" "/pgdata/pgbackrest/log=/pglogs/pgbackrest/log" logger.go:42: 18:14:04 | additional-volumes/2-verify-volumes | + link=/pgdata/pg18/pg_wal logger.go:42: 18:14:04 | additional-volumes/2-verify-volumes | + want=/pgwal/pg18_wal logger.go:42: 18:14:04 | additional-volumes/2-verify-volumes | ++ kubectl -n kuttl-test-intimate-garfish exec additional-volumes-instance1-n8pg-0 -c database -- readlink /pgdata/pg18/pg_wal logger.go:42: 18:14:05 | additional-volumes/2-verify-volumes | + target=/pgwal/pg18_wal logger.go:42: 18:14:05 | additional-volumes/2-verify-volumes | + [[ /pgwal/pg18_wal != /pgwal/pg18_wal ]] logger.go:42: 18:14:05 | additional-volumes/2-verify-volumes | + for pair in "/pgdata/pg${PG_VER}/pg_wal=/pgwal/pg${PG_VER}_wal" "/pgdata/pgbackrest-spool=/pgwal/pgbackrest-spool" "/pgdata/logs/postgres=/pglogs/postgres" "/pgdata/pgbackrest/log=/pglogs/pgbackrest/log" logger.go:42: 18:14:05 | additional-volumes/2-verify-volumes | + link=/pgdata/pgbackrest-spool logger.go:42: 18:14:05 | additional-volumes/2-verify-volumes | + want=/pgwal/pgbackrest-spool logger.go:42: 18:14:05 | additional-volumes/2-verify-volumes | ++ kubectl -n kuttl-test-intimate-garfish exec additional-volumes-instance1-n8pg-0 -c database -- readlink /pgdata/pgbackrest-spool logger.go:42: 18:14:06 | additional-volumes/2-verify-volumes | + target=/pgwal/pgbackrest-spool logger.go:42: 18:14:06 | additional-volumes/2-verify-volumes | + [[ /pgwal/pgbackrest-spool != /pgwal/pgbackrest\-spool ]] logger.go:42: 18:14:06 | additional-volumes/2-verify-volumes | + for pair in "/pgdata/pg${PG_VER}/pg_wal=/pgwal/pg${PG_VER}_wal" "/pgdata/pgbackrest-spool=/pgwal/pgbackrest-spool" "/pgdata/logs/postgres=/pglogs/postgres" "/pgdata/pgbackrest/log=/pglogs/pgbackrest/log" logger.go:42: 18:14:06 | additional-volumes/2-verify-volumes | + link=/pgdata/logs/postgres logger.go:42: 18:14:06 | additional-volumes/2-verify-volumes | + want=/pglogs/postgres logger.go:42: 18:14:06 | additional-volumes/2-verify-volumes | ++ kubectl -n kuttl-test-intimate-garfish exec additional-volumes-instance1-n8pg-0 -c database -- readlink /pgdata/logs/postgres logger.go:42: 18:14:07 | additional-volumes/2-verify-volumes | + target=/pglogs/postgres logger.go:42: 18:14:07 | additional-volumes/2-verify-volumes | + [[ /pglogs/postgres != /pglogs/postgres ]] logger.go:42: 18:14:07 | additional-volumes/2-verify-volumes | + for pair in "/pgdata/pg${PG_VER}/pg_wal=/pgwal/pg${PG_VER}_wal" "/pgdata/pgbackrest-spool=/pgwal/pgbackrest-spool" "/pgdata/logs/postgres=/pglogs/postgres" "/pgdata/pgbackrest/log=/pglogs/pgbackrest/log" logger.go:42: 18:14:07 | additional-volumes/2-verify-volumes | + link=/pgdata/pgbackrest/log logger.go:42: 18:14:07 | additional-volumes/2-verify-volumes | + want=/pglogs/pgbackrest/log logger.go:42: 18:14:07 | additional-volumes/2-verify-volumes | ++ kubectl -n kuttl-test-intimate-garfish exec additional-volumes-instance1-n8pg-0 -c database -- readlink /pgdata/pgbackrest/log logger.go:42: 18:14:08 | additional-volumes/2-verify-volumes | + target=/pglogs/pgbackrest/log logger.go:42: 18:14:08 | additional-volumes/2-verify-volumes | + [[ /pglogs/pgbackrest/log != /pglogs/pgbackrest/log ]] logger.go:42: 18:14:08 | additional-volumes/2-verify-volumes | + kubectl -n kuttl-test-intimate-garfish exec additional-volumes-instance1-n8pg-0 -c database -- test -d /pglogs/postgres -a -d /pglogs/pgbackrest/log logger.go:42: 18:14:09 | additional-volumes/2-verify-volumes | ++ kubectl -n kuttl-test-intimate-garfish exec additional-volumes-instance1-n8pg-0 -c database -- ls /tablespaces logger.go:42: 18:14:11 | additional-volumes/2-verify-volumes | + path=myts logger.go:42: 18:14:11 | additional-volumes/2-verify-volumes | + kubectl create configmap -n kuttl-test-intimate-garfish 02-ts-path-2 --from-literal=path=/tablespaces/myts logger.go:42: 18:14:11 | additional-volumes/2-verify-volumes | configmap/02-ts-path-2 created logger.go:42: 18:14:11 | additional-volumes/2-verify-volumes | + i=3 logger.go:42: 18:14:11 | additional-volumes/2-verify-volumes | + for pod in $(get_instance_set_pods instance1) logger.go:42: 18:14:11 | additional-volumes/2-verify-volumes | + kubectl -n kuttl-test-intimate-garfish exec additional-volumes-instance1-xvbw-0 -c database -- grep -q ' /pgwal ' /proc/mounts logger.go:42: 18:14:12 | additional-volumes/2-verify-volumes | + kubectl -n kuttl-test-intimate-garfish exec additional-volumes-instance1-xvbw-0 -c database -- grep -q ' /pglogs ' /proc/mounts logger.go:42: 18:14:13 | additional-volumes/2-verify-volumes | + check_additional_volume_symlinks additional-volumes-instance1-xvbw-0 'on start' logger.go:42: 18:14:13 | additional-volumes/2-verify-volumes | + local pod=additional-volumes-instance1-xvbw-0 logger.go:42: 18:14:13 | additional-volumes/2-verify-volumes | + local 'when=on start' logger.go:42: 18:14:13 | additional-volumes/2-verify-volumes | + local pair link want target logger.go:42: 18:14:13 | additional-volumes/2-verify-volumes | + for pair in "/pgdata/pg${PG_VER}/pg_wal=/pgwal/pg${PG_VER}_wal" "/pgdata/pgbackrest-spool=/pgwal/pgbackrest-spool" "/pgdata/logs/postgres=/pglogs/postgres" "/pgdata/pgbackrest/log=/pglogs/pgbackrest/log" logger.go:42: 18:14:13 | additional-volumes/2-verify-volumes | + link=/pgdata/pg18/pg_wal logger.go:42: 18:14:13 | additional-volumes/2-verify-volumes | + want=/pgwal/pg18_wal logger.go:42: 18:14:13 | additional-volumes/2-verify-volumes | ++ kubectl -n kuttl-test-intimate-garfish exec additional-volumes-instance1-xvbw-0 -c database -- readlink /pgdata/pg18/pg_wal logger.go:42: 18:14:15 | additional-volumes/2-verify-volumes | + target=/pgwal/pg18_wal logger.go:42: 18:14:15 | additional-volumes/2-verify-volumes | + [[ /pgwal/pg18_wal != /pgwal/pg18_wal ]] logger.go:42: 18:14:15 | additional-volumes/2-verify-volumes | + for pair in "/pgdata/pg${PG_VER}/pg_wal=/pgwal/pg${PG_VER}_wal" "/pgdata/pgbackrest-spool=/pgwal/pgbackrest-spool" "/pgdata/logs/postgres=/pglogs/postgres" "/pgdata/pgbackrest/log=/pglogs/pgbackrest/log" logger.go:42: 18:14:15 | additional-volumes/2-verify-volumes | + link=/pgdata/pgbackrest-spool logger.go:42: 18:14:15 | additional-volumes/2-verify-volumes | + want=/pgwal/pgbackrest-spool logger.go:42: 18:14:15 | additional-volumes/2-verify-volumes | ++ kubectl -n kuttl-test-intimate-garfish exec additional-volumes-instance1-xvbw-0 -c database -- readlink /pgdata/pgbackrest-spool logger.go:42: 18:14:16 | additional-volumes/2-verify-volumes | + target=/pgwal/pgbackrest-spool logger.go:42: 18:14:16 | additional-volumes/2-verify-volumes | + [[ /pgwal/pgbackrest-spool != /pgwal/pgbackrest\-spool ]] logger.go:42: 18:14:16 | additional-volumes/2-verify-volumes | + for pair in "/pgdata/pg${PG_VER}/pg_wal=/pgwal/pg${PG_VER}_wal" "/pgdata/pgbackrest-spool=/pgwal/pgbackrest-spool" "/pgdata/logs/postgres=/pglogs/postgres" "/pgdata/pgbackrest/log=/pglogs/pgbackrest/log" logger.go:42: 18:14:16 | additional-volumes/2-verify-volumes | + link=/pgdata/logs/postgres logger.go:42: 18:14:16 | additional-volumes/2-verify-volumes | + want=/pglogs/postgres logger.go:42: 18:14:16 | additional-volumes/2-verify-volumes | ++ kubectl -n kuttl-test-intimate-garfish exec additional-volumes-instance1-xvbw-0 -c database -- readlink /pgdata/logs/postgres logger.go:42: 18:14:17 | additional-volumes/2-verify-volumes | + target=/pglogs/postgres logger.go:42: 18:14:17 | additional-volumes/2-verify-volumes | + [[ /pglogs/postgres != /pglogs/postgres ]] logger.go:42: 18:14:17 | additional-volumes/2-verify-volumes | + for pair in "/pgdata/pg${PG_VER}/pg_wal=/pgwal/pg${PG_VER}_wal" "/pgdata/pgbackrest-spool=/pgwal/pgbackrest-spool" "/pgdata/logs/postgres=/pglogs/postgres" "/pgdata/pgbackrest/log=/pglogs/pgbackrest/log" logger.go:42: 18:14:17 | additional-volumes/2-verify-volumes | + link=/pgdata/pgbackrest/log logger.go:42: 18:14:17 | additional-volumes/2-verify-volumes | + want=/pglogs/pgbackrest/log logger.go:42: 18:14:17 | additional-volumes/2-verify-volumes | ++ kubectl -n kuttl-test-intimate-garfish exec additional-volumes-instance1-xvbw-0 -c database -- readlink /pgdata/pgbackrest/log logger.go:42: 18:14:18 | additional-volumes/2-verify-volumes | + target=/pglogs/pgbackrest/log logger.go:42: 18:14:18 | additional-volumes/2-verify-volumes | + [[ /pglogs/pgbackrest/log != /pglogs/pgbackrest/log ]] logger.go:42: 18:14:18 | additional-volumes/2-verify-volumes | + kubectl -n kuttl-test-intimate-garfish exec additional-volumes-instance1-xvbw-0 -c database -- test -d /pglogs/postgres -a -d /pglogs/pgbackrest/log logger.go:42: 18:14:20 | additional-volumes/2-verify-volumes | ++ kubectl -n kuttl-test-intimate-garfish exec additional-volumes-instance1-xvbw-0 -c database -- ls /tablespaces logger.go:42: 18:14:21 | additional-volumes/2-verify-volumes | + path=myts logger.go:42: 18:14:21 | additional-volumes/2-verify-volumes | + kubectl create configmap -n kuttl-test-intimate-garfish 02-ts-path-3 --from-literal=path=/tablespaces/myts logger.go:42: 18:14:21 | additional-volumes/2-verify-volumes | configmap/02-ts-path-3 created logger.go:42: 18:14:21 | additional-volumes/2-verify-volumes | + i=4 logger.go:42: 18:14:22 | additional-volumes/2-verify-volumes | test step completed 2-verify-volumes logger.go:42: 18:14:22 | additional-volumes/3-write-data | starting test step 3-write-data logger.go:42: 18:14:22 | additional-volumes/3-write-data | running command: [sh -c set -o errexit set -o xtrace source ../../functions uri=$(get_psql_uri additional-volumes postgres) run_psql_local \ "CREATE TABLESPACE myts LOCATION '\''/tablespaces/myts/data'\'';" \ "${uri}" run_psql_local \ 'CREATE DATABASE myapp; \c myapp \\\ CREATE TABLE IF NOT EXISTS myApp (id int PRIMARY KEY) TABLESPACE myts;' \ "${uri}" run_psql_local \ '\c myapp \\\ INSERT INTO myApp (id) VALUES (100500)' \ "${uri}"] logger.go:42: 18:14:22 | additional-volumes/3-write-data | + source ../../functions logger.go:42: 18:14:22 | additional-volumes/3-write-data | +++ realpath ../../.. logger.go:42: 18:14:22 | additional-volumes/3-write-data | ++ ROOT_REPO=/mnt/jenkins/workspace/cloud-pg-operator_PR-1760 logger.go:42: 18:14:22 | additional-volumes/3-write-data | ++ CERT_MANAGER_VER=1.20.2 logger.go:42: 18:14:22 | additional-volumes/3-write-data | ++ CERT_MANAGER_TEST_LABEL=e2e.percona.com/managed-by=percona-postgresql-operator-tests logger.go:42: 18:14:22 | additional-volumes/3-write-data | ++ CHAOS_MESH_VER=2.5.1 logger.go:42: 18:14:22 | additional-volumes/3-write-data | ++ BUSYBOX_VER=1.36 logger.go:42: 18:14:22 | additional-volumes/3-write-data | ++++ pwd logger.go:42: 18:14:22 | additional-volumes/3-write-data | +++ basename /mnt/jenkins/workspace/cloud-pg-operator_PR-1760/e2e-tests/tests/additional-volumes logger.go:42: 18:14:22 | additional-volumes/3-write-data | ++ test_name=additional-volumes logger.go:42: 18:14:22 | additional-volumes/3-write-data | ++ source /mnt/jenkins/workspace/cloud-pg-operator_PR-1760/e2e-tests/vars.sh logger.go:42: 18:14:22 | additional-volumes/3-write-data | +++ export ROOT_REPO=/mnt/jenkins/workspace/cloud-pg-operator_PR-1760 logger.go:42: 18:14:22 | additional-volumes/3-write-data | +++ ROOT_REPO=/mnt/jenkins/workspace/cloud-pg-operator_PR-1760 logger.go:42: 18:14:22 | additional-volumes/3-write-data | +++ export DEPLOY_DIR=/mnt/jenkins/workspace/cloud-pg-operator_PR-1760/deploy logger.go:42: 18:14:22 | additional-volumes/3-write-data | +++ DEPLOY_DIR=/mnt/jenkins/workspace/cloud-pg-operator_PR-1760/deploy logger.go:42: 18:14:22 | additional-volumes/3-write-data | +++ export TESTS_DIR=/mnt/jenkins/workspace/cloud-pg-operator_PR-1760/e2e-tests logger.go:42: 18:14:22 | additional-volumes/3-write-data | +++ TESTS_DIR=/mnt/jenkins/workspace/cloud-pg-operator_PR-1760/e2e-tests logger.go:42: 18:14:22 | additional-volumes/3-write-data | +++ export TESTS_CONFIG_DIR=/mnt/jenkins/workspace/cloud-pg-operator_PR-1760/e2e-tests/conf logger.go:42: 18:14:22 | additional-volumes/3-write-data | +++ TESTS_CONFIG_DIR=/mnt/jenkins/workspace/cloud-pg-operator_PR-1760/e2e-tests/conf logger.go:42: 18:14:22 | additional-volumes/3-write-data | +++ export TEST_CONFIG_DIR=/mnt/jenkins/workspace/cloud-pg-operator_PR-1760/e2e-tests/tests/additional-volumes/conf logger.go:42: 18:14:22 | additional-volumes/3-write-data | +++ TEST_CONFIG_DIR=/mnt/jenkins/workspace/cloud-pg-operator_PR-1760/e2e-tests/tests/additional-volumes/conf logger.go:42: 18:14:22 | additional-volumes/3-write-data | +++ export TEMP_DIR=/tmp/kuttl/pg/additional-volumes logger.go:42: 18:14:22 | additional-volumes/3-write-data | +++ TEMP_DIR=/tmp/kuttl/pg/additional-volumes logger.go:42: 18:14:22 | additional-volumes/3-write-data | ++++ git rev-parse --abbrev-ref HEAD logger.go:42: 18:14:22 | additional-volumes/3-write-data | +++ export GIT_BRANCH=PR-1760 logger.go:42: 18:14:22 | additional-volumes/3-write-data | +++ GIT_BRANCH=PR-1760 logger.go:42: 18:14:22 | additional-volumes/3-write-data | +++ export VERSION=PR-1760-4947a0272 logger.go:42: 18:14:22 | additional-volumes/3-write-data | +++ VERSION=PR-1760-4947a0272 logger.go:42: 18:14:22 | additional-volumes/3-write-data | +++ export SKIP_TEST_WARNINGS=true logger.go:42: 18:14:22 | additional-volumes/3-write-data | +++ SKIP_TEST_WARNINGS=true logger.go:42: 18:14:22 | additional-volumes/3-write-data | +++ export K8S_UPGRADE_PLATFORM=gke logger.go:42: 18:14:22 | additional-volumes/3-write-data | +++ K8S_UPGRADE_PLATFORM=gke logger.go:42: 18:14:22 | additional-volumes/3-write-data | +++ export K8S_UPGRADE_REGION=us-central1-a logger.go:42: 18:14:22 | additional-volumes/3-write-data | +++ K8S_UPGRADE_REGION=us-central1-a logger.go:42: 18:14:22 | additional-volumes/3-write-data | +++ export K8S_UPGRADE_INITIAL_VERSION= logger.go:42: 18:14:22 | additional-volumes/3-write-data | +++ K8S_UPGRADE_INITIAL_VERSION= logger.go:42: 18:14:22 | additional-volumes/3-write-data | +++ export K8S_UPGRADE_FINAL_VERSION= logger.go:42: 18:14:22 | additional-volumes/3-write-data | +++ K8S_UPGRADE_FINAL_VERSION= logger.go:42: 18:14:22 | additional-volumes/3-write-data | +++ [[ -z '' ]] logger.go:42: 18:14:22 | additional-volumes/3-write-data | ++++ detect_k8s_platform logger.go:42: 18:14:22 | additional-volumes/3-write-data | ++++ local detected_platform logger.go:42: 18:14:22 | additional-volumes/3-write-data | ++++ local xtrace_enabled=false logger.go:42: 18:14:22 | additional-volumes/3-write-data | ++++ [[ -o xtrace ]] logger.go:42: 18:14:22 | additional-volumes/3-write-data | ++++ xtrace_enabled=true logger.go:42: 18:14:22 | additional-volumes/3-write-data | ++++ set +o xtrace logger.go:42: 18:14:24 | additional-volumes/3-write-data | +++ PLATFORM=gke logger.go:42: 18:14:24 | additional-volumes/3-write-data | +++ export PLATFORM logger.go:42: 18:14:24 | additional-volumes/3-write-data | +++ export IMAGE_BASE=perconalab/percona-postgresql-operator logger.go:42: 18:14:24 | additional-volumes/3-write-data | +++ IMAGE_BASE=perconalab/percona-postgresql-operator logger.go:42: 18:14:24 | additional-volumes/3-write-data | +++ export IMAGE=perconalab/percona-postgresql-operator:PR-1760-4947a0272 logger.go:42: 18:14:24 | additional-volumes/3-write-data | +++ IMAGE=perconalab/percona-postgresql-operator:PR-1760-4947a0272 logger.go:42: 18:14:24 | additional-volumes/3-write-data | +++ [[ ! -n '' ]] logger.go:42: 18:14:24 | additional-volumes/3-write-data | +++ [[ -n '' ]] logger.go:42: 18:14:24 | additional-volumes/3-write-data | +++ export PG_VER=18 logger.go:42: 18:14:24 | additional-volumes/3-write-data | +++ PG_VER=18 logger.go:42: 18:14:24 | additional-volumes/3-write-data | +++ export PG_DISTRIBUTION= logger.go:42: 18:14:24 | additional-volumes/3-write-data | +++ PG_DISTRIBUTION= logger.go:42: 18:14:24 | additional-volumes/3-write-data | +++ [[ '' == community ]] logger.go:42: 18:14:24 | additional-volumes/3-write-data | +++ export IMAGE_PGBOUNCER=perconalab/percona-postgresql-operator:main-pgbouncer18 logger.go:42: 18:14:24 | additional-volumes/3-write-data | +++ IMAGE_PGBOUNCER=perconalab/percona-postgresql-operator:main-pgbouncer18 logger.go:42: 18:14:24 | additional-volumes/3-write-data | +++ export IMAGE_POSTGRESQL=perconalab/percona-postgresql-operator:main-ppg18-postgres logger.go:42: 18:14:24 | additional-volumes/3-write-data | +++ IMAGE_POSTGRESQL=perconalab/percona-postgresql-operator:main-ppg18-postgres logger.go:42: 18:14:24 | additional-volumes/3-write-data | +++ export IMAGE_BACKREST=perconalab/percona-postgresql-operator:main-pgbackrest18 logger.go:42: 18:14:24 | additional-volumes/3-write-data | +++ IMAGE_BACKREST=perconalab/percona-postgresql-operator:main-pgbackrest18 logger.go:42: 18:14:24 | additional-volumes/3-write-data | +++ export IMAGE_UPGRADE=perconalab/percona-postgresql-operator:main-upgrade logger.go:42: 18:14:24 | additional-volumes/3-write-data | +++ IMAGE_UPGRADE=perconalab/percona-postgresql-operator:main-upgrade logger.go:42: 18:14:24 | additional-volumes/3-write-data | +++ export BUCKET=pg-operator-testing logger.go:42: 18:14:24 | additional-volumes/3-write-data | +++ BUCKET=pg-operator-testing logger.go:42: 18:14:24 | additional-volumes/3-write-data | +++ export PMM_SERVER_VERSION=9.9.9 logger.go:42: 18:14:24 | additional-volumes/3-write-data | +++ PMM_SERVER_VERSION=9.9.9 logger.go:42: 18:14:24 | additional-volumes/3-write-data | +++ export IMAGE_PMM_CLIENT=perconalab/pmm-client:3-dev-latest logger.go:42: 18:14:24 | additional-volumes/3-write-data | +++ IMAGE_PMM_CLIENT=perconalab/pmm-client:3-dev-latest logger.go:42: 18:14:24 | additional-volumes/3-write-data | +++ export IMAGE_PMM_SERVER=perconalab/pmm-server:3-dev-latest logger.go:42: 18:14:24 | additional-volumes/3-write-data | +++ IMAGE_PMM_SERVER=perconalab/pmm-server:3-dev-latest logger.go:42: 18:14:24 | additional-volumes/3-write-data | +++ export IMAGE_LOGCOLLECTOR=perconalab/fluentbit:main-logcollector logger.go:42: 18:14:24 | additional-volumes/3-write-data | +++ IMAGE_LOGCOLLECTOR=perconalab/fluentbit:main-logcollector logger.go:42: 18:14:24 | additional-volumes/3-write-data | +++ export PGOV1_TAG=1.4.0 logger.go:42: 18:14:24 | additional-volumes/3-write-data | +++ PGOV1_TAG=1.4.0 logger.go:42: 18:14:24 | additional-volumes/3-write-data | +++ export PGOV1_VER=14 logger.go:42: 18:14:24 | additional-volumes/3-write-data | +++ PGOV1_VER=14 logger.go:42: 18:14:24 | additional-volumes/3-write-data | +++ export CPGO_VERSION=5.8.7 logger.go:42: 18:14:24 | additional-volumes/3-write-data | +++ CPGO_VERSION=5.8.7 logger.go:42: 18:14:24 | additional-volumes/3-write-data | +++ export MINIO_VER=5.4.0 logger.go:42: 18:14:24 | additional-volumes/3-write-data | +++ MINIO_VER=5.4.0 logger.go:42: 18:14:24 | additional-volumes/3-write-data | +++ export VAULT_VER=0.32.0 logger.go:42: 18:14:24 | additional-volumes/3-write-data | +++ VAULT_VER=0.32.0 logger.go:42: 18:14:24 | additional-volumes/3-write-data | +++ export REGISTRY_NAME=docker.io logger.go:42: 18:14:24 | additional-volumes/3-write-data | +++ REGISTRY_NAME=docker.io logger.go:42: 18:14:24 | additional-volumes/3-write-data | +++ export REGISTRY_NAME_FULL=docker.io/ logger.go:42: 18:14:24 | additional-volumes/3-write-data | +++ REGISTRY_NAME_FULL=docker.io/ logger.go:42: 18:14:24 | additional-volumes/3-write-data | ++++ printenv logger.go:42: 18:14:24 | additional-volumes/3-write-data | ++++ grep -E '^IMAGE' logger.go:42: 18:14:24 | additional-volumes/3-write-data | ++++ awk -F= '{print $1}' logger.go:42: 18:14:24 | additional-volumes/3-write-data | +++ for var in $(printenv | grep -E '^IMAGE' | awk -F'=' '{print $1}') logger.go:42: 18:14:24 | additional-volumes/3-write-data | ++++ eval 'echo $IMAGE_BACKREST' logger.go:42: 18:14:24 | additional-volumes/3-write-data | +++++ echo perconalab/percona-postgresql-operator:main-pgbackrest18 logger.go:42: 18:14:24 | additional-volumes/3-write-data | +++ var_value=perconalab/percona-postgresql-operator:main-pgbackrest18 logger.go:42: 18:14:24 | additional-volumes/3-write-data | +++ [[ perconalab/percona-postgresql-operator:main-pgbackrest18 == docker.io/* ]] logger.go:42: 18:14:24 | additional-volumes/3-write-data | +++ [[ perconalab/percona-postgresql-operator:main-pgbackrest18 == percona/* ]] logger.go:42: 18:14:24 | additional-volumes/3-write-data | +++ [[ perconalab/percona-postgresql-operator:main-pgbackrest18 == perconalab/* ]] logger.go:42: 18:14:24 | additional-volumes/3-write-data | +++ new_value=docker.io/perconalab/percona-postgresql-operator:main-pgbackrest18 logger.go:42: 18:14:24 | additional-volumes/3-write-data | +++ export IMAGE_BACKREST=docker.io/perconalab/percona-postgresql-operator:main-pgbackrest18 logger.go:42: 18:14:24 | additional-volumes/3-write-data | +++ IMAGE_BACKREST=docker.io/perconalab/percona-postgresql-operator:main-pgbackrest18 logger.go:42: 18:14:24 | additional-volumes/3-write-data | +++ echo IMAGE_BACKREST=docker.io/perconalab/percona-postgresql-operator:main-pgbackrest18 logger.go:42: 18:14:24 | additional-volumes/3-write-data | IMAGE_BACKREST=docker.io/perconalab/percona-postgresql-operator:main-pgbackrest18 logger.go:42: 18:14:24 | additional-volumes/3-write-data | +++ echo perconalab/percona-postgresql-operator:PR-1760-4947a0272 logger.go:42: 18:14:24 | additional-volumes/3-write-data | perconalab/percona-postgresql-operator:PR-1760-4947a0272 logger.go:42: 18:14:24 | additional-volumes/3-write-data | +++ for var in $(printenv | grep -E '^IMAGE' | awk -F'=' '{print $1}') logger.go:42: 18:14:24 | additional-volumes/3-write-data | ++++ eval 'echo $IMAGE' logger.go:42: 18:14:24 | additional-volumes/3-write-data | +++++ echo perconalab/percona-postgresql-operator:PR-1760-4947a0272 logger.go:42: 18:14:24 | additional-volumes/3-write-data | +++ var_value=perconalab/percona-postgresql-operator:PR-1760-4947a0272 logger.go:42: 18:14:24 | additional-volumes/3-write-data | +++ [[ perconalab/percona-postgresql-operator:PR-1760-4947a0272 == docker.io/* ]] logger.go:42: 18:14:24 | additional-volumes/3-write-data | +++ [[ perconalab/percona-postgresql-operator:PR-1760-4947a0272 == percona/* ]] logger.go:42: 18:14:24 | additional-volumes/3-write-data | +++ [[ perconalab/percona-postgresql-operator:PR-1760-4947a0272 == perconalab/* ]] logger.go:42: 18:14:24 | additional-volumes/3-write-data | +++ new_value=docker.io/perconalab/percona-postgresql-operator:PR-1760-4947a0272 logger.go:42: 18:14:24 | additional-volumes/3-write-data | +++ export IMAGE=docker.io/perconalab/percona-postgresql-operator:PR-1760-4947a0272 logger.go:42: 18:14:24 | additional-volumes/3-write-data | +++ IMAGE=docker.io/perconalab/percona-postgresql-operator:PR-1760-4947a0272 logger.go:42: 18:14:24 | additional-volumes/3-write-data | +++ echo IMAGE=docker.io/perconalab/percona-postgresql-operator:PR-1760-4947a0272 logger.go:42: 18:14:24 | additional-volumes/3-write-data | IMAGE=docker.io/perconalab/percona-postgresql-operator:PR-1760-4947a0272 logger.go:42: 18:14:24 | additional-volumes/3-write-data | +++ echo docker.io/perconalab/percona-postgresql-operator:PR-1760-4947a0272 logger.go:42: 18:14:24 | additional-volumes/3-write-data | docker.io/perconalab/percona-postgresql-operator:PR-1760-4947a0272 logger.go:42: 18:14:24 | additional-volumes/3-write-data | +++ for var in $(printenv | grep -E '^IMAGE' | awk -F'=' '{print $1}') logger.go:42: 18:14:24 | additional-volumes/3-write-data | ++++ eval 'echo $IMAGE_UPGRADE' logger.go:42: 18:14:24 | additional-volumes/3-write-data | +++++ echo perconalab/percona-postgresql-operator:main-upgrade logger.go:42: 18:14:24 | additional-volumes/3-write-data | +++ var_value=perconalab/percona-postgresql-operator:main-upgrade logger.go:42: 18:14:24 | additional-volumes/3-write-data | +++ [[ perconalab/percona-postgresql-operator:main-upgrade == docker.io/* ]] logger.go:42: 18:14:24 | additional-volumes/3-write-data | +++ [[ perconalab/percona-postgresql-operator:main-upgrade == percona/* ]] logger.go:42: 18:14:24 | additional-volumes/3-write-data | +++ [[ perconalab/percona-postgresql-operator:main-upgrade == perconalab/* ]] logger.go:42: 18:14:24 | additional-volumes/3-write-data | +++ new_value=docker.io/perconalab/percona-postgresql-operator:main-upgrade logger.go:42: 18:14:24 | additional-volumes/3-write-data | +++ export IMAGE_UPGRADE=docker.io/perconalab/percona-postgresql-operator:main-upgrade logger.go:42: 18:14:24 | additional-volumes/3-write-data | +++ IMAGE_UPGRADE=docker.io/perconalab/percona-postgresql-operator:main-upgrade logger.go:42: 18:14:24 | additional-volumes/3-write-data | +++ echo IMAGE_UPGRADE=docker.io/perconalab/percona-postgresql-operator:main-upgrade logger.go:42: 18:14:24 | additional-volumes/3-write-data | IMAGE_UPGRADE=docker.io/perconalab/percona-postgresql-operator:main-upgrade logger.go:42: 18:14:24 | additional-volumes/3-write-data | +++ echo docker.io/perconalab/percona-postgresql-operator:PR-1760-4947a0272 logger.go:42: 18:14:24 | additional-volumes/3-write-data | docker.io/perconalab/percona-postgresql-operator:PR-1760-4947a0272 logger.go:42: 18:14:24 | additional-volumes/3-write-data | +++ for var in $(printenv | grep -E '^IMAGE' | awk -F'=' '{print $1}') logger.go:42: 18:14:24 | additional-volumes/3-write-data | ++++ eval 'echo $IMAGE_LOGCOLLECTOR' logger.go:42: 18:14:24 | additional-volumes/3-write-data | +++++ echo perconalab/fluentbit:main-logcollector logger.go:42: 18:14:24 | additional-volumes/3-write-data | +++ var_value=perconalab/fluentbit:main-logcollector logger.go:42: 18:14:24 | additional-volumes/3-write-data | +++ [[ perconalab/fluentbit:main-logcollector == docker.io/* ]] logger.go:42: 18:14:24 | additional-volumes/3-write-data | +++ [[ perconalab/fluentbit:main-logcollector == percona/* ]] logger.go:42: 18:14:24 | additional-volumes/3-write-data | +++ [[ perconalab/fluentbit:main-logcollector == perconalab/* ]] logger.go:42: 18:14:24 | additional-volumes/3-write-data | +++ new_value=docker.io/perconalab/fluentbit:main-logcollector logger.go:42: 18:14:24 | additional-volumes/3-write-data | +++ export IMAGE_LOGCOLLECTOR=docker.io/perconalab/fluentbit:main-logcollector logger.go:42: 18:14:24 | additional-volumes/3-write-data | +++ IMAGE_LOGCOLLECTOR=docker.io/perconalab/fluentbit:main-logcollector logger.go:42: 18:14:24 | additional-volumes/3-write-data | +++ echo IMAGE_LOGCOLLECTOR=docker.io/perconalab/fluentbit:main-logcollector logger.go:42: 18:14:24 | additional-volumes/3-write-data | IMAGE_LOGCOLLECTOR=docker.io/perconalab/fluentbit:main-logcollector logger.go:42: 18:14:24 | additional-volumes/3-write-data | +++ echo docker.io/perconalab/percona-postgresql-operator:PR-1760-4947a0272 logger.go:42: 18:14:24 | additional-volumes/3-write-data | docker.io/perconalab/percona-postgresql-operator:PR-1760-4947a0272 logger.go:42: 18:14:24 | additional-volumes/3-write-data | +++ for var in $(printenv | grep -E '^IMAGE' | awk -F'=' '{print $1}') logger.go:42: 18:14:24 | additional-volumes/3-write-data | ++++ eval 'echo $IMAGE_BASE' logger.go:42: 18:14:24 | additional-volumes/3-write-data | +++++ echo perconalab/percona-postgresql-operator logger.go:42: 18:14:24 | additional-volumes/3-write-data | +++ var_value=perconalab/percona-postgresql-operator logger.go:42: 18:14:24 | additional-volumes/3-write-data | +++ [[ perconalab/percona-postgresql-operator == docker.io/* ]] logger.go:42: 18:14:24 | additional-volumes/3-write-data | +++ [[ perconalab/percona-postgresql-operator == percona/* ]] logger.go:42: 18:14:24 | additional-volumes/3-write-data | +++ [[ perconalab/percona-postgresql-operator == perconalab/* ]] logger.go:42: 18:14:24 | additional-volumes/3-write-data | +++ new_value=docker.io/perconalab/percona-postgresql-operator logger.go:42: 18:14:24 | additional-volumes/3-write-data | +++ export IMAGE_BASE=docker.io/perconalab/percona-postgresql-operator logger.go:42: 18:14:24 | additional-volumes/3-write-data | +++ IMAGE_BASE=docker.io/perconalab/percona-postgresql-operator logger.go:42: 18:14:24 | additional-volumes/3-write-data | +++ echo IMAGE_BASE=docker.io/perconalab/percona-postgresql-operator logger.go:42: 18:14:24 | additional-volumes/3-write-data | IMAGE_BASE=docker.io/perconalab/percona-postgresql-operator logger.go:42: 18:14:24 | additional-volumes/3-write-data | +++ echo docker.io/perconalab/percona-postgresql-operator:PR-1760-4947a0272 logger.go:42: 18:14:24 | additional-volumes/3-write-data | docker.io/perconalab/percona-postgresql-operator:PR-1760-4947a0272 logger.go:42: 18:14:24 | additional-volumes/3-write-data | +++ for var in $(printenv | grep -E '^IMAGE' | awk -F'=' '{print $1}') logger.go:42: 18:14:24 | additional-volumes/3-write-data | ++++ eval 'echo $IMAGE_PGBOUNCER' logger.go:42: 18:14:24 | additional-volumes/3-write-data | +++++ echo perconalab/percona-postgresql-operator:main-pgbouncer18 logger.go:42: 18:14:24 | additional-volumes/3-write-data | +++ var_value=perconalab/percona-postgresql-operator:main-pgbouncer18 logger.go:42: 18:14:24 | additional-volumes/3-write-data | +++ [[ perconalab/percona-postgresql-operator:main-pgbouncer18 == docker.io/* ]] logger.go:42: 18:14:24 | additional-volumes/3-write-data | +++ [[ perconalab/percona-postgresql-operator:main-pgbouncer18 == percona/* ]] logger.go:42: 18:14:24 | additional-volumes/3-write-data | +++ [[ perconalab/percona-postgresql-operator:main-pgbouncer18 == perconalab/* ]] logger.go:42: 18:14:24 | additional-volumes/3-write-data | +++ new_value=docker.io/perconalab/percona-postgresql-operator:main-pgbouncer18 logger.go:42: 18:14:24 | additional-volumes/3-write-data | +++ export IMAGE_PGBOUNCER=docker.io/perconalab/percona-postgresql-operator:main-pgbouncer18 logger.go:42: 18:14:24 | additional-volumes/3-write-data | +++ IMAGE_PGBOUNCER=docker.io/perconalab/percona-postgresql-operator:main-pgbouncer18 logger.go:42: 18:14:24 | additional-volumes/3-write-data | +++ echo IMAGE_PGBOUNCER=docker.io/perconalab/percona-postgresql-operator:main-pgbouncer18 logger.go:42: 18:14:24 | additional-volumes/3-write-data | IMAGE_PGBOUNCER=docker.io/perconalab/percona-postgresql-operator:main-pgbouncer18 logger.go:42: 18:14:24 | additional-volumes/3-write-data | +++ echo docker.io/perconalab/percona-postgresql-operator:PR-1760-4947a0272 logger.go:42: 18:14:24 | additional-volumes/3-write-data | docker.io/perconalab/percona-postgresql-operator:PR-1760-4947a0272 logger.go:42: 18:14:24 | additional-volumes/3-write-data | +++ for var in $(printenv | grep -E '^IMAGE' | awk -F'=' '{print $1}') logger.go:42: 18:14:24 | additional-volumes/3-write-data | ++++ eval 'echo $IMAGE_POSTGRESQL' logger.go:42: 18:14:24 | additional-volumes/3-write-data | +++++ echo perconalab/percona-postgresql-operator:main-ppg18-postgres logger.go:42: 18:14:24 | additional-volumes/3-write-data | +++ var_value=perconalab/percona-postgresql-operator:main-ppg18-postgres logger.go:42: 18:14:24 | additional-volumes/3-write-data | +++ [[ perconalab/percona-postgresql-operator:main-ppg18-postgres == docker.io/* ]] logger.go:42: 18:14:24 | additional-volumes/3-write-data | +++ [[ perconalab/percona-postgresql-operator:main-ppg18-postgres == percona/* ]] logger.go:42: 18:14:24 | additional-volumes/3-write-data | +++ [[ perconalab/percona-postgresql-operator:main-ppg18-postgres == perconalab/* ]] logger.go:42: 18:14:24 | additional-volumes/3-write-data | +++ new_value=docker.io/perconalab/percona-postgresql-operator:main-ppg18-postgres logger.go:42: 18:14:24 | additional-volumes/3-write-data | +++ export IMAGE_POSTGRESQL=docker.io/perconalab/percona-postgresql-operator:main-ppg18-postgres logger.go:42: 18:14:24 | additional-volumes/3-write-data | +++ IMAGE_POSTGRESQL=docker.io/perconalab/percona-postgresql-operator:main-ppg18-postgres logger.go:42: 18:14:24 | additional-volumes/3-write-data | +++ echo IMAGE_POSTGRESQL=docker.io/perconalab/percona-postgresql-operator:main-ppg18-postgres logger.go:42: 18:14:24 | additional-volumes/3-write-data | IMAGE_POSTGRESQL=docker.io/perconalab/percona-postgresql-operator:main-ppg18-postgres logger.go:42: 18:14:24 | additional-volumes/3-write-data | +++ echo docker.io/perconalab/percona-postgresql-operator:PR-1760-4947a0272 logger.go:42: 18:14:24 | additional-volumes/3-write-data | docker.io/perconalab/percona-postgresql-operator:PR-1760-4947a0272 logger.go:42: 18:14:24 | additional-volumes/3-write-data | +++ for var in $(printenv | grep -E '^IMAGE' | awk -F'=' '{print $1}') logger.go:42: 18:14:24 | additional-volumes/3-write-data | ++++ eval 'echo $IMAGE_PMM_SERVER' logger.go:42: 18:14:24 | additional-volumes/3-write-data | +++++ echo perconalab/pmm-server:3-dev-latest logger.go:42: 18:14:24 | additional-volumes/3-write-data | +++ var_value=perconalab/pmm-server:3-dev-latest logger.go:42: 18:14:24 | additional-volumes/3-write-data | +++ [[ perconalab/pmm-server:3-dev-latest == docker.io/* ]] logger.go:42: 18:14:24 | additional-volumes/3-write-data | +++ [[ perconalab/pmm-server:3-dev-latest == percona/* ]] logger.go:42: 18:14:24 | additional-volumes/3-write-data | +++ [[ perconalab/pmm-server:3-dev-latest == perconalab/* ]] logger.go:42: 18:14:24 | additional-volumes/3-write-data | +++ new_value=docker.io/perconalab/pmm-server:3-dev-latest logger.go:42: 18:14:24 | additional-volumes/3-write-data | +++ export IMAGE_PMM_SERVER=docker.io/perconalab/pmm-server:3-dev-latest logger.go:42: 18:14:24 | additional-volumes/3-write-data | +++ IMAGE_PMM_SERVER=docker.io/perconalab/pmm-server:3-dev-latest logger.go:42: 18:14:24 | additional-volumes/3-write-data | +++ echo IMAGE_PMM_SERVER=docker.io/perconalab/pmm-server:3-dev-latest logger.go:42: 18:14:24 | additional-volumes/3-write-data | IMAGE_PMM_SERVER=docker.io/perconalab/pmm-server:3-dev-latest logger.go:42: 18:14:24 | additional-volumes/3-write-data | +++ echo docker.io/perconalab/percona-postgresql-operator:PR-1760-4947a0272 logger.go:42: 18:14:24 | additional-volumes/3-write-data | docker.io/perconalab/percona-postgresql-operator:PR-1760-4947a0272 logger.go:42: 18:14:24 | additional-volumes/3-write-data | +++ for var in $(printenv | grep -E '^IMAGE' | awk -F'=' '{print $1}') logger.go:42: 18:14:24 | additional-volumes/3-write-data | ++++ eval 'echo $IMAGE_PMM_CLIENT' logger.go:42: 18:14:24 | additional-volumes/3-write-data | +++++ echo perconalab/pmm-client:3-dev-latest logger.go:42: 18:14:24 | additional-volumes/3-write-data | +++ var_value=perconalab/pmm-client:3-dev-latest logger.go:42: 18:14:24 | additional-volumes/3-write-data | +++ [[ perconalab/pmm-client:3-dev-latest == docker.io/* ]] logger.go:42: 18:14:24 | additional-volumes/3-write-data | +++ [[ perconalab/pmm-client:3-dev-latest == percona/* ]] logger.go:42: 18:14:24 | additional-volumes/3-write-data | +++ [[ perconalab/pmm-client:3-dev-latest == perconalab/* ]] logger.go:42: 18:14:24 | additional-volumes/3-write-data | +++ new_value=docker.io/perconalab/pmm-client:3-dev-latest logger.go:42: 18:14:24 | additional-volumes/3-write-data | +++ export IMAGE_PMM_CLIENT=docker.io/perconalab/pmm-client:3-dev-latest logger.go:42: 18:14:24 | additional-volumes/3-write-data | +++ IMAGE_PMM_CLIENT=docker.io/perconalab/pmm-client:3-dev-latest logger.go:42: 18:14:24 | additional-volumes/3-write-data | +++ echo IMAGE_PMM_CLIENT=docker.io/perconalab/pmm-client:3-dev-latest logger.go:42: 18:14:24 | additional-volumes/3-write-data | IMAGE_PMM_CLIENT=docker.io/perconalab/pmm-client:3-dev-latest logger.go:42: 18:14:24 | additional-volumes/3-write-data | +++ echo docker.io/perconalab/percona-postgresql-operator:PR-1760-4947a0272 logger.go:42: 18:14:24 | additional-volumes/3-write-data | docker.io/perconalab/percona-postgresql-operator:PR-1760-4947a0272 logger.go:42: 18:14:24 | additional-volumes/3-write-data | ++++ which gdate logger.go:42: 18:14:24 | additional-volumes/3-write-data | which: no gdate in (/mnt/jenkins/workspace/cloud-pg-operator_PR-1760/bin/:/root/.krew/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/var/lib/snapd/snap/bin) logger.go:42: 18:14:24 | additional-volumes/3-write-data | ++++ which date logger.go:42: 18:14:24 | additional-volumes/3-write-data | +++ date=/usr/sbin/date logger.go:42: 18:14:24 | additional-volumes/3-write-data | ++++ which gsed logger.go:42: 18:14:24 | additional-volumes/3-write-data | which: no gsed in (/mnt/jenkins/workspace/cloud-pg-operator_PR-1760/bin/:/root/.krew/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/var/lib/snapd/snap/bin) logger.go:42: 18:14:24 | additional-volumes/3-write-data | ++++ which sed logger.go:42: 18:14:24 | additional-volumes/3-write-data | +++ sed=/usr/sbin/sed logger.go:42: 18:14:24 | additional-volumes/3-write-data | ++ get_psql_uri additional-volumes postgres logger.go:42: 18:14:24 | additional-volumes/3-write-data | ++ local cluster=additional-volumes logger.go:42: 18:14:24 | additional-volumes/3-write-data | ++ local user=postgres logger.go:42: 18:14:24 | additional-volumes/3-write-data | ++ local secret_name=additional-volumes-pguser-postgres logger.go:42: 18:14:24 | additional-volumes/3-write-data | +++ get_psql_user_pass additional-volumes-pguser-postgres logger.go:42: 18:14:24 | additional-volumes/3-write-data | +++ local secret_name=additional-volumes-pguser-postgres logger.go:42: 18:14:24 | additional-volumes/3-write-data | +++ kubectl -n kuttl-test-intimate-garfish get secret/additional-volumes-pguser-postgres '--template={{.data.password | base64decode}}' logger.go:42: 18:14:24 | additional-volumes/3-write-data | +++ get_psql_user_host additional-volumes-pguser-postgres logger.go:42: 18:14:24 | additional-volumes/3-write-data | +++ local secret_name=additional-volumes-pguser-postgres logger.go:42: 18:14:24 | additional-volumes/3-write-data | +++ kubectl -n kuttl-test-intimate-garfish get secret/additional-volumes-pguser-postgres '--template={{.data.host | base64decode }}' logger.go:42: 18:14:25 | additional-volumes/3-write-data | ++ echo postgres:l0MUHwCzHnDZcySTpvPctkb7@additional-volumes-primary.kuttl-test-intimate-garfish.svc logger.go:42: 18:14:25 | additional-volumes/3-write-data | + uri=postgres:l0MUHwCzHnDZcySTpvPctkb7@additional-volumes-primary.kuttl-test-intimate-garfish.svc logger.go:42: 18:14:25 | additional-volumes/3-write-data | + run_psql_local 'CREATE TABLESPACE myts LOCATION '\''\'\'''\''/tablespaces/myts/data'\''\'\'''\'';' postgres:l0MUHwCzHnDZcySTpvPctkb7@additional-volumes-primary.kuttl-test-intimate-garfish.svc logger.go:42: 18:14:25 | additional-volumes/3-write-data | + local 'command=CREATE TABLESPACE myts LOCATION '\''\'\'''\''/tablespaces/myts/data'\''\'\'''\'';' logger.go:42: 18:14:25 | additional-volumes/3-write-data | + local uri=postgres:l0MUHwCzHnDZcySTpvPctkb7@additional-volumes-primary.kuttl-test-intimate-garfish.svc logger.go:42: 18:14:25 | additional-volumes/3-write-data | + local driver=postgres logger.go:42: 18:14:25 | additional-volumes/3-write-data | ++ get_client_pod logger.go:42: 18:14:25 | additional-volumes/3-write-data | ++ kubectl -n kuttl-test-intimate-garfish get pods --selector=name=pg-client -o 'jsonpath={.items[].metadata.name}' logger.go:42: 18:14:25 | additional-volumes/3-write-data | + kubectl -n kuttl-test-intimate-garfish exec pg-client-65d98588cc-q6dhp -- bash -c 'printf '\''CREATE TABLESPACE myts LOCATION '\''\'\'''\''/tablespaces/myts/data'\''\'\'''\'';\n'\'' | psql -v ON_ERROR_STOP=1 -t -q postgres://'\''postgres:l0MUHwCzHnDZcySTpvPctkb7@additional-volumes-primary.kuttl-test-intimate-garfish.svc'\''' logger.go:42: 18:14:26 | additional-volumes/3-write-data | + run_psql_local 'CREATE DATABASE myapp; \c myapp \\\ CREATE TABLE IF NOT EXISTS myApp (id int PRIMARY KEY) TABLESPACE myts;' postgres:l0MUHwCzHnDZcySTpvPctkb7@additional-volumes-primary.kuttl-test-intimate-garfish.svc logger.go:42: 18:14:26 | additional-volumes/3-write-data | + local 'command=CREATE DATABASE myapp; \c myapp \\\ CREATE TABLE IF NOT EXISTS myApp (id int PRIMARY KEY) TABLESPACE myts;' logger.go:42: 18:14:26 | additional-volumes/3-write-data | + local uri=postgres:l0MUHwCzHnDZcySTpvPctkb7@additional-volumes-primary.kuttl-test-intimate-garfish.svc logger.go:42: 18:14:26 | additional-volumes/3-write-data | + local driver=postgres logger.go:42: 18:14:26 | additional-volumes/3-write-data | ++ get_client_pod logger.go:42: 18:14:26 | additional-volumes/3-write-data | ++ kubectl -n kuttl-test-intimate-garfish get pods --selector=name=pg-client -o 'jsonpath={.items[].metadata.name}' logger.go:42: 18:14:27 | additional-volumes/3-write-data | + kubectl -n kuttl-test-intimate-garfish exec pg-client-65d98588cc-q6dhp -- bash -c 'printf '\''CREATE DATABASE myapp; \c myapp \\\ CREATE TABLE IF NOT EXISTS myApp (id int PRIMARY KEY) TABLESPACE myts;\n'\'' | psql -v ON_ERROR_STOP=1 -t -q postgres://'\''postgres:l0MUHwCzHnDZcySTpvPctkb7@additional-volumes-primary.kuttl-test-intimate-garfish.svc'\''' logger.go:42: 18:14:28 | additional-volumes/3-write-data | + run_psql_local '\c myapp \\\ INSERT INTO myApp (id) VALUES (100500)' postgres:l0MUHwCzHnDZcySTpvPctkb7@additional-volumes-primary.kuttl-test-intimate-garfish.svc logger.go:42: 18:14:28 | additional-volumes/3-write-data | + local 'command=\c myapp \\\ INSERT INTO myApp (id) VALUES (100500)' logger.go:42: 18:14:28 | additional-volumes/3-write-data | + local uri=postgres:l0MUHwCzHnDZcySTpvPctkb7@additional-volumes-primary.kuttl-test-intimate-garfish.svc logger.go:42: 18:14:28 | additional-volumes/3-write-data | + local driver=postgres logger.go:42: 18:14:28 | additional-volumes/3-write-data | ++ get_client_pod logger.go:42: 18:14:28 | additional-volumes/3-write-data | ++ kubectl -n kuttl-test-intimate-garfish get pods --selector=name=pg-client -o 'jsonpath={.items[].metadata.name}' logger.go:42: 18:14:28 | additional-volumes/3-write-data | + kubectl -n kuttl-test-intimate-garfish exec pg-client-65d98588cc-q6dhp -- bash -c 'printf '\''\c myapp \\\ INSERT INTO myApp (id) VALUES (100500)\n'\'' | psql -v ON_ERROR_STOP=1 -t -q postgres://'\''postgres:l0MUHwCzHnDZcySTpvPctkb7@additional-volumes-primary.kuttl-test-intimate-garfish.svc'\''' logger.go:42: 18:14:29 | additional-volumes/3-write-data | test step completed 3-write-data logger.go:42: 18:14:29 | additional-volumes/4-read-from-primary | starting test step 4-read-from-primary logger.go:42: 18:14:29 | additional-volumes/4-read-from-primary | running command: [sh -c set -o errexit set -o xtrace source ../../functions uri=$(get_psql_uri additional-volumes postgres) data=$(run_psql_local \ "select pg_tablespace_location(oid) from pg_tablespace where spcname = '\''myts'\'';" \ "${uri}") kubectl create configmap -n "${NAMESPACE}" 04-check-tablespace --from-literal=data="${data}" data=$(run_psql_local \ "\c myapp \\\\\ SELECT ts.spcname AS tablespace_name FROM pg_class t JOIN pg_tablespace ts ON t.reltablespace = ts.oid WHERE t.relname = '\''myapp'\'';" \ "${uri}") kubectl create configmap -n "${NAMESPACE}" 04-check-table-in-tablespace --from-literal=data="${data}" data=$(run_psql_local '\c myapp \\\ SELECT * from myApp;' "${uri}") kubectl create configmap -n "${NAMESPACE}" 04-read-from-primary --from-literal=data="${data}" # Postgres must be writing its WAL segments onto the volume, not the data volume. primary=$(get_pod_by_role additional-volumes primary name) kubectl -n "${NAMESPACE}" exec "${primary}" -c database -- \ bash -c "ls /pgwal/pg${PG_VER}_wal | grep -qE '^[0-9A-F]{24}$'"] logger.go:42: 18:14:29 | additional-volumes/4-read-from-primary | + source ../../functions logger.go:42: 18:14:29 | additional-volumes/4-read-from-primary | +++ realpath ../../.. logger.go:42: 18:14:29 | additional-volumes/4-read-from-primary | ++ ROOT_REPO=/mnt/jenkins/workspace/cloud-pg-operator_PR-1760 logger.go:42: 18:14:29 | additional-volumes/4-read-from-primary | ++ CERT_MANAGER_VER=1.20.2 logger.go:42: 18:14:29 | additional-volumes/4-read-from-primary | ++ CERT_MANAGER_TEST_LABEL=e2e.percona.com/managed-by=percona-postgresql-operator-tests logger.go:42: 18:14:29 | additional-volumes/4-read-from-primary | ++ CHAOS_MESH_VER=2.5.1 logger.go:42: 18:14:29 | additional-volumes/4-read-from-primary | ++ BUSYBOX_VER=1.36 logger.go:42: 18:14:29 | additional-volumes/4-read-from-primary | ++++ pwd logger.go:42: 18:14:29 | additional-volumes/4-read-from-primary | +++ basename /mnt/jenkins/workspace/cloud-pg-operator_PR-1760/e2e-tests/tests/additional-volumes logger.go:42: 18:14:29 | additional-volumes/4-read-from-primary | ++ test_name=additional-volumes logger.go:42: 18:14:29 | additional-volumes/4-read-from-primary | ++ source /mnt/jenkins/workspace/cloud-pg-operator_PR-1760/e2e-tests/vars.sh logger.go:42: 18:14:29 | additional-volumes/4-read-from-primary | +++ export ROOT_REPO=/mnt/jenkins/workspace/cloud-pg-operator_PR-1760 logger.go:42: 18:14:29 | additional-volumes/4-read-from-primary | +++ ROOT_REPO=/mnt/jenkins/workspace/cloud-pg-operator_PR-1760 logger.go:42: 18:14:29 | additional-volumes/4-read-from-primary | +++ export DEPLOY_DIR=/mnt/jenkins/workspace/cloud-pg-operator_PR-1760/deploy logger.go:42: 18:14:29 | additional-volumes/4-read-from-primary | +++ DEPLOY_DIR=/mnt/jenkins/workspace/cloud-pg-operator_PR-1760/deploy logger.go:42: 18:14:29 | additional-volumes/4-read-from-primary | +++ export TESTS_DIR=/mnt/jenkins/workspace/cloud-pg-operator_PR-1760/e2e-tests logger.go:42: 18:14:29 | additional-volumes/4-read-from-primary | +++ TESTS_DIR=/mnt/jenkins/workspace/cloud-pg-operator_PR-1760/e2e-tests logger.go:42: 18:14:29 | additional-volumes/4-read-from-primary | +++ export TESTS_CONFIG_DIR=/mnt/jenkins/workspace/cloud-pg-operator_PR-1760/e2e-tests/conf logger.go:42: 18:14:29 | additional-volumes/4-read-from-primary | +++ TESTS_CONFIG_DIR=/mnt/jenkins/workspace/cloud-pg-operator_PR-1760/e2e-tests/conf logger.go:42: 18:14:29 | additional-volumes/4-read-from-primary | +++ export TEST_CONFIG_DIR=/mnt/jenkins/workspace/cloud-pg-operator_PR-1760/e2e-tests/tests/additional-volumes/conf logger.go:42: 18:14:29 | additional-volumes/4-read-from-primary | +++ TEST_CONFIG_DIR=/mnt/jenkins/workspace/cloud-pg-operator_PR-1760/e2e-tests/tests/additional-volumes/conf logger.go:42: 18:14:29 | additional-volumes/4-read-from-primary | +++ export TEMP_DIR=/tmp/kuttl/pg/additional-volumes logger.go:42: 18:14:29 | additional-volumes/4-read-from-primary | +++ TEMP_DIR=/tmp/kuttl/pg/additional-volumes logger.go:42: 18:14:29 | additional-volumes/4-read-from-primary | ++++ git rev-parse --abbrev-ref HEAD logger.go:42: 18:14:29 | additional-volumes/4-read-from-primary | +++ export GIT_BRANCH=PR-1760 logger.go:42: 18:14:29 | additional-volumes/4-read-from-primary | +++ GIT_BRANCH=PR-1760 logger.go:42: 18:14:29 | additional-volumes/4-read-from-primary | +++ export VERSION=PR-1760-4947a0272 logger.go:42: 18:14:29 | additional-volumes/4-read-from-primary | +++ VERSION=PR-1760-4947a0272 logger.go:42: 18:14:29 | additional-volumes/4-read-from-primary | +++ export SKIP_TEST_WARNINGS=true logger.go:42: 18:14:29 | additional-volumes/4-read-from-primary | +++ SKIP_TEST_WARNINGS=true logger.go:42: 18:14:29 | additional-volumes/4-read-from-primary | +++ export K8S_UPGRADE_PLATFORM=gke logger.go:42: 18:14:29 | additional-volumes/4-read-from-primary | +++ K8S_UPGRADE_PLATFORM=gke logger.go:42: 18:14:29 | additional-volumes/4-read-from-primary | +++ export K8S_UPGRADE_REGION=us-central1-a logger.go:42: 18:14:29 | additional-volumes/4-read-from-primary | +++ K8S_UPGRADE_REGION=us-central1-a logger.go:42: 18:14:29 | additional-volumes/4-read-from-primary | +++ export K8S_UPGRADE_INITIAL_VERSION= logger.go:42: 18:14:29 | additional-volumes/4-read-from-primary | +++ K8S_UPGRADE_INITIAL_VERSION= logger.go:42: 18:14:29 | additional-volumes/4-read-from-primary | +++ export K8S_UPGRADE_FINAL_VERSION= logger.go:42: 18:14:29 | additional-volumes/4-read-from-primary | +++ K8S_UPGRADE_FINAL_VERSION= logger.go:42: 18:14:29 | additional-volumes/4-read-from-primary | +++ [[ -z '' ]] logger.go:42: 18:14:29 | additional-volumes/4-read-from-primary | ++++ detect_k8s_platform logger.go:42: 18:14:29 | additional-volumes/4-read-from-primary | ++++ local detected_platform logger.go:42: 18:14:29 | additional-volumes/4-read-from-primary | ++++ local xtrace_enabled=false logger.go:42: 18:14:29 | additional-volumes/4-read-from-primary | ++++ [[ -o xtrace ]] logger.go:42: 18:14:29 | additional-volumes/4-read-from-primary | ++++ xtrace_enabled=true logger.go:42: 18:14:29 | additional-volumes/4-read-from-primary | ++++ set +o xtrace logger.go:42: 18:14:31 | additional-volumes/4-read-from-primary | +++ PLATFORM=gke logger.go:42: 18:14:31 | additional-volumes/4-read-from-primary | +++ export PLATFORM logger.go:42: 18:14:31 | additional-volumes/4-read-from-primary | +++ export IMAGE_BASE=perconalab/percona-postgresql-operator logger.go:42: 18:14:31 | additional-volumes/4-read-from-primary | +++ IMAGE_BASE=perconalab/percona-postgresql-operator logger.go:42: 18:14:31 | additional-volumes/4-read-from-primary | +++ export IMAGE=perconalab/percona-postgresql-operator:PR-1760-4947a0272 logger.go:42: 18:14:31 | additional-volumes/4-read-from-primary | +++ IMAGE=perconalab/percona-postgresql-operator:PR-1760-4947a0272 logger.go:42: 18:14:31 | additional-volumes/4-read-from-primary | +++ [[ ! -n '' ]] logger.go:42: 18:14:31 | additional-volumes/4-read-from-primary | +++ [[ -n '' ]] logger.go:42: 18:14:31 | additional-volumes/4-read-from-primary | +++ export PG_VER=18 logger.go:42: 18:14:31 | additional-volumes/4-read-from-primary | +++ PG_VER=18 logger.go:42: 18:14:31 | additional-volumes/4-read-from-primary | +++ export PG_DISTRIBUTION= logger.go:42: 18:14:31 | additional-volumes/4-read-from-primary | +++ PG_DISTRIBUTION= logger.go:42: 18:14:31 | additional-volumes/4-read-from-primary | +++ [[ '' == community ]] logger.go:42: 18:14:31 | additional-volumes/4-read-from-primary | +++ export IMAGE_PGBOUNCER=perconalab/percona-postgresql-operator:main-pgbouncer18 logger.go:42: 18:14:31 | additional-volumes/4-read-from-primary | +++ IMAGE_PGBOUNCER=perconalab/percona-postgresql-operator:main-pgbouncer18 logger.go:42: 18:14:31 | additional-volumes/4-read-from-primary | +++ export IMAGE_POSTGRESQL=perconalab/percona-postgresql-operator:main-ppg18-postgres logger.go:42: 18:14:31 | additional-volumes/4-read-from-primary | +++ IMAGE_POSTGRESQL=perconalab/percona-postgresql-operator:main-ppg18-postgres logger.go:42: 18:14:31 | additional-volumes/4-read-from-primary | +++ export IMAGE_BACKREST=perconalab/percona-postgresql-operator:main-pgbackrest18 logger.go:42: 18:14:31 | additional-volumes/4-read-from-primary | +++ IMAGE_BACKREST=perconalab/percona-postgresql-operator:main-pgbackrest18 logger.go:42: 18:14:31 | additional-volumes/4-read-from-primary | +++ export IMAGE_UPGRADE=perconalab/percona-postgresql-operator:main-upgrade logger.go:42: 18:14:31 | additional-volumes/4-read-from-primary | +++ IMAGE_UPGRADE=perconalab/percona-postgresql-operator:main-upgrade logger.go:42: 18:14:31 | additional-volumes/4-read-from-primary | +++ export BUCKET=pg-operator-testing logger.go:42: 18:14:31 | additional-volumes/4-read-from-primary | +++ BUCKET=pg-operator-testing logger.go:42: 18:14:31 | additional-volumes/4-read-from-primary | +++ export PMM_SERVER_VERSION=9.9.9 logger.go:42: 18:14:31 | additional-volumes/4-read-from-primary | +++ PMM_SERVER_VERSION=9.9.9 logger.go:42: 18:14:31 | additional-volumes/4-read-from-primary | +++ export IMAGE_PMM_CLIENT=perconalab/pmm-client:3-dev-latest logger.go:42: 18:14:31 | additional-volumes/4-read-from-primary | +++ IMAGE_PMM_CLIENT=perconalab/pmm-client:3-dev-latest logger.go:42: 18:14:31 | additional-volumes/4-read-from-primary | +++ export IMAGE_PMM_SERVER=perconalab/pmm-server:3-dev-latest logger.go:42: 18:14:31 | additional-volumes/4-read-from-primary | +++ IMAGE_PMM_SERVER=perconalab/pmm-server:3-dev-latest logger.go:42: 18:14:31 | additional-volumes/4-read-from-primary | +++ export IMAGE_LOGCOLLECTOR=perconalab/fluentbit:main-logcollector logger.go:42: 18:14:31 | additional-volumes/4-read-from-primary | +++ IMAGE_LOGCOLLECTOR=perconalab/fluentbit:main-logcollector logger.go:42: 18:14:31 | additional-volumes/4-read-from-primary | +++ export PGOV1_TAG=1.4.0 logger.go:42: 18:14:31 | additional-volumes/4-read-from-primary | +++ PGOV1_TAG=1.4.0 logger.go:42: 18:14:31 | additional-volumes/4-read-from-primary | +++ export PGOV1_VER=14 logger.go:42: 18:14:31 | additional-volumes/4-read-from-primary | +++ PGOV1_VER=14 logger.go:42: 18:14:31 | additional-volumes/4-read-from-primary | +++ export CPGO_VERSION=5.8.7 logger.go:42: 18:14:31 | additional-volumes/4-read-from-primary | +++ CPGO_VERSION=5.8.7 logger.go:42: 18:14:31 | additional-volumes/4-read-from-primary | +++ export MINIO_VER=5.4.0 logger.go:42: 18:14:31 | additional-volumes/4-read-from-primary | +++ MINIO_VER=5.4.0 logger.go:42: 18:14:31 | additional-volumes/4-read-from-primary | +++ export VAULT_VER=0.32.0 logger.go:42: 18:14:31 | additional-volumes/4-read-from-primary | +++ VAULT_VER=0.32.0 logger.go:42: 18:14:31 | additional-volumes/4-read-from-primary | +++ export REGISTRY_NAME=docker.io logger.go:42: 18:14:31 | additional-volumes/4-read-from-primary | +++ REGISTRY_NAME=docker.io logger.go:42: 18:14:31 | additional-volumes/4-read-from-primary | +++ export REGISTRY_NAME_FULL=docker.io/ logger.go:42: 18:14:31 | additional-volumes/4-read-from-primary | +++ REGISTRY_NAME_FULL=docker.io/ logger.go:42: 18:14:31 | additional-volumes/4-read-from-primary | ++++ printenv logger.go:42: 18:14:31 | additional-volumes/4-read-from-primary | ++++ grep -E '^IMAGE' logger.go:42: 18:14:31 | additional-volumes/4-read-from-primary | ++++ awk -F= '{print $1}' logger.go:42: 18:14:31 | additional-volumes/4-read-from-primary | +++ for var in $(printenv | grep -E '^IMAGE' | awk -F'=' '{print $1}') logger.go:42: 18:14:31 | additional-volumes/4-read-from-primary | ++++ eval 'echo $IMAGE_BACKREST' logger.go:42: 18:14:31 | additional-volumes/4-read-from-primary | +++++ echo perconalab/percona-postgresql-operator:main-pgbackrest18 logger.go:42: 18:14:31 | additional-volumes/4-read-from-primary | +++ var_value=perconalab/percona-postgresql-operator:main-pgbackrest18 logger.go:42: 18:14:31 | additional-volumes/4-read-from-primary | +++ [[ perconalab/percona-postgresql-operator:main-pgbackrest18 == docker.io/* ]] logger.go:42: 18:14:31 | additional-volumes/4-read-from-primary | +++ [[ perconalab/percona-postgresql-operator:main-pgbackrest18 == percona/* ]] logger.go:42: 18:14:31 | additional-volumes/4-read-from-primary | +++ [[ perconalab/percona-postgresql-operator:main-pgbackrest18 == perconalab/* ]] logger.go:42: 18:14:31 | additional-volumes/4-read-from-primary | +++ new_value=docker.io/perconalab/percona-postgresql-operator:main-pgbackrest18 logger.go:42: 18:14:31 | additional-volumes/4-read-from-primary | +++ export IMAGE_BACKREST=docker.io/perconalab/percona-postgresql-operator:main-pgbackrest18 logger.go:42: 18:14:31 | additional-volumes/4-read-from-primary | +++ IMAGE_BACKREST=docker.io/perconalab/percona-postgresql-operator:main-pgbackrest18 logger.go:42: 18:14:31 | additional-volumes/4-read-from-primary | +++ echo IMAGE_BACKREST=docker.io/perconalab/percona-postgresql-operator:main-pgbackrest18 logger.go:42: 18:14:31 | additional-volumes/4-read-from-primary | IMAGE_BACKREST=docker.io/perconalab/percona-postgresql-operator:main-pgbackrest18 logger.go:42: 18:14:31 | additional-volumes/4-read-from-primary | +++ echo perconalab/percona-postgresql-operator:PR-1760-4947a0272 logger.go:42: 18:14:31 | additional-volumes/4-read-from-primary | perconalab/percona-postgresql-operator:PR-1760-4947a0272 logger.go:42: 18:14:31 | additional-volumes/4-read-from-primary | +++ for var in $(printenv | grep -E '^IMAGE' | awk -F'=' '{print $1}') logger.go:42: 18:14:31 | additional-volumes/4-read-from-primary | ++++ eval 'echo $IMAGE' logger.go:42: 18:14:31 | additional-volumes/4-read-from-primary | +++++ echo perconalab/percona-postgresql-operator:PR-1760-4947a0272 logger.go:42: 18:14:31 | additional-volumes/4-read-from-primary | +++ var_value=perconalab/percona-postgresql-operator:PR-1760-4947a0272 logger.go:42: 18:14:31 | additional-volumes/4-read-from-primary | +++ [[ perconalab/percona-postgresql-operator:PR-1760-4947a0272 == docker.io/* ]] logger.go:42: 18:14:31 | additional-volumes/4-read-from-primary | +++ [[ perconalab/percona-postgresql-operator:PR-1760-4947a0272 == percona/* ]] logger.go:42: 18:14:31 | additional-volumes/4-read-from-primary | +++ [[ perconalab/percona-postgresql-operator:PR-1760-4947a0272 == perconalab/* ]] logger.go:42: 18:14:31 | additional-volumes/4-read-from-primary | +++ new_value=docker.io/perconalab/percona-postgresql-operator:PR-1760-4947a0272 logger.go:42: 18:14:31 | additional-volumes/4-read-from-primary | +++ export IMAGE=docker.io/perconalab/percona-postgresql-operator:PR-1760-4947a0272 logger.go:42: 18:14:31 | additional-volumes/4-read-from-primary | +++ IMAGE=docker.io/perconalab/percona-postgresql-operator:PR-1760-4947a0272 logger.go:42: 18:14:31 | additional-volumes/4-read-from-primary | +++ echo IMAGE=docker.io/perconalab/percona-postgresql-operator:PR-1760-4947a0272 logger.go:42: 18:14:31 | additional-volumes/4-read-from-primary | IMAGE=docker.io/perconalab/percona-postgresql-operator:PR-1760-4947a0272 logger.go:42: 18:14:31 | additional-volumes/4-read-from-primary | +++ echo docker.io/perconalab/percona-postgresql-operator:PR-1760-4947a0272 logger.go:42: 18:14:31 | additional-volumes/4-read-from-primary | docker.io/perconalab/percona-postgresql-operator:PR-1760-4947a0272 logger.go:42: 18:14:31 | additional-volumes/4-read-from-primary | +++ for var in $(printenv | grep -E '^IMAGE' | awk -F'=' '{print $1}') logger.go:42: 18:14:31 | additional-volumes/4-read-from-primary | ++++ eval 'echo $IMAGE_UPGRADE' logger.go:42: 18:14:31 | additional-volumes/4-read-from-primary | +++++ echo perconalab/percona-postgresql-operator:main-upgrade logger.go:42: 18:14:31 | additional-volumes/4-read-from-primary | +++ var_value=perconalab/percona-postgresql-operator:main-upgrade logger.go:42: 18:14:31 | additional-volumes/4-read-from-primary | +++ [[ perconalab/percona-postgresql-operator:main-upgrade == docker.io/* ]] logger.go:42: 18:14:31 | additional-volumes/4-read-from-primary | +++ [[ perconalab/percona-postgresql-operator:main-upgrade == percona/* ]] logger.go:42: 18:14:31 | additional-volumes/4-read-from-primary | +++ [[ perconalab/percona-postgresql-operator:main-upgrade == perconalab/* ]] logger.go:42: 18:14:31 | additional-volumes/4-read-from-primary | +++ new_value=docker.io/perconalab/percona-postgresql-operator:main-upgrade logger.go:42: 18:14:31 | additional-volumes/4-read-from-primary | +++ export IMAGE_UPGRADE=docker.io/perconalab/percona-postgresql-operator:main-upgrade logger.go:42: 18:14:31 | additional-volumes/4-read-from-primary | +++ IMAGE_UPGRADE=docker.io/perconalab/percona-postgresql-operator:main-upgrade logger.go:42: 18:14:31 | additional-volumes/4-read-from-primary | +++ echo IMAGE_UPGRADE=docker.io/perconalab/percona-postgresql-operator:main-upgrade logger.go:42: 18:14:31 | additional-volumes/4-read-from-primary | IMAGE_UPGRADE=docker.io/perconalab/percona-postgresql-operator:main-upgrade logger.go:42: 18:14:31 | additional-volumes/4-read-from-primary | +++ echo docker.io/perconalab/percona-postgresql-operator:PR-1760-4947a0272 logger.go:42: 18:14:31 | additional-volumes/4-read-from-primary | docker.io/perconalab/percona-postgresql-operator:PR-1760-4947a0272 logger.go:42: 18:14:31 | additional-volumes/4-read-from-primary | +++ for var in $(printenv | grep -E '^IMAGE' | awk -F'=' '{print $1}') logger.go:42: 18:14:31 | additional-volumes/4-read-from-primary | ++++ eval 'echo $IMAGE_LOGCOLLECTOR' logger.go:42: 18:14:31 | additional-volumes/4-read-from-primary | +++++ echo perconalab/fluentbit:main-logcollector logger.go:42: 18:14:31 | additional-volumes/4-read-from-primary | +++ var_value=perconalab/fluentbit:main-logcollector logger.go:42: 18:14:31 | additional-volumes/4-read-from-primary | +++ [[ perconalab/fluentbit:main-logcollector == docker.io/* ]] logger.go:42: 18:14:31 | additional-volumes/4-read-from-primary | +++ [[ perconalab/fluentbit:main-logcollector == percona/* ]] logger.go:42: 18:14:31 | additional-volumes/4-read-from-primary | +++ [[ perconalab/fluentbit:main-logcollector == perconalab/* ]] logger.go:42: 18:14:31 | additional-volumes/4-read-from-primary | +++ new_value=docker.io/perconalab/fluentbit:main-logcollector logger.go:42: 18:14:31 | additional-volumes/4-read-from-primary | +++ export IMAGE_LOGCOLLECTOR=docker.io/perconalab/fluentbit:main-logcollector logger.go:42: 18:14:31 | additional-volumes/4-read-from-primary | +++ IMAGE_LOGCOLLECTOR=docker.io/perconalab/fluentbit:main-logcollector logger.go:42: 18:14:31 | additional-volumes/4-read-from-primary | +++ echo IMAGE_LOGCOLLECTOR=docker.io/perconalab/fluentbit:main-logcollector logger.go:42: 18:14:31 | additional-volumes/4-read-from-primary | IMAGE_LOGCOLLECTOR=docker.io/perconalab/fluentbit:main-logcollector logger.go:42: 18:14:31 | additional-volumes/4-read-from-primary | +++ echo docker.io/perconalab/percona-postgresql-operator:PR-1760-4947a0272 logger.go:42: 18:14:31 | additional-volumes/4-read-from-primary | docker.io/perconalab/percona-postgresql-operator:PR-1760-4947a0272 logger.go:42: 18:14:31 | additional-volumes/4-read-from-primary | +++ for var in $(printenv | grep -E '^IMAGE' | awk -F'=' '{print $1}') logger.go:42: 18:14:31 | additional-volumes/4-read-from-primary | ++++ eval 'echo $IMAGE_BASE' logger.go:42: 18:14:31 | additional-volumes/4-read-from-primary | +++++ echo perconalab/percona-postgresql-operator logger.go:42: 18:14:31 | additional-volumes/4-read-from-primary | +++ var_value=perconalab/percona-postgresql-operator logger.go:42: 18:14:31 | additional-volumes/4-read-from-primary | +++ [[ perconalab/percona-postgresql-operator == docker.io/* ]] logger.go:42: 18:14:31 | additional-volumes/4-read-from-primary | +++ [[ perconalab/percona-postgresql-operator == percona/* ]] logger.go:42: 18:14:31 | additional-volumes/4-read-from-primary | +++ [[ perconalab/percona-postgresql-operator == perconalab/* ]] logger.go:42: 18:14:31 | additional-volumes/4-read-from-primary | +++ new_value=docker.io/perconalab/percona-postgresql-operator logger.go:42: 18:14:31 | additional-volumes/4-read-from-primary | +++ export IMAGE_BASE=docker.io/perconalab/percona-postgresql-operator logger.go:42: 18:14:31 | additional-volumes/4-read-from-primary | +++ IMAGE_BASE=docker.io/perconalab/percona-postgresql-operator logger.go:42: 18:14:31 | additional-volumes/4-read-from-primary | +++ echo IMAGE_BASE=docker.io/perconalab/percona-postgresql-operator logger.go:42: 18:14:31 | additional-volumes/4-read-from-primary | IMAGE_BASE=docker.io/perconalab/percona-postgresql-operator logger.go:42: 18:14:31 | additional-volumes/4-read-from-primary | +++ echo docker.io/perconalab/percona-postgresql-operator:PR-1760-4947a0272 logger.go:42: 18:14:31 | additional-volumes/4-read-from-primary | docker.io/perconalab/percona-postgresql-operator:PR-1760-4947a0272 logger.go:42: 18:14:31 | additional-volumes/4-read-from-primary | +++ for var in $(printenv | grep -E '^IMAGE' | awk -F'=' '{print $1}') logger.go:42: 18:14:31 | additional-volumes/4-read-from-primary | ++++ eval 'echo $IMAGE_PGBOUNCER' logger.go:42: 18:14:31 | additional-volumes/4-read-from-primary | +++++ echo perconalab/percona-postgresql-operator:main-pgbouncer18 logger.go:42: 18:14:31 | additional-volumes/4-read-from-primary | +++ var_value=perconalab/percona-postgresql-operator:main-pgbouncer18 logger.go:42: 18:14:31 | additional-volumes/4-read-from-primary | +++ [[ perconalab/percona-postgresql-operator:main-pgbouncer18 == docker.io/* ]] logger.go:42: 18:14:31 | additional-volumes/4-read-from-primary | +++ [[ perconalab/percona-postgresql-operator:main-pgbouncer18 == percona/* ]] logger.go:42: 18:14:31 | additional-volumes/4-read-from-primary | +++ [[ perconalab/percona-postgresql-operator:main-pgbouncer18 == perconalab/* ]] logger.go:42: 18:14:31 | additional-volumes/4-read-from-primary | +++ new_value=docker.io/perconalab/percona-postgresql-operator:main-pgbouncer18 logger.go:42: 18:14:31 | additional-volumes/4-read-from-primary | +++ export IMAGE_PGBOUNCER=docker.io/perconalab/percona-postgresql-operator:main-pgbouncer18 logger.go:42: 18:14:31 | additional-volumes/4-read-from-primary | +++ IMAGE_PGBOUNCER=docker.io/perconalab/percona-postgresql-operator:main-pgbouncer18 logger.go:42: 18:14:31 | additional-volumes/4-read-from-primary | +++ echo IMAGE_PGBOUNCER=docker.io/perconalab/percona-postgresql-operator:main-pgbouncer18 logger.go:42: 18:14:31 | additional-volumes/4-read-from-primary | IMAGE_PGBOUNCER=docker.io/perconalab/percona-postgresql-operator:main-pgbouncer18 logger.go:42: 18:14:31 | additional-volumes/4-read-from-primary | +++ echo docker.io/perconalab/percona-postgresql-operator:PR-1760-4947a0272 logger.go:42: 18:14:31 | additional-volumes/4-read-from-primary | docker.io/perconalab/percona-postgresql-operator:PR-1760-4947a0272 logger.go:42: 18:14:31 | additional-volumes/4-read-from-primary | +++ for var in $(printenv | grep -E '^IMAGE' | awk -F'=' '{print $1}') logger.go:42: 18:14:31 | additional-volumes/4-read-from-primary | ++++ eval 'echo $IMAGE_POSTGRESQL' logger.go:42: 18:14:31 | additional-volumes/4-read-from-primary | +++++ echo perconalab/percona-postgresql-operator:main-ppg18-postgres logger.go:42: 18:14:31 | additional-volumes/4-read-from-primary | +++ var_value=perconalab/percona-postgresql-operator:main-ppg18-postgres logger.go:42: 18:14:31 | additional-volumes/4-read-from-primary | +++ [[ perconalab/percona-postgresql-operator:main-ppg18-postgres == docker.io/* ]] logger.go:42: 18:14:31 | additional-volumes/4-read-from-primary | +++ [[ perconalab/percona-postgresql-operator:main-ppg18-postgres == percona/* ]] logger.go:42: 18:14:31 | additional-volumes/4-read-from-primary | +++ [[ perconalab/percona-postgresql-operator:main-ppg18-postgres == perconalab/* ]] logger.go:42: 18:14:31 | additional-volumes/4-read-from-primary | +++ new_value=docker.io/perconalab/percona-postgresql-operator:main-ppg18-postgres logger.go:42: 18:14:31 | additional-volumes/4-read-from-primary | +++ export IMAGE_POSTGRESQL=docker.io/perconalab/percona-postgresql-operator:main-ppg18-postgres logger.go:42: 18:14:31 | additional-volumes/4-read-from-primary | +++ IMAGE_POSTGRESQL=docker.io/perconalab/percona-postgresql-operator:main-ppg18-postgres logger.go:42: 18:14:31 | additional-volumes/4-read-from-primary | +++ echo IMAGE_POSTGRESQL=docker.io/perconalab/percona-postgresql-operator:main-ppg18-postgres logger.go:42: 18:14:31 | additional-volumes/4-read-from-primary | IMAGE_POSTGRESQL=docker.io/perconalab/percona-postgresql-operator:main-ppg18-postgres logger.go:42: 18:14:31 | additional-volumes/4-read-from-primary | +++ echo docker.io/perconalab/percona-postgresql-operator:PR-1760-4947a0272 logger.go:42: 18:14:31 | additional-volumes/4-read-from-primary | docker.io/perconalab/percona-postgresql-operator:PR-1760-4947a0272 logger.go:42: 18:14:31 | additional-volumes/4-read-from-primary | +++ for var in $(printenv | grep -E '^IMAGE' | awk -F'=' '{print $1}') logger.go:42: 18:14:31 | additional-volumes/4-read-from-primary | ++++ eval 'echo $IMAGE_PMM_SERVER' logger.go:42: 18:14:31 | additional-volumes/4-read-from-primary | +++++ echo perconalab/pmm-server:3-dev-latest logger.go:42: 18:14:31 | additional-volumes/4-read-from-primary | +++ var_value=perconalab/pmm-server:3-dev-latest logger.go:42: 18:14:31 | additional-volumes/4-read-from-primary | +++ [[ perconalab/pmm-server:3-dev-latest == docker.io/* ]] logger.go:42: 18:14:31 | additional-volumes/4-read-from-primary | +++ [[ perconalab/pmm-server:3-dev-latest == percona/* ]] logger.go:42: 18:14:31 | additional-volumes/4-read-from-primary | +++ [[ perconalab/pmm-server:3-dev-latest == perconalab/* ]] logger.go:42: 18:14:31 | additional-volumes/4-read-from-primary | +++ new_value=docker.io/perconalab/pmm-server:3-dev-latest logger.go:42: 18:14:31 | additional-volumes/4-read-from-primary | +++ export IMAGE_PMM_SERVER=docker.io/perconalab/pmm-server:3-dev-latest logger.go:42: 18:14:31 | additional-volumes/4-read-from-primary | +++ IMAGE_PMM_SERVER=docker.io/perconalab/pmm-server:3-dev-latest logger.go:42: 18:14:31 | additional-volumes/4-read-from-primary | +++ echo IMAGE_PMM_SERVER=docker.io/perconalab/pmm-server:3-dev-latest logger.go:42: 18:14:31 | additional-volumes/4-read-from-primary | IMAGE_PMM_SERVER=docker.io/perconalab/pmm-server:3-dev-latest logger.go:42: 18:14:31 | additional-volumes/4-read-from-primary | +++ echo docker.io/perconalab/percona-postgresql-operator:PR-1760-4947a0272 logger.go:42: 18:14:31 | additional-volumes/4-read-from-primary | docker.io/perconalab/percona-postgresql-operator:PR-1760-4947a0272 logger.go:42: 18:14:31 | additional-volumes/4-read-from-primary | +++ for var in $(printenv | grep -E '^IMAGE' | awk -F'=' '{print $1}') logger.go:42: 18:14:31 | additional-volumes/4-read-from-primary | ++++ eval 'echo $IMAGE_PMM_CLIENT' logger.go:42: 18:14:31 | additional-volumes/4-read-from-primary | +++++ echo perconalab/pmm-client:3-dev-latest logger.go:42: 18:14:31 | additional-volumes/4-read-from-primary | +++ var_value=perconalab/pmm-client:3-dev-latest logger.go:42: 18:14:31 | additional-volumes/4-read-from-primary | +++ [[ perconalab/pmm-client:3-dev-latest == docker.io/* ]] logger.go:42: 18:14:31 | additional-volumes/4-read-from-primary | +++ [[ perconalab/pmm-client:3-dev-latest == percona/* ]] logger.go:42: 18:14:31 | additional-volumes/4-read-from-primary | +++ [[ perconalab/pmm-client:3-dev-latest == perconalab/* ]] logger.go:42: 18:14:31 | additional-volumes/4-read-from-primary | +++ new_value=docker.io/perconalab/pmm-client:3-dev-latest logger.go:42: 18:14:31 | additional-volumes/4-read-from-primary | +++ export IMAGE_PMM_CLIENT=docker.io/perconalab/pmm-client:3-dev-latest logger.go:42: 18:14:31 | additional-volumes/4-read-from-primary | +++ IMAGE_PMM_CLIENT=docker.io/perconalab/pmm-client:3-dev-latest logger.go:42: 18:14:31 | additional-volumes/4-read-from-primary | +++ echo IMAGE_PMM_CLIENT=docker.io/perconalab/pmm-client:3-dev-latest logger.go:42: 18:14:31 | additional-volumes/4-read-from-primary | IMAGE_PMM_CLIENT=docker.io/perconalab/pmm-client:3-dev-latest logger.go:42: 18:14:31 | additional-volumes/4-read-from-primary | +++ echo docker.io/perconalab/percona-postgresql-operator:PR-1760-4947a0272 logger.go:42: 18:14:31 | additional-volumes/4-read-from-primary | docker.io/perconalab/percona-postgresql-operator:PR-1760-4947a0272 logger.go:42: 18:14:31 | additional-volumes/4-read-from-primary | ++++ which gdate logger.go:42: 18:14:31 | additional-volumes/4-read-from-primary | which: no gdate in (/mnt/jenkins/workspace/cloud-pg-operator_PR-1760/bin/:/root/.krew/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/var/lib/snapd/snap/bin) logger.go:42: 18:14:31 | additional-volumes/4-read-from-primary | ++++ which date logger.go:42: 18:14:31 | additional-volumes/4-read-from-primary | +++ date=/usr/sbin/date logger.go:42: 18:14:31 | additional-volumes/4-read-from-primary | ++++ which gsed logger.go:42: 18:14:31 | additional-volumes/4-read-from-primary | which: no gsed in (/mnt/jenkins/workspace/cloud-pg-operator_PR-1760/bin/:/root/.krew/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/var/lib/snapd/snap/bin) logger.go:42: 18:14:31 | additional-volumes/4-read-from-primary | ++++ which sed logger.go:42: 18:14:31 | additional-volumes/4-read-from-primary | +++ sed=/usr/sbin/sed logger.go:42: 18:14:31 | additional-volumes/4-read-from-primary | ++ get_psql_uri additional-volumes postgres logger.go:42: 18:14:31 | additional-volumes/4-read-from-primary | ++ local cluster=additional-volumes logger.go:42: 18:14:31 | additional-volumes/4-read-from-primary | ++ local user=postgres logger.go:42: 18:14:31 | additional-volumes/4-read-from-primary | ++ local secret_name=additional-volumes-pguser-postgres logger.go:42: 18:14:31 | additional-volumes/4-read-from-primary | +++ get_psql_user_pass additional-volumes-pguser-postgres logger.go:42: 18:14:31 | additional-volumes/4-read-from-primary | +++ local secret_name=additional-volumes-pguser-postgres logger.go:42: 18:14:31 | additional-volumes/4-read-from-primary | +++ kubectl -n kuttl-test-intimate-garfish get secret/additional-volumes-pguser-postgres '--template={{.data.password | base64decode}}' logger.go:42: 18:14:32 | additional-volumes/4-read-from-primary | +++ get_psql_user_host additional-volumes-pguser-postgres logger.go:42: 18:14:32 | additional-volumes/4-read-from-primary | +++ local secret_name=additional-volumes-pguser-postgres logger.go:42: 18:14:32 | additional-volumes/4-read-from-primary | +++ kubectl -n kuttl-test-intimate-garfish get secret/additional-volumes-pguser-postgres '--template={{.data.host | base64decode }}' logger.go:42: 18:14:32 | additional-volumes/4-read-from-primary | ++ echo postgres:l0MUHwCzHnDZcySTpvPctkb7@additional-volumes-primary.kuttl-test-intimate-garfish.svc logger.go:42: 18:14:32 | additional-volumes/4-read-from-primary | + uri=postgres:l0MUHwCzHnDZcySTpvPctkb7@additional-volumes-primary.kuttl-test-intimate-garfish.svc logger.go:42: 18:14:32 | additional-volumes/4-read-from-primary | ++ run_psql_local 'select pg_tablespace_location(oid) from pg_tablespace where spcname = '\''\'\'''\''myts'\''\'\'''\'';' postgres:l0MUHwCzHnDZcySTpvPctkb7@additional-volumes-primary.kuttl-test-intimate-garfish.svc logger.go:42: 18:14:32 | additional-volumes/4-read-from-primary | ++ local 'command=select pg_tablespace_location(oid) from pg_tablespace where spcname = '\''\'\'''\''myts'\''\'\'''\'';' logger.go:42: 18:14:32 | additional-volumes/4-read-from-primary | ++ local uri=postgres:l0MUHwCzHnDZcySTpvPctkb7@additional-volumes-primary.kuttl-test-intimate-garfish.svc logger.go:42: 18:14:32 | additional-volumes/4-read-from-primary | ++ local driver=postgres logger.go:42: 18:14:32 | additional-volumes/4-read-from-primary | +++ get_client_pod logger.go:42: 18:14:32 | additional-volumes/4-read-from-primary | +++ kubectl -n kuttl-test-intimate-garfish get pods --selector=name=pg-client -o 'jsonpath={.items[].metadata.name}' logger.go:42: 18:14:33 | additional-volumes/4-read-from-primary | ++ kubectl -n kuttl-test-intimate-garfish exec pg-client-65d98588cc-q6dhp -- bash -c 'printf '\''select pg_tablespace_location(oid) from pg_tablespace where spcname = '\''\'\'''\''myts'\''\'\'''\'';\n'\'' | psql -v ON_ERROR_STOP=1 -t -q postgres://'\''postgres:l0MUHwCzHnDZcySTpvPctkb7@additional-volumes-primary.kuttl-test-intimate-garfish.svc'\''' logger.go:42: 18:14:34 | additional-volumes/4-read-from-primary | + data=' /tablespaces/myts/data' logger.go:42: 18:14:34 | additional-volumes/4-read-from-primary | + kubectl create configmap -n kuttl-test-intimate-garfish 04-check-tablespace '--from-literal=data= /tablespaces/myts/data' logger.go:42: 18:14:34 | additional-volumes/4-read-from-primary | configmap/04-check-tablespace created logger.go:42: 18:14:34 | additional-volumes/4-read-from-primary | ++ run_psql_local '\c myapp \\\ SELECT ts.spcname AS tablespace_name FROM pg_class t JOIN pg_tablespace ts ON t.reltablespace = ts.oid WHERE t.relname = '\''\'\'''\''myapp'\''\'\'''\'';' postgres:l0MUHwCzHnDZcySTpvPctkb7@additional-volumes-primary.kuttl-test-intimate-garfish.svc logger.go:42: 18:14:34 | additional-volumes/4-read-from-primary | ++ local 'command=\c myapp \\\ SELECT ts.spcname AS tablespace_name FROM pg_class t JOIN pg_tablespace ts ON t.reltablespace = ts.oid WHERE t.relname = '\''\'\'''\''myapp'\''\'\'''\'';' logger.go:42: 18:14:34 | additional-volumes/4-read-from-primary | ++ local uri=postgres:l0MUHwCzHnDZcySTpvPctkb7@additional-volumes-primary.kuttl-test-intimate-garfish.svc logger.go:42: 18:14:34 | additional-volumes/4-read-from-primary | ++ local driver=postgres logger.go:42: 18:14:34 | additional-volumes/4-read-from-primary | +++ get_client_pod logger.go:42: 18:14:34 | additional-volumes/4-read-from-primary | +++ kubectl -n kuttl-test-intimate-garfish get pods --selector=name=pg-client -o 'jsonpath={.items[].metadata.name}' logger.go:42: 18:14:35 | additional-volumes/4-read-from-primary | ++ kubectl -n kuttl-test-intimate-garfish exec pg-client-65d98588cc-q6dhp -- bash -c 'printf '\''\c myapp \\\ SELECT ts.spcname AS tablespace_name FROM pg_class t JOIN pg_tablespace ts ON t.reltablespace = ts.oid WHERE t.relname = '\''\'\'''\''myapp'\''\'\'''\'';\n'\'' | psql -v ON_ERROR_STOP=1 -t -q postgres://'\''postgres:l0MUHwCzHnDZcySTpvPctkb7@additional-volumes-primary.kuttl-test-intimate-garfish.svc'\''' logger.go:42: 18:14:36 | additional-volumes/4-read-from-primary | + data=' myts' logger.go:42: 18:14:36 | additional-volumes/4-read-from-primary | + kubectl create configmap -n kuttl-test-intimate-garfish 04-check-table-in-tablespace '--from-literal=data= myts' logger.go:42: 18:14:36 | additional-volumes/4-read-from-primary | configmap/04-check-table-in-tablespace created logger.go:42: 18:14:36 | additional-volumes/4-read-from-primary | ++ run_psql_local '\c myapp \\\ SELECT * from myApp;' postgres:l0MUHwCzHnDZcySTpvPctkb7@additional-volumes-primary.kuttl-test-intimate-garfish.svc logger.go:42: 18:14:36 | additional-volumes/4-read-from-primary | ++ local 'command=\c myapp \\\ SELECT * from myApp;' logger.go:42: 18:14:36 | additional-volumes/4-read-from-primary | ++ local uri=postgres:l0MUHwCzHnDZcySTpvPctkb7@additional-volumes-primary.kuttl-test-intimate-garfish.svc logger.go:42: 18:14:36 | additional-volumes/4-read-from-primary | ++ local driver=postgres logger.go:42: 18:14:36 | additional-volumes/4-read-from-primary | +++ get_client_pod logger.go:42: 18:14:36 | additional-volumes/4-read-from-primary | +++ kubectl -n kuttl-test-intimate-garfish get pods --selector=name=pg-client -o 'jsonpath={.items[].metadata.name}' logger.go:42: 18:14:37 | additional-volumes/4-read-from-primary | ++ kubectl -n kuttl-test-intimate-garfish exec pg-client-65d98588cc-q6dhp -- bash -c 'printf '\''\c myapp \\\ SELECT * from myApp;\n'\'' | psql -v ON_ERROR_STOP=1 -t -q postgres://'\''postgres:l0MUHwCzHnDZcySTpvPctkb7@additional-volumes-primary.kuttl-test-intimate-garfish.svc'\''' logger.go:42: 18:14:38 | additional-volumes/4-read-from-primary | + data=' 100500' logger.go:42: 18:14:38 | additional-volumes/4-read-from-primary | + kubectl create configmap -n kuttl-test-intimate-garfish 04-read-from-primary '--from-literal=data= 100500' logger.go:42: 18:14:38 | additional-volumes/4-read-from-primary | configmap/04-read-from-primary created logger.go:42: 18:14:38 | additional-volumes/4-read-from-primary | ++ get_pod_by_role additional-volumes primary name logger.go:42: 18:14:38 | additional-volumes/4-read-from-primary | ++ local cluster=additional-volumes logger.go:42: 18:14:38 | additional-volumes/4-read-from-primary | ++ local role=primary logger.go:42: 18:14:38 | additional-volumes/4-read-from-primary | ++ local parameter=name logger.go:42: 18:14:38 | additional-volumes/4-read-from-primary | ++ case ${parameter} in logger.go:42: 18:14:38 | additional-volumes/4-read-from-primary | ++ local 'jsonpath={.items[].metadata.name}' logger.go:42: 18:14:38 | additional-volumes/4-read-from-primary | +++ kubectl get pods --namespace kuttl-test-intimate-garfish --selector=postgres-operator.crunchydata.com/role=primary,postgres-operator.crunchydata.com/cluster=additional-volumes -o 'jsonpath={.items[].metadata.name}' logger.go:42: 18:14:39 | additional-volumes/4-read-from-primary | ++ echo additional-volumes-instance1-n8pg-0 logger.go:42: 18:14:39 | additional-volumes/4-read-from-primary | + primary=additional-volumes-instance1-n8pg-0 logger.go:42: 18:14:39 | additional-volumes/4-read-from-primary | + kubectl -n kuttl-test-intimate-garfish exec additional-volumes-instance1-n8pg-0 -c database -- bash -c 'ls /pgwal/pg18_wal | grep -qE '\''^[0-9A-F]{24}$'\''' logger.go:42: 18:14:41 | additional-volumes/4-read-from-primary | test step completed 4-read-from-primary logger.go:42: 18:14:41 | additional-volumes/5-create-backup | starting test step 5-create-backup logger.go:42: 18:14:41 | additional-volumes/5-create-backup | PerconaPGBackup:kuttl-test-intimate-garfish/additional-volumes-full created logger.go:42: 18:16:55 | additional-volumes/5-create-backup | test step completed 5-create-backup logger.go:42: 18:16:55 | additional-volumes/6-restart-and-verify | starting test step 6-restart-and-verify logger.go:42: 18:16:55 | additional-volumes/6-restart-and-verify | running command: [sh -c set -o errexit set -o xtrace source ../../functions # The backup in the previous step ran pgBackRest on the primary, which logs # through the symlink onto the volume. This is the one producer that writes # there with no user configuration: Postgres' own log_directory defaults to # the versioned data directory, so server logs stay on the data volume. primary=$(get_pod_by_role additional-volumes primary name) kubectl -n "${NAMESPACE}" exec "${primary}" -c database -- \ bash -c 'ls /pglogs/pgbackrest/log/*.log >/dev/null' marker="pglogs-$(date +%s)-${RANDOM}" kubectl -n "${NAMESPACE}" exec "${primary}" -c database -- \ bash -c "printf '%s' '${marker}' > /pglogs/marker" # Surviving a pod restart is the definitive proof the WAL and the logs live on # their PVCs and not on the pod's ephemeral filesystem. restart_pg_pods additional-volumes instance1 wait_cluster_consistency additional-volumes for pod in $(get_instance_set_pods instance1); do kubectl -n "${NAMESPACE}" exec "${pod}" -c database -- \ grep -q ' /pgwal ' /proc/mounts kubectl -n "${NAMESPACE}" exec "${pod}" -c database -- \ grep -q ' /pglogs ' /proc/mounts check_additional_volume_symlinks "${pod}" "after restart" done primary=$(get_pod_by_role additional-volumes primary name) readback=$(kubectl -n "${NAMESPACE}" exec "${primary}" -c database -- cat /pglogs/marker) if [[ ${readback} != "${marker}" ]]; then echo "log volume did not persist across restart: wrote '${marker}', read '${readback}'" exit 1 fi data=$(run_psql_local '\c myapp \\\ SELECT * from myApp;' \ "$(get_psql_uri additional-volumes postgres)") kubectl create configmap -n "${NAMESPACE}" 06-read-after-restart --from-literal=data="${data}"] logger.go:42: 18:16:55 | additional-volumes/6-restart-and-verify | + source ../../functions logger.go:42: 18:16:55 | additional-volumes/6-restart-and-verify | +++ realpath ../../.. logger.go:42: 18:16:55 | additional-volumes/6-restart-and-verify | ++ ROOT_REPO=/mnt/jenkins/workspace/cloud-pg-operator_PR-1760 logger.go:42: 18:16:55 | additional-volumes/6-restart-and-verify | ++ CERT_MANAGER_VER=1.20.2 logger.go:42: 18:16:55 | additional-volumes/6-restart-and-verify | ++ CERT_MANAGER_TEST_LABEL=e2e.percona.com/managed-by=percona-postgresql-operator-tests logger.go:42: 18:16:55 | additional-volumes/6-restart-and-verify | ++ CHAOS_MESH_VER=2.5.1 logger.go:42: 18:16:55 | additional-volumes/6-restart-and-verify | ++ BUSYBOX_VER=1.36 logger.go:42: 18:16:55 | additional-volumes/6-restart-and-verify | ++++ pwd logger.go:42: 18:16:55 | additional-volumes/6-restart-and-verify | +++ basename /mnt/jenkins/workspace/cloud-pg-operator_PR-1760/e2e-tests/tests/additional-volumes logger.go:42: 18:16:55 | additional-volumes/6-restart-and-verify | ++ test_name=additional-volumes logger.go:42: 18:16:55 | additional-volumes/6-restart-and-verify | ++ source /mnt/jenkins/workspace/cloud-pg-operator_PR-1760/e2e-tests/vars.sh logger.go:42: 18:16:55 | additional-volumes/6-restart-and-verify | +++ export ROOT_REPO=/mnt/jenkins/workspace/cloud-pg-operator_PR-1760 logger.go:42: 18:16:55 | additional-volumes/6-restart-and-verify | +++ ROOT_REPO=/mnt/jenkins/workspace/cloud-pg-operator_PR-1760 logger.go:42: 18:16:55 | additional-volumes/6-restart-and-verify | +++ export DEPLOY_DIR=/mnt/jenkins/workspace/cloud-pg-operator_PR-1760/deploy logger.go:42: 18:16:55 | additional-volumes/6-restart-and-verify | +++ DEPLOY_DIR=/mnt/jenkins/workspace/cloud-pg-operator_PR-1760/deploy logger.go:42: 18:16:55 | additional-volumes/6-restart-and-verify | +++ export TESTS_DIR=/mnt/jenkins/workspace/cloud-pg-operator_PR-1760/e2e-tests logger.go:42: 18:16:55 | additional-volumes/6-restart-and-verify | +++ TESTS_DIR=/mnt/jenkins/workspace/cloud-pg-operator_PR-1760/e2e-tests logger.go:42: 18:16:55 | additional-volumes/6-restart-and-verify | +++ export TESTS_CONFIG_DIR=/mnt/jenkins/workspace/cloud-pg-operator_PR-1760/e2e-tests/conf logger.go:42: 18:16:55 | additional-volumes/6-restart-and-verify | +++ TESTS_CONFIG_DIR=/mnt/jenkins/workspace/cloud-pg-operator_PR-1760/e2e-tests/conf logger.go:42: 18:16:55 | additional-volumes/6-restart-and-verify | +++ export TEST_CONFIG_DIR=/mnt/jenkins/workspace/cloud-pg-operator_PR-1760/e2e-tests/tests/additional-volumes/conf logger.go:42: 18:16:55 | additional-volumes/6-restart-and-verify | +++ TEST_CONFIG_DIR=/mnt/jenkins/workspace/cloud-pg-operator_PR-1760/e2e-tests/tests/additional-volumes/conf logger.go:42: 18:16:55 | additional-volumes/6-restart-and-verify | +++ export TEMP_DIR=/tmp/kuttl/pg/additional-volumes logger.go:42: 18:16:55 | additional-volumes/6-restart-and-verify | +++ TEMP_DIR=/tmp/kuttl/pg/additional-volumes logger.go:42: 18:16:55 | additional-volumes/6-restart-and-verify | ++++ git rev-parse --abbrev-ref HEAD logger.go:42: 18:16:55 | additional-volumes/6-restart-and-verify | +++ export GIT_BRANCH=PR-1760 logger.go:42: 18:16:55 | additional-volumes/6-restart-and-verify | +++ GIT_BRANCH=PR-1760 logger.go:42: 18:16:55 | additional-volumes/6-restart-and-verify | +++ export VERSION=PR-1760-4947a0272 logger.go:42: 18:16:55 | additional-volumes/6-restart-and-verify | +++ VERSION=PR-1760-4947a0272 logger.go:42: 18:16:55 | additional-volumes/6-restart-and-verify | +++ export SKIP_TEST_WARNINGS=true logger.go:42: 18:16:55 | additional-volumes/6-restart-and-verify | +++ SKIP_TEST_WARNINGS=true logger.go:42: 18:16:55 | additional-volumes/6-restart-and-verify | +++ export K8S_UPGRADE_PLATFORM=gke logger.go:42: 18:16:55 | additional-volumes/6-restart-and-verify | +++ K8S_UPGRADE_PLATFORM=gke logger.go:42: 18:16:55 | additional-volumes/6-restart-and-verify | +++ export K8S_UPGRADE_REGION=us-central1-a logger.go:42: 18:16:55 | additional-volumes/6-restart-and-verify | +++ K8S_UPGRADE_REGION=us-central1-a logger.go:42: 18:16:55 | additional-volumes/6-restart-and-verify | +++ export K8S_UPGRADE_INITIAL_VERSION= logger.go:42: 18:16:55 | additional-volumes/6-restart-and-verify | +++ K8S_UPGRADE_INITIAL_VERSION= logger.go:42: 18:16:55 | additional-volumes/6-restart-and-verify | +++ export K8S_UPGRADE_FINAL_VERSION= logger.go:42: 18:16:55 | additional-volumes/6-restart-and-verify | +++ K8S_UPGRADE_FINAL_VERSION= logger.go:42: 18:16:55 | additional-volumes/6-restart-and-verify | +++ [[ -z '' ]] logger.go:42: 18:16:55 | additional-volumes/6-restart-and-verify | ++++ detect_k8s_platform logger.go:42: 18:16:55 | additional-volumes/6-restart-and-verify | ++++ local detected_platform logger.go:42: 18:16:55 | additional-volumes/6-restart-and-verify | ++++ local xtrace_enabled=false logger.go:42: 18:16:55 | additional-volumes/6-restart-and-verify | ++++ [[ -o xtrace ]] logger.go:42: 18:16:55 | additional-volumes/6-restart-and-verify | ++++ xtrace_enabled=true logger.go:42: 18:16:55 | additional-volumes/6-restart-and-verify | ++++ set +o xtrace logger.go:42: 18:16:57 | additional-volumes/6-restart-and-verify | +++ PLATFORM=gke logger.go:42: 18:16:57 | additional-volumes/6-restart-and-verify | +++ export PLATFORM logger.go:42: 18:16:57 | additional-volumes/6-restart-and-verify | +++ export IMAGE_BASE=perconalab/percona-postgresql-operator logger.go:42: 18:16:57 | additional-volumes/6-restart-and-verify | +++ IMAGE_BASE=perconalab/percona-postgresql-operator logger.go:42: 18:16:57 | additional-volumes/6-restart-and-verify | +++ export IMAGE=perconalab/percona-postgresql-operator:PR-1760-4947a0272 logger.go:42: 18:16:57 | additional-volumes/6-restart-and-verify | +++ IMAGE=perconalab/percona-postgresql-operator:PR-1760-4947a0272 logger.go:42: 18:16:57 | additional-volumes/6-restart-and-verify | +++ [[ ! -n '' ]] logger.go:42: 18:16:57 | additional-volumes/6-restart-and-verify | +++ [[ -n '' ]] logger.go:42: 18:16:57 | additional-volumes/6-restart-and-verify | +++ export PG_VER=18 logger.go:42: 18:16:57 | additional-volumes/6-restart-and-verify | +++ PG_VER=18 logger.go:42: 18:16:57 | additional-volumes/6-restart-and-verify | +++ export PG_DISTRIBUTION= logger.go:42: 18:16:57 | additional-volumes/6-restart-and-verify | +++ PG_DISTRIBUTION= logger.go:42: 18:16:57 | additional-volumes/6-restart-and-verify | +++ [[ '' == community ]] logger.go:42: 18:16:57 | additional-volumes/6-restart-and-verify | +++ export IMAGE_PGBOUNCER=perconalab/percona-postgresql-operator:main-pgbouncer18 logger.go:42: 18:16:57 | additional-volumes/6-restart-and-verify | +++ IMAGE_PGBOUNCER=perconalab/percona-postgresql-operator:main-pgbouncer18 logger.go:42: 18:16:57 | additional-volumes/6-restart-and-verify | +++ export IMAGE_POSTGRESQL=perconalab/percona-postgresql-operator:main-ppg18-postgres logger.go:42: 18:16:57 | additional-volumes/6-restart-and-verify | +++ IMAGE_POSTGRESQL=perconalab/percona-postgresql-operator:main-ppg18-postgres logger.go:42: 18:16:57 | additional-volumes/6-restart-and-verify | +++ export IMAGE_BACKREST=perconalab/percona-postgresql-operator:main-pgbackrest18 logger.go:42: 18:16:57 | additional-volumes/6-restart-and-verify | +++ IMAGE_BACKREST=perconalab/percona-postgresql-operator:main-pgbackrest18 logger.go:42: 18:16:57 | additional-volumes/6-restart-and-verify | +++ export IMAGE_UPGRADE=perconalab/percona-postgresql-operator:main-upgrade logger.go:42: 18:16:57 | additional-volumes/6-restart-and-verify | +++ IMAGE_UPGRADE=perconalab/percona-postgresql-operator:main-upgrade logger.go:42: 18:16:57 | additional-volumes/6-restart-and-verify | +++ export BUCKET=pg-operator-testing logger.go:42: 18:16:57 | additional-volumes/6-restart-and-verify | +++ BUCKET=pg-operator-testing logger.go:42: 18:16:57 | additional-volumes/6-restart-and-verify | +++ export PMM_SERVER_VERSION=9.9.9 logger.go:42: 18:16:57 | additional-volumes/6-restart-and-verify | +++ PMM_SERVER_VERSION=9.9.9 logger.go:42: 18:16:57 | additional-volumes/6-restart-and-verify | +++ export IMAGE_PMM_CLIENT=perconalab/pmm-client:3-dev-latest logger.go:42: 18:16:57 | additional-volumes/6-restart-and-verify | +++ IMAGE_PMM_CLIENT=perconalab/pmm-client:3-dev-latest logger.go:42: 18:16:57 | additional-volumes/6-restart-and-verify | +++ export IMAGE_PMM_SERVER=perconalab/pmm-server:3-dev-latest logger.go:42: 18:16:57 | additional-volumes/6-restart-and-verify | +++ IMAGE_PMM_SERVER=perconalab/pmm-server:3-dev-latest logger.go:42: 18:16:57 | additional-volumes/6-restart-and-verify | +++ export IMAGE_LOGCOLLECTOR=perconalab/fluentbit:main-logcollector logger.go:42: 18:16:57 | additional-volumes/6-restart-and-verify | +++ IMAGE_LOGCOLLECTOR=perconalab/fluentbit:main-logcollector logger.go:42: 18:16:57 | additional-volumes/6-restart-and-verify | +++ export PGOV1_TAG=1.4.0 logger.go:42: 18:16:57 | additional-volumes/6-restart-and-verify | +++ PGOV1_TAG=1.4.0 logger.go:42: 18:16:57 | additional-volumes/6-restart-and-verify | +++ export PGOV1_VER=14 logger.go:42: 18:16:57 | additional-volumes/6-restart-and-verify | +++ PGOV1_VER=14 logger.go:42: 18:16:57 | additional-volumes/6-restart-and-verify | +++ export CPGO_VERSION=5.8.7 logger.go:42: 18:16:57 | additional-volumes/6-restart-and-verify | +++ CPGO_VERSION=5.8.7 logger.go:42: 18:16:57 | additional-volumes/6-restart-and-verify | +++ export MINIO_VER=5.4.0 logger.go:42: 18:16:57 | additional-volumes/6-restart-and-verify | +++ MINIO_VER=5.4.0 logger.go:42: 18:16:57 | additional-volumes/6-restart-and-verify | +++ export VAULT_VER=0.32.0 logger.go:42: 18:16:57 | additional-volumes/6-restart-and-verify | +++ VAULT_VER=0.32.0 logger.go:42: 18:16:57 | additional-volumes/6-restart-and-verify | +++ export REGISTRY_NAME=docker.io logger.go:42: 18:16:57 | additional-volumes/6-restart-and-verify | +++ REGISTRY_NAME=docker.io logger.go:42: 18:16:57 | additional-volumes/6-restart-and-verify | +++ export REGISTRY_NAME_FULL=docker.io/ logger.go:42: 18:16:57 | additional-volumes/6-restart-and-verify | +++ REGISTRY_NAME_FULL=docker.io/ logger.go:42: 18:16:57 | additional-volumes/6-restart-and-verify | ++++ printenv logger.go:42: 18:16:57 | additional-volumes/6-restart-and-verify | ++++ grep -E '^IMAGE' logger.go:42: 18:16:57 | additional-volumes/6-restart-and-verify | ++++ awk -F= '{print $1}' logger.go:42: 18:16:57 | additional-volumes/6-restart-and-verify | +++ for var in $(printenv | grep -E '^IMAGE' | awk -F'=' '{print $1}') logger.go:42: 18:16:57 | additional-volumes/6-restart-and-verify | ++++ eval 'echo $IMAGE_BACKREST' logger.go:42: 18:16:57 | additional-volumes/6-restart-and-verify | +++++ echo perconalab/percona-postgresql-operator:main-pgbackrest18 logger.go:42: 18:16:57 | additional-volumes/6-restart-and-verify | +++ var_value=perconalab/percona-postgresql-operator:main-pgbackrest18 logger.go:42: 18:16:57 | additional-volumes/6-restart-and-verify | +++ [[ perconalab/percona-postgresql-operator:main-pgbackrest18 == docker.io/* ]] logger.go:42: 18:16:57 | additional-volumes/6-restart-and-verify | +++ [[ perconalab/percona-postgresql-operator:main-pgbackrest18 == percona/* ]] logger.go:42: 18:16:57 | additional-volumes/6-restart-and-verify | +++ [[ perconalab/percona-postgresql-operator:main-pgbackrest18 == perconalab/* ]] logger.go:42: 18:16:57 | additional-volumes/6-restart-and-verify | +++ new_value=docker.io/perconalab/percona-postgresql-operator:main-pgbackrest18 logger.go:42: 18:16:57 | additional-volumes/6-restart-and-verify | +++ export IMAGE_BACKREST=docker.io/perconalab/percona-postgresql-operator:main-pgbackrest18 logger.go:42: 18:16:57 | additional-volumes/6-restart-and-verify | +++ IMAGE_BACKREST=docker.io/perconalab/percona-postgresql-operator:main-pgbackrest18 logger.go:42: 18:16:57 | additional-volumes/6-restart-and-verify | +++ echo IMAGE_BACKREST=docker.io/perconalab/percona-postgresql-operator:main-pgbackrest18 logger.go:42: 18:16:57 | additional-volumes/6-restart-and-verify | IMAGE_BACKREST=docker.io/perconalab/percona-postgresql-operator:main-pgbackrest18 logger.go:42: 18:16:57 | additional-volumes/6-restart-and-verify | +++ echo perconalab/percona-postgresql-operator:PR-1760-4947a0272 logger.go:42: 18:16:57 | additional-volumes/6-restart-and-verify | perconalab/percona-postgresql-operator:PR-1760-4947a0272 logger.go:42: 18:16:57 | additional-volumes/6-restart-and-verify | +++ for var in $(printenv | grep -E '^IMAGE' | awk -F'=' '{print $1}') logger.go:42: 18:16:57 | additional-volumes/6-restart-and-verify | ++++ eval 'echo $IMAGE' logger.go:42: 18:16:57 | additional-volumes/6-restart-and-verify | +++++ echo perconalab/percona-postgresql-operator:PR-1760-4947a0272 logger.go:42: 18:16:57 | additional-volumes/6-restart-and-verify | +++ var_value=perconalab/percona-postgresql-operator:PR-1760-4947a0272 logger.go:42: 18:16:57 | additional-volumes/6-restart-and-verify | +++ [[ perconalab/percona-postgresql-operator:PR-1760-4947a0272 == docker.io/* ]] logger.go:42: 18:16:57 | additional-volumes/6-restart-and-verify | +++ [[ perconalab/percona-postgresql-operator:PR-1760-4947a0272 == percona/* ]] logger.go:42: 18:16:57 | additional-volumes/6-restart-and-verify | +++ [[ perconalab/percona-postgresql-operator:PR-1760-4947a0272 == perconalab/* ]] logger.go:42: 18:16:57 | additional-volumes/6-restart-and-verify | +++ new_value=docker.io/perconalab/percona-postgresql-operator:PR-1760-4947a0272 logger.go:42: 18:16:57 | additional-volumes/6-restart-and-verify | +++ export IMAGE=docker.io/perconalab/percona-postgresql-operator:PR-1760-4947a0272 logger.go:42: 18:16:57 | additional-volumes/6-restart-and-verify | +++ IMAGE=docker.io/perconalab/percona-postgresql-operator:PR-1760-4947a0272 logger.go:42: 18:16:57 | additional-volumes/6-restart-and-verify | +++ echo IMAGE=docker.io/perconalab/percona-postgresql-operator:PR-1760-4947a0272 logger.go:42: 18:16:57 | additional-volumes/6-restart-and-verify | IMAGE=docker.io/perconalab/percona-postgresql-operator:PR-1760-4947a0272 logger.go:42: 18:16:57 | additional-volumes/6-restart-and-verify | +++ echo docker.io/perconalab/percona-postgresql-operator:PR-1760-4947a0272 logger.go:42: 18:16:57 | additional-volumes/6-restart-and-verify | docker.io/perconalab/percona-postgresql-operator:PR-1760-4947a0272 logger.go:42: 18:16:57 | additional-volumes/6-restart-and-verify | +++ for var in $(printenv | grep -E '^IMAGE' | awk -F'=' '{print $1}') logger.go:42: 18:16:57 | additional-volumes/6-restart-and-verify | ++++ eval 'echo $IMAGE_UPGRADE' logger.go:42: 18:16:57 | additional-volumes/6-restart-and-verify | +++++ echo perconalab/percona-postgresql-operator:main-upgrade logger.go:42: 18:16:57 | additional-volumes/6-restart-and-verify | +++ var_value=perconalab/percona-postgresql-operator:main-upgrade logger.go:42: 18:16:57 | additional-volumes/6-restart-and-verify | +++ [[ perconalab/percona-postgresql-operator:main-upgrade == docker.io/* ]] logger.go:42: 18:16:57 | additional-volumes/6-restart-and-verify | +++ [[ perconalab/percona-postgresql-operator:main-upgrade == percona/* ]] logger.go:42: 18:16:57 | additional-volumes/6-restart-and-verify | +++ [[ perconalab/percona-postgresql-operator:main-upgrade == perconalab/* ]] logger.go:42: 18:16:57 | additional-volumes/6-restart-and-verify | +++ new_value=docker.io/perconalab/percona-postgresql-operator:main-upgrade logger.go:42: 18:16:57 | additional-volumes/6-restart-and-verify | +++ export IMAGE_UPGRADE=docker.io/perconalab/percona-postgresql-operator:main-upgrade logger.go:42: 18:16:57 | additional-volumes/6-restart-and-verify | +++ IMAGE_UPGRADE=docker.io/perconalab/percona-postgresql-operator:main-upgrade logger.go:42: 18:16:57 | additional-volumes/6-restart-and-verify | +++ echo IMAGE_UPGRADE=docker.io/perconalab/percona-postgresql-operator:main-upgrade logger.go:42: 18:16:57 | additional-volumes/6-restart-and-verify | IMAGE_UPGRADE=docker.io/perconalab/percona-postgresql-operator:main-upgrade logger.go:42: 18:16:57 | additional-volumes/6-restart-and-verify | +++ echo docker.io/perconalab/percona-postgresql-operator:PR-1760-4947a0272 logger.go:42: 18:16:57 | additional-volumes/6-restart-and-verify | docker.io/perconalab/percona-postgresql-operator:PR-1760-4947a0272 logger.go:42: 18:16:57 | additional-volumes/6-restart-and-verify | +++ for var in $(printenv | grep -E '^IMAGE' | awk -F'=' '{print $1}') logger.go:42: 18:16:57 | additional-volumes/6-restart-and-verify | ++++ eval 'echo $IMAGE_LOGCOLLECTOR' logger.go:42: 18:16:57 | additional-volumes/6-restart-and-verify | +++++ echo perconalab/fluentbit:main-logcollector logger.go:42: 18:16:57 | additional-volumes/6-restart-and-verify | +++ var_value=perconalab/fluentbit:main-logcollector logger.go:42: 18:16:57 | additional-volumes/6-restart-and-verify | +++ [[ perconalab/fluentbit:main-logcollector == docker.io/* ]] logger.go:42: 18:16:57 | additional-volumes/6-restart-and-verify | +++ [[ perconalab/fluentbit:main-logcollector == percona/* ]] logger.go:42: 18:16:57 | additional-volumes/6-restart-and-verify | +++ [[ perconalab/fluentbit:main-logcollector == perconalab/* ]] logger.go:42: 18:16:57 | additional-volumes/6-restart-and-verify | +++ new_value=docker.io/perconalab/fluentbit:main-logcollector logger.go:42: 18:16:57 | additional-volumes/6-restart-and-verify | +++ export IMAGE_LOGCOLLECTOR=docker.io/perconalab/fluentbit:main-logcollector logger.go:42: 18:16:57 | additional-volumes/6-restart-and-verify | +++ IMAGE_LOGCOLLECTOR=docker.io/perconalab/fluentbit:main-logcollector logger.go:42: 18:16:57 | additional-volumes/6-restart-and-verify | +++ echo IMAGE_LOGCOLLECTOR=docker.io/perconalab/fluentbit:main-logcollector logger.go:42: 18:16:57 | additional-volumes/6-restart-and-verify | IMAGE_LOGCOLLECTOR=docker.io/perconalab/fluentbit:main-logcollector logger.go:42: 18:16:57 | additional-volumes/6-restart-and-verify | +++ echo docker.io/perconalab/percona-postgresql-operator:PR-1760-4947a0272 logger.go:42: 18:16:57 | additional-volumes/6-restart-and-verify | docker.io/perconalab/percona-postgresql-operator:PR-1760-4947a0272 logger.go:42: 18:16:57 | additional-volumes/6-restart-and-verify | +++ for var in $(printenv | grep -E '^IMAGE' | awk -F'=' '{print $1}') logger.go:42: 18:16:57 | additional-volumes/6-restart-and-verify | ++++ eval 'echo $IMAGE_BASE' logger.go:42: 18:16:57 | additional-volumes/6-restart-and-verify | +++++ echo perconalab/percona-postgresql-operator logger.go:42: 18:16:57 | additional-volumes/6-restart-and-verify | +++ var_value=perconalab/percona-postgresql-operator logger.go:42: 18:16:57 | additional-volumes/6-restart-and-verify | +++ [[ perconalab/percona-postgresql-operator == docker.io/* ]] logger.go:42: 18:16:57 | additional-volumes/6-restart-and-verify | +++ [[ perconalab/percona-postgresql-operator == percona/* ]] logger.go:42: 18:16:57 | additional-volumes/6-restart-and-verify | +++ [[ perconalab/percona-postgresql-operator == perconalab/* ]] logger.go:42: 18:16:57 | additional-volumes/6-restart-and-verify | +++ new_value=docker.io/perconalab/percona-postgresql-operator logger.go:42: 18:16:57 | additional-volumes/6-restart-and-verify | +++ export IMAGE_BASE=docker.io/perconalab/percona-postgresql-operator logger.go:42: 18:16:57 | additional-volumes/6-restart-and-verify | +++ IMAGE_BASE=docker.io/perconalab/percona-postgresql-operator logger.go:42: 18:16:57 | additional-volumes/6-restart-and-verify | +++ echo IMAGE_BASE=docker.io/perconalab/percona-postgresql-operator logger.go:42: 18:16:57 | additional-volumes/6-restart-and-verify | IMAGE_BASE=docker.io/perconalab/percona-postgresql-operator logger.go:42: 18:16:57 | additional-volumes/6-restart-and-verify | +++ echo docker.io/perconalab/percona-postgresql-operator:PR-1760-4947a0272 logger.go:42: 18:16:57 | additional-volumes/6-restart-and-verify | docker.io/perconalab/percona-postgresql-operator:PR-1760-4947a0272 logger.go:42: 18:16:57 | additional-volumes/6-restart-and-verify | +++ for var in $(printenv | grep -E '^IMAGE' | awk -F'=' '{print $1}') logger.go:42: 18:16:57 | additional-volumes/6-restart-and-verify | ++++ eval 'echo $IMAGE_PGBOUNCER' logger.go:42: 18:16:57 | additional-volumes/6-restart-and-verify | +++++ echo perconalab/percona-postgresql-operator:main-pgbouncer18 logger.go:42: 18:16:57 | additional-volumes/6-restart-and-verify | +++ var_value=perconalab/percona-postgresql-operator:main-pgbouncer18 logger.go:42: 18:16:57 | additional-volumes/6-restart-and-verify | +++ [[ perconalab/percona-postgresql-operator:main-pgbouncer18 == docker.io/* ]] logger.go:42: 18:16:57 | additional-volumes/6-restart-and-verify | +++ [[ perconalab/percona-postgresql-operator:main-pgbouncer18 == percona/* ]] logger.go:42: 18:16:57 | additional-volumes/6-restart-and-verify | +++ [[ perconalab/percona-postgresql-operator:main-pgbouncer18 == perconalab/* ]] logger.go:42: 18:16:57 | additional-volumes/6-restart-and-verify | +++ new_value=docker.io/perconalab/percona-postgresql-operator:main-pgbouncer18 logger.go:42: 18:16:57 | additional-volumes/6-restart-and-verify | +++ export IMAGE_PGBOUNCER=docker.io/perconalab/percona-postgresql-operator:main-pgbouncer18 logger.go:42: 18:16:57 | additional-volumes/6-restart-and-verify | +++ IMAGE_PGBOUNCER=docker.io/perconalab/percona-postgresql-operator:main-pgbouncer18 logger.go:42: 18:16:57 | additional-volumes/6-restart-and-verify | +++ echo IMAGE_PGBOUNCER=docker.io/perconalab/percona-postgresql-operator:main-pgbouncer18 logger.go:42: 18:16:57 | additional-volumes/6-restart-and-verify | IMAGE_PGBOUNCER=docker.io/perconalab/percona-postgresql-operator:main-pgbouncer18 logger.go:42: 18:16:57 | additional-volumes/6-restart-and-verify | +++ echo docker.io/perconalab/percona-postgresql-operator:PR-1760-4947a0272 logger.go:42: 18:16:57 | additional-volumes/6-restart-and-verify | docker.io/perconalab/percona-postgresql-operator:PR-1760-4947a0272 logger.go:42: 18:16:57 | additional-volumes/6-restart-and-verify | +++ for var in $(printenv | grep -E '^IMAGE' | awk -F'=' '{print $1}') logger.go:42: 18:16:57 | additional-volumes/6-restart-and-verify | ++++ eval 'echo $IMAGE_POSTGRESQL' logger.go:42: 18:16:57 | additional-volumes/6-restart-and-verify | +++++ echo perconalab/percona-postgresql-operator:main-ppg18-postgres logger.go:42: 18:16:57 | additional-volumes/6-restart-and-verify | +++ var_value=perconalab/percona-postgresql-operator:main-ppg18-postgres logger.go:42: 18:16:57 | additional-volumes/6-restart-and-verify | +++ [[ perconalab/percona-postgresql-operator:main-ppg18-postgres == docker.io/* ]] logger.go:42: 18:16:57 | additional-volumes/6-restart-and-verify | +++ [[ perconalab/percona-postgresql-operator:main-ppg18-postgres == percona/* ]] logger.go:42: 18:16:57 | additional-volumes/6-restart-and-verify | +++ [[ perconalab/percona-postgresql-operator:main-ppg18-postgres == perconalab/* ]] logger.go:42: 18:16:57 | additional-volumes/6-restart-and-verify | +++ new_value=docker.io/perconalab/percona-postgresql-operator:main-ppg18-postgres logger.go:42: 18:16:57 | additional-volumes/6-restart-and-verify | +++ export IMAGE_POSTGRESQL=docker.io/perconalab/percona-postgresql-operator:main-ppg18-postgres logger.go:42: 18:16:57 | additional-volumes/6-restart-and-verify | +++ IMAGE_POSTGRESQL=docker.io/perconalab/percona-postgresql-operator:main-ppg18-postgres logger.go:42: 18:16:57 | additional-volumes/6-restart-and-verify | +++ echo IMAGE_POSTGRESQL=docker.io/perconalab/percona-postgresql-operator:main-ppg18-postgres logger.go:42: 18:16:57 | additional-volumes/6-restart-and-verify | IMAGE_POSTGRESQL=docker.io/perconalab/percona-postgresql-operator:main-ppg18-postgres logger.go:42: 18:16:57 | additional-volumes/6-restart-and-verify | +++ echo docker.io/perconalab/percona-postgresql-operator:PR-1760-4947a0272 logger.go:42: 18:16:57 | additional-volumes/6-restart-and-verify | docker.io/perconalab/percona-postgresql-operator:PR-1760-4947a0272 logger.go:42: 18:16:57 | additional-volumes/6-restart-and-verify | +++ for var in $(printenv | grep -E '^IMAGE' | awk -F'=' '{print $1}') logger.go:42: 18:16:57 | additional-volumes/6-restart-and-verify | ++++ eval 'echo $IMAGE_PMM_SERVER' logger.go:42: 18:16:57 | additional-volumes/6-restart-and-verify | +++++ echo perconalab/pmm-server:3-dev-latest logger.go:42: 18:16:57 | additional-volumes/6-restart-and-verify | +++ var_value=perconalab/pmm-server:3-dev-latest logger.go:42: 18:16:57 | additional-volumes/6-restart-and-verify | +++ [[ perconalab/pmm-server:3-dev-latest == docker.io/* ]] logger.go:42: 18:16:57 | additional-volumes/6-restart-and-verify | +++ [[ perconalab/pmm-server:3-dev-latest == percona/* ]] logger.go:42: 18:16:57 | additional-volumes/6-restart-and-verify | +++ [[ perconalab/pmm-server:3-dev-latest == perconalab/* ]] logger.go:42: 18:16:57 | additional-volumes/6-restart-and-verify | +++ new_value=docker.io/perconalab/pmm-server:3-dev-latest logger.go:42: 18:16:57 | additional-volumes/6-restart-and-verify | +++ export IMAGE_PMM_SERVER=docker.io/perconalab/pmm-server:3-dev-latest logger.go:42: 18:16:57 | additional-volumes/6-restart-and-verify | +++ IMAGE_PMM_SERVER=docker.io/perconalab/pmm-server:3-dev-latest logger.go:42: 18:16:57 | additional-volumes/6-restart-and-verify | +++ echo IMAGE_PMM_SERVER=docker.io/perconalab/pmm-server:3-dev-latest logger.go:42: 18:16:57 | additional-volumes/6-restart-and-verify | IMAGE_PMM_SERVER=docker.io/perconalab/pmm-server:3-dev-latest logger.go:42: 18:16:57 | additional-volumes/6-restart-and-verify | +++ echo docker.io/perconalab/percona-postgresql-operator:PR-1760-4947a0272 logger.go:42: 18:16:57 | additional-volumes/6-restart-and-verify | docker.io/perconalab/percona-postgresql-operator:PR-1760-4947a0272 logger.go:42: 18:16:57 | additional-volumes/6-restart-and-verify | +++ for var in $(printenv | grep -E '^IMAGE' | awk -F'=' '{print $1}') logger.go:42: 18:16:57 | additional-volumes/6-restart-and-verify | ++++ eval 'echo $IMAGE_PMM_CLIENT' logger.go:42: 18:16:57 | additional-volumes/6-restart-and-verify | +++++ echo perconalab/pmm-client:3-dev-latest logger.go:42: 18:16:57 | additional-volumes/6-restart-and-verify | +++ var_value=perconalab/pmm-client:3-dev-latest logger.go:42: 18:16:57 | additional-volumes/6-restart-and-verify | +++ [[ perconalab/pmm-client:3-dev-latest == docker.io/* ]] logger.go:42: 18:16:57 | additional-volumes/6-restart-and-verify | +++ [[ perconalab/pmm-client:3-dev-latest == percona/* ]] logger.go:42: 18:16:57 | additional-volumes/6-restart-and-verify | +++ [[ perconalab/pmm-client:3-dev-latest == perconalab/* ]] logger.go:42: 18:16:57 | additional-volumes/6-restart-and-verify | +++ new_value=docker.io/perconalab/pmm-client:3-dev-latest logger.go:42: 18:16:57 | additional-volumes/6-restart-and-verify | +++ export IMAGE_PMM_CLIENT=docker.io/perconalab/pmm-client:3-dev-latest logger.go:42: 18:16:57 | additional-volumes/6-restart-and-verify | +++ IMAGE_PMM_CLIENT=docker.io/perconalab/pmm-client:3-dev-latest logger.go:42: 18:16:57 | additional-volumes/6-restart-and-verify | +++ echo IMAGE_PMM_CLIENT=docker.io/perconalab/pmm-client:3-dev-latest logger.go:42: 18:16:57 | additional-volumes/6-restart-and-verify | IMAGE_PMM_CLIENT=docker.io/perconalab/pmm-client:3-dev-latest logger.go:42: 18:16:57 | additional-volumes/6-restart-and-verify | +++ echo docker.io/perconalab/percona-postgresql-operator:PR-1760-4947a0272 logger.go:42: 18:16:57 | additional-volumes/6-restart-and-verify | docker.io/perconalab/percona-postgresql-operator:PR-1760-4947a0272 logger.go:42: 18:16:57 | additional-volumes/6-restart-and-verify | ++++ which gdate logger.go:42: 18:16:57 | additional-volumes/6-restart-and-verify | which: no gdate in (/mnt/jenkins/workspace/cloud-pg-operator_PR-1760/bin/:/root/.krew/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/var/lib/snapd/snap/bin) logger.go:42: 18:16:57 | additional-volumes/6-restart-and-verify | ++++ which date logger.go:42: 18:16:57 | additional-volumes/6-restart-and-verify | +++ date=/usr/sbin/date logger.go:42: 18:16:57 | additional-volumes/6-restart-and-verify | ++++ which gsed logger.go:42: 18:16:57 | additional-volumes/6-restart-and-verify | which: no gsed in (/mnt/jenkins/workspace/cloud-pg-operator_PR-1760/bin/:/root/.krew/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/var/lib/snapd/snap/bin) logger.go:42: 18:16:57 | additional-volumes/6-restart-and-verify | ++++ which sed logger.go:42: 18:16:57 | additional-volumes/6-restart-and-verify | +++ sed=/usr/sbin/sed logger.go:42: 18:16:57 | additional-volumes/6-restart-and-verify | ++ get_pod_by_role additional-volumes primary name logger.go:42: 18:16:57 | additional-volumes/6-restart-and-verify | ++ local cluster=additional-volumes logger.go:42: 18:16:57 | additional-volumes/6-restart-and-verify | ++ local role=primary logger.go:42: 18:16:57 | additional-volumes/6-restart-and-verify | ++ local parameter=name logger.go:42: 18:16:57 | additional-volumes/6-restart-and-verify | ++ case ${parameter} in logger.go:42: 18:16:57 | additional-volumes/6-restart-and-verify | ++ local 'jsonpath={.items[].metadata.name}' logger.go:42: 18:16:57 | additional-volumes/6-restart-and-verify | +++ kubectl get pods --namespace kuttl-test-intimate-garfish --selector=postgres-operator.crunchydata.com/role=primary,postgres-operator.crunchydata.com/cluster=additional-volumes -o 'jsonpath={.items[].metadata.name}' logger.go:42: 18:16:57 | additional-volumes/6-restart-and-verify | ++ echo additional-volumes-instance1-n8pg-0 logger.go:42: 18:16:57 | additional-volumes/6-restart-and-verify | + primary=additional-volumes-instance1-n8pg-0 logger.go:42: 18:16:57 | additional-volumes/6-restart-and-verify | + kubectl -n kuttl-test-intimate-garfish exec additional-volumes-instance1-n8pg-0 -c database -- bash -c 'ls /pglogs/pgbackrest/log/*.log >/dev/null' logger.go:42: 18:16:59 | additional-volumes/6-restart-and-verify | ++ date +%s logger.go:42: 18:16:59 | additional-volumes/6-restart-and-verify | + marker=pglogs-1787163419-23183 logger.go:42: 18:16:59 | additional-volumes/6-restart-and-verify | + kubectl -n kuttl-test-intimate-garfish exec additional-volumes-instance1-n8pg-0 -c database -- bash -c 'printf '\''%s'\'' '\''pglogs-1787163419-23183'\'' > /pglogs/marker' logger.go:42: 18:17:00 | additional-volumes/6-restart-and-verify | + restart_pg_pods additional-volumes instance1 logger.go:42: 18:17:00 | additional-volumes/6-restart-and-verify | + local cluster=additional-volumes logger.go:42: 18:17:00 | additional-volumes/6-restart-and-verify | + local instance=instance1 logger.go:42: 18:17:00 | additional-volumes/6-restart-and-verify | ++ kubectl get pods -n kuttl-test-intimate-garfish --selector=postgres-operator.crunchydata.com/cluster=additional-volumes,postgres-operator.crunchydata.com/instance-set=instance1 -o 'jsonpath={.items[*].metadata.name}' logger.go:42: 18:17:01 | additional-volumes/6-restart-and-verify | + pods='additional-volumes-instance1-24br-0 additional-volumes-instance1-n8pg-0 additional-volumes-instance1-xvbw-0' logger.go:42: 18:17:01 | additional-volumes/6-restart-and-verify | + for pod in $pods logger.go:42: 18:17:01 | additional-volumes/6-restart-and-verify | + kubectl delete pod -n kuttl-test-intimate-garfish additional-volumes-instance1-24br-0 logger.go:42: 18:17:01 | additional-volumes/6-restart-and-verify | pod "additional-volumes-instance1-24br-0" deleted from kuttl-test-intimate-garfish namespace logger.go:42: 18:17:03 | additional-volumes/6-restart-and-verify | + wait_pod additional-volumes-instance1-24br-0 logger.go:42: 18:17:03 | additional-volumes/6-restart-and-verify | + local pod=additional-volumes-instance1-24br-0 logger.go:42: 18:17:03 | additional-volumes/6-restart-and-verify | + set +o xtrace logger.go:42: 18:17:19 | additional-volumes/6-restart-and-verify | additional-volumes-instance1-24br-0.........true logger.go:42: 18:17:19 | additional-volumes/6-restart-and-verify | + for pod in $pods logger.go:42: 18:17:19 | additional-volumes/6-restart-and-verify | + kubectl delete pod -n kuttl-test-intimate-garfish additional-volumes-instance1-n8pg-0 logger.go:42: 18:17:20 | additional-volumes/6-restart-and-verify | pod "additional-volumes-instance1-n8pg-0" deleted from kuttl-test-intimate-garfish namespace logger.go:42: 18:17:22 | additional-volumes/6-restart-and-verify | + wait_pod additional-volumes-instance1-n8pg-0 logger.go:42: 18:17:22 | additional-volumes/6-restart-and-verify | + local pod=additional-volumes-instance1-n8pg-0 logger.go:42: 18:17:22 | additional-volumes/6-restart-and-verify | + set +o xtrace logger.go:42: 18:17:35 | additional-volumes/6-restart-and-verify | additional-volumes-instance1-n8pg-0.......true logger.go:42: 18:17:35 | additional-volumes/6-restart-and-verify | + for pod in $pods logger.go:42: 18:17:35 | additional-volumes/6-restart-and-verify | + kubectl delete pod -n kuttl-test-intimate-garfish additional-volumes-instance1-xvbw-0 logger.go:42: 18:17:35 | additional-volumes/6-restart-and-verify | pod "additional-volumes-instance1-xvbw-0" deleted from kuttl-test-intimate-garfish namespace logger.go:42: 18:17:38 | additional-volumes/6-restart-and-verify | + wait_pod additional-volumes-instance1-xvbw-0 logger.go:42: 18:17:38 | additional-volumes/6-restart-and-verify | + local pod=additional-volumes-instance1-xvbw-0 logger.go:42: 18:17:38 | additional-volumes/6-restart-and-verify | + set +o xtrace logger.go:42: 18:17:56 | additional-volumes/6-restart-and-verify | additional-volumes-instance1-xvbw-0..........true logger.go:42: 18:17:56 | additional-volumes/6-restart-and-verify | + wait_cluster_consistency additional-volumes logger.go:42: 18:17:56 | additional-volumes/6-restart-and-verify | + local cluster_name=additional-volumes logger.go:42: 18:17:56 | additional-volumes/6-restart-and-verify | + local wait_time=32 logger.go:42: 18:17:56 | additional-volumes/6-restart-and-verify | + retry=0 logger.go:42: 18:17:56 | additional-volumes/6-restart-and-verify | + sleep 7 logger.go:42: 18:18:03 | additional-volumes/6-restart-and-verify | + echo -n 'waiting for cluster readyness' logger.go:42: 18:18:03 | additional-volumes/6-restart-and-verify | waiting for cluster readyness++ kubectl -n kuttl-test-intimate-garfish get pg additional-volumes -o 'jsonpath={.status.state}' logger.go:42: 18:18:04 | additional-volumes/6-restart-and-verify | + [[ ready == ready ]] logger.go:42: 18:18:04 | additional-volumes/6-restart-and-verify | ++ kubectl -n kuttl-test-intimate-garfish get sts --selector=postgres-operator.crunchydata.com/cluster=additional-volumes -o 'jsonpath={.items[*].metadata.name}' logger.go:42: 18:18:04 | additional-volumes/6-restart-and-verify | ++ grep additional-volumes logger.go:42: 18:18:04 | additional-volumes/6-restart-and-verify | + sts='additional-volumes-instance1-24br additional-volumes-instance1-n8pg additional-volumes-instance1-xvbw additional-volumes-repo-host' logger.go:42: 18:18:04 | additional-volumes/6-restart-and-verify | + for st in $sts logger.go:42: 18:18:04 | additional-volumes/6-restart-and-verify | + wait_sts_rollout additional-volumes-instance1-24br logger.go:42: 18:18:04 | additional-volumes/6-restart-and-verify | + local sts=additional-volumes-instance1-24br logger.go:42: 18:18:04 | additional-volumes/6-restart-and-verify | ++ get_ready_replicas additional-volumes-instance1-24br logger.go:42: 18:18:04 | additional-volumes/6-restart-and-verify | ++ kubectl get sts additional-volumes-instance1-24br -n kuttl-test-intimate-garfish -o 'jsonpath={.status.readyReplicas}' logger.go:42: 18:18:05 | additional-volumes/6-restart-and-verify | + local ready_replicas= logger.go:42: 18:18:05 | additional-volumes/6-restart-and-verify | ++ get_updated_replicas additional-volumes-instance1-24br logger.go:42: 18:18:05 | additional-volumes/6-restart-and-verify | ++ kubectl get statefulset additional-volumes-instance1-24br -n kuttl-test-intimate-garfish -o 'jsonpath={.status.updatedReplicas}' logger.go:42: 18:18:05 | additional-volumes/6-restart-and-verify | + local updated_replicas=1 logger.go:42: 18:18:05 | additional-volumes/6-restart-and-verify | ++ get_desired_replicas additional-volumes-instance1-24br logger.go:42: 18:18:05 | additional-volumes/6-restart-and-verify | ++ kubectl get statefulset additional-volumes-instance1-24br -n kuttl-test-intimate-garfish -o 'jsonpath={.spec.replicas}' logger.go:42: 18:18:06 | additional-volumes/6-restart-and-verify | + local desired_replicas=1 logger.go:42: 18:18:06 | additional-volumes/6-restart-and-verify | + echo 'ready_replicas desired_replicas 1' logger.go:42: 18:18:06 | additional-volumes/6-restart-and-verify | ready_replicas desired_replicas 1 logger.go:42: 18:18:06 | additional-volumes/6-restart-and-verify | + [[ '' -eq 1 ]] logger.go:42: 18:18:06 | additional-volumes/6-restart-and-verify | ++ get_ready_replicas additional-volumes-instance1-24br logger.go:42: 18:18:06 | additional-volumes/6-restart-and-verify | ++ kubectl get sts additional-volumes-instance1-24br -n kuttl-test-intimate-garfish -o 'jsonpath={.status.readyReplicas}' logger.go:42: 18:18:07 | additional-volumes/6-restart-and-verify | + ready_replicas= logger.go:42: 18:18:07 | additional-volumes/6-restart-and-verify | ++ get_desired_replicas additional-volumes-instance1-24br logger.go:42: 18:18:07 | additional-volumes/6-restart-and-verify | ++ kubectl get statefulset additional-volumes-instance1-24br -n kuttl-test-intimate-garfish -o 'jsonpath={.spec.replicas}' logger.go:42: 18:18:07 | additional-volumes/6-restart-and-verify | + desired_replicas=1 logger.go:42: 18:18:07 | additional-volumes/6-restart-and-verify | ++ get_updated_replicas additional-volumes-instance1-24br logger.go:42: 18:18:07 | additional-volumes/6-restart-and-verify | ++ kubectl get statefulset additional-volumes-instance1-24br -n kuttl-test-intimate-garfish -o 'jsonpath={.status.updatedReplicas}' logger.go:42: 18:18:08 | additional-volumes/6-restart-and-verify | + updated_replicas=1 logger.go:42: 18:18:08 | additional-volumes/6-restart-and-verify | + echo 'Waiting for sts/additional-volumes-instance1-24br to update... /1/1 pods updated.' logger.go:42: 18:18:08 | additional-volumes/6-restart-and-verify | Waiting for sts/additional-volumes-instance1-24br to update... /1/1 pods updated. logger.go:42: 18:18:08 | additional-volumes/6-restart-and-verify | + sleep 10 logger.go:42: 18:18:18 | additional-volumes/6-restart-and-verify | + [[ '' -eq 1 ]] logger.go:42: 18:18:18 | additional-volumes/6-restart-and-verify | ++ get_ready_replicas additional-volumes-instance1-24br logger.go:42: 18:18:18 | additional-volumes/6-restart-and-verify | ++ kubectl get sts additional-volumes-instance1-24br -n kuttl-test-intimate-garfish -o 'jsonpath={.status.readyReplicas}' logger.go:42: 18:18:19 | additional-volumes/6-restart-and-verify | + ready_replicas= logger.go:42: 18:18:19 | additional-volumes/6-restart-and-verify | ++ get_desired_replicas additional-volumes-instance1-24br logger.go:42: 18:18:19 | additional-volumes/6-restart-and-verify | ++ kubectl get statefulset additional-volumes-instance1-24br -n kuttl-test-intimate-garfish -o 'jsonpath={.spec.replicas}' logger.go:42: 18:18:19 | additional-volumes/6-restart-and-verify | + desired_replicas=1 logger.go:42: 18:18:19 | additional-volumes/6-restart-and-verify | ++ get_updated_replicas additional-volumes-instance1-24br logger.go:42: 18:18:19 | additional-volumes/6-restart-and-verify | ++ kubectl get statefulset additional-volumes-instance1-24br -n kuttl-test-intimate-garfish -o 'jsonpath={.status.updatedReplicas}' logger.go:42: 18:18:20 | additional-volumes/6-restart-and-verify | + updated_replicas=1 logger.go:42: 18:18:20 | additional-volumes/6-restart-and-verify | + echo 'Waiting for sts/additional-volumes-instance1-24br to update... /1/1 pods updated.' logger.go:42: 18:18:20 | additional-volumes/6-restart-and-verify | Waiting for sts/additional-volumes-instance1-24br to update... /1/1 pods updated. logger.go:42: 18:18:20 | additional-volumes/6-restart-and-verify | + sleep 10 logger.go:42: 18:18:30 | additional-volumes/6-restart-and-verify | + [[ '' -eq 1 ]] logger.go:42: 18:18:30 | additional-volumes/6-restart-and-verify | ++ get_ready_replicas additional-volumes-instance1-24br logger.go:42: 18:18:30 | additional-volumes/6-restart-and-verify | ++ kubectl get sts additional-volumes-instance1-24br -n kuttl-test-intimate-garfish -o 'jsonpath={.status.readyReplicas}' logger.go:42: 18:18:31 | additional-volumes/6-restart-and-verify | + ready_replicas= logger.go:42: 18:18:31 | additional-volumes/6-restart-and-verify | ++ get_desired_replicas additional-volumes-instance1-24br logger.go:42: 18:18:31 | additional-volumes/6-restart-and-verify | ++ kubectl get statefulset additional-volumes-instance1-24br -n kuttl-test-intimate-garfish -o 'jsonpath={.spec.replicas}' logger.go:42: 18:18:31 | additional-volumes/6-restart-and-verify | + desired_replicas=1 logger.go:42: 18:18:31 | additional-volumes/6-restart-and-verify | ++ get_updated_replicas additional-volumes-instance1-24br logger.go:42: 18:18:31 | additional-volumes/6-restart-and-verify | ++ kubectl get statefulset additional-volumes-instance1-24br -n kuttl-test-intimate-garfish -o 'jsonpath={.status.updatedReplicas}' logger.go:42: 18:18:32 | additional-volumes/6-restart-and-verify | + updated_replicas=1 logger.go:42: 18:18:32 | additional-volumes/6-restart-and-verify | + echo 'Waiting for sts/additional-volumes-instance1-24br to update... /1/1 pods updated.' logger.go:42: 18:18:32 | additional-volumes/6-restart-and-verify | Waiting for sts/additional-volumes-instance1-24br to update... /1/1 pods updated. logger.go:42: 18:18:32 | additional-volumes/6-restart-and-verify | + sleep 10 logger.go:42: 18:18:42 | additional-volumes/6-restart-and-verify | + [[ '' -eq 1 ]] logger.go:42: 18:18:42 | additional-volumes/6-restart-and-verify | ++ get_ready_replicas additional-volumes-instance1-24br logger.go:42: 18:18:42 | additional-volumes/6-restart-and-verify | ++ kubectl get sts additional-volumes-instance1-24br -n kuttl-test-intimate-garfish -o 'jsonpath={.status.readyReplicas}' logger.go:42: 18:18:43 | additional-volumes/6-restart-and-verify | + ready_replicas= logger.go:42: 18:18:43 | additional-volumes/6-restart-and-verify | ++ get_desired_replicas additional-volumes-instance1-24br logger.go:42: 18:18:43 | additional-volumes/6-restart-and-verify | ++ kubectl get statefulset additional-volumes-instance1-24br -n kuttl-test-intimate-garfish -o 'jsonpath={.spec.replicas}' logger.go:42: 18:18:43 | additional-volumes/6-restart-and-verify | + desired_replicas=1 logger.go:42: 18:18:43 | additional-volumes/6-restart-and-verify | ++ get_updated_replicas additional-volumes-instance1-24br logger.go:42: 18:18:43 | additional-volumes/6-restart-and-verify | ++ kubectl get statefulset additional-volumes-instance1-24br -n kuttl-test-intimate-garfish -o 'jsonpath={.status.updatedReplicas}' logger.go:42: 18:18:44 | additional-volumes/6-restart-and-verify | + updated_replicas=1 logger.go:42: 18:18:44 | additional-volumes/6-restart-and-verify | + echo 'Waiting for sts/additional-volumes-instance1-24br to update... /1/1 pods updated.' logger.go:42: 18:18:44 | additional-volumes/6-restart-and-verify | Waiting for sts/additional-volumes-instance1-24br to update... /1/1 pods updated. logger.go:42: 18:18:44 | additional-volumes/6-restart-and-verify | + sleep 10 logger.go:42: 18:18:54 | additional-volumes/6-restart-and-verify | + [[ '' -eq 1 ]] logger.go:42: 18:18:54 | additional-volumes/6-restart-and-verify | ++ get_ready_replicas additional-volumes-instance1-24br logger.go:42: 18:18:54 | additional-volumes/6-restart-and-verify | ++ kubectl get sts additional-volumes-instance1-24br -n kuttl-test-intimate-garfish -o 'jsonpath={.status.readyReplicas}' logger.go:42: 18:18:55 | additional-volumes/6-restart-and-verify | + ready_replicas= logger.go:42: 18:18:55 | additional-volumes/6-restart-and-verify | ++ get_desired_replicas additional-volumes-instance1-24br logger.go:42: 18:18:55 | additional-volumes/6-restart-and-verify | ++ kubectl get statefulset additional-volumes-instance1-24br -n kuttl-test-intimate-garfish -o 'jsonpath={.spec.replicas}' logger.go:42: 18:18:55 | additional-volumes/6-restart-and-verify | + desired_replicas=1 logger.go:42: 18:18:55 | additional-volumes/6-restart-and-verify | ++ get_updated_replicas additional-volumes-instance1-24br logger.go:42: 18:18:55 | additional-volumes/6-restart-and-verify | ++ kubectl get statefulset additional-volumes-instance1-24br -n kuttl-test-intimate-garfish -o 'jsonpath={.status.updatedReplicas}' logger.go:42: 18:18:56 | additional-volumes/6-restart-and-verify | + updated_replicas=1 logger.go:42: 18:18:56 | additional-volumes/6-restart-and-verify | + echo 'Waiting for sts/additional-volumes-instance1-24br to update... /1/1 pods updated.' logger.go:42: 18:18:56 | additional-volumes/6-restart-and-verify | Waiting for sts/additional-volumes-instance1-24br to update... /1/1 pods updated. logger.go:42: 18:18:56 | additional-volumes/6-restart-and-verify | + sleep 10 logger.go:42: 18:19:06 | additional-volumes/6-restart-and-verify | + [[ '' -eq 1 ]] logger.go:42: 18:19:06 | additional-volumes/6-restart-and-verify | ++ get_ready_replicas additional-volumes-instance1-24br logger.go:42: 18:19:06 | additional-volumes/6-restart-and-verify | ++ kubectl get sts additional-volumes-instance1-24br -n kuttl-test-intimate-garfish -o 'jsonpath={.status.readyReplicas}' logger.go:42: 18:19:07 | additional-volumes/6-restart-and-verify | + ready_replicas= logger.go:42: 18:19:07 | additional-volumes/6-restart-and-verify | ++ get_desired_replicas additional-volumes-instance1-24br logger.go:42: 18:19:07 | additional-volumes/6-restart-and-verify | ++ kubectl get statefulset additional-volumes-instance1-24br -n kuttl-test-intimate-garfish -o 'jsonpath={.spec.replicas}' logger.go:42: 18:19:07 | additional-volumes/6-restart-and-verify | + desired_replicas=1 logger.go:42: 18:19:07 | additional-volumes/6-restart-and-verify | ++ get_updated_replicas additional-volumes-instance1-24br logger.go:42: 18:19:07 | additional-volumes/6-restart-and-verify | ++ kubectl get statefulset additional-volumes-instance1-24br -n kuttl-test-intimate-garfish -o 'jsonpath={.status.updatedReplicas}' logger.go:42: 18:19:08 | additional-volumes/6-restart-and-verify | + updated_replicas=1 logger.go:42: 18:19:08 | additional-volumes/6-restart-and-verify | + echo 'Waiting for sts/additional-volumes-instance1-24br to update... /1/1 pods updated.' logger.go:42: 18:19:08 | additional-volumes/6-restart-and-verify | Waiting for sts/additional-volumes-instance1-24br to update... /1/1 pods updated. logger.go:42: 18:19:08 | additional-volumes/6-restart-and-verify | + sleep 10 logger.go:42: 18:19:18 | additional-volumes/6-restart-and-verify | + [[ '' -eq 1 ]] logger.go:42: 18:19:18 | additional-volumes/6-restart-and-verify | ++ get_ready_replicas additional-volumes-instance1-24br logger.go:42: 18:19:18 | additional-volumes/6-restart-and-verify | ++ kubectl get sts additional-volumes-instance1-24br -n kuttl-test-intimate-garfish -o 'jsonpath={.status.readyReplicas}' logger.go:42: 18:19:19 | additional-volumes/6-restart-and-verify | + ready_replicas= logger.go:42: 18:19:19 | additional-volumes/6-restart-and-verify | ++ get_desired_replicas additional-volumes-instance1-24br logger.go:42: 18:19:19 | additional-volumes/6-restart-and-verify | ++ kubectl get statefulset additional-volumes-instance1-24br -n kuttl-test-intimate-garfish -o 'jsonpath={.spec.replicas}' logger.go:42: 18:19:20 | additional-volumes/6-restart-and-verify | + desired_replicas=1 logger.go:42: 18:19:20 | additional-volumes/6-restart-and-verify | ++ get_updated_replicas additional-volumes-instance1-24br logger.go:42: 18:19:20 | additional-volumes/6-restart-and-verify | ++ kubectl get statefulset additional-volumes-instance1-24br -n kuttl-test-intimate-garfish -o 'jsonpath={.status.updatedReplicas}' logger.go:42: 18:19:20 | additional-volumes/6-restart-and-verify | + updated_replicas=1 logger.go:42: 18:19:20 | additional-volumes/6-restart-and-verify | + echo 'Waiting for sts/additional-volumes-instance1-24br to update... /1/1 pods updated.' logger.go:42: 18:19:20 | additional-volumes/6-restart-and-verify | Waiting for sts/additional-volumes-instance1-24br to update... /1/1 pods updated. logger.go:42: 18:19:20 | additional-volumes/6-restart-and-verify | + sleep 10 logger.go:42: 18:19:30 | additional-volumes/6-restart-and-verify | + [[ '' -eq 1 ]] logger.go:42: 18:19:30 | additional-volumes/6-restart-and-verify | ++ get_ready_replicas additional-volumes-instance1-24br logger.go:42: 18:19:30 | additional-volumes/6-restart-and-verify | ++ kubectl get sts additional-volumes-instance1-24br -n kuttl-test-intimate-garfish -o 'jsonpath={.status.readyReplicas}' logger.go:42: 18:19:31 | additional-volumes/6-restart-and-verify | + ready_replicas= logger.go:42: 18:19:31 | additional-volumes/6-restart-and-verify | ++ get_desired_replicas additional-volumes-instance1-24br logger.go:42: 18:19:31 | additional-volumes/6-restart-and-verify | ++ kubectl get statefulset additional-volumes-instance1-24br -n kuttl-test-intimate-garfish -o 'jsonpath={.spec.replicas}' logger.go:42: 18:19:32 | additional-volumes/6-restart-and-verify | + desired_replicas=1 logger.go:42: 18:19:32 | additional-volumes/6-restart-and-verify | ++ get_updated_replicas additional-volumes-instance1-24br logger.go:42: 18:19:32 | additional-volumes/6-restart-and-verify | ++ kubectl get statefulset additional-volumes-instance1-24br -n kuttl-test-intimate-garfish -o 'jsonpath={.status.updatedReplicas}' logger.go:42: 18:19:32 | additional-volumes/6-restart-and-verify | + updated_replicas=1 logger.go:42: 18:19:32 | additional-volumes/6-restart-and-verify | + echo 'Waiting for sts/additional-volumes-instance1-24br to update... /1/1 pods updated.' logger.go:42: 18:19:32 | additional-volumes/6-restart-and-verify | Waiting for sts/additional-volumes-instance1-24br to update... /1/1 pods updated. logger.go:42: 18:19:32 | additional-volumes/6-restart-and-verify | + sleep 10 logger.go:42: 18:19:42 | additional-volumes/6-restart-and-verify | + [[ '' -eq 1 ]] logger.go:42: 18:19:42 | additional-volumes/6-restart-and-verify | ++ get_ready_replicas additional-volumes-instance1-24br logger.go:42: 18:19:42 | additional-volumes/6-restart-and-verify | ++ kubectl get sts additional-volumes-instance1-24br -n kuttl-test-intimate-garfish -o 'jsonpath={.status.readyReplicas}' logger.go:42: 18:19:43 | additional-volumes/6-restart-and-verify | + ready_replicas= logger.go:42: 18:19:43 | additional-volumes/6-restart-and-verify | ++ get_desired_replicas additional-volumes-instance1-24br logger.go:42: 18:19:43 | additional-volumes/6-restart-and-verify | ++ kubectl get statefulset additional-volumes-instance1-24br -n kuttl-test-intimate-garfish -o 'jsonpath={.spec.replicas}' logger.go:42: 18:19:44 | additional-volumes/6-restart-and-verify | + desired_replicas=1 logger.go:42: 18:19:44 | additional-volumes/6-restart-and-verify | ++ get_updated_replicas additional-volumes-instance1-24br logger.go:42: 18:19:44 | additional-volumes/6-restart-and-verify | ++ kubectl get statefulset additional-volumes-instance1-24br -n kuttl-test-intimate-garfish -o 'jsonpath={.status.updatedReplicas}' logger.go:42: 18:19:44 | additional-volumes/6-restart-and-verify | + updated_replicas=1 logger.go:42: 18:19:44 | additional-volumes/6-restart-and-verify | + echo 'Waiting for sts/additional-volumes-instance1-24br to update... /1/1 pods updated.' logger.go:42: 18:19:44 | additional-volumes/6-restart-and-verify | Waiting for sts/additional-volumes-instance1-24br to update... /1/1 pods updated. logger.go:42: 18:19:44 | additional-volumes/6-restart-and-verify | + sleep 10 logger.go:42: 18:19:54 | additional-volumes/6-restart-and-verify | + [[ '' -eq 1 ]] logger.go:42: 18:19:54 | additional-volumes/6-restart-and-verify | ++ get_ready_replicas additional-volumes-instance1-24br logger.go:42: 18:19:54 | additional-volumes/6-restart-and-verify | ++ kubectl get sts additional-volumes-instance1-24br -n kuttl-test-intimate-garfish -o 'jsonpath={.status.readyReplicas}' logger.go:42: 18:19:55 | additional-volumes/6-restart-and-verify | + ready_replicas= logger.go:42: 18:19:55 | additional-volumes/6-restart-and-verify | ++ get_desired_replicas additional-volumes-instance1-24br logger.go:42: 18:19:55 | additional-volumes/6-restart-and-verify | ++ kubectl get statefulset additional-volumes-instance1-24br -n kuttl-test-intimate-garfish -o 'jsonpath={.spec.replicas}' logger.go:42: 18:19:56 | additional-volumes/6-restart-and-verify | + desired_replicas=1 logger.go:42: 18:19:56 | additional-volumes/6-restart-and-verify | ++ get_updated_replicas additional-volumes-instance1-24br logger.go:42: 18:19:56 | additional-volumes/6-restart-and-verify | ++ kubectl get statefulset additional-volumes-instance1-24br -n kuttl-test-intimate-garfish -o 'jsonpath={.status.updatedReplicas}' logger.go:42: 18:19:56 | additional-volumes/6-restart-and-verify | + updated_replicas=1 logger.go:42: 18:19:56 | additional-volumes/6-restart-and-verify | + echo 'Waiting for sts/additional-volumes-instance1-24br to update... /1/1 pods updated.' logger.go:42: 18:19:56 | additional-volumes/6-restart-and-verify | Waiting for sts/additional-volumes-instance1-24br to update... /1/1 pods updated. logger.go:42: 18:19:56 | additional-volumes/6-restart-and-verify | + sleep 10 logger.go:42: 18:20:06 | additional-volumes/6-restart-and-verify | + [[ '' -eq 1 ]] logger.go:42: 18:20:06 | additional-volumes/6-restart-and-verify | ++ get_ready_replicas additional-volumes-instance1-24br logger.go:42: 18:20:06 | additional-volumes/6-restart-and-verify | ++ kubectl get sts additional-volumes-instance1-24br -n kuttl-test-intimate-garfish -o 'jsonpath={.status.readyReplicas}' logger.go:42: 18:20:07 | additional-volumes/6-restart-and-verify | + ready_replicas=1 logger.go:42: 18:20:07 | additional-volumes/6-restart-and-verify | ++ get_desired_replicas additional-volumes-instance1-24br logger.go:42: 18:20:07 | additional-volumes/6-restart-and-verify | ++ kubectl get statefulset additional-volumes-instance1-24br -n kuttl-test-intimate-garfish -o 'jsonpath={.spec.replicas}' logger.go:42: 18:20:08 | additional-volumes/6-restart-and-verify | + desired_replicas=1 logger.go:42: 18:20:08 | additional-volumes/6-restart-and-verify | ++ get_updated_replicas additional-volumes-instance1-24br logger.go:42: 18:20:08 | additional-volumes/6-restart-and-verify | ++ kubectl get statefulset additional-volumes-instance1-24br -n kuttl-test-intimate-garfish -o 'jsonpath={.status.updatedReplicas}' logger.go:42: 18:20:09 | additional-volumes/6-restart-and-verify | + updated_replicas=1 logger.go:42: 18:20:09 | additional-volumes/6-restart-and-verify | + echo 'Waiting for sts/additional-volumes-instance1-24br to update... 1/1/1 pods updated.' logger.go:42: 18:20:09 | additional-volumes/6-restart-and-verify | Waiting for sts/additional-volumes-instance1-24br to update... 1/1/1 pods updated. logger.go:42: 18:20:09 | additional-volumes/6-restart-and-verify | + sleep 10 logger.go:42: 18:20:19 | additional-volumes/6-restart-and-verify | + [[ 1 -eq 1 ]] logger.go:42: 18:20:19 | additional-volumes/6-restart-and-verify | + [[ 1 -eq 1 ]] logger.go:42: 18:20:19 | additional-volumes/6-restart-and-verify | + for st in $sts logger.go:42: 18:20:19 | additional-volumes/6-restart-and-verify | + wait_sts_rollout additional-volumes-instance1-n8pg logger.go:42: 18:20:19 | additional-volumes/6-restart-and-verify | + local sts=additional-volumes-instance1-n8pg logger.go:42: 18:20:19 | additional-volumes/6-restart-and-verify | ++ get_ready_replicas additional-volumes-instance1-n8pg logger.go:42: 18:20:19 | additional-volumes/6-restart-and-verify | ++ kubectl get sts additional-volumes-instance1-n8pg -n kuttl-test-intimate-garfish -o 'jsonpath={.status.readyReplicas}' logger.go:42: 18:20:19 | additional-volumes/6-restart-and-verify | + local ready_replicas=1 logger.go:42: 18:20:19 | additional-volumes/6-restart-and-verify | ++ get_updated_replicas additional-volumes-instance1-n8pg logger.go:42: 18:20:19 | additional-volumes/6-restart-and-verify | ++ kubectl get statefulset additional-volumes-instance1-n8pg -n kuttl-test-intimate-garfish -o 'jsonpath={.status.updatedReplicas}' logger.go:42: 18:20:20 | additional-volumes/6-restart-and-verify | + local updated_replicas=1 logger.go:42: 18:20:20 | additional-volumes/6-restart-and-verify | ++ get_desired_replicas additional-volumes-instance1-n8pg logger.go:42: 18:20:20 | additional-volumes/6-restart-and-verify | ++ kubectl get statefulset additional-volumes-instance1-n8pg -n kuttl-test-intimate-garfish -o 'jsonpath={.spec.replicas}' logger.go:42: 18:20:21 | additional-volumes/6-restart-and-verify | + local desired_replicas=1 logger.go:42: 18:20:21 | additional-volumes/6-restart-and-verify | + echo 'ready_replicas 1 desired_replicas 1' logger.go:42: 18:20:21 | additional-volumes/6-restart-and-verify | ready_replicas 1 desired_replicas 1 logger.go:42: 18:20:21 | additional-volumes/6-restart-and-verify | + [[ 1 -eq 1 ]] logger.go:42: 18:20:21 | additional-volumes/6-restart-and-verify | + [[ 1 -eq 1 ]] logger.go:42: 18:20:21 | additional-volumes/6-restart-and-verify | + for st in $sts logger.go:42: 18:20:21 | additional-volumes/6-restart-and-verify | + wait_sts_rollout additional-volumes-instance1-xvbw logger.go:42: 18:20:21 | additional-volumes/6-restart-and-verify | + local sts=additional-volumes-instance1-xvbw logger.go:42: 18:20:21 | additional-volumes/6-restart-and-verify | ++ get_ready_replicas additional-volumes-instance1-xvbw logger.go:42: 18:20:21 | additional-volumes/6-restart-and-verify | ++ kubectl get sts additional-volumes-instance1-xvbw -n kuttl-test-intimate-garfish -o 'jsonpath={.status.readyReplicas}' logger.go:42: 18:20:21 | additional-volumes/6-restart-and-verify | + local ready_replicas=1 logger.go:42: 18:20:21 | additional-volumes/6-restart-and-verify | ++ get_updated_replicas additional-volumes-instance1-xvbw logger.go:42: 18:20:21 | additional-volumes/6-restart-and-verify | ++ kubectl get statefulset additional-volumes-instance1-xvbw -n kuttl-test-intimate-garfish -o 'jsonpath={.status.updatedReplicas}' logger.go:42: 18:20:22 | additional-volumes/6-restart-and-verify | + local updated_replicas=1 logger.go:42: 18:20:22 | additional-volumes/6-restart-and-verify | ++ get_desired_replicas additional-volumes-instance1-xvbw logger.go:42: 18:20:22 | additional-volumes/6-restart-and-verify | ++ kubectl get statefulset additional-volumes-instance1-xvbw -n kuttl-test-intimate-garfish -o 'jsonpath={.spec.replicas}' logger.go:42: 18:20:23 | additional-volumes/6-restart-and-verify | + local desired_replicas=1 logger.go:42: 18:20:23 | additional-volumes/6-restart-and-verify | + echo 'ready_replicas 1 desired_replicas 1' logger.go:42: 18:20:23 | additional-volumes/6-restart-and-verify | ready_replicas 1 desired_replicas 1 logger.go:42: 18:20:23 | additional-volumes/6-restart-and-verify | + [[ 1 -eq 1 ]] logger.go:42: 18:20:23 | additional-volumes/6-restart-and-verify | + [[ 1 -eq 1 ]] logger.go:42: 18:20:23 | additional-volumes/6-restart-and-verify | + for st in $sts logger.go:42: 18:20:23 | additional-volumes/6-restart-and-verify | + wait_sts_rollout additional-volumes-repo-host logger.go:42: 18:20:23 | additional-volumes/6-restart-and-verify | + local sts=additional-volumes-repo-host logger.go:42: 18:20:23 | additional-volumes/6-restart-and-verify | ++ get_ready_replicas additional-volumes-repo-host logger.go:42: 18:20:23 | additional-volumes/6-restart-and-verify | ++ kubectl get sts additional-volumes-repo-host -n kuttl-test-intimate-garfish -o 'jsonpath={.status.readyReplicas}' logger.go:42: 18:20:23 | additional-volumes/6-restart-and-verify | + local ready_replicas=1 logger.go:42: 18:20:23 | additional-volumes/6-restart-and-verify | ++ get_updated_replicas additional-volumes-repo-host logger.go:42: 18:20:23 | additional-volumes/6-restart-and-verify | ++ kubectl get statefulset additional-volumes-repo-host -n kuttl-test-intimate-garfish -o 'jsonpath={.status.updatedReplicas}' logger.go:42: 18:20:24 | additional-volumes/6-restart-and-verify | + local updated_replicas=1 logger.go:42: 18:20:24 | additional-volumes/6-restart-and-verify | ++ get_desired_replicas additional-volumes-repo-host logger.go:42: 18:20:24 | additional-volumes/6-restart-and-verify | ++ kubectl get statefulset additional-volumes-repo-host -n kuttl-test-intimate-garfish -o 'jsonpath={.spec.replicas}' logger.go:42: 18:20:24 | additional-volumes/6-restart-and-verify | + local desired_replicas=1 logger.go:42: 18:20:24 | additional-volumes/6-restart-and-verify | + echo 'ready_replicas 1 desired_replicas 1' logger.go:42: 18:20:24 | additional-volumes/6-restart-and-verify | ready_replicas 1 desired_replicas 1 logger.go:42: 18:20:24 | additional-volumes/6-restart-and-verify | + [[ 1 -eq 1 ]] logger.go:42: 18:20:24 | additional-volumes/6-restart-and-verify | + [[ 1 -eq 1 ]] logger.go:42: 18:20:24 | additional-volumes/6-restart-and-verify | ++ get_instance_set_pods instance1 logger.go:42: 18:20:24 | additional-volumes/6-restart-and-verify | ++ local instance=instance1 logger.go:42: 18:20:24 | additional-volumes/6-restart-and-verify | ++ kubectl get pods -n kuttl-test-intimate-garfish --selector postgres-operator.crunchydata.com/instance-set=instance1 -o custom-columns=NAME:.metadata.name --no-headers logger.go:42: 18:20:25 | additional-volumes/6-restart-and-verify | + for pod in $(get_instance_set_pods instance1) logger.go:42: 18:20:25 | additional-volumes/6-restart-and-verify | + kubectl -n kuttl-test-intimate-garfish exec additional-volumes-instance1-24br-0 -c database -- grep -q ' /pgwal ' /proc/mounts logger.go:42: 18:20:26 | additional-volumes/6-restart-and-verify | + kubectl -n kuttl-test-intimate-garfish exec additional-volumes-instance1-24br-0 -c database -- grep -q ' /pglogs ' /proc/mounts logger.go:42: 18:20:27 | additional-volumes/6-restart-and-verify | + check_additional_volume_symlinks additional-volumes-instance1-24br-0 'after restart' logger.go:42: 18:20:27 | additional-volumes/6-restart-and-verify | + local pod=additional-volumes-instance1-24br-0 logger.go:42: 18:20:27 | additional-volumes/6-restart-and-verify | + local 'when=after restart' logger.go:42: 18:20:27 | additional-volumes/6-restart-and-verify | + local pair link want target logger.go:42: 18:20:27 | additional-volumes/6-restart-and-verify | + for pair in "/pgdata/pg${PG_VER}/pg_wal=/pgwal/pg${PG_VER}_wal" "/pgdata/pgbackrest-spool=/pgwal/pgbackrest-spool" "/pgdata/logs/postgres=/pglogs/postgres" "/pgdata/pgbackrest/log=/pglogs/pgbackrest/log" logger.go:42: 18:20:27 | additional-volumes/6-restart-and-verify | + link=/pgdata/pg18/pg_wal logger.go:42: 18:20:27 | additional-volumes/6-restart-and-verify | + want=/pgwal/pg18_wal logger.go:42: 18:20:27 | additional-volumes/6-restart-and-verify | ++ kubectl -n kuttl-test-intimate-garfish exec additional-volumes-instance1-24br-0 -c database -- readlink /pgdata/pg18/pg_wal logger.go:42: 18:20:28 | additional-volumes/6-restart-and-verify | + target=/pgwal/pg18_wal logger.go:42: 18:20:28 | additional-volumes/6-restart-and-verify | + [[ /pgwal/pg18_wal != /pgwal/pg18_wal ]] logger.go:42: 18:20:28 | additional-volumes/6-restart-and-verify | + for pair in "/pgdata/pg${PG_VER}/pg_wal=/pgwal/pg${PG_VER}_wal" "/pgdata/pgbackrest-spool=/pgwal/pgbackrest-spool" "/pgdata/logs/postgres=/pglogs/postgres" "/pgdata/pgbackrest/log=/pglogs/pgbackrest/log" logger.go:42: 18:20:28 | additional-volumes/6-restart-and-verify | + link=/pgdata/pgbackrest-spool logger.go:42: 18:20:28 | additional-volumes/6-restart-and-verify | + want=/pgwal/pgbackrest-spool logger.go:42: 18:20:28 | additional-volumes/6-restart-and-verify | ++ kubectl -n kuttl-test-intimate-garfish exec additional-volumes-instance1-24br-0 -c database -- readlink /pgdata/pgbackrest-spool logger.go:42: 18:20:30 | additional-volumes/6-restart-and-verify | + target=/pgwal/pgbackrest-spool logger.go:42: 18:20:30 | additional-volumes/6-restart-and-verify | + [[ /pgwal/pgbackrest-spool != /pgwal/pgbackrest\-spool ]] logger.go:42: 18:20:30 | additional-volumes/6-restart-and-verify | + for pair in "/pgdata/pg${PG_VER}/pg_wal=/pgwal/pg${PG_VER}_wal" "/pgdata/pgbackrest-spool=/pgwal/pgbackrest-spool" "/pgdata/logs/postgres=/pglogs/postgres" "/pgdata/pgbackrest/log=/pglogs/pgbackrest/log" logger.go:42: 18:20:30 | additional-volumes/6-restart-and-verify | + link=/pgdata/logs/postgres logger.go:42: 18:20:30 | additional-volumes/6-restart-and-verify | + want=/pglogs/postgres logger.go:42: 18:20:30 | additional-volumes/6-restart-and-verify | ++ kubectl -n kuttl-test-intimate-garfish exec additional-volumes-instance1-24br-0 -c database -- readlink /pgdata/logs/postgres logger.go:42: 18:20:31 | additional-volumes/6-restart-and-verify | + target=/pglogs/postgres logger.go:42: 18:20:31 | additional-volumes/6-restart-and-verify | + [[ /pglogs/postgres != /pglogs/postgres ]] logger.go:42: 18:20:31 | additional-volumes/6-restart-and-verify | + for pair in "/pgdata/pg${PG_VER}/pg_wal=/pgwal/pg${PG_VER}_wal" "/pgdata/pgbackrest-spool=/pgwal/pgbackrest-spool" "/pgdata/logs/postgres=/pglogs/postgres" "/pgdata/pgbackrest/log=/pglogs/pgbackrest/log" logger.go:42: 18:20:31 | additional-volumes/6-restart-and-verify | + link=/pgdata/pgbackrest/log logger.go:42: 18:20:31 | additional-volumes/6-restart-and-verify | + want=/pglogs/pgbackrest/log logger.go:42: 18:20:31 | additional-volumes/6-restart-and-verify | ++ kubectl -n kuttl-test-intimate-garfish exec additional-volumes-instance1-24br-0 -c database -- readlink /pgdata/pgbackrest/log logger.go:42: 18:20:32 | additional-volumes/6-restart-and-verify | + target=/pglogs/pgbackrest/log logger.go:42: 18:20:32 | additional-volumes/6-restart-and-verify | + [[ /pglogs/pgbackrest/log != /pglogs/pgbackrest/log ]] logger.go:42: 18:20:32 | additional-volumes/6-restart-and-verify | + for pod in $(get_instance_set_pods instance1) logger.go:42: 18:20:32 | additional-volumes/6-restart-and-verify | + kubectl -n kuttl-test-intimate-garfish exec additional-volumes-instance1-n8pg-0 -c database -- grep -q ' /pgwal ' /proc/mounts logger.go:42: 18:20:33 | additional-volumes/6-restart-and-verify | + kubectl -n kuttl-test-intimate-garfish exec additional-volumes-instance1-n8pg-0 -c database -- grep -q ' /pglogs ' /proc/mounts logger.go:42: 18:20:34 | additional-volumes/6-restart-and-verify | + check_additional_volume_symlinks additional-volumes-instance1-n8pg-0 'after restart' logger.go:42: 18:20:34 | additional-volumes/6-restart-and-verify | + local pod=additional-volumes-instance1-n8pg-0 logger.go:42: 18:20:34 | additional-volumes/6-restart-and-verify | + local 'when=after restart' logger.go:42: 18:20:34 | additional-volumes/6-restart-and-verify | + local pair link want target logger.go:42: 18:20:34 | additional-volumes/6-restart-and-verify | + for pair in "/pgdata/pg${PG_VER}/pg_wal=/pgwal/pg${PG_VER}_wal" "/pgdata/pgbackrest-spool=/pgwal/pgbackrest-spool" "/pgdata/logs/postgres=/pglogs/postgres" "/pgdata/pgbackrest/log=/pglogs/pgbackrest/log" logger.go:42: 18:20:34 | additional-volumes/6-restart-and-verify | + link=/pgdata/pg18/pg_wal logger.go:42: 18:20:34 | additional-volumes/6-restart-and-verify | + want=/pgwal/pg18_wal logger.go:42: 18:20:34 | additional-volumes/6-restart-and-verify | ++ kubectl -n kuttl-test-intimate-garfish exec additional-volumes-instance1-n8pg-0 -c database -- readlink /pgdata/pg18/pg_wal logger.go:42: 18:20:36 | additional-volumes/6-restart-and-verify | + target=/pgwal/pg18_wal logger.go:42: 18:20:36 | additional-volumes/6-restart-and-verify | + [[ /pgwal/pg18_wal != /pgwal/pg18_wal ]] logger.go:42: 18:20:36 | additional-volumes/6-restart-and-verify | + for pair in "/pgdata/pg${PG_VER}/pg_wal=/pgwal/pg${PG_VER}_wal" "/pgdata/pgbackrest-spool=/pgwal/pgbackrest-spool" "/pgdata/logs/postgres=/pglogs/postgres" "/pgdata/pgbackrest/log=/pglogs/pgbackrest/log" logger.go:42: 18:20:36 | additional-volumes/6-restart-and-verify | + link=/pgdata/pgbackrest-spool logger.go:42: 18:20:36 | additional-volumes/6-restart-and-verify | + want=/pgwal/pgbackrest-spool logger.go:42: 18:20:36 | additional-volumes/6-restart-and-verify | ++ kubectl -n kuttl-test-intimate-garfish exec additional-volumes-instance1-n8pg-0 -c database -- readlink /pgdata/pgbackrest-spool logger.go:42: 18:20:37 | additional-volumes/6-restart-and-verify | + target=/pgwal/pgbackrest-spool logger.go:42: 18:20:37 | additional-volumes/6-restart-and-verify | + [[ /pgwal/pgbackrest-spool != /pgwal/pgbackrest\-spool ]] logger.go:42: 18:20:37 | additional-volumes/6-restart-and-verify | + for pair in "/pgdata/pg${PG_VER}/pg_wal=/pgwal/pg${PG_VER}_wal" "/pgdata/pgbackrest-spool=/pgwal/pgbackrest-spool" "/pgdata/logs/postgres=/pglogs/postgres" "/pgdata/pgbackrest/log=/pglogs/pgbackrest/log" logger.go:42: 18:20:37 | additional-volumes/6-restart-and-verify | + link=/pgdata/logs/postgres logger.go:42: 18:20:37 | additional-volumes/6-restart-and-verify | + want=/pglogs/postgres logger.go:42: 18:20:37 | additional-volumes/6-restart-and-verify | ++ kubectl -n kuttl-test-intimate-garfish exec additional-volumes-instance1-n8pg-0 -c database -- readlink /pgdata/logs/postgres logger.go:42: 18:20:38 | additional-volumes/6-restart-and-verify | + target=/pglogs/postgres logger.go:42: 18:20:38 | additional-volumes/6-restart-and-verify | + [[ /pglogs/postgres != /pglogs/postgres ]] logger.go:42: 18:20:38 | additional-volumes/6-restart-and-verify | + for pair in "/pgdata/pg${PG_VER}/pg_wal=/pgwal/pg${PG_VER}_wal" "/pgdata/pgbackrest-spool=/pgwal/pgbackrest-spool" "/pgdata/logs/postgres=/pglogs/postgres" "/pgdata/pgbackrest/log=/pglogs/pgbackrest/log" logger.go:42: 18:20:38 | additional-volumes/6-restart-and-verify | + link=/pgdata/pgbackrest/log logger.go:42: 18:20:38 | additional-volumes/6-restart-and-verify | + want=/pglogs/pgbackrest/log logger.go:42: 18:20:38 | additional-volumes/6-restart-and-verify | ++ kubectl -n kuttl-test-intimate-garfish exec additional-volumes-instance1-n8pg-0 -c database -- readlink /pgdata/pgbackrest/log logger.go:42: 18:20:39 | additional-volumes/6-restart-and-verify | + target=/pglogs/pgbackrest/log logger.go:42: 18:20:39 | additional-volumes/6-restart-and-verify | + [[ /pglogs/pgbackrest/log != /pglogs/pgbackrest/log ]] logger.go:42: 18:20:39 | additional-volumes/6-restart-and-verify | + for pod in $(get_instance_set_pods instance1) logger.go:42: 18:20:39 | additional-volumes/6-restart-and-verify | + kubectl -n kuttl-test-intimate-garfish exec additional-volumes-instance1-xvbw-0 -c database -- grep -q ' /pgwal ' /proc/mounts logger.go:42: 18:20:40 | additional-volumes/6-restart-and-verify | + kubectl -n kuttl-test-intimate-garfish exec additional-volumes-instance1-xvbw-0 -c database -- grep -q ' /pglogs ' /proc/mounts logger.go:42: 18:20:41 | additional-volumes/6-restart-and-verify | + check_additional_volume_symlinks additional-volumes-instance1-xvbw-0 'after restart' logger.go:42: 18:20:41 | additional-volumes/6-restart-and-verify | + local pod=additional-volumes-instance1-xvbw-0 logger.go:42: 18:20:41 | additional-volumes/6-restart-and-verify | + local 'when=after restart' logger.go:42: 18:20:41 | additional-volumes/6-restart-and-verify | + local pair link want target logger.go:42: 18:20:41 | additional-volumes/6-restart-and-verify | + for pair in "/pgdata/pg${PG_VER}/pg_wal=/pgwal/pg${PG_VER}_wal" "/pgdata/pgbackrest-spool=/pgwal/pgbackrest-spool" "/pgdata/logs/postgres=/pglogs/postgres" "/pgdata/pgbackrest/log=/pglogs/pgbackrest/log" logger.go:42: 18:20:41 | additional-volumes/6-restart-and-verify | + link=/pgdata/pg18/pg_wal logger.go:42: 18:20:41 | additional-volumes/6-restart-and-verify | + want=/pgwal/pg18_wal logger.go:42: 18:20:41 | additional-volumes/6-restart-and-verify | ++ kubectl -n kuttl-test-intimate-garfish exec additional-volumes-instance1-xvbw-0 -c database -- readlink /pgdata/pg18/pg_wal logger.go:42: 18:20:43 | additional-volumes/6-restart-and-verify | + target=/pgwal/pg18_wal logger.go:42: 18:20:43 | additional-volumes/6-restart-and-verify | + [[ /pgwal/pg18_wal != /pgwal/pg18_wal ]] logger.go:42: 18:20:43 | additional-volumes/6-restart-and-verify | + for pair in "/pgdata/pg${PG_VER}/pg_wal=/pgwal/pg${PG_VER}_wal" "/pgdata/pgbackrest-spool=/pgwal/pgbackrest-spool" "/pgdata/logs/postgres=/pglogs/postgres" "/pgdata/pgbackrest/log=/pglogs/pgbackrest/log" logger.go:42: 18:20:43 | additional-volumes/6-restart-and-verify | + link=/pgdata/pgbackrest-spool logger.go:42: 18:20:43 | additional-volumes/6-restart-and-verify | + want=/pgwal/pgbackrest-spool logger.go:42: 18:20:43 | additional-volumes/6-restart-and-verify | ++ kubectl -n kuttl-test-intimate-garfish exec additional-volumes-instance1-xvbw-0 -c database -- readlink /pgdata/pgbackrest-spool logger.go:42: 18:20:44 | additional-volumes/6-restart-and-verify | + target=/pgwal/pgbackrest-spool logger.go:42: 18:20:44 | additional-volumes/6-restart-and-verify | + [[ /pgwal/pgbackrest-spool != /pgwal/pgbackrest\-spool ]] logger.go:42: 18:20:44 | additional-volumes/6-restart-and-verify | + for pair in "/pgdata/pg${PG_VER}/pg_wal=/pgwal/pg${PG_VER}_wal" "/pgdata/pgbackrest-spool=/pgwal/pgbackrest-spool" "/pgdata/logs/postgres=/pglogs/postgres" "/pgdata/pgbackrest/log=/pglogs/pgbackrest/log" logger.go:42: 18:20:44 | additional-volumes/6-restart-and-verify | + link=/pgdata/logs/postgres logger.go:42: 18:20:44 | additional-volumes/6-restart-and-verify | + want=/pglogs/postgres logger.go:42: 18:20:44 | additional-volumes/6-restart-and-verify | ++ kubectl -n kuttl-test-intimate-garfish exec additional-volumes-instance1-xvbw-0 -c database -- readlink /pgdata/logs/postgres logger.go:42: 18:20:46 | additional-volumes/6-restart-and-verify | + target=/pglogs/postgres logger.go:42: 18:20:46 | additional-volumes/6-restart-and-verify | + [[ /pglogs/postgres != /pglogs/postgres ]] logger.go:42: 18:20:46 | additional-volumes/6-restart-and-verify | + for pair in "/pgdata/pg${PG_VER}/pg_wal=/pgwal/pg${PG_VER}_wal" "/pgdata/pgbackrest-spool=/pgwal/pgbackrest-spool" "/pgdata/logs/postgres=/pglogs/postgres" "/pgdata/pgbackrest/log=/pglogs/pgbackrest/log" logger.go:42: 18:20:46 | additional-volumes/6-restart-and-verify | + link=/pgdata/pgbackrest/log logger.go:42: 18:20:46 | additional-volumes/6-restart-and-verify | + want=/pglogs/pgbackrest/log logger.go:42: 18:20:46 | additional-volumes/6-restart-and-verify | ++ kubectl -n kuttl-test-intimate-garfish exec additional-volumes-instance1-xvbw-0 -c database -- readlink /pgdata/pgbackrest/log logger.go:42: 18:20:47 | additional-volumes/6-restart-and-verify | + target=/pglogs/pgbackrest/log logger.go:42: 18:20:47 | additional-volumes/6-restart-and-verify | + [[ /pglogs/pgbackrest/log != /pglogs/pgbackrest/log ]] logger.go:42: 18:20:47 | additional-volumes/6-restart-and-verify | ++ get_pod_by_role additional-volumes primary name logger.go:42: 18:20:47 | additional-volumes/6-restart-and-verify | ++ local cluster=additional-volumes logger.go:42: 18:20:47 | additional-volumes/6-restart-and-verify | ++ local role=primary logger.go:42: 18:20:47 | additional-volumes/6-restart-and-verify | ++ local parameter=name logger.go:42: 18:20:47 | additional-volumes/6-restart-and-verify | ++ case ${parameter} in logger.go:42: 18:20:47 | additional-volumes/6-restart-and-verify | ++ local 'jsonpath={.items[].metadata.name}' logger.go:42: 18:20:47 | additional-volumes/6-restart-and-verify | +++ kubectl get pods --namespace kuttl-test-intimate-garfish --selector=postgres-operator.crunchydata.com/role=primary,postgres-operator.crunchydata.com/cluster=additional-volumes -o 'jsonpath={.items[].metadata.name}' logger.go:42: 18:20:47 | additional-volumes/6-restart-and-verify | ++ echo additional-volumes-instance1-n8pg-0 logger.go:42: 18:20:47 | additional-volumes/6-restart-and-verify | + primary=additional-volumes-instance1-n8pg-0 logger.go:42: 18:20:47 | additional-volumes/6-restart-and-verify | ++ kubectl -n kuttl-test-intimate-garfish exec additional-volumes-instance1-n8pg-0 -c database -- cat /pglogs/marker logger.go:42: 18:20:49 | additional-volumes/6-restart-and-verify | + readback=pglogs-1787163419-23183 logger.go:42: 18:20:49 | additional-volumes/6-restart-and-verify | + [[ pglogs-1787163419-23183 != pglogs\-1787163419\-23183 ]] logger.go:42: 18:20:49 | additional-volumes/6-restart-and-verify | +++ get_psql_uri additional-volumes postgres logger.go:42: 18:20:49 | additional-volumes/6-restart-and-verify | +++ local cluster=additional-volumes logger.go:42: 18:20:49 | additional-volumes/6-restart-and-verify | +++ local user=postgres logger.go:42: 18:20:49 | additional-volumes/6-restart-and-verify | +++ local secret_name=additional-volumes-pguser-postgres logger.go:42: 18:20:49 | additional-volumes/6-restart-and-verify | ++++ get_psql_user_pass additional-volumes-pguser-postgres logger.go:42: 18:20:49 | additional-volumes/6-restart-and-verify | ++++ local secret_name=additional-volumes-pguser-postgres logger.go:42: 18:20:49 | additional-volumes/6-restart-and-verify | ++++ kubectl -n kuttl-test-intimate-garfish get secret/additional-volumes-pguser-postgres '--template={{.data.password | base64decode}}' logger.go:42: 18:20:49 | additional-volumes/6-restart-and-verify | ++++ get_psql_user_host additional-volumes-pguser-postgres logger.go:42: 18:20:49 | additional-volumes/6-restart-and-verify | ++++ local secret_name=additional-volumes-pguser-postgres logger.go:42: 18:20:49 | additional-volumes/6-restart-and-verify | ++++ kubectl -n kuttl-test-intimate-garfish get secret/additional-volumes-pguser-postgres '--template={{.data.host | base64decode }}' logger.go:42: 18:20:50 | additional-volumes/6-restart-and-verify | +++ echo postgres:l0MUHwCzHnDZcySTpvPctkb7@additional-volumes-primary.kuttl-test-intimate-garfish.svc logger.go:42: 18:20:50 | additional-volumes/6-restart-and-verify | ++ run_psql_local '\c myapp \\\ SELECT * from myApp;' postgres:l0MUHwCzHnDZcySTpvPctkb7@additional-volumes-primary.kuttl-test-intimate-garfish.svc logger.go:42: 18:20:50 | additional-volumes/6-restart-and-verify | ++ local 'command=\c myapp \\\ SELECT * from myApp;' logger.go:42: 18:20:50 | additional-volumes/6-restart-and-verify | ++ local uri=postgres:l0MUHwCzHnDZcySTpvPctkb7@additional-volumes-primary.kuttl-test-intimate-garfish.svc logger.go:42: 18:20:50 | additional-volumes/6-restart-and-verify | ++ local driver=postgres logger.go:42: 18:20:50 | additional-volumes/6-restart-and-verify | +++ get_client_pod logger.go:42: 18:20:50 | additional-volumes/6-restart-and-verify | +++ kubectl -n kuttl-test-intimate-garfish get pods --selector=name=pg-client -o 'jsonpath={.items[].metadata.name}' logger.go:42: 18:20:50 | additional-volumes/6-restart-and-verify | ++ kubectl -n kuttl-test-intimate-garfish exec pg-client-65d98588cc-q6dhp -- bash -c 'printf '\''\c myapp \\\ SELECT * from myApp;\n'\'' | psql -v ON_ERROR_STOP=1 -t -q postgres://'\''postgres:l0MUHwCzHnDZcySTpvPctkb7@additional-volumes-primary.kuttl-test-intimate-garfish.svc'\''' logger.go:42: 18:20:51 | additional-volumes/6-restart-and-verify | + data=' 100500' logger.go:42: 18:20:51 | additional-volumes/6-restart-and-verify | + kubectl create configmap -n kuttl-test-intimate-garfish 06-read-after-restart '--from-literal=data= 100500' logger.go:42: 18:20:51 | additional-volumes/6-restart-and-verify | configmap/06-read-after-restart created logger.go:42: 18:20:52 | additional-volumes/6-restart-and-verify | test step completed 6-restart-and-verify logger.go:42: 18:20:52 | additional-volumes/7-delete-data | starting test step 7-delete-data logger.go:42: 18:20:52 | additional-volumes/7-delete-data | running command: [sh -c set -o errexit set -o xtrace source ../../functions run_psql_local \ '\c myapp \\\ TRUNCATE TABLE myApp' \ "$(get_psql_uri additional-volumes postgres)"] logger.go:42: 18:20:52 | additional-volumes/7-delete-data | + source ../../functions logger.go:42: 18:20:52 | additional-volumes/7-delete-data | +++ realpath ../../.. logger.go:42: 18:20:52 | additional-volumes/7-delete-data | ++ ROOT_REPO=/mnt/jenkins/workspace/cloud-pg-operator_PR-1760 logger.go:42: 18:20:52 | additional-volumes/7-delete-data | ++ CERT_MANAGER_VER=1.20.2 logger.go:42: 18:20:52 | additional-volumes/7-delete-data | ++ CERT_MANAGER_TEST_LABEL=e2e.percona.com/managed-by=percona-postgresql-operator-tests logger.go:42: 18:20:52 | additional-volumes/7-delete-data | ++ CHAOS_MESH_VER=2.5.1 logger.go:42: 18:20:52 | additional-volumes/7-delete-data | ++ BUSYBOX_VER=1.36 logger.go:42: 18:20:52 | additional-volumes/7-delete-data | ++++ pwd logger.go:42: 18:20:52 | additional-volumes/7-delete-data | +++ basename /mnt/jenkins/workspace/cloud-pg-operator_PR-1760/e2e-tests/tests/additional-volumes logger.go:42: 18:20:52 | additional-volumes/7-delete-data | ++ test_name=additional-volumes logger.go:42: 18:20:52 | additional-volumes/7-delete-data | ++ source /mnt/jenkins/workspace/cloud-pg-operator_PR-1760/e2e-tests/vars.sh logger.go:42: 18:20:52 | additional-volumes/7-delete-data | +++ export ROOT_REPO=/mnt/jenkins/workspace/cloud-pg-operator_PR-1760 logger.go:42: 18:20:52 | additional-volumes/7-delete-data | +++ ROOT_REPO=/mnt/jenkins/workspace/cloud-pg-operator_PR-1760 logger.go:42: 18:20:52 | additional-volumes/7-delete-data | +++ export DEPLOY_DIR=/mnt/jenkins/workspace/cloud-pg-operator_PR-1760/deploy logger.go:42: 18:20:52 | additional-volumes/7-delete-data | +++ DEPLOY_DIR=/mnt/jenkins/workspace/cloud-pg-operator_PR-1760/deploy logger.go:42: 18:20:52 | additional-volumes/7-delete-data | +++ export TESTS_DIR=/mnt/jenkins/workspace/cloud-pg-operator_PR-1760/e2e-tests logger.go:42: 18:20:52 | additional-volumes/7-delete-data | +++ TESTS_DIR=/mnt/jenkins/workspace/cloud-pg-operator_PR-1760/e2e-tests logger.go:42: 18:20:52 | additional-volumes/7-delete-data | +++ export TESTS_CONFIG_DIR=/mnt/jenkins/workspace/cloud-pg-operator_PR-1760/e2e-tests/conf logger.go:42: 18:20:52 | additional-volumes/7-delete-data | +++ TESTS_CONFIG_DIR=/mnt/jenkins/workspace/cloud-pg-operator_PR-1760/e2e-tests/conf logger.go:42: 18:20:52 | additional-volumes/7-delete-data | +++ export TEST_CONFIG_DIR=/mnt/jenkins/workspace/cloud-pg-operator_PR-1760/e2e-tests/tests/additional-volumes/conf logger.go:42: 18:20:52 | additional-volumes/7-delete-data | +++ TEST_CONFIG_DIR=/mnt/jenkins/workspace/cloud-pg-operator_PR-1760/e2e-tests/tests/additional-volumes/conf logger.go:42: 18:20:52 | additional-volumes/7-delete-data | +++ export TEMP_DIR=/tmp/kuttl/pg/additional-volumes logger.go:42: 18:20:52 | additional-volumes/7-delete-data | +++ TEMP_DIR=/tmp/kuttl/pg/additional-volumes logger.go:42: 18:20:52 | additional-volumes/7-delete-data | ++++ git rev-parse --abbrev-ref HEAD logger.go:42: 18:20:52 | additional-volumes/7-delete-data | +++ export GIT_BRANCH=PR-1760 logger.go:42: 18:20:52 | additional-volumes/7-delete-data | +++ GIT_BRANCH=PR-1760 logger.go:42: 18:20:52 | additional-volumes/7-delete-data | +++ export VERSION=PR-1760-4947a0272 logger.go:42: 18:20:52 | additional-volumes/7-delete-data | +++ VERSION=PR-1760-4947a0272 logger.go:42: 18:20:52 | additional-volumes/7-delete-data | +++ export SKIP_TEST_WARNINGS=true logger.go:42: 18:20:52 | additional-volumes/7-delete-data | +++ SKIP_TEST_WARNINGS=true logger.go:42: 18:20:52 | additional-volumes/7-delete-data | +++ export K8S_UPGRADE_PLATFORM=gke logger.go:42: 18:20:52 | additional-volumes/7-delete-data | +++ K8S_UPGRADE_PLATFORM=gke logger.go:42: 18:20:52 | additional-volumes/7-delete-data | +++ export K8S_UPGRADE_REGION=us-central1-a logger.go:42: 18:20:52 | additional-volumes/7-delete-data | +++ K8S_UPGRADE_REGION=us-central1-a logger.go:42: 18:20:52 | additional-volumes/7-delete-data | +++ export K8S_UPGRADE_INITIAL_VERSION= logger.go:42: 18:20:52 | additional-volumes/7-delete-data | +++ K8S_UPGRADE_INITIAL_VERSION= logger.go:42: 18:20:52 | additional-volumes/7-delete-data | +++ export K8S_UPGRADE_FINAL_VERSION= logger.go:42: 18:20:52 | additional-volumes/7-delete-data | +++ K8S_UPGRADE_FINAL_VERSION= logger.go:42: 18:20:52 | additional-volumes/7-delete-data | +++ [[ -z '' ]] logger.go:42: 18:20:52 | additional-volumes/7-delete-data | ++++ detect_k8s_platform logger.go:42: 18:20:52 | additional-volumes/7-delete-data | ++++ local detected_platform logger.go:42: 18:20:52 | additional-volumes/7-delete-data | ++++ local xtrace_enabled=false logger.go:42: 18:20:52 | additional-volumes/7-delete-data | ++++ [[ -o xtrace ]] logger.go:42: 18:20:52 | additional-volumes/7-delete-data | ++++ xtrace_enabled=true logger.go:42: 18:20:52 | additional-volumes/7-delete-data | ++++ set +o xtrace logger.go:42: 18:20:54 | additional-volumes/7-delete-data | +++ PLATFORM=gke logger.go:42: 18:20:54 | additional-volumes/7-delete-data | +++ export PLATFORM logger.go:42: 18:20:54 | additional-volumes/7-delete-data | +++ export IMAGE_BASE=perconalab/percona-postgresql-operator logger.go:42: 18:20:54 | additional-volumes/7-delete-data | +++ IMAGE_BASE=perconalab/percona-postgresql-operator logger.go:42: 18:20:54 | additional-volumes/7-delete-data | +++ export IMAGE=perconalab/percona-postgresql-operator:PR-1760-4947a0272 logger.go:42: 18:20:54 | additional-volumes/7-delete-data | +++ IMAGE=perconalab/percona-postgresql-operator:PR-1760-4947a0272 logger.go:42: 18:20:54 | additional-volumes/7-delete-data | +++ [[ ! -n '' ]] logger.go:42: 18:20:54 | additional-volumes/7-delete-data | +++ [[ -n '' ]] logger.go:42: 18:20:54 | additional-volumes/7-delete-data | +++ export PG_VER=18 logger.go:42: 18:20:54 | additional-volumes/7-delete-data | +++ PG_VER=18 logger.go:42: 18:20:54 | additional-volumes/7-delete-data | +++ export PG_DISTRIBUTION= logger.go:42: 18:20:54 | additional-volumes/7-delete-data | +++ PG_DISTRIBUTION= logger.go:42: 18:20:54 | additional-volumes/7-delete-data | +++ [[ '' == community ]] logger.go:42: 18:20:54 | additional-volumes/7-delete-data | +++ export IMAGE_PGBOUNCER=perconalab/percona-postgresql-operator:main-pgbouncer18 logger.go:42: 18:20:54 | additional-volumes/7-delete-data | +++ IMAGE_PGBOUNCER=perconalab/percona-postgresql-operator:main-pgbouncer18 logger.go:42: 18:20:54 | additional-volumes/7-delete-data | +++ export IMAGE_POSTGRESQL=perconalab/percona-postgresql-operator:main-ppg18-postgres logger.go:42: 18:20:54 | additional-volumes/7-delete-data | +++ IMAGE_POSTGRESQL=perconalab/percona-postgresql-operator:main-ppg18-postgres logger.go:42: 18:20:54 | additional-volumes/7-delete-data | +++ export IMAGE_BACKREST=perconalab/percona-postgresql-operator:main-pgbackrest18 logger.go:42: 18:20:54 | additional-volumes/7-delete-data | +++ IMAGE_BACKREST=perconalab/percona-postgresql-operator:main-pgbackrest18 logger.go:42: 18:20:54 | additional-volumes/7-delete-data | +++ export IMAGE_UPGRADE=perconalab/percona-postgresql-operator:main-upgrade logger.go:42: 18:20:54 | additional-volumes/7-delete-data | +++ IMAGE_UPGRADE=perconalab/percona-postgresql-operator:main-upgrade logger.go:42: 18:20:54 | additional-volumes/7-delete-data | +++ export BUCKET=pg-operator-testing logger.go:42: 18:20:54 | additional-volumes/7-delete-data | +++ BUCKET=pg-operator-testing logger.go:42: 18:20:54 | additional-volumes/7-delete-data | +++ export PMM_SERVER_VERSION=9.9.9 logger.go:42: 18:20:54 | additional-volumes/7-delete-data | +++ PMM_SERVER_VERSION=9.9.9 logger.go:42: 18:20:54 | additional-volumes/7-delete-data | +++ export IMAGE_PMM_CLIENT=perconalab/pmm-client:3-dev-latest logger.go:42: 18:20:54 | additional-volumes/7-delete-data | +++ IMAGE_PMM_CLIENT=perconalab/pmm-client:3-dev-latest logger.go:42: 18:20:54 | additional-volumes/7-delete-data | +++ export IMAGE_PMM_SERVER=perconalab/pmm-server:3-dev-latest logger.go:42: 18:20:54 | additional-volumes/7-delete-data | +++ IMAGE_PMM_SERVER=perconalab/pmm-server:3-dev-latest logger.go:42: 18:20:54 | additional-volumes/7-delete-data | +++ export IMAGE_LOGCOLLECTOR=perconalab/fluentbit:main-logcollector logger.go:42: 18:20:54 | additional-volumes/7-delete-data | +++ IMAGE_LOGCOLLECTOR=perconalab/fluentbit:main-logcollector logger.go:42: 18:20:54 | additional-volumes/7-delete-data | +++ export PGOV1_TAG=1.4.0 logger.go:42: 18:20:54 | additional-volumes/7-delete-data | +++ PGOV1_TAG=1.4.0 logger.go:42: 18:20:54 | additional-volumes/7-delete-data | +++ export PGOV1_VER=14 logger.go:42: 18:20:54 | additional-volumes/7-delete-data | +++ PGOV1_VER=14 logger.go:42: 18:20:54 | additional-volumes/7-delete-data | +++ export CPGO_VERSION=5.8.7 logger.go:42: 18:20:54 | additional-volumes/7-delete-data | +++ CPGO_VERSION=5.8.7 logger.go:42: 18:20:54 | additional-volumes/7-delete-data | +++ export MINIO_VER=5.4.0 logger.go:42: 18:20:54 | additional-volumes/7-delete-data | +++ MINIO_VER=5.4.0 logger.go:42: 18:20:54 | additional-volumes/7-delete-data | +++ export VAULT_VER=0.32.0 logger.go:42: 18:20:54 | additional-volumes/7-delete-data | +++ VAULT_VER=0.32.0 logger.go:42: 18:20:54 | additional-volumes/7-delete-data | +++ export REGISTRY_NAME=docker.io logger.go:42: 18:20:54 | additional-volumes/7-delete-data | +++ REGISTRY_NAME=docker.io logger.go:42: 18:20:54 | additional-volumes/7-delete-data | +++ export REGISTRY_NAME_FULL=docker.io/ logger.go:42: 18:20:54 | additional-volumes/7-delete-data | +++ REGISTRY_NAME_FULL=docker.io/ logger.go:42: 18:20:54 | additional-volumes/7-delete-data | ++++ printenv logger.go:42: 18:20:54 | additional-volumes/7-delete-data | ++++ grep -E '^IMAGE' logger.go:42: 18:20:54 | additional-volumes/7-delete-data | ++++ awk -F= '{print $1}' logger.go:42: 18:20:54 | additional-volumes/7-delete-data | +++ for var in $(printenv | grep -E '^IMAGE' | awk -F'=' '{print $1}') logger.go:42: 18:20:54 | additional-volumes/7-delete-data | ++++ eval 'echo $IMAGE_BACKREST' logger.go:42: 18:20:54 | additional-volumes/7-delete-data | +++++ echo perconalab/percona-postgresql-operator:main-pgbackrest18 logger.go:42: 18:20:54 | additional-volumes/7-delete-data | +++ var_value=perconalab/percona-postgresql-operator:main-pgbackrest18 logger.go:42: 18:20:54 | additional-volumes/7-delete-data | +++ [[ perconalab/percona-postgresql-operator:main-pgbackrest18 == docker.io/* ]] logger.go:42: 18:20:54 | additional-volumes/7-delete-data | +++ [[ perconalab/percona-postgresql-operator:main-pgbackrest18 == percona/* ]] logger.go:42: 18:20:54 | additional-volumes/7-delete-data | +++ [[ perconalab/percona-postgresql-operator:main-pgbackrest18 == perconalab/* ]] logger.go:42: 18:20:54 | additional-volumes/7-delete-data | +++ new_value=docker.io/perconalab/percona-postgresql-operator:main-pgbackrest18 logger.go:42: 18:20:54 | additional-volumes/7-delete-data | +++ export IMAGE_BACKREST=docker.io/perconalab/percona-postgresql-operator:main-pgbackrest18 logger.go:42: 18:20:54 | additional-volumes/7-delete-data | +++ IMAGE_BACKREST=docker.io/perconalab/percona-postgresql-operator:main-pgbackrest18 logger.go:42: 18:20:54 | additional-volumes/7-delete-data | +++ echo IMAGE_BACKREST=docker.io/perconalab/percona-postgresql-operator:main-pgbackrest18 logger.go:42: 18:20:54 | additional-volumes/7-delete-data | IMAGE_BACKREST=docker.io/perconalab/percona-postgresql-operator:main-pgbackrest18 logger.go:42: 18:20:54 | additional-volumes/7-delete-data | +++ echo perconalab/percona-postgresql-operator:PR-1760-4947a0272 logger.go:42: 18:20:54 | additional-volumes/7-delete-data | perconalab/percona-postgresql-operator:PR-1760-4947a0272 logger.go:42: 18:20:54 | additional-volumes/7-delete-data | +++ for var in $(printenv | grep -E '^IMAGE' | awk -F'=' '{print $1}') logger.go:42: 18:20:54 | additional-volumes/7-delete-data | ++++ eval 'echo $IMAGE' logger.go:42: 18:20:54 | additional-volumes/7-delete-data | +++++ echo perconalab/percona-postgresql-operator:PR-1760-4947a0272 logger.go:42: 18:20:54 | additional-volumes/7-delete-data | +++ var_value=perconalab/percona-postgresql-operator:PR-1760-4947a0272 logger.go:42: 18:20:54 | additional-volumes/7-delete-data | +++ [[ perconalab/percona-postgresql-operator:PR-1760-4947a0272 == docker.io/* ]] logger.go:42: 18:20:54 | additional-volumes/7-delete-data | +++ [[ perconalab/percona-postgresql-operator:PR-1760-4947a0272 == percona/* ]] logger.go:42: 18:20:54 | additional-volumes/7-delete-data | +++ [[ perconalab/percona-postgresql-operator:PR-1760-4947a0272 == perconalab/* ]] logger.go:42: 18:20:54 | additional-volumes/7-delete-data | +++ new_value=docker.io/perconalab/percona-postgresql-operator:PR-1760-4947a0272 logger.go:42: 18:20:54 | additional-volumes/7-delete-data | +++ export IMAGE=docker.io/perconalab/percona-postgresql-operator:PR-1760-4947a0272 logger.go:42: 18:20:54 | additional-volumes/7-delete-data | +++ IMAGE=docker.io/perconalab/percona-postgresql-operator:PR-1760-4947a0272 logger.go:42: 18:20:54 | additional-volumes/7-delete-data | +++ echo IMAGE=docker.io/perconalab/percona-postgresql-operator:PR-1760-4947a0272 logger.go:42: 18:20:54 | additional-volumes/7-delete-data | IMAGE=docker.io/perconalab/percona-postgresql-operator:PR-1760-4947a0272 logger.go:42: 18:20:54 | additional-volumes/7-delete-data | +++ echo docker.io/perconalab/percona-postgresql-operator:PR-1760-4947a0272 logger.go:42: 18:20:54 | additional-volumes/7-delete-data | docker.io/perconalab/percona-postgresql-operator:PR-1760-4947a0272 logger.go:42: 18:20:54 | additional-volumes/7-delete-data | +++ for var in $(printenv | grep -E '^IMAGE' | awk -F'=' '{print $1}') logger.go:42: 18:20:54 | additional-volumes/7-delete-data | ++++ eval 'echo $IMAGE_UPGRADE' logger.go:42: 18:20:54 | additional-volumes/7-delete-data | +++++ echo perconalab/percona-postgresql-operator:main-upgrade logger.go:42: 18:20:54 | additional-volumes/7-delete-data | +++ var_value=perconalab/percona-postgresql-operator:main-upgrade logger.go:42: 18:20:54 | additional-volumes/7-delete-data | +++ [[ perconalab/percona-postgresql-operator:main-upgrade == docker.io/* ]] logger.go:42: 18:20:54 | additional-volumes/7-delete-data | +++ [[ perconalab/percona-postgresql-operator:main-upgrade == percona/* ]] logger.go:42: 18:20:54 | additional-volumes/7-delete-data | +++ [[ perconalab/percona-postgresql-operator:main-upgrade == perconalab/* ]] logger.go:42: 18:20:54 | additional-volumes/7-delete-data | +++ new_value=docker.io/perconalab/percona-postgresql-operator:main-upgrade logger.go:42: 18:20:54 | additional-volumes/7-delete-data | +++ export IMAGE_UPGRADE=docker.io/perconalab/percona-postgresql-operator:main-upgrade logger.go:42: 18:20:54 | additional-volumes/7-delete-data | +++ IMAGE_UPGRADE=docker.io/perconalab/percona-postgresql-operator:main-upgrade logger.go:42: 18:20:54 | additional-volumes/7-delete-data | +++ echo IMAGE_UPGRADE=docker.io/perconalab/percona-postgresql-operator:main-upgrade logger.go:42: 18:20:54 | additional-volumes/7-delete-data | IMAGE_UPGRADE=docker.io/perconalab/percona-postgresql-operator:main-upgrade logger.go:42: 18:20:54 | additional-volumes/7-delete-data | +++ echo docker.io/perconalab/percona-postgresql-operator:PR-1760-4947a0272 logger.go:42: 18:20:54 | additional-volumes/7-delete-data | docker.io/perconalab/percona-postgresql-operator:PR-1760-4947a0272 logger.go:42: 18:20:54 | additional-volumes/7-delete-data | +++ for var in $(printenv | grep -E '^IMAGE' | awk -F'=' '{print $1}') logger.go:42: 18:20:54 | additional-volumes/7-delete-data | ++++ eval 'echo $IMAGE_LOGCOLLECTOR' logger.go:42: 18:20:54 | additional-volumes/7-delete-data | +++++ echo perconalab/fluentbit:main-logcollector logger.go:42: 18:20:54 | additional-volumes/7-delete-data | +++ var_value=perconalab/fluentbit:main-logcollector logger.go:42: 18:20:54 | additional-volumes/7-delete-data | +++ [[ perconalab/fluentbit:main-logcollector == docker.io/* ]] logger.go:42: 18:20:54 | additional-volumes/7-delete-data | +++ [[ perconalab/fluentbit:main-logcollector == percona/* ]] logger.go:42: 18:20:54 | additional-volumes/7-delete-data | +++ [[ perconalab/fluentbit:main-logcollector == perconalab/* ]] logger.go:42: 18:20:54 | additional-volumes/7-delete-data | +++ new_value=docker.io/perconalab/fluentbit:main-logcollector logger.go:42: 18:20:54 | additional-volumes/7-delete-data | +++ export IMAGE_LOGCOLLECTOR=docker.io/perconalab/fluentbit:main-logcollector logger.go:42: 18:20:54 | additional-volumes/7-delete-data | +++ IMAGE_LOGCOLLECTOR=docker.io/perconalab/fluentbit:main-logcollector logger.go:42: 18:20:54 | additional-volumes/7-delete-data | +++ echo IMAGE_LOGCOLLECTOR=docker.io/perconalab/fluentbit:main-logcollector logger.go:42: 18:20:54 | additional-volumes/7-delete-data | IMAGE_LOGCOLLECTOR=docker.io/perconalab/fluentbit:main-logcollector logger.go:42: 18:20:54 | additional-volumes/7-delete-data | +++ echo docker.io/perconalab/percona-postgresql-operator:PR-1760-4947a0272 logger.go:42: 18:20:54 | additional-volumes/7-delete-data | docker.io/perconalab/percona-postgresql-operator:PR-1760-4947a0272 logger.go:42: 18:20:54 | additional-volumes/7-delete-data | +++ for var in $(printenv | grep -E '^IMAGE' | awk -F'=' '{print $1}') logger.go:42: 18:20:54 | additional-volumes/7-delete-data | ++++ eval 'echo $IMAGE_BASE' logger.go:42: 18:20:54 | additional-volumes/7-delete-data | +++++ echo perconalab/percona-postgresql-operator logger.go:42: 18:20:54 | additional-volumes/7-delete-data | +++ var_value=perconalab/percona-postgresql-operator logger.go:42: 18:20:54 | additional-volumes/7-delete-data | +++ [[ perconalab/percona-postgresql-operator == docker.io/* ]] logger.go:42: 18:20:54 | additional-volumes/7-delete-data | +++ [[ perconalab/percona-postgresql-operator == percona/* ]] logger.go:42: 18:20:54 | additional-volumes/7-delete-data | +++ [[ perconalab/percona-postgresql-operator == perconalab/* ]] logger.go:42: 18:20:54 | additional-volumes/7-delete-data | +++ new_value=docker.io/perconalab/percona-postgresql-operator logger.go:42: 18:20:54 | additional-volumes/7-delete-data | +++ export IMAGE_BASE=docker.io/perconalab/percona-postgresql-operator logger.go:42: 18:20:54 | additional-volumes/7-delete-data | +++ IMAGE_BASE=docker.io/perconalab/percona-postgresql-operator logger.go:42: 18:20:54 | additional-volumes/7-delete-data | +++ echo IMAGE_BASE=docker.io/perconalab/percona-postgresql-operator logger.go:42: 18:20:54 | additional-volumes/7-delete-data | IMAGE_BASE=docker.io/perconalab/percona-postgresql-operator logger.go:42: 18:20:54 | additional-volumes/7-delete-data | +++ echo docker.io/perconalab/percona-postgresql-operator:PR-1760-4947a0272 logger.go:42: 18:20:54 | additional-volumes/7-delete-data | docker.io/perconalab/percona-postgresql-operator:PR-1760-4947a0272 logger.go:42: 18:20:54 | additional-volumes/7-delete-data | +++ for var in $(printenv | grep -E '^IMAGE' | awk -F'=' '{print $1}') logger.go:42: 18:20:54 | additional-volumes/7-delete-data | ++++ eval 'echo $IMAGE_PGBOUNCER' logger.go:42: 18:20:54 | additional-volumes/7-delete-data | +++++ echo perconalab/percona-postgresql-operator:main-pgbouncer18 logger.go:42: 18:20:54 | additional-volumes/7-delete-data | +++ var_value=perconalab/percona-postgresql-operator:main-pgbouncer18 logger.go:42: 18:20:54 | additional-volumes/7-delete-data | +++ [[ perconalab/percona-postgresql-operator:main-pgbouncer18 == docker.io/* ]] logger.go:42: 18:20:54 | additional-volumes/7-delete-data | +++ [[ perconalab/percona-postgresql-operator:main-pgbouncer18 == percona/* ]] logger.go:42: 18:20:54 | additional-volumes/7-delete-data | +++ [[ perconalab/percona-postgresql-operator:main-pgbouncer18 == perconalab/* ]] logger.go:42: 18:20:54 | additional-volumes/7-delete-data | +++ new_value=docker.io/perconalab/percona-postgresql-operator:main-pgbouncer18 logger.go:42: 18:20:54 | additional-volumes/7-delete-data | +++ export IMAGE_PGBOUNCER=docker.io/perconalab/percona-postgresql-operator:main-pgbouncer18 logger.go:42: 18:20:54 | additional-volumes/7-delete-data | +++ IMAGE_PGBOUNCER=docker.io/perconalab/percona-postgresql-operator:main-pgbouncer18 logger.go:42: 18:20:54 | additional-volumes/7-delete-data | +++ echo IMAGE_PGBOUNCER=docker.io/perconalab/percona-postgresql-operator:main-pgbouncer18 logger.go:42: 18:20:54 | additional-volumes/7-delete-data | IMAGE_PGBOUNCER=docker.io/perconalab/percona-postgresql-operator:main-pgbouncer18 logger.go:42: 18:20:54 | additional-volumes/7-delete-data | +++ echo docker.io/perconalab/percona-postgresql-operator:PR-1760-4947a0272 logger.go:42: 18:20:54 | additional-volumes/7-delete-data | docker.io/perconalab/percona-postgresql-operator:PR-1760-4947a0272 logger.go:42: 18:20:54 | additional-volumes/7-delete-data | +++ for var in $(printenv | grep -E '^IMAGE' | awk -F'=' '{print $1}') logger.go:42: 18:20:54 | additional-volumes/7-delete-data | ++++ eval 'echo $IMAGE_POSTGRESQL' logger.go:42: 18:20:54 | additional-volumes/7-delete-data | +++++ echo perconalab/percona-postgresql-operator:main-ppg18-postgres logger.go:42: 18:20:54 | additional-volumes/7-delete-data | +++ var_value=perconalab/percona-postgresql-operator:main-ppg18-postgres logger.go:42: 18:20:54 | additional-volumes/7-delete-data | +++ [[ perconalab/percona-postgresql-operator:main-ppg18-postgres == docker.io/* ]] logger.go:42: 18:20:54 | additional-volumes/7-delete-data | +++ [[ perconalab/percona-postgresql-operator:main-ppg18-postgres == percona/* ]] logger.go:42: 18:20:54 | additional-volumes/7-delete-data | +++ [[ perconalab/percona-postgresql-operator:main-ppg18-postgres == perconalab/* ]] logger.go:42: 18:20:54 | additional-volumes/7-delete-data | +++ new_value=docker.io/perconalab/percona-postgresql-operator:main-ppg18-postgres logger.go:42: 18:20:54 | additional-volumes/7-delete-data | +++ export IMAGE_POSTGRESQL=docker.io/perconalab/percona-postgresql-operator:main-ppg18-postgres logger.go:42: 18:20:54 | additional-volumes/7-delete-data | +++ IMAGE_POSTGRESQL=docker.io/perconalab/percona-postgresql-operator:main-ppg18-postgres logger.go:42: 18:20:54 | additional-volumes/7-delete-data | +++ echo IMAGE_POSTGRESQL=docker.io/perconalab/percona-postgresql-operator:main-ppg18-postgres logger.go:42: 18:20:54 | additional-volumes/7-delete-data | IMAGE_POSTGRESQL=docker.io/perconalab/percona-postgresql-operator:main-ppg18-postgres logger.go:42: 18:20:54 | additional-volumes/7-delete-data | +++ echo docker.io/perconalab/percona-postgresql-operator:PR-1760-4947a0272 logger.go:42: 18:20:54 | additional-volumes/7-delete-data | docker.io/perconalab/percona-postgresql-operator:PR-1760-4947a0272 logger.go:42: 18:20:54 | additional-volumes/7-delete-data | +++ for var in $(printenv | grep -E '^IMAGE' | awk -F'=' '{print $1}') logger.go:42: 18:20:54 | additional-volumes/7-delete-data | ++++ eval 'echo $IMAGE_PMM_SERVER' logger.go:42: 18:20:54 | additional-volumes/7-delete-data | +++++ echo perconalab/pmm-server:3-dev-latest logger.go:42: 18:20:54 | additional-volumes/7-delete-data | +++ var_value=perconalab/pmm-server:3-dev-latest logger.go:42: 18:20:54 | additional-volumes/7-delete-data | +++ [[ perconalab/pmm-server:3-dev-latest == docker.io/* ]] logger.go:42: 18:20:54 | additional-volumes/7-delete-data | +++ [[ perconalab/pmm-server:3-dev-latest == percona/* ]] logger.go:42: 18:20:54 | additional-volumes/7-delete-data | +++ [[ perconalab/pmm-server:3-dev-latest == perconalab/* ]] logger.go:42: 18:20:54 | additional-volumes/7-delete-data | +++ new_value=docker.io/perconalab/pmm-server:3-dev-latest logger.go:42: 18:20:54 | additional-volumes/7-delete-data | +++ export IMAGE_PMM_SERVER=docker.io/perconalab/pmm-server:3-dev-latest logger.go:42: 18:20:54 | additional-volumes/7-delete-data | +++ IMAGE_PMM_SERVER=docker.io/perconalab/pmm-server:3-dev-latest logger.go:42: 18:20:54 | additional-volumes/7-delete-data | +++ echo IMAGE_PMM_SERVER=docker.io/perconalab/pmm-server:3-dev-latest logger.go:42: 18:20:54 | additional-volumes/7-delete-data | IMAGE_PMM_SERVER=docker.io/perconalab/pmm-server:3-dev-latest logger.go:42: 18:20:54 | additional-volumes/7-delete-data | +++ echo docker.io/perconalab/percona-postgresql-operator:PR-1760-4947a0272 logger.go:42: 18:20:54 | additional-volumes/7-delete-data | docker.io/perconalab/percona-postgresql-operator:PR-1760-4947a0272 logger.go:42: 18:20:54 | additional-volumes/7-delete-data | +++ for var in $(printenv | grep -E '^IMAGE' | awk -F'=' '{print $1}') logger.go:42: 18:20:54 | additional-volumes/7-delete-data | ++++ eval 'echo $IMAGE_PMM_CLIENT' logger.go:42: 18:20:54 | additional-volumes/7-delete-data | +++++ echo perconalab/pmm-client:3-dev-latest logger.go:42: 18:20:54 | additional-volumes/7-delete-data | +++ var_value=perconalab/pmm-client:3-dev-latest logger.go:42: 18:20:54 | additional-volumes/7-delete-data | +++ [[ perconalab/pmm-client:3-dev-latest == docker.io/* ]] logger.go:42: 18:20:54 | additional-volumes/7-delete-data | +++ [[ perconalab/pmm-client:3-dev-latest == percona/* ]] logger.go:42: 18:20:54 | additional-volumes/7-delete-data | +++ [[ perconalab/pmm-client:3-dev-latest == perconalab/* ]] logger.go:42: 18:20:54 | additional-volumes/7-delete-data | +++ new_value=docker.io/perconalab/pmm-client:3-dev-latest logger.go:42: 18:20:54 | additional-volumes/7-delete-data | +++ export IMAGE_PMM_CLIENT=docker.io/perconalab/pmm-client:3-dev-latest logger.go:42: 18:20:54 | additional-volumes/7-delete-data | +++ IMAGE_PMM_CLIENT=docker.io/perconalab/pmm-client:3-dev-latest logger.go:42: 18:20:54 | additional-volumes/7-delete-data | +++ echo IMAGE_PMM_CLIENT=docker.io/perconalab/pmm-client:3-dev-latest logger.go:42: 18:20:54 | additional-volumes/7-delete-data | IMAGE_PMM_CLIENT=docker.io/perconalab/pmm-client:3-dev-latest logger.go:42: 18:20:54 | additional-volumes/7-delete-data | +++ echo docker.io/perconalab/percona-postgresql-operator:PR-1760-4947a0272 logger.go:42: 18:20:54 | additional-volumes/7-delete-data | docker.io/perconalab/percona-postgresql-operator:PR-1760-4947a0272 logger.go:42: 18:20:54 | additional-volumes/7-delete-data | ++++ which gdate logger.go:42: 18:20:54 | additional-volumes/7-delete-data | which: no gdate in (/mnt/jenkins/workspace/cloud-pg-operator_PR-1760/bin/:/root/.krew/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/var/lib/snapd/snap/bin) logger.go:42: 18:20:54 | additional-volumes/7-delete-data | ++++ which date logger.go:42: 18:20:54 | additional-volumes/7-delete-data | +++ date=/usr/sbin/date logger.go:42: 18:20:54 | additional-volumes/7-delete-data | ++++ which gsed logger.go:42: 18:20:54 | additional-volumes/7-delete-data | which: no gsed in (/mnt/jenkins/workspace/cloud-pg-operator_PR-1760/bin/:/root/.krew/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/var/lib/snapd/snap/bin) logger.go:42: 18:20:54 | additional-volumes/7-delete-data | ++++ which sed logger.go:42: 18:20:54 | additional-volumes/7-delete-data | +++ sed=/usr/sbin/sed logger.go:42: 18:20:54 | additional-volumes/7-delete-data | ++ get_psql_uri additional-volumes postgres logger.go:42: 18:20:54 | additional-volumes/7-delete-data | ++ local cluster=additional-volumes logger.go:42: 18:20:54 | additional-volumes/7-delete-data | ++ local user=postgres logger.go:42: 18:20:54 | additional-volumes/7-delete-data | ++ local secret_name=additional-volumes-pguser-postgres logger.go:42: 18:20:54 | additional-volumes/7-delete-data | +++ get_psql_user_pass additional-volumes-pguser-postgres logger.go:42: 18:20:54 | additional-volumes/7-delete-data | +++ local secret_name=additional-volumes-pguser-postgres logger.go:42: 18:20:54 | additional-volumes/7-delete-data | +++ kubectl -n kuttl-test-intimate-garfish get secret/additional-volumes-pguser-postgres '--template={{.data.password | base64decode}}' logger.go:42: 18:20:55 | additional-volumes/7-delete-data | +++ get_psql_user_host additional-volumes-pguser-postgres logger.go:42: 18:20:55 | additional-volumes/7-delete-data | +++ local secret_name=additional-volumes-pguser-postgres logger.go:42: 18:20:55 | additional-volumes/7-delete-data | +++ kubectl -n kuttl-test-intimate-garfish get secret/additional-volumes-pguser-postgres '--template={{.data.host | base64decode }}' logger.go:42: 18:20:55 | additional-volumes/7-delete-data | ++ echo postgres:l0MUHwCzHnDZcySTpvPctkb7@additional-volumes-primary.kuttl-test-intimate-garfish.svc logger.go:42: 18:20:55 | additional-volumes/7-delete-data | + run_psql_local '\c myapp \\\ TRUNCATE TABLE myApp' postgres:l0MUHwCzHnDZcySTpvPctkb7@additional-volumes-primary.kuttl-test-intimate-garfish.svc logger.go:42: 18:20:55 | additional-volumes/7-delete-data | + local 'command=\c myapp \\\ TRUNCATE TABLE myApp' logger.go:42: 18:20:55 | additional-volumes/7-delete-data | + local uri=postgres:l0MUHwCzHnDZcySTpvPctkb7@additional-volumes-primary.kuttl-test-intimate-garfish.svc logger.go:42: 18:20:55 | additional-volumes/7-delete-data | + local driver=postgres logger.go:42: 18:20:55 | additional-volumes/7-delete-data | ++ get_client_pod logger.go:42: 18:20:55 | additional-volumes/7-delete-data | ++ kubectl -n kuttl-test-intimate-garfish get pods --selector=name=pg-client -o 'jsonpath={.items[].metadata.name}' logger.go:42: 18:20:56 | additional-volumes/7-delete-data | + kubectl -n kuttl-test-intimate-garfish exec pg-client-65d98588cc-q6dhp -- bash -c 'printf '\''\c myapp \\\ TRUNCATE TABLE myApp\n'\'' | psql -v ON_ERROR_STOP=1 -t -q postgres://'\''postgres:l0MUHwCzHnDZcySTpvPctkb7@additional-volumes-primary.kuttl-test-intimate-garfish.svc'\''' logger.go:42: 18:20:57 | additional-volumes/7-delete-data | test step completed 7-delete-data logger.go:42: 18:20:57 | additional-volumes/8-create-restore | starting test step 8-create-restore logger.go:42: 18:20:57 | additional-volumes/8-create-restore | running command: [sh -c set -o errexit set -o xtrace source ../../functions primary=$(get_pod_by_role additional-volumes primary name) latest_full_backup=$(kubectl -n ${NAMESPACE} exec ${primary} -- pgbackrest info --output json | jq '[.[] | .backup[] | select(.type == "full")][-1].label') cat <