Skip to content

Conversation

@balinorLiang
Copy link
Collaborator

@balinorLiang balinorLiang commented Dec 11, 2025

Checklist:

  • Have you added an explanation of what your changes do and why you'd like them to be included?
  • Have you updated or added documentation for the change, as applicable?
  • Have you tested your changes on all related environments with successful results, as applicable?
    • Have you added automated tests?

Type of Changes:

  • New feature
  • Bug fix
  • Documentation
  • Testing enhancement
  • Other

What is the current behavior (link to any open issues here)?

What is the new behavior (if this is a feature change)?

  • Breaking change (fix or feature that would cause existing functionality to change)

Other Information:

Summary by CodeRabbit

Release Notes

  • Chores
    • Updated container base images from RHEL 8 to RHEL 9 across all deployment configurations and examples
    • Updated component image versions including IvorySQL, pgBackRest, pgAdmin, pgBouncer, and postgres-exporter to latest RHEL 9-compatible releases

✏️ Tip: You can customize this high-level summary in your review settings.

@coderabbitai
Copy link

coderabbitai bot commented Dec 11, 2025

Walkthrough

Container image references are systematically updated from UBI8-based tags to UBI9-based tags across CI/CD workflows, build configuration, manager deployment specs, example IvoryCluster manifests, kustomize overlays, test constants, and kuttl test fixtures.

Changes

Cohort / File(s) Summary
CI/CD and Build Configuration
.github/workflows/test.yaml, Makefile
Updated Docker image references in CI workflow prefetch-images blocks and KUTTL_IVORY_IMAGE from ubi8--5.0 variants to ubi9--5.1 variants for pgadmin, pgbackrest, pgbouncer, postgres-exporter, ivorysql, postgis, and crunchy-upgrade.
Manager Deployment Configuration
config/manager/manager.yaml, examples/kustomize/install/manager/manager.yaml
Updated RELATED_IMAGE_* environment variables from ubi8 tags (5.0) to ubi9 tags (5.1) in manager deployment specs.
Example IvoryCluster Manifests
examples/ivorycluster/ivorycluster.yaml, examples/kustomize/azure/ivory.yaml, examples/kustomize/gcs/ivory.yaml, examples/kustomize/high-availability/ha-ivory.yaml, examples/kustomize/ivory/ivory.yaml, examples/kustomize/keycloak/ivory.yaml, examples/kustomize/multi-backup-repo/ivory.yaml, examples/kustomize/s3/ivory.yaml
Updated IvorySQL image references from ubi8-2.2-1.1-1 to ubi9-5.1-5.1-1 and pgbackrest images from ubi8-2.45-1.1-1 to ubi9-2.56-5.1-1 across all example configurations.
Test Configuration and Constants
internal/controller/ivorycluster/helpers_test.go, testing/kuttl/e2e-other/exporter-upgrade/00--cluster.yaml, testing/kuttl/e2e-other/exporter-upgrade/02--update-cluster.yaml
Updated hardcoded test image constants (IvoryHAImage, IvoryBackRestImage, IvoryBouncerImage) from ubi8 tags to ubi9 tags, and updated kuttl test fixture IvoryCluster image references from ubi8-5.0-5.0-1 to ubi9-5.1-5.1-1.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~10 minutes

  • Review concentration: Changes are highly homogeneous (systematic image tag replacements) across many files, reducing per-file cognitive load despite file count
  • Attention areas: Verify consistency of version mappings across all files (ubi8→ubi9, 5.0→5.1, 2.45→2.56 for pgbackrest); confirm no unintended image tag variations introduced

Possibly related PRs

  • update os to ubi9 in Dockerfile #81: Updates Dockerfile base image layers from UBI8 to UBI9, complementing this PR's manifest-level image tag migrations
  • ivorysql opertor V4 release #79: Previously updated image references in deployment and example manifest files (e.g., config/manager/manager.yaml), providing context for broader image migration strategy

Poem

🐰 Ubi eight hops to ubi nine so grand,
Images hop across this kubernetes land,
Manifests dance with fresh container tags,
Five-point-oh to five-point-one, no lags!
This rabbit squeaks with glee—modernize we must!

Pre-merge checks and finishing touches

❌ Failed checks (1 warning, 1 inconclusive)
Check name Status Explanation Resolution
Description check ⚠️ Warning The PR description is completely empty except for the unchecked template checkboxes and unfilled sections. No explanation of changes, testing details, or other required information is provided. Fill out the PR description template with details about the image updates, testing performed, and why these changes are needed for the 5.1 release.
Title check ❓ Inconclusive The title 'IvorySQL Operator Release 5.1' is a generic version/release label that doesn't clearly convey the specific technical changes made (Docker image updates from UBI8 to UBI9 across multiple files). Consider using a more specific title like 'Update Docker images from UBI8 to UBI9 (5.1 release)' to better reflect the actual changes in the changeset.
✅ Passed checks (1 passed)
Check name Status Explanation
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
✨ Finishing touches
  • 📝 Generate docstrings
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 3

🧹 Nitpick comments (1)
internal/controller/ivorycluster/helpers_test.go (1)

46-48: Test image constants updated to UBI9 while keeping usages intact

IvoryHAImage, IvoryBackRestImage, and IvoryBouncerImage now point to the ubi9 variants and are still wired correctly into testCluster() for the main, backup, and proxy images. This keeps the test baseline aligned with the new image set; the existing TODO about sourcing from RELATED_IMAGE defaults remains a sensible future clean‑up.

📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between fe579b1 and 81091e6.

📒 Files selected for processing (15)
  • .github/workflows/test.yaml (4 hunks)
  • Makefile (1 hunks)
  • config/manager/manager.yaml (1 hunks)
  • examples/ivorycluster/ivorycluster.yaml (2 hunks)
  • examples/kustomize/azure/ivory.yaml (2 hunks)
  • examples/kustomize/gcs/ivory.yaml (2 hunks)
  • examples/kustomize/high-availability/ha-ivory.yaml (2 hunks)
  • examples/kustomize/install/manager/manager.yaml (1 hunks)
  • examples/kustomize/ivory/ivory.yaml (2 hunks)
  • examples/kustomize/keycloak/ivory.yaml (2 hunks)
  • examples/kustomize/multi-backup-repo/ivory.yaml (2 hunks)
  • examples/kustomize/s3/ivory.yaml (2 hunks)
  • internal/controller/ivorycluster/helpers_test.go (1 hunks)
  • testing/kuttl/e2e-other/exporter-upgrade/00--cluster.yaml (1 hunks)
  • testing/kuttl/e2e-other/exporter-upgrade/02--update-cluster.yaml (1 hunks)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (8)
  • GitHub Check: kubernetes-k3d (v1.25)
  • GitHub Check: kuttl-k3d (v1.25)
  • GitHub Check: kuttl-k3d (v1.21)
  • GitHub Check: kubernetes-k3d (v1.28)
  • GitHub Check: kuttl-k3d (v1.23)
  • GitHub Check: kuttl-k3d (v1.24)
  • GitHub Check: kubernetes-api (1.23.5)
  • GitHub Check: kuttl-k3d (v1.22)
🔇 Additional comments (12)
testing/kuttl/e2e-other/exporter-upgrade/02--update-cluster.yaml (1)

7-7: LGTM! Image tag update is consistent with PR objectives.

Makefile (1)

209-209: LGTM! The KUTTL_IVORY_IMAGE update is consistent with the PR's image tag migration.

Note: This updates the default image used in KUTTL test generation from version 2.2 to 5.1. Ensure this version bump is intentional and that generated KUTTL tests have been validated.

examples/kustomize/gcs/ivory.yaml (1)

6-6: LGTM! Image tags updated to ubi9 variants across both IvorySQL and pgBackRest.

Also applies to: 17-17

testing/kuttl/e2e-other/exporter-upgrade/00--cluster.yaml (1)

7-7: LGTM! Image tag consistent with related test file in the exporter-upgrade scenario.

examples/kustomize/azure/ivory.yaml (1)

6-6: LGTM! Image tags updated consistently with other example manifests.

Also applies to: 17-17

examples/ivorycluster/ivorycluster.yaml (1)

6-6: LGTM! Image tags updated consistently with the majority of example manifests.

Also applies to: 18-18

examples/kustomize/high-availability/ha-ivory.yaml (1)

6-6: LGTM! Image tags updated consistently across the high-availability example.

Also applies to: 29-29

.github/workflows/test.yaml (1)

67-69: k3d prefetch images updated consistently to ubi9/5.1

The pgBackRest, pgbouncer, and ivorysql prefetch tags are aligned with the new ubi9‑5.1 image set and consistent with RELATED_IMAGE_* values in the deployment spec. No functional changes here.

examples/kustomize/multi-backup-repo/ivory.yaml (1)

6-6: Example multi‑repo cluster images updated to ubi9/5.1

The IvorySQL and pgBackRest images in this example are updated to the new ubi9‑5.1 tags and are consistent with the rest of the example manifests in the PR. No issues seen.

Also applies to: 17-17

examples/kustomize/ivory/ivory.yaml (1)

6-6: Base Ivory example updated to ubi9/5.1 images

The main IvorySQL and pgBackRest image tags are cleanly updated to the new ubi9‑5.1 variants and are consistent with other example manifests in this PR. Looks good.

Also applies to: 18-18

examples/kustomize/s3/ivory.yaml (1)

6-6: S3 example IvoryCluster images aligned with ubi9/5.1

The IvorySQL and pgBackRest images now match the new ubi9‑5.1 set used elsewhere in the repo. No issues from a config perspective.

Also applies to: 17-17

examples/kustomize/keycloak/ivory.yaml (1)

6-6: Keycloak example updated to ubi9/5.1 images

The IvorySQL and pgBackRest image tags for the keycloak example are in line with the new ubi9‑5.1 baseline and consistent with other sample clusters. Looks fine.

Also applies to: 28-28

Comment on lines +101 to +107
docker.io/ivorysql/pgadmin:ubi9-9.9-5.1-1
docker.io/ivorysql/pgbackrest:ubi9-2.56.0-5.1-1
docker.io/ivorysql/pgbouncer:ubi9-1.24.0-5.1-1
docker.io/ivorysql/postgres-exporter:ubi9-0.17.0-5.1-1
docker.io/ivorysql/ivorysql:ubi9-5.1-5.1-1
docker.io/ivorysql/postgis:ubi9-3.5-5.1-1
registry.developers.crunchydata.com/crunchydata/crunchy-upgrade:ubi9-5.3.1-0
Copy link

Choose a reason for hiding this comment

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

🛠️ Refactor suggestion | 🟠 Major

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
# Check for RELATED_IMAGE_* GIS variables
echo "=== Searching for RELATED_IMAGE_(IVORY|POSTGRES)_18_GIS_3.5 ==="
rg -n 'RELATED_IMAGE_(IVORY|POSTGRES)_18_GIS_3\.5' .

echo ""
echo "=== Checking .github/workflows/test.yaml lines 101-107 ==="
sed -n '101,107p' .github/workflows/test.yaml

echo ""
echo "=== Checking lines 121-127 ==="
sed -n '121,127p' .github/workflows/test.yaml

echo ""
echo "=== Checking line 142 ==="
sed -n '142p' .github/workflows/test.yaml

echo ""
echo "=== Searching for postgis/ivorysql-postgis image references ==="
rg -n 'ivorysql-postgis|/postgis:' --type yaml .

Repository: IvorySQL/ivory-operator

Length of output: 1694


🏁 Script executed:

#!/bin/bash
# Verify where both env vars are actually used
echo "=== All references to RELATED_IMAGE_IVORY_18_GIS_3.5 ==="
rg -n 'RELATED_IMAGE_IVORY_18_GIS_3\.5' .

echo ""
echo "=== All references to RELATED_IMAGE_POSTGRES_18_GIS_3.5 ==="
rg -n 'RELATED_IMAGE_POSTGRES_18_GIS_3\.5' .

echo ""
echo "=== Check manager.yaml context around line 33 ==="
sed -n '30,40p' ./config/manager/manager.yaml

echo ""
echo "=== Search for references to both postgis and ivorysql-postgis in code ==="
rg -n 'postgis|ivorysql-postgis' --type go --type yaml . | grep -v test | head -20

Repository: IvorySQL/ivory-operator

Length of output: 2145


🏁 Script executed:

#!/bin/bash
# Double-check the workflow file context to see full picture
echo "=== Full context around line 121-127 in test.yaml ==="
sed -n '116,128p' .github/workflows/test.yaml

echo ""
echo "=== Search for where these env vars might be consumed ==="
rg -n 'RELATED_IMAGE_IVORY_18_GIS|RELATED_IMAGE_POSTGRES_18_GIS' . --type yaml

echo ""
echo "=== Check if there are any references in examples or helm charts ==="
find . -type f \( -name "*.yaml" -o -name "*.yml" \) -exec grep -l "RELATED_IMAGE.*GIS" {} \;

Repository: IvorySQL/ivory-operator

Length of output: 1599


Mismatched GIS env var names and image repositories between CI and manager configuration

The workflow uses RELATED_IMAGE_IVORY_18_GIS_3.5 pointing to docker.io/ivorysql/postgis:ubi9-3.5-5.1-1 (line 127), while config/manager/manager.yaml defines RELATED_IMAGE_POSTGRES_18_GIS_3.5 pointing to docker.io/ivorysql/ivorysql-postgis:ubi9-3.5-5.1-1. This creates divergence in both the env var names (IVORY vs POSTGRES prefix) and the image repositories (postgis vs ivorysql-postgis).

Align the env var names and image repository references across files to ensure CI and deployed behavior remain consistent.

Comment on lines +22 to +34
value: "docker.io/ivorysql/ivorysql:ubi9-5.1-5.1-1"
- name: RELATED_IMAGE_PGADMIN
value: "docker.io/ivorysql/pgadmin:ubi8-9.9-5.0-1"
value: "docker.io/ivorysql/pgadmin:ubi9-9.9-5.1-1"
- name: RELATED_IMAGE_PGBACKREST
value: "docker.io/ivorysql/pgbackrest:ubi8-2.56.0-5.0-1"
value: "docker.io/ivorysql/pgbackrest:ubi9-2.56.0-5.1-1"
- name: RELATED_IMAGE_PGBOUNCER
value: "docker.io/ivorysql/pgbouncer:ubi8-1.23.0-5.0-1"
value: "docker.io/ivorysql/pgbouncer:ubi9-1.24.0-5.1-1"
- name: RELATED_IMAGE_PGEXPORTER
value: "docker.io/ivorysql/postgres-exporter:ubi8-0.17.0-5.0-1"
value: "docker.io/ivorysql/postgres-exporter:ubi9-0.17.0-5.1-1"
- name: RELATED_IMAGE_PGUPGRADE
value: "registry.developers.crunchydata.com/crunchydata/crunchy-upgrade:ubi8-5.3.1-0"
value: "registry.developers.crunchydata.com/crunchydata/crunchy-upgrade:ubi9-5.3.1-0"
- name: RELATED_IMAGE_POSTGRES_18_GIS_3.5
value: "docker.io/ivorysql/ivorysql-postgis:ubi8-3.5-5.0-1"
value: "docker.io/ivorysql/ivorysql-postgis:ubi9-3.5-5.1-1"
Copy link

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🔴 Critical

🧩 Analysis chain

🏁 Script executed:

# Search for all pgBackRest image references with different tag variants
echo "=== pgBackRest image references ==="
rg -n 'pgbackrest:ubi9-2\.56' . --type yaml

echo ""
echo "=== PostGIS image references ==="
rg -n '(ivorysql-postgis|postgis):ubi9-3\.5' . --type yaml

echo ""
echo "=== All RELATED_IMAGE_PGBACKREST references ==="
rg -n 'RELATED_IMAGE_PGBACKREST' . --type yaml -A 1

Repository: IvorySQL/ivory-operator

Length of output: 2302


🏁 Script executed:

# Search for PostGIS references in workflow files
echo "=== PostGIS references in workflows ==="
rg -n 'postgis' .github/workflows --type yaml -i

echo ""
echo "=== Complete pgBackRest variant count ==="
rg 'pgbackrest:ubi9-2\.56' . --type yaml | wc -l
echo "With .0 (manager configs):"
rg 'pgbackrest:ubi9-2\.56\.0' . --type yaml | wc -l
echo "Without .0 (example clusters):"
rg 'pgbackrest:ubi9-2\.56-' . --type yaml | rg -v '2\.56\.0' | wc -l

Repository: IvorySQL/ivory-operator

Length of output: 498


Manager RELATED_IMAGE_ values match the new ubi9/5.1 image set; resolve PostGIS and pgBackRest image tag inconsistencies*

The RELATED_IMAGE_* env vars are consistently bumped to the ubi9‑5.1 images, but two inconsistencies exist across the codebase:

  • Manager config uses docker.io/ivorysql/ivorysql-postgis:ubi9-3.5-5.1-1, while the CI workflow (.github/workflows/test.yaml) uses docker.io/ivorysql/postgis:ubi9-3.5-5.1-1 (different repo name).
  • Manager config uses pgbackrest:ubi9-2.56.0-5.1-1, while all example cluster files use pgbackrest:ubi9-2.56-5.1-1 (different patch version).

Standardize these to a single canonical image/tag across manager, examples, and workflows to ensure consistency between operator deployments, tests, and documentation.

🤖 Prompt for AI Agents
In config/manager/manager.yaml around lines 22 to 34, the
RELATED_IMAGE_POSTGRES_18_GIS and RELATED_IMAGE_PGBACKREST values are
inconsistent with the rest of the repo; update RELATED_IMAGE_POSTGRES_18_GIS to
use the canonical repo name docker.io/ivorysql/postgis:ubi9-3.5-5.1-1 (matching
CI) and change RELATED_IMAGE_PGBACKREST to the canonical tag
docker.io/ivorysql/pgbackrest:ubi9-2.56-5.1-1 (remove the extra .0), and then
propagate those exact values to the examples and .github/workflows/test.yaml so
manager, examples, and CI all use the same image names/tags.

value: "true"
- name: RELATED_IMAGE_IVORY_5
value: "docker.io/ivorysql/ivorysql:ubi8-5.0-5.0-1"
value: "docker.io/ivorysql/ivorysql:ubi9-5.1-5.1-1"
Copy link

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟡 Minor

🧩 Analysis chain

🏁 Script executed:

# First, let's check the target file around line 30-32
echo "=== Checking examples/kustomize/install/manager/manager.yaml ==="
sed -n '28,35p' examples/kustomize/install/manager/manager.yaml

Repository: IvorySQL/ivory-operator

Length of output: 431


🏁 Script executed:

# Search for all pgbackrest image references in the codebase
echo "=== Finding all pgbackrest image references ==="
rg "pgbackrest:" --type yaml -A 1 -B 1

Repository: IvorySQL/ivory-operator

Length of output: 14395


🏁 Script executed:

# Also check the other files mentioned in the review comment
echo "=== Checking examples/kustomize/gcs/ivory.yaml ==="
grep -n "pgbackrest:" examples/kustomize/gcs/ivory.yaml

echo "=== Checking examples/kustomize/azure/ivory.yaml ==="
grep -n "pgbackrest:" examples/kustomize/azure/ivory.yaml

echo "=== Checking examples/ivorycluster/ivorycluster.yaml ==="
grep -n "pgbackrest:" examples/ivorycluster/ivorycluster.yaml

echo "=== Checking examples/kustomize/high-availability/ha-ivory.yaml ==="
grep -n "pgbackrest:" examples/kustomize/high-availability/ha-ivory.yaml

Repository: IvorySQL/ivory-operator

Length of output: 619


🌐 Web query:

pgBackRest version 2.56 Docker image UBI9 tag format

💡 Result:

Short answer: pgBackRest images use plain version tags (e.g., 2.56.0). There is no separate ":2.56.0-ubi9" tag — some vendor images (e.g., Percona's percona-pgbackrest:2.56.0) are built FROM a UBI9/ubi9-minimal base (UBI9 appears in the image metadata), but the registry tag itself is just the pgBackRest version. [1][2][3]

Sources:

  • woblerr/docker-pgbackrest supported tags (shows version-tag format like 2.56.0). [1]
  • Percona percona-pgbackrest:2.56.0 image metadata (shows ubi9-minimal as the base inside the image). [2]
  • Red Hat docs on UBI9 image naming/registry usage. [3]

Standardize pgBackRest image tag format across manager.yaml files.

examples/kustomize/install/manager/manager.yaml (line 32) and config/manager/manager.yaml use docker.io/ivorysql/pgbackrest:ubi9-2.56.0-5.1-1 (with .0), while all other example manifests consistently use docker.io/ivorysql/pgbackrest:ubi9-2.56-5.1-1 (without .0). Update both manager.yaml files to match the standard format used throughout the codebase.

🤖 Prompt for AI Agents
In examples/kustomize/install/manager/manager.yaml around line 30, the
pgBackRest image tag uses docker.io/ivorysql/ivorysql:ubi9-5.1-5.1-1 but the
pgBackRest tag in this file and config/manager/manager.yaml should follow the
standardized format used across examples; update the pgbackrest image tag in
both files to docker.io/ivorysql/pgbackrest:ubi9-2.56-5.1-1 (remove the
extraneous “.0”) so both manager.yaml files match the project-wide convention.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant