You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Updates based on willie-yao's review comments:
- Update metadata: add reviewers, fix dates, change status to implementable
- Fix API versions: v1beta2 → v1beta1 throughout examples
- Add "Alternatives Considered" section explaining why separate CRDs are needed
- Add "Maintenance and Ownership" section clarifying ARO team ownership
- Document ASO migration plan with dependency chain
- Add references to ARO-HCP repository and API specifications
- Note API versions: 2024-06-10-preview (private) vs 2025-12-23-preview (public)
- Add ASO issue reference for key management gap
- Update graduation criteria with ownership and migration commitments
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
The Cluster API Provider for Azure (CAPZ) extends Kubernetes Cluster API functionality to Microsoft Azure environments, facilitating the management and lifecycle of Kubernetes clusters on Azure. This proposal outlines the integration of Azure Red Hat OpenShift (ARO) Hosted Control Plane (HCP) clusters within CAPZ using Azure Service Operator (ASO) for resource provisioning.
35
38
39
+
ARO HCP is an evolution of Azure Red Hat OpenShift that uses a hosted control plane architecture. For more information about ARO HCP, see the [ARO-HCP repository](https://github.com/Azure/ARO-HCP).
40
+
36
41
The implementation leverages ASO resources embedded directly in Custom Resource specifications, providing a declarative, Kubernetes-native approach to managing ARO HCP infrastructure.
37
42
38
43
@@ -115,9 +120,13 @@ type AROControlPlaneSpec struct {
115
120
// - HcpOpenShiftCluster resource
116
121
// - HcpOpenShiftClustersExternalAuth resource (if external auth is needed)
117
122
//
118
-
// Example resources:
123
+
// Example resources (using private preview API v1api20240610preview):
- **Azure SDK**: Used only for encryption key management (when identityRef is set)
1150
1159
- KeyVault keys (create/retrieve key versions within existing vault)
1160
+
- **Note**: This is a temporary gap in ASO coverage. ASO supports Vault CRDs but not key management. See upstream tracking: [Azure/azure-service-operator#4481](https://github.com/Azure/azure-service-operator/issues/4481)
1161
+
- This SDK dependency will be removed once ASO adds key version retrieval support
1162
+
- **Note**: This is a temporary gap in ASO's coverage. ASO currently supports Vault CRDs but not Key management within vaults. There is an upstream ASO issue tracking this: [Azure/azure-service-operator#4481](https://github.com/Azure/azure-service-operator/issues/4481)
1163
+
- **Future**: Once ASO adds support for key version retrieval, the keyvaults SDK service can be removed entirely
1151
1164
1152
1165
### Validation and Testing
1153
1166
@@ -1193,6 +1206,40 @@ Resource Deployment
1193
1206
- Testing of error conditions and recovery
1194
1207
- Testing of both authentication modes (CAPZ managed vs ASO credential-based)
1195
1208
1209
+
## Alternatives Considered
1210
+
1211
+
### Using AzureASOManagedControlPlane
1212
+
1213
+
AzureASOManagedControlPlane is designed for AKS managed clusters using `containerservice.azure.com` resources. ARO HCP uses fundamentally different Azure resource types (`redhatopenshift.azure.com/HcpOpenShiftCluster`) with ARO-specific requirements including ETCD encryption with Key Vault integration, external authentication resources, and different node pool APIs. The architectural differences are significant enough that separate CRDs provide clearer API boundaries and simpler controller logic than trying to unify both platforms under a single type.
1214
+
1215
+
### Pure ASO Without CAPZ Controllers
1216
+
1217
+
While ASO provides Azure resource management, CAPZ controllers add Cluster API integration (lifecycle management, dependency orchestration, status aggregation) and automation features like encryption key version injection. Users who don't need CAPI integration can use ASO directly with `identityRef: nil` mode.
1218
+
1219
+
## Maintenance and Ownership
1220
+
1221
+
The ARO HCP integration is **owned and maintained by the Azure Red Hat OpenShift (ARO) team at Red Hat**. This includes the AROControlPlane, AROMachinePool, and AROCluster CRDs, controllers, webhooks, and ARO-specific documentation.
1222
+
1223
+
**CAPZ core team responsibilities** are limited to maintaining shared infrastructure (ASO integration patterns, common libraries) and reviewing ARO pull requests for CAPZ architectural alignment. The CAPZ core team is **not expected to own or maintain ARO-specific logic**.
1224
+
1225
+
### Azure SDK Usage and ASO Migration Plan
1226
+
1227
+
The keyvaults service currently uses Azure SDK for key version retrieval because ASO doesn't yet support Key Vault key management CRDs (only Vault resources). This SDK usage is temporary and will be removed once ASO coverage is available.
1228
+
1229
+
**ARO HCP API Versions**:
1230
+
- **2024-06-10-preview**: Private preview API version (currently used in this implementation)
1231
+
- **2025-12-23-preview**: Public preview API version (planned migration target)
1232
+
1233
+
API specifications are maintained in the [ARO-HCP repository](https://github.com/Azure/ARO-HCP/tree/main/api/redhatopenshift/resource-manager/Microsoft.RedHatOpenShift/hcpclusters/preview).
1234
+
1235
+
**Dependency chain for full ASO migration**:
1236
+
1. ARO HCP public preview completion (pending Microsoft release formalities)
1237
+
2. ARO HCP API specification merged into Azure REST API specs repository
1238
+
3. ASO generation of ARO HCP CRDs from updated specs
1239
+
4. Backporting ASO changes to the release version used by CAPZ
1240
+
1241
+
Once these dependencies are resolved and ASO supports key management, the keyvaults SDK service will be removed entirely. The ARO team commits to migrating to pure ASO-native implementation at that time.
1242
+
1196
1243
## Risks and Mitigations
1197
1244
1198
1245
- **ASO API Changes**: Monitor ASO releases and update resource definitions accordingly
0 commit comments