Skip to content

NE-2218: Add new HAProxy 2.8 and 3.2 image references#1499

Open
jcmoraisjr wants to merge 1 commit into
openshift:masterfrom
jcmoraisjr:NE-2218-link-haproxy28
Open

NE-2218: Add new HAProxy 2.8 and 3.2 image references#1499
jcmoraisjr wants to merge 1 commit into
openshift:masterfrom
jcmoraisjr:NE-2218-link-haproxy28

Conversation

@jcmoraisjr

@jcmoraisjr jcmoraisjr commented Jul 2, 2026

Copy link
Copy Markdown
Member

Add minimum implementation linking the new HAProxy 2.8 and 3.2 images into image-references.

https://redhat.atlassian.net/browse/NE-2218

@openshift-ci-robot

openshift-ci-robot commented Jul 2, 2026

Copy link
Copy Markdown
Contributor

@jcmoraisjr: This pull request references NE-2218 which is a valid jira issue.

Details

In response to this:

Add minimum implementation linking the new HAProxy 2.8 image into image-references.

https://redhat.atlassian.net/browse/NE-2218

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the openshift-eng/jira-lifecycle-plugin repository.

@openshift-ci-robot openshift-ci-robot added the jira/valid-reference Indicates that this PR references a valid Jira ticket of any type. label Jul 2, 2026
@coderabbitai

coderabbitai Bot commented Jul 2, 2026

Copy link
Copy Markdown

Warning

Review limit reached

@jcmoraisjr, you've reached your PR review limit, so we couldn't start this review.

Next review available in: 24 minutes

Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available.

How can I continue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews.

How do review limits work?

CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability.

For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window.

Please refer docs for additional details.

Review details
⚙️ Run configuration

Configuration used: Repository YAML (base), Central YAML (inherited)

Review profile: CHILL

Plan: Enterprise

Run ID: a6fc82c4-2cee-4d39-8a7c-6f00308611ba

📥 Commits

Reviewing files that changed from the base of the PR and between 95b68ae and b36d9f9.

📒 Files selected for processing (3)
  • manifests/02-deployment-ibm-cloud-managed.yaml
  • manifests/02-deployment.yaml
  • manifests/image-references
📝 Walkthrough

Walkthrough

This change adds a separate HAProxy image path from ingress-operator startup through deployment manifests into router deployment generation. The start command now accepts a HAProxy previous-image flag and stores it in operator configuration. The deployment manifests add matching flag and environment wiring, and the image references add a HAProxy 2.8 tag. The router deployment now uses the HAProxy-specific image for the init container.

Related issues: Not specified.
Related PRs: Not specified.
Suggested labels: manifests, operator, ingress
Suggested reviewers: Not specified.

🚥 Pre-merge checks | ✅ 15
✅ Passed checks (15 passed)
Check name Status Explanation
Title check ✅ Passed The title accurately summarizes the main change: adding the new HAProxy 2.8 image reference.
Description check ✅ Passed The description is clearly related to the change and mentions linking the new HAProxy 2.8 image into image-references.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Stable And Deterministic Test Names ✅ Passed No changed _test.go files or Ginkgo titles appear in the modified sources; the PR only touches config/manifest code.
Test Structure And Quality ✅ Passed No Ginkgo test files were added or modified; the PR only changes startup/config/manifests/image references, so this check is not applicable.
Microshift Test Compatibility ✅ Passed No new Ginkgo e2e tests were added in the touched files; the PR only changes config and manifests, so MicroShift test compatibility isn’t implicated.
Single Node Openshift (Sno) Test Compatibility ✅ Passed PASS: The PR only changes operator/config/manifests; no new Ginkgo e2e tests or SNO-sensitive node-assumption code was added.
Topology-Aware Scheduling Compatibility ✅ Passed The PR only wires a new HAProxy image flag/env into existing config and image references; no nodeSelector, affinity, spread, replica, or PDB scheduling changes were introduced.
Ote Binary Stdout Contract ✅ Passed PASS: The PR only adds HAProxy image flag/config wiring; changed process-level code has no fmt.Print/stdout writes, and logging stays via controller-runtime/zap.
Ipv6 And Disconnected Network Test Compatibility ✅ Passed No new Ginkgo/e2e tests were added; the diff is limited to manifests and operator/config code, with no It/Describe/Context/When constructs.
No-Weak-Crypto ✅ Passed PR changes only wire the new HAProxy image flag and manifests; no added weak-crypto algorithms, custom crypto, or secret comparisons were introduced.
Container-Privileges ✅ Passed Touched manifests keep restricted-v2, runAsNonRoot:true, allowPrivilegeEscalation:false, drop ALL; no hostPID/hostNetwork/hostIPC or SYS_ADMIN added.
No-Sensitive-Data-In-Logs ✅ Passed No new logging was introduced; the HAProxy image is only threaded through config and manifests, not emitted to logs.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

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.

@openshift-ci openshift-ci Bot requested review from bentito and knobunc July 2, 2026 20:26

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Actionable comments posted: 1

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
cmd/ingress-operator/start.go (1)

137-153: 🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

Wire ImageHAProxy28 into a consumer or drop the required flag
cmd/ingress-operator/start.go:137-153
ImageHAProxy28 is only logged here; nothing in this change uses it. Thread it through the operator config/controller that needs it, or remove the required flag until there is a consumer.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@cmd/ingress-operator/start.go` around lines 137 - 153, `ImageHAProxy28` is
currently only being logged in `start.go` and never consumed, so either wire it
into the code path that needs the HAProxy 2.8 image or stop requiring it for
startup. Update `operatorConfig`/the relevant controller or config type to carry
`opts.ImageHAProxy28` through to the consumer, and if no consumer exists yet,
remove the required flag and related plumbing from `start.go` and
`operatorconfig.Config`.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@cmd/ingress-operator/start.go`:
- Around line 86-87: The local run helper is still using the old image flag
name, so update the ingress-operator startup path to use the renamed flag. In
the code that defines CLI flags in start.go, keep or map the new image-router
option consistently with the rest of the startup flow, and update
hack/run-local.sh to pass --image-router instead of --image so the command
matches the current flag names. If you need backward compatibility, add an alias
in the same flag setup around IngressControllerImage rather than leaving the
script on the deprecated name.

---

Outside diff comments:
In `@cmd/ingress-operator/start.go`:
- Around line 137-153: `ImageHAProxy28` is currently only being logged in
`start.go` and never consumed, so either wire it into the code path that needs
the HAProxy 2.8 image or stop requiring it for startup. Update
`operatorConfig`/the relevant controller or config type to carry
`opts.ImageHAProxy28` through to the consumer, and if no consumer exists yet,
remove the required flag and related plumbing from `start.go` and
`operatorconfig.Config`.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Repository YAML (base), Central YAML (inherited)

Review profile: CHILL

Plan: Enterprise

Run ID: b3e3894f-1843-438f-9d94-a99292b449d4

📥 Commits

Reviewing files that changed from the base of the PR and between 7b7406e and 9cbb27c.

📒 Files selected for processing (4)
  • cmd/ingress-operator/start.go
  • manifests/02-deployment-ibm-cloud-managed.yaml
  • manifests/02-deployment.yaml
  • manifests/image-references

Comment thread cmd/ingress-operator/start.go Outdated
@jcmoraisjr jcmoraisjr force-pushed the NE-2218-link-haproxy28 branch 4 times, most recently from 95b68ae to 41a2cae Compare July 2, 2026 21:35

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🧹 Nitpick comments (2)
pkg/operator/controller/ingress/deployment.go (1)

302-302: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Add test coverage for the new HAProxy image wiring.

deployment_test.go wasn't included in this diff, and this change alters InitContainers[1].Image behavior (previously derived from config.IngressControllerImage, now config.HAProxyImage). A test asserting desiredRouterDeployment sets the HAProxy init container image from config.HAProxyImage (and that the router container / init container 0 still use config.IngressControllerImage) would guard against regressions.

Want me to draft this test case?

Also applies to: 833-835

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@pkg/operator/controller/ingress/deployment.go` at line 302, Add or update
coverage in desiredRouterDeployment to assert the new HAProxy image wiring:
verify InitContainers[1].Image comes from config.HAProxyImage, while the router
container and InitContainers[0] still use config.IngressControllerImage. Put the
assertions in deployment_test.go against desiredRouterDeployment so this
behavior is locked in and regressions in the image source are caught.
cmd/ingress-operator/start.go (1)

54-55: 📐 Maintainability & Code Quality | 🔵 Trivial | 💤 Low value

Minor naming inconsistency across layers.

StartOptions.ImageHAProxy28 maps to operatorconfig.Config.HAProxyImage, then to ingresscontroller.Config.HAProxyImage. Consider aligning the field name (e.g., HAProxyImage) with the downstream config for consistency, similar to how IngressControllerImage matches its counterpart throughout the chain.

Also applies to: 146-146

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@cmd/ingress-operator/start.go` around lines 54 - 55, The HAProxy image field
name is inconsistent across the config flow: StartOptions.ImageHAProxy28 maps to
operatorconfig.Config.HAProxyImage and then to
ingresscontroller.Config.HAProxyImage. Rename the StartOptions field to
HAProxyImage and update the related mappings/usages in StartOptions, Config
conversion, and any references in the start path so the naming matches the
downstream configs, similar to IngressControllerImage.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Nitpick comments:
In `@cmd/ingress-operator/start.go`:
- Around line 54-55: The HAProxy image field name is inconsistent across the
config flow: StartOptions.ImageHAProxy28 maps to
operatorconfig.Config.HAProxyImage and then to
ingresscontroller.Config.HAProxyImage. Rename the StartOptions field to
HAProxyImage and update the related mappings/usages in StartOptions, Config
conversion, and any references in the start path so the naming matches the
downstream configs, similar to IngressControllerImage.

In `@pkg/operator/controller/ingress/deployment.go`:
- Line 302: Add or update coverage in desiredRouterDeployment to assert the new
HAProxy image wiring: verify InitContainers[1].Image comes from
config.HAProxyImage, while the router container and InitContainers[0] still use
config.IngressControllerImage. Put the assertions in deployment_test.go against
desiredRouterDeployment so this behavior is locked in and regressions in the
image source are caught.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Repository YAML (base), Central YAML (inherited)

Review profile: CHILL

Plan: Enterprise

Run ID: 0fbf195b-f33d-49a4-9b7f-d2650b0e3e62

📥 Commits

Reviewing files that changed from the base of the PR and between 9cbb27c and 95b68ae.

📒 Files selected for processing (8)
  • cmd/ingress-operator/start.go
  • manifests/02-deployment-ibm-cloud-managed.yaml
  • manifests/02-deployment.yaml
  • manifests/image-references
  • pkg/operator/config/config.go
  • pkg/operator/controller/ingress/controller.go
  • pkg/operator/controller/ingress/deployment.go
  • pkg/operator/operator.go
🚧 Files skipped from review as they are similar to previous changes (1)
  • manifests/image-references

@jcmoraisjr

Copy link
Copy Markdown
Member Author

/retest-required

@jcmoraisjr

Copy link
Copy Markdown
Member Author

/test e2e-gcp-operator
/test hypershift-e2e-aks
/test e2e-aws-ovn-hypershift-conformance

@jcmoraisjr

Copy link
Copy Markdown
Member Author

/test e2e-hypershift

@jcmoraisjr

Copy link
Copy Markdown
Member Author

/test e2e-aws-operator-techpreview

@jcmoraisjr

Copy link
Copy Markdown
Member Author

/test e2e-hypershift

@jcmoraisjr jcmoraisjr force-pushed the NE-2218-link-haproxy28 branch from 41a2cae to 7f15a6b Compare July 6, 2026 16:36
@gcs278

gcs278 commented Jul 6, 2026

Copy link
Copy Markdown
Contributor

/payload-job periodic-ci-openshift-release-main-okd-scos-5.0-e2e-aws-ovn

@openshift-ci

openshift-ci Bot commented Jul 6, 2026

Copy link
Copy Markdown
Contributor

@gcs278: trigger 1 job(s) for the /payload-(with-prs|job|aggregate|job-with-prs|aggregate-with-prs) command

  • periodic-ci-openshift-release-main-okd-scos-5.0-e2e-aws-ovn

See details on https://pr-payload-tests.ci.openshift.org/runs/ci/b61d77e0-795d-11f1-84b9-f968a2a33dc6-0

@gcs278

gcs278 commented Jul 6, 2026

Copy link
Copy Markdown
Contributor

@jcmoraisjr I'm like 90% sure if we override ci/prow/okd-scos-images, then we will break OKD 5.0 builds, but I triggered a OKD 5.0 payload job to test that theory above.

@jcmoraisjr

Copy link
Copy Markdown
Member Author

/test e2e-aws-ovn-serial-2of2
/test e2e-hypershift

@jcmoraisjr

jcmoraisjr commented Jul 7, 2026

Copy link
Copy Markdown
Member Author

It seems infra related:

failed to create hosted zone: operation error Route 53: CreateHostedZone, https response error StatusCode: 400, RequestID: 51509085-4e9a-4f84-bda6-824c6a462baa, TooManyHostedZones: Limits Exceeded: MAX_HOSTED_ZONES_BY_OWNER - Cannot create more hosted zones.

Let's try it again.

/test e2e-hypershift

@Prashanth684

Copy link
Copy Markdown

/override ci/prow/okd-scos-images

@openshift-ci

openshift-ci Bot commented Jul 7, 2026

Copy link
Copy Markdown
Contributor

@Prashanth684: Overrode contexts on behalf of Prashanth684: ci/prow/okd-scos-images

Details

In response to this:

/override ci/prow/okd-scos-images

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository.

@jcmoraisjr

Copy link
Copy Markdown
Member Author

It seems Hypershift tests are back after a cleanup. Let's give it another chance.

/test e2e-hypershift

@jcmoraisjr

Copy link
Copy Markdown
Member Author

Waiting for OKD for now.

/hold

@openshift-ci openshift-ci Bot added the do-not-merge/hold Indicates that a PR should not merge because someone has issued a /hold command. label Jul 7, 2026
@gcs278

gcs278 commented Jul 8, 2026

Copy link
Copy Markdown
Contributor

/assign @gcs278

@jcmoraisjr

Copy link
Copy Markdown
Member Author

/test ci/prow/okd-scos-images

@jcmoraisjr

Copy link
Copy Markdown
Member Author

/test okd-scos-images

Comment thread cmd/ingress-operator/start.go Outdated
Add minimum implementation linking the new HAProxy 2.8 image into
image-references.

https://redhat.atlassian.net/browse/NE-2218
@jcmoraisjr jcmoraisjr force-pushed the NE-2218-link-haproxy28 branch from 7f15a6b to b36d9f9 Compare July 8, 2026 19:34
@gcs278

gcs278 commented Jul 8, 2026

Copy link
Copy Markdown
Contributor

@jcmoraisjr generally LGTM - straightforward to include the images in the payload. I don't see any issues - except don't forget to update the title to also mention 3.2.

This PR doesn't use the images directly, but adds them to the nightly payload so we can build clusterbots with them for testing. I don't think this PR is strictly necessary (or I could still be misunderstanding), but I'm okay with merging to unblock progress.

/approve
/lgtm

@openshift-ci openshift-ci Bot added the lgtm Indicates that a PR is ready to be merged. label Jul 8, 2026
@openshift-ci

openshift-ci Bot commented Jul 8, 2026

Copy link
Copy Markdown
Contributor

[APPROVALNOTIFIER] This PR is APPROVED

This pull-request has been approved by: gcs278

The full list of commands accepted by this bot can be found here.

The pull request process is described here

Details Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@openshift-ci openshift-ci Bot added the approved Indicates a PR has been approved by an approver from all required OWNERS files. label Jul 8, 2026
@jcmoraisjr jcmoraisjr changed the title NE-2218: Add new HAProxy 2.8 image reference NE-2218: Add new HAProxy 2.8 and 3.2 image references Jul 8, 2026
@jcmoraisjr

Copy link
Copy Markdown
Member Author

OKD failed due to the missing of haproxy-router-haproxy28 image, let's check if it's already fixed since yesterday. All the others are infra related flakiness, let's give them another chance.

/retest

@jcmoraisjr

Copy link
Copy Markdown
Member Author

Checking availability of haproxy28 image

/test okd-scos-images

@gcs278

gcs278 commented Jul 9, 2026

Copy link
Copy Markdown
Contributor

Is this a thing?
/prow refresh

@gcs278

gcs278 commented Jul 9, 2026

Copy link
Copy Markdown
Contributor

/test ?

@gcs278

gcs278 commented Jul 9, 2026

Copy link
Copy Markdown
Contributor

Not sure what it takes to propagate from openshift/release#80171 merging to our prow config. But I don't see the new jobs as runnable yet. We may have to close and reopen to refresh prow EDIT: nvm there are right there, it's been a long day.

@jcmoraisjr

Copy link
Copy Markdown
Member Author

/test hypershift-e2e-aks
/test e2e-aws-ovn-upgrade

@candita

candita commented Jul 10, 2026

Copy link
Copy Markdown
Contributor

/test e2e-aws-ovn-single-node-rhcos10-techpreview

@candita

candita commented Jul 10, 2026

Copy link
Copy Markdown
Contributor

/test e2e-aws-ovn-upgrade-haproxy28-techpreview

@gcs278

gcs278 commented Jul 10, 2026

Copy link
Copy Markdown
Contributor

just a heads up, the haproxy28 tests won't really do anything useful here as this PR isn't vendoring the new API in the IngressController CRD (which the haproxy28 tests require). It's still a valid upgrade test though for the default haproxy.

@jcmoraisjr

Copy link
Copy Markdown
Member Author

OKD update merged, let's give this one another attempt:

/test okd-scos-images

@jcmoraisjr

Copy link
Copy Markdown
Member Author

We're green on OKD!

/hold cancel

@openshift-ci openshift-ci Bot removed the do-not-merge/hold Indicates that a PR should not merge because someone has issued a /hold command. label Jul 11, 2026
@Miciah

Miciah commented Jul 13, 2026

Copy link
Copy Markdown
Contributor

This PR is critical for implementing a release-blocking feature.

/label acknowledge-critical-fixes-only

Please do the due diligence to make sure payload tests are green before removing the hold. Never mind, I misunderstood — I thought we still had a hold, but it looks like we're good now.

@openshift-ci openshift-ci Bot added the acknowledge-critical-fixes-only Indicates if the issuer of the label is OK with the policy. label Jul 13, 2026
@jcmoraisjr

Copy link
Copy Markdown
Member Author

/test images

@gcs278

gcs278 commented Jul 13, 2026

Copy link
Copy Markdown
Contributor

/hold

some discussion on whether openshift-eng/ocp-build-data#11725 needs to be merged first before this - feel free to remove when you get an answer @jcmoraisjr

@openshift-ci openshift-ci Bot added the do-not-merge/hold Indicates that a PR should not merge because someone has issued a /hold command. label Jul 13, 2026
@openshift-ci

openshift-ci Bot commented Jul 13, 2026

Copy link
Copy Markdown
Contributor

@jcmoraisjr: all tests passed!

Full PR test history. Your PR dashboard.

Details

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository. I understand the commands that are listed here.

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

Labels

acknowledge-critical-fixes-only Indicates if the issuer of the label is OK with the policy. approved Indicates a PR has been approved by an approver from all required OWNERS files. do-not-merge/hold Indicates that a PR should not merge because someone has issued a /hold command. jira/valid-reference Indicates that this PR references a valid Jira ticket of any type. lgtm Indicates that a PR is ready to be merged.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants