Skip to content

[release-4.21] CNTRLPLANE-2812: feat(aro): Swift support#7826

Merged
openshift-merge-bot[bot] merged 7 commits intoopenshift:release-4.21from
muraee:backport-swift
Mar 6, 2026
Merged

[release-4.21] CNTRLPLANE-2812: feat(aro): Swift support#7826
openshift-merge-bot[bot] merged 7 commits intoopenshift:release-4.21from
muraee:backport-swift

Conversation

enxebre and others added 5 commits February 27, 2026 15:25
Move infrastructure-related reconciliation logic from hostedcontrolplane_controller.go
to the infra package for better code organization and testability.

cherry-pick from openshift#7658
…nents

Regenerate testdata for aro swift scenario
- Introduces ARO Swift annotation
- isPrivate returns true now when ARO and swift.
- Router component runs when is ARO and swift. It listens on 443
- Data plane HAProxy: Updates nodepool apiserver-haproxy to handle Swift scenarios with different ports and proxy protocol settings
- Shared ingress: Modified to skip dataplane-kas-service backend when Swift is enabled
- Add a bunch of unit tests

In this PR we still support the no swift path to not break CI.
When a hosted cluster uses KMS etcd encryption with a Key Vault behind
a private endpoint, the azure-kms-provider sidecar in the KAS pod
cannot reach the Key Vault because CoreDNS on the AKS VNet does not
have the privatelink.vaultcore.azure.net zone linked.

The private router deployment already runs on the customer VNet (via
Swift) and can reach the private endpoint. This commit adds a TCP
passthrough relay: HAProxy on the private router forwards connections
to the Key Vault via SNI routing on port 8443, and the KAS pod uses a
hostAlias to redirect the Key Vault hostname to the private-router
Service ClusterIP. TLS passes through end-to-end.

Changes:
- Add GetKeyVaultFQDN() to azureutil for shared FQDN construction
- Add resolvers, SNI ACL, and keyvault backend to HAProxy template
- Add hostAlias to KAS deployment pointing vault FQDN to router svc
- Gate all changes behind azureutil.IsAroHCP()

Signed-off-by: Mulham Raee <mulham.raee@gmail.com>
Commit-Message-Assisted-by: Claude (via Claude Code)
…nents

Add Azure KMS configuration to the ARO Swift test case in
TestControlPlaneComponents and add a private-router service to the
fake objects so the KAS deployment hostAlias logic can resolve it.
Update all affected AROSwift test fixtures.

Signed-off-by: Mulham Raee <mulham.raee@gmail.com>
Commit-Message-Assisted-by: Claude (via Claude Code)
@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai Bot commented Feb 27, 2026

Important

Review skipped

Auto reviews are disabled on base/target branches other than the default branch.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Repository: openshift/coderabbit/.coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: 9cd595cb-85b4-4c7c-a9b9-026bed3b0d7c

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment

Tip

Try Coding Plans. Let us write the prompt for your AI agent so you can ship faster (with fewer bugs).
Share your feedback on Discord.


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

@muraee muraee changed the title feat(cpo): ARO swift feat(aro): Swift support Feb 27, 2026
@openshift-ci openshift-ci Bot requested review from bryan-cox and jparrill February 27, 2026 15:24
@openshift-ci
Copy link
Copy Markdown
Contributor

openshift-ci Bot commented Feb 27, 2026

[APPROVALNOTIFIER] This PR is APPROVED

This pull-request has been approved by: muraee

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 area/api Indicates the PR includes changes for the API approved Indicates a PR has been approved by an approver from all required OWNERS files. area/cli Indicates the PR includes changes for CLI area/control-plane-operator Indicates the PR includes changes for the control plane operator - in an OCP release area/documentation Indicates the PR includes changes for documentation area/hypershift-operator Indicates the PR includes changes for the hypershift operator and API - outside an OCP release area/platform/aws PR/issue for AWS (AWSPlatform) platform area/platform/azure PR/issue for Azure (AzurePlatform) platform area/platform/kubevirt PR/issue for KubeVirt (KubevirtPlatform) platform area/platform/openstack PR/issue for OpenStack (OpenStackPlatform) platform area/platform/powervs PR/issue for PowerVS (PowerVSPlatform) platform and removed do-not-merge/needs-area labels Feb 27, 2026
@muraee muraee changed the title feat(aro): Swift support [release-4.21] CNTRLPLANE-2812: feat(aro): Swift support Feb 27, 2026
@openshift-ci-robot openshift-ci-robot added the jira/valid-reference Indicates that this PR references a valid Jira ticket of any type. label Feb 27, 2026
@openshift-ci-robot
Copy link
Copy Markdown

openshift-ci-robot commented Feb 27, 2026

@muraee: This pull request references CNTRLPLANE-2812 which is a valid jira issue.

Warning: The referenced jira issue has an invalid target version for the target branch this PR targets: expected the task to target the "4.21.z" version, but no target version was set.

Details

In response to this:

manual backport of:

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.

@muraee muraee force-pushed the backport-swift branch 2 times, most recently from 3c2b91b to 865e622 Compare March 2, 2026 12:24
…ting

Previously, private Key Vault routing was unconditionally enabled for
all ARO HCP clusters via IsAroHCP(). This adds a new KeyVaultAccess
field (Public/Private enum) to AzureKMSSpec so users can opt in to
private Key Vault routing. The condition now requires both IsAroHCP()
and IsPrivateKeyVault(hcp) to enable private router relay.

Changes:
- Add AzureKeyVaultAccessType enum and KeyVaultAccess field to AzureKMSSpec
- Add CEL validation enforcing backupKey uses the same Key Vault as activeKey
- Add IsPrivateKeyVault helper in azureutil with unit tests
- Update KAS deployment and router config conditions
- Rename router template param from IsAroHCP to HasPrivateKeyVault

Controllers treat an empty/omitted KeyVaultAccess value the same as
"Public", so no CRD schema default is set to avoid issues with
existing objects in etcd.

Signed-off-by: Mulham Raee <mulham.raee@gmail.com>
Commit-Message-Assisted-by: Claude (via Claude Code)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@muraee
Copy link
Copy Markdown
Contributor Author

muraee commented Mar 3, 2026

/retest-required

@enxebre enxebre added the backport-risk-assessed Indicates a PR to a release branch has been evaluated and considered safe to accept. label Mar 4, 2026
@enxebre
Copy link
Copy Markdown
Member

enxebre commented Mar 4, 2026

/lgtm
/hold
needs verified

@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 Mar 4, 2026
@openshift-ci openshift-ci Bot added the lgtm Indicates that a PR is ready to be merged. label Mar 4, 2026
…PI dependencies

Move UseHCPRouter() to a shared util package to break the import cycle
and allow infra.go to use it directly for determining whether router
services should be deployed. This fixes an issue where router services
were not deployed alongside the router deployment for private ARO
clusters (Swift enabled).

Additionally, remove the dependency of the router deployment on KAS
and OAPI components, and add "router" to the list of components that
are allowed to report not-found conditions without blocking overall
status.

Signed-off-by: Mulham Raee <mulham.raee@gmail.com>
Commit-Message-Assisted-by: Claude (via Claude Code)
@openshift-ci openshift-ci Bot removed the lgtm Indicates that a PR is ready to be merged. label Mar 5, 2026
@openshift-ci-robot
Copy link
Copy Markdown

openshift-ci-robot commented Mar 5, 2026

@muraee: This pull request references CNTRLPLANE-2812 which is a valid jira issue.

Warning: The referenced jira issue has an invalid target version for the target branch this PR targets: expected the task to target the "4.21.z" version, but no target version was set.

Details

In response to this:

manual backport of:

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.

@muraee
Copy link
Copy Markdown
Contributor Author

muraee commented Mar 6, 2026

/retest-required

@openshift-ci
Copy link
Copy Markdown
Contributor

openshift-ci Bot commented Mar 6, 2026

@muraee: 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.

@enxebre
Copy link
Copy Markdown
Member

enxebre commented Mar 6, 2026

/lgtm

@openshift-ci openshift-ci Bot added the lgtm Indicates that a PR is ready to be merged. label Mar 6, 2026
@muraee
Copy link
Copy Markdown
Contributor Author

muraee commented Mar 6, 2026

/verified by @muraee

@muraee
Copy link
Copy Markdown
Contributor Author

muraee commented Mar 6, 2026

/unhold

@openshift-ci-robot openshift-ci-robot added the verified Signifies that the PR passed pre-merge verification criteria label Mar 6, 2026
@openshift-ci-robot
Copy link
Copy Markdown

@muraee: This PR has been marked as verified by @muraee.

Details

In response to this:

/verified by @muraee

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 openshift-ci Bot removed the do-not-merge/hold Indicates that a PR should not merge because someone has issued a /hold command. label Mar 6, 2026
@celebdor celebdor added the jira/valid-bug Indicates that a referenced Jira bug is valid for the branch this PR is targeting. label Mar 6, 2026
@muraee
Copy link
Copy Markdown
Contributor Author

muraee commented Mar 6, 2026

/cherry-pick release-4.20

@openshift-cherrypick-robot
Copy link
Copy Markdown

@muraee: once the present PR merges, I will cherry-pick it on top of release-4.20 in a new PR and assign it to you.

Details

In response to this:

/cherry-pick release-4.20

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.

@openshift-merge-bot openshift-merge-bot Bot merged commit 2bfe193 into openshift:release-4.21 Mar 6, 2026
15 checks passed
@openshift-cherrypick-robot
Copy link
Copy Markdown

@muraee: Failed to get PR patch from GitHub. This PR will need to be manually cherrypicked.

Error messagestatus code 406 not one of [200], body: {"message":"Sorry, the diff exceeded the maximum number of lines (20000)","errors":[{"resource":"PullRequest","field":"diff","code":"too_large"}],"documentation_url":"https://docs.github.com/rest/pulls/pulls#get-a-pull-request","status":"406"}
Details

In response to this:

/cherry-pick release-4.20

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.

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

Labels

approved Indicates a PR has been approved by an approver from all required OWNERS files. area/api Indicates the PR includes changes for the API area/cli Indicates the PR includes changes for CLI area/control-plane-operator Indicates the PR includes changes for the control plane operator - in an OCP release area/documentation Indicates the PR includes changes for documentation area/hypershift-operator Indicates the PR includes changes for the hypershift operator and API - outside an OCP release area/platform/aws PR/issue for AWS (AWSPlatform) platform area/platform/azure PR/issue for Azure (AzurePlatform) platform area/platform/kubevirt PR/issue for KubeVirt (KubevirtPlatform) platform area/platform/openstack PR/issue for OpenStack (OpenStackPlatform) platform area/platform/powervs PR/issue for PowerVS (PowerVSPlatform) platform backport-risk-assessed Indicates a PR to a release branch has been evaluated and considered safe to accept. jira/valid-bug Indicates that a referenced Jira bug is valid for the branch this PR is targeting. 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. verified Signifies that the PR passed pre-merge verification criteria

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants