diff --git a/api/hypershift/v1alpha1/hostedcluster_types.go b/api/hypershift/v1alpha1/hostedcluster_types.go
index 3f7adbef522..9c549c4d4ac 100644
--- a/api/hypershift/v1alpha1/hostedcluster_types.go
+++ b/api/hypershift/v1alpha1/hostedcluster_types.go
@@ -1574,6 +1574,46 @@ type AzurePlatformSpec struct {
SubnetID string `json:"subnetID"`
SubscriptionID string `json:"subscriptionID"`
SecurityGroupID string `json:"securityGroupID"`
+
+ // MSIClientIDs contains the client IDs related to the managed identities needed for the following control plane
+ // components: cluster-image-registry, cluster-ingress, cluster-storage, and cluster-network operators.
+ //
+ // +optional
+ MSIClientIDs *ControlPlaneManagedServiceIdentities `json:"msiClientIDs,omitempty"`
+}
+
+type ControlPlaneManagedServiceIdentities struct {
+ // ImageRegistryMSIClientID is the client ID of a pre-existing managed identity ID of that will be associated with
+ // the cluster-image-registry-operator. The managed identity will be in a different resource group other than
+ // ResourceGroupName.
+ //
+ // +kubebuilder:validation:Required
+ // +required
+ ImageRegistryMSIClientID string `json:"imageRegistryMSIClientID,omitempty"`
+
+ // IngressMSIClientID is the client ID of a pre-existing managed identity ID of that will be associated with
+ // the cluster-ingress-operator. The managed identity will be in a different resource group other than
+ // ResourceGroupName.
+ //
+ // +kubebuilder:validation:Required
+ // +required
+ IngressMSIClientID string `json:"ingressMSIClientID,omitempty"`
+
+ // NetworkMSIClientID is the client ID of a pre-existing managed identity ID of that will be associated with
+ // the cluster-network-operator. The managed identity will be in a different resource group other than
+ // ResourceGroupName.
+ //
+ // +kubebuilder:validation:Required
+ // +required
+ NetworkMSIClientID string `json:"networkMSIClientID,omitempty"`
+
+ // StorageMSIClientID is the client ID of a pre-existing managed identity ID of that will be associated with
+ // the cluster-storage-operator. The managed identity will be in a different resource group other than
+ // ResourceGroupName.
+ //
+ // +kubebuilder:validation:Required
+ // +required
+ StorageMSIClientID string `json:"storageMSIClientID,omitempty"`
}
// Release represents the metadata for an OCP release payload image.
diff --git a/api/hypershift/v1alpha1/zz_generated.deepcopy.go b/api/hypershift/v1alpha1/zz_generated.deepcopy.go
index b0a76b14204..a4939dff1c9 100644
--- a/api/hypershift/v1alpha1/zz_generated.deepcopy.go
+++ b/api/hypershift/v1alpha1/zz_generated.deepcopy.go
@@ -552,6 +552,11 @@ func (in *AzureNodePoolPlatform) DeepCopy() *AzureNodePoolPlatform {
func (in *AzurePlatformSpec) DeepCopyInto(out *AzurePlatformSpec) {
*out = *in
out.Credentials = in.Credentials
+ if in.MSIClientIDs != nil {
+ in, out := &in.MSIClientIDs, &out.MSIClientIDs
+ *out = new(ControlPlaneManagedServiceIdentities)
+ **out = **in
+ }
}
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AzurePlatformSpec.
@@ -770,6 +775,21 @@ func (in *ClusterVersionStatus) DeepCopy() *ClusterVersionStatus {
return out
}
+// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
+func (in *ControlPlaneManagedServiceIdentities) DeepCopyInto(out *ControlPlaneManagedServiceIdentities) {
+ *out = *in
+}
+
+// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ControlPlaneManagedServiceIdentities.
+func (in *ControlPlaneManagedServiceIdentities) DeepCopy() *ControlPlaneManagedServiceIdentities {
+ if in == nil {
+ return nil
+ }
+ out := new(ControlPlaneManagedServiceIdentities)
+ in.DeepCopyInto(out)
+ return out
+}
+
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *DNSSpec) DeepCopyInto(out *DNSSpec) {
*out = *in
@@ -2250,7 +2270,7 @@ func (in *PlatformSpec) DeepCopyInto(out *PlatformSpec) {
if in.Azure != nil {
in, out := &in.Azure, &out.Azure
*out = new(AzurePlatformSpec)
- **out = **in
+ (*in).DeepCopyInto(*out)
}
if in.PowerVS != nil {
in, out := &in.PowerVS, &out.PowerVS
diff --git a/api/hypershift/v1beta1/hostedcluster_types.go b/api/hypershift/v1beta1/hostedcluster_types.go
index a5f1e1585b1..25349043a10 100644
--- a/api/hypershift/v1beta1/hostedcluster_types.go
+++ b/api/hypershift/v1beta1/hostedcluster_types.go
@@ -330,6 +330,7 @@ const (
type HostedClusterSpec struct {
// Release specifies the desired OCP release payload for the hosted cluster.
//
+ //
// Updating this field will trigger a rollout of the control plane. The
// behavior of the rollout will be driven by the ControllerAvailabilityPolicy
// and InfrastructureAvailabilityPolicy.
@@ -1785,7 +1786,7 @@ type AzurePlatformSpec struct {
//
// Resource group naming requirements can be found here: https://azure.github.io/PSRule.Rules.Azure/en/rules/Azure.ResourceGroup.Name/.
//
- //Example: if your resource group ID is /subscriptions//resourceGroups/, your
+ // Example: if your resource group ID is /subscriptions//resourceGroups/, your
// ResourceGroupName is .
//
// +kubebuilder:default:=default
@@ -1839,6 +1840,46 @@ type AzurePlatformSpec struct {
// +immutable
// +required
SecurityGroupID string `json:"securityGroupID,omitempty"`
+
+ // MSIClientIDs contains the client IDs related to the managed identities needed for the following control plane
+ // components: cluster-image-registry, cluster-ingress, cluster-storage, and cluster-network operators.
+ //
+ // +optional
+ MSIClientIDs *ControlPlaneManagedServiceIdentities `json:"msiClientIDs,omitempty"`
+}
+
+type ControlPlaneManagedServiceIdentities struct {
+ // ImageRegistryMSIClientID is the client ID of a pre-existing managed identity ID of that will be associated with
+ // the cluster-image-registry-operator. The managed identity will be in a different resource group other than
+ // ResourceGroupName.
+ //
+ // +kubebuilder:validation:Required
+ // +required
+ ImageRegistryMSIClientID string `json:"imageRegistryMSIClientID,omitempty"`
+
+ // IngressMSIClientID is the client ID of a pre-existing managed identity ID of that will be associated with
+ // the cluster-ingress-operator. The managed identity will be in a different resource group other than
+ // ResourceGroupName.
+ //
+ // +kubebuilder:validation:Required
+ // +required
+ IngressMSIClientID string `json:"ingressMSIClientID,omitempty"`
+
+ // NetworkMSIClientID is the client ID of a pre-existing managed identity ID of that will be associated with
+ // the cluster-network-operator. The managed identity will be in a different resource group other than
+ // ResourceGroupName.
+ //
+ // +kubebuilder:validation:Required
+ // +required
+ NetworkMSIClientID string `json:"networkMSIClientID,omitempty"`
+
+ // StorageMSIClientID is the client ID of a pre-existing managed identity ID of that will be associated with
+ // the cluster-storage-operator. The managed identity will be in a different resource group other than
+ // ResourceGroupName.
+ //
+ // +kubebuilder:validation:Required
+ // +required
+ StorageMSIClientID string `json:"storageMSIClientID,omitempty"`
}
// OpenStackPlatformSpec specifies configuration for clusters running on OpenStack.
diff --git a/api/hypershift/v1beta1/zz_generated.deepcopy.go b/api/hypershift/v1beta1/zz_generated.deepcopy.go
index 83ae4c62b3a..15940bad61e 100644
--- a/api/hypershift/v1beta1/zz_generated.deepcopy.go
+++ b/api/hypershift/v1beta1/zz_generated.deepcopy.go
@@ -558,6 +558,11 @@ func (in *AzureNodePoolPlatform) DeepCopy() *AzureNodePoolPlatform {
func (in *AzurePlatformSpec) DeepCopyInto(out *AzurePlatformSpec) {
*out = *in
out.Credentials = in.Credentials
+ if in.MSIClientIDs != nil {
+ in, out := &in.MSIClientIDs, &out.MSIClientIDs
+ *out = new(ControlPlaneManagedServiceIdentities)
+ **out = **in
+ }
}
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AzurePlatformSpec.
@@ -848,6 +853,21 @@ func (in *ClusterVersionStatus) DeepCopy() *ClusterVersionStatus {
return out
}
+// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
+func (in *ControlPlaneManagedServiceIdentities) DeepCopyInto(out *ControlPlaneManagedServiceIdentities) {
+ *out = *in
+}
+
+// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ControlPlaneManagedServiceIdentities.
+func (in *ControlPlaneManagedServiceIdentities) DeepCopy() *ControlPlaneManagedServiceIdentities {
+ if in == nil {
+ return nil
+ }
+ out := new(ControlPlaneManagedServiceIdentities)
+ in.DeepCopyInto(out)
+ return out
+}
+
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *DNSSpec) DeepCopyInto(out *DNSSpec) {
*out = *in
@@ -2479,7 +2499,7 @@ func (in *PlatformSpec) DeepCopyInto(out *PlatformSpec) {
if in.Azure != nil {
in, out := &in.Azure, &out.Azure
*out = new(AzurePlatformSpec)
- **out = **in
+ (*in).DeepCopyInto(*out)
}
if in.PowerVS != nil {
in, out := &in.PowerVS, &out.PowerVS
diff --git a/client/applyconfiguration/hypershift/v1alpha1/azureplatformspec.go b/client/applyconfiguration/hypershift/v1alpha1/azureplatformspec.go
index e65cec89d0b..e57bee7d634 100644
--- a/client/applyconfiguration/hypershift/v1alpha1/azureplatformspec.go
+++ b/client/applyconfiguration/hypershift/v1alpha1/azureplatformspec.go
@@ -24,14 +24,15 @@ import (
// AzurePlatformSpecApplyConfiguration represents an declarative configuration of the AzurePlatformSpec type for use
// with apply.
type AzurePlatformSpecApplyConfiguration struct {
- Credentials *v1.LocalObjectReference `json:"credentials,omitempty"`
- Cloud *string `json:"cloud,omitempty"`
- Location *string `json:"location,omitempty"`
- ResourceGroupName *string `json:"resourceGroup,omitempty"`
- VnetID *string `json:"vnetID,omitempty"`
- SubnetID *string `json:"subnetID,omitempty"`
- SubscriptionID *string `json:"subscriptionID,omitempty"`
- SecurityGroupID *string `json:"securityGroupID,omitempty"`
+ Credentials *v1.LocalObjectReference `json:"credentials,omitempty"`
+ Cloud *string `json:"cloud,omitempty"`
+ Location *string `json:"location,omitempty"`
+ ResourceGroupName *string `json:"resourceGroup,omitempty"`
+ VnetID *string `json:"vnetID,omitempty"`
+ SubnetID *string `json:"subnetID,omitempty"`
+ SubscriptionID *string `json:"subscriptionID,omitempty"`
+ SecurityGroupID *string `json:"securityGroupID,omitempty"`
+ MSIClientIDs *ControlPlaneManagedServiceIdentitiesApplyConfiguration `json:"msiClientIDs,omitempty"`
}
// AzurePlatformSpecApplyConfiguration constructs an declarative configuration of the AzurePlatformSpec type for use with
@@ -103,3 +104,11 @@ func (b *AzurePlatformSpecApplyConfiguration) WithSecurityGroupID(value string)
b.SecurityGroupID = &value
return b
}
+
+// WithMSIClientIDs sets the MSIClientIDs field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the MSIClientIDs field is set to the value of the last call.
+func (b *AzurePlatformSpecApplyConfiguration) WithMSIClientIDs(value *ControlPlaneManagedServiceIdentitiesApplyConfiguration) *AzurePlatformSpecApplyConfiguration {
+ b.MSIClientIDs = value
+ return b
+}
diff --git a/client/applyconfiguration/hypershift/v1alpha1/controlplanemanagedserviceidentities.go b/client/applyconfiguration/hypershift/v1alpha1/controlplanemanagedserviceidentities.go
new file mode 100644
index 00000000000..27b8d3af65b
--- /dev/null
+++ b/client/applyconfiguration/hypershift/v1alpha1/controlplanemanagedserviceidentities.go
@@ -0,0 +1,65 @@
+/*
+
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+// Code generated by applyconfiguration-gen. DO NOT EDIT.
+
+package v1alpha1
+
+// ControlPlaneManagedServiceIdentitiesApplyConfiguration represents an declarative configuration of the ControlPlaneManagedServiceIdentities type for use
+// with apply.
+type ControlPlaneManagedServiceIdentitiesApplyConfiguration struct {
+ ImageRegistryMSIClientID *string `json:"imageRegistryMSIClientID,omitempty"`
+ IngressMSIClientID *string `json:"ingressMSIClientID,omitempty"`
+ NetworkMSIClientID *string `json:"networkMSIClientID,omitempty"`
+ StorageMSIClientID *string `json:"storageMSIClientID,omitempty"`
+}
+
+// ControlPlaneManagedServiceIdentitiesApplyConfiguration constructs an declarative configuration of the ControlPlaneManagedServiceIdentities type for use with
+// apply.
+func ControlPlaneManagedServiceIdentities() *ControlPlaneManagedServiceIdentitiesApplyConfiguration {
+ return &ControlPlaneManagedServiceIdentitiesApplyConfiguration{}
+}
+
+// WithImageRegistryMSIClientID sets the ImageRegistryMSIClientID field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the ImageRegistryMSIClientID field is set to the value of the last call.
+func (b *ControlPlaneManagedServiceIdentitiesApplyConfiguration) WithImageRegistryMSIClientID(value string) *ControlPlaneManagedServiceIdentitiesApplyConfiguration {
+ b.ImageRegistryMSIClientID = &value
+ return b
+}
+
+// WithIngressMSIClientID sets the IngressMSIClientID field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the IngressMSIClientID field is set to the value of the last call.
+func (b *ControlPlaneManagedServiceIdentitiesApplyConfiguration) WithIngressMSIClientID(value string) *ControlPlaneManagedServiceIdentitiesApplyConfiguration {
+ b.IngressMSIClientID = &value
+ return b
+}
+
+// WithNetworkMSIClientID sets the NetworkMSIClientID field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the NetworkMSIClientID field is set to the value of the last call.
+func (b *ControlPlaneManagedServiceIdentitiesApplyConfiguration) WithNetworkMSIClientID(value string) *ControlPlaneManagedServiceIdentitiesApplyConfiguration {
+ b.NetworkMSIClientID = &value
+ return b
+}
+
+// WithStorageMSIClientID sets the StorageMSIClientID field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the StorageMSIClientID field is set to the value of the last call.
+func (b *ControlPlaneManagedServiceIdentitiesApplyConfiguration) WithStorageMSIClientID(value string) *ControlPlaneManagedServiceIdentitiesApplyConfiguration {
+ b.StorageMSIClientID = &value
+ return b
+}
diff --git a/client/applyconfiguration/hypershift/v1beta1/azureplatformspec.go b/client/applyconfiguration/hypershift/v1beta1/azureplatformspec.go
index 0dd6518daf1..9adeebd1f19 100644
--- a/client/applyconfiguration/hypershift/v1beta1/azureplatformspec.go
+++ b/client/applyconfiguration/hypershift/v1beta1/azureplatformspec.go
@@ -24,14 +24,15 @@ import (
// AzurePlatformSpecApplyConfiguration represents an declarative configuration of the AzurePlatformSpec type for use
// with apply.
type AzurePlatformSpecApplyConfiguration struct {
- Credentials *v1.LocalObjectReference `json:"credentials,omitempty"`
- Cloud *string `json:"cloud,omitempty"`
- Location *string `json:"location,omitempty"`
- ResourceGroupName *string `json:"resourceGroup,omitempty"`
- VnetID *string `json:"vnetID,omitempty"`
- SubnetID *string `json:"subnetID,omitempty"`
- SubscriptionID *string `json:"subscriptionID,omitempty"`
- SecurityGroupID *string `json:"securityGroupID,omitempty"`
+ Credentials *v1.LocalObjectReference `json:"credentials,omitempty"`
+ Cloud *string `json:"cloud,omitempty"`
+ Location *string `json:"location,omitempty"`
+ ResourceGroupName *string `json:"resourceGroup,omitempty"`
+ VnetID *string `json:"vnetID,omitempty"`
+ SubnetID *string `json:"subnetID,omitempty"`
+ SubscriptionID *string `json:"subscriptionID,omitempty"`
+ SecurityGroupID *string `json:"securityGroupID,omitempty"`
+ MSIClientIDs *ControlPlaneManagedServiceIdentitiesApplyConfiguration `json:"msiClientIDs,omitempty"`
}
// AzurePlatformSpecApplyConfiguration constructs an declarative configuration of the AzurePlatformSpec type for use with
@@ -103,3 +104,11 @@ func (b *AzurePlatformSpecApplyConfiguration) WithSecurityGroupID(value string)
b.SecurityGroupID = &value
return b
}
+
+// WithMSIClientIDs sets the MSIClientIDs field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the MSIClientIDs field is set to the value of the last call.
+func (b *AzurePlatformSpecApplyConfiguration) WithMSIClientIDs(value *ControlPlaneManagedServiceIdentitiesApplyConfiguration) *AzurePlatformSpecApplyConfiguration {
+ b.MSIClientIDs = value
+ return b
+}
diff --git a/client/applyconfiguration/hypershift/v1beta1/controlplanemanagedserviceidentities.go b/client/applyconfiguration/hypershift/v1beta1/controlplanemanagedserviceidentities.go
new file mode 100644
index 00000000000..835c49dfb31
--- /dev/null
+++ b/client/applyconfiguration/hypershift/v1beta1/controlplanemanagedserviceidentities.go
@@ -0,0 +1,65 @@
+/*
+
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+// Code generated by applyconfiguration-gen. DO NOT EDIT.
+
+package v1beta1
+
+// ControlPlaneManagedServiceIdentitiesApplyConfiguration represents an declarative configuration of the ControlPlaneManagedServiceIdentities type for use
+// with apply.
+type ControlPlaneManagedServiceIdentitiesApplyConfiguration struct {
+ ImageRegistryMSIClientID *string `json:"imageRegistryMSIClientID,omitempty"`
+ IngressMSIClientID *string `json:"ingressMSIClientID,omitempty"`
+ NetworkMSIClientID *string `json:"networkMSIClientID,omitempty"`
+ StorageMSIClientID *string `json:"storageMSIClientID,omitempty"`
+}
+
+// ControlPlaneManagedServiceIdentitiesApplyConfiguration constructs an declarative configuration of the ControlPlaneManagedServiceIdentities type for use with
+// apply.
+func ControlPlaneManagedServiceIdentities() *ControlPlaneManagedServiceIdentitiesApplyConfiguration {
+ return &ControlPlaneManagedServiceIdentitiesApplyConfiguration{}
+}
+
+// WithImageRegistryMSIClientID sets the ImageRegistryMSIClientID field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the ImageRegistryMSIClientID field is set to the value of the last call.
+func (b *ControlPlaneManagedServiceIdentitiesApplyConfiguration) WithImageRegistryMSIClientID(value string) *ControlPlaneManagedServiceIdentitiesApplyConfiguration {
+ b.ImageRegistryMSIClientID = &value
+ return b
+}
+
+// WithIngressMSIClientID sets the IngressMSIClientID field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the IngressMSIClientID field is set to the value of the last call.
+func (b *ControlPlaneManagedServiceIdentitiesApplyConfiguration) WithIngressMSIClientID(value string) *ControlPlaneManagedServiceIdentitiesApplyConfiguration {
+ b.IngressMSIClientID = &value
+ return b
+}
+
+// WithNetworkMSIClientID sets the NetworkMSIClientID field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the NetworkMSIClientID field is set to the value of the last call.
+func (b *ControlPlaneManagedServiceIdentitiesApplyConfiguration) WithNetworkMSIClientID(value string) *ControlPlaneManagedServiceIdentitiesApplyConfiguration {
+ b.NetworkMSIClientID = &value
+ return b
+}
+
+// WithStorageMSIClientID sets the StorageMSIClientID field in the declarative configuration to the given value
+// and returns the receiver, so that objects can be built by chaining "With" function invocations.
+// If called multiple times, the StorageMSIClientID field is set to the value of the last call.
+func (b *ControlPlaneManagedServiceIdentitiesApplyConfiguration) WithStorageMSIClientID(value string) *ControlPlaneManagedServiceIdentitiesApplyConfiguration {
+ b.StorageMSIClientID = &value
+ return b
+}
diff --git a/client/applyconfiguration/utils.go b/client/applyconfiguration/utils.go
index b05e1df7d4f..13e560efb4a 100644
--- a/client/applyconfiguration/utils.go
+++ b/client/applyconfiguration/utils.go
@@ -96,6 +96,8 @@ func ForKind(kind schema.GroupVersionKind) interface{} {
return &applyconfigurationhypershiftv1alpha1.ClusterNetworkingApplyConfiguration{}
case hypershiftv1alpha1.SchemeGroupVersion.WithKind("ClusterVersionStatus"):
return &applyconfigurationhypershiftv1alpha1.ClusterVersionStatusApplyConfiguration{}
+ case hypershiftv1alpha1.SchemeGroupVersion.WithKind("ControlPlaneManagedServiceIdentities"):
+ return &applyconfigurationhypershiftv1alpha1.ControlPlaneManagedServiceIdentitiesApplyConfiguration{}
case hypershiftv1alpha1.SchemeGroupVersion.WithKind("Diagnostics"):
return &applyconfigurationhypershiftv1alpha1.DiagnosticsApplyConfiguration{}
case hypershiftv1alpha1.SchemeGroupVersion.WithKind("DNSSpec"):
@@ -280,6 +282,8 @@ func ForKind(kind schema.GroupVersionKind) interface{} {
return &hypershiftv1beta1.ClusterNetworkingApplyConfiguration{}
case v1beta1.SchemeGroupVersion.WithKind("ClusterVersionStatus"):
return &hypershiftv1beta1.ClusterVersionStatusApplyConfiguration{}
+ case v1beta1.SchemeGroupVersion.WithKind("ControlPlaneManagedServiceIdentities"):
+ return &hypershiftv1beta1.ControlPlaneManagedServiceIdentitiesApplyConfiguration{}
case v1beta1.SchemeGroupVersion.WithKind("Diagnostics"):
return &hypershiftv1beta1.DiagnosticsApplyConfiguration{}
case v1beta1.SchemeGroupVersion.WithKind("DNSSpec"):
diff --git a/cmd/install/assets/hypershift-operator/hypershift.openshift.io_hostedclusters.yaml b/cmd/install/assets/hypershift-operator/hypershift.openshift.io_hostedclusters.yaml
index 493022c721e..569dac99eac 100644
--- a/cmd/install/assets/hypershift-operator/hypershift.openshift.io_hostedclusters.yaml
+++ b/cmd/install/assets/hypershift-operator/hypershift.openshift.io_hostedclusters.yaml
@@ -3472,6 +3472,36 @@ spec:
x-kubernetes-map-type: atomic
location:
type: string
+ msiClientIDs:
+ description: |-
+ MSIClientIDs contains the client IDs related to the managed identities needed for the following control plane
+ components: cluster-image-registry, cluster-ingress, cluster-storage, and cluster-network operators.
+ properties:
+ imageRegistryMSIClientID:
+ description: |-
+ ImageRegistryMSIClientID is the client ID of a pre-existing managed identity ID of that will be associated with
+ the cluster-image-registry-operator. The managed identity will be in a different resource group other than
+ ResourceGroupName.
+ type: string
+ ingressMSIClientID:
+ description: |-
+ IngressMSIClientID is the client ID of a pre-existing managed identity ID of that will be associated with
+ the cluster-ingress-operator. The managed identity will be in a different resource group other than
+ ResourceGroupName.
+ type: string
+ networkMSIClientID:
+ description: |-
+ NetworkMSIClientID is the client ID of a pre-existing managed identity ID of that will be associated with
+ the cluster-network-operator. The managed identity will be in a different resource group other than
+ ResourceGroupName.
+ type: string
+ storageMSIClientID:
+ description: |-
+ StorageMSIClientID is the client ID of a pre-existing managed identity ID of that will be associated with
+ the cluster-storage-operator. The managed identity will be in a different resource group other than
+ ResourceGroupName.
+ type: string
+ type: object
resourceGroup:
type: string
securityGroupID:
@@ -8251,6 +8281,36 @@ spec:
x-kubernetes-validations:
- message: Location is immutable
rule: self == oldSelf
+ msiClientIDs:
+ description: |-
+ MSIClientIDs contains the client IDs related to the managed identities needed for the following control plane
+ components: cluster-image-registry, cluster-ingress, cluster-storage, and cluster-network operators.
+ properties:
+ imageRegistryMSIClientID:
+ description: |-
+ ImageRegistryMSIClientID is the client ID of a pre-existing managed identity ID of that will be associated with
+ the cluster-image-registry-operator. The managed identity will be in a different resource group other than
+ ResourceGroupName.
+ type: string
+ ingressMSIClientID:
+ description: |-
+ IngressMSIClientID is the client ID of a pre-existing managed identity ID of that will be associated with
+ the cluster-ingress-operator. The managed identity will be in a different resource group other than
+ ResourceGroupName.
+ type: string
+ networkMSIClientID:
+ description: |-
+ NetworkMSIClientID is the client ID of a pre-existing managed identity ID of that will be associated with
+ the cluster-network-operator. The managed identity will be in a different resource group other than
+ ResourceGroupName.
+ type: string
+ storageMSIClientID:
+ description: |-
+ StorageMSIClientID is the client ID of a pre-existing managed identity ID of that will be associated with
+ the cluster-storage-operator. The managed identity will be in a different resource group other than
+ ResourceGroupName.
+ type: string
+ type: object
resourceGroup:
default: default
description: |-
diff --git a/cmd/install/assets/hypershift-operator/hypershift.openshift.io_hostedcontrolplanes.yaml b/cmd/install/assets/hypershift-operator/hypershift.openshift.io_hostedcontrolplanes.yaml
index ec121352c2f..03c758a4e50 100644
--- a/cmd/install/assets/hypershift-operator/hypershift.openshift.io_hostedcontrolplanes.yaml
+++ b/cmd/install/assets/hypershift-operator/hypershift.openshift.io_hostedcontrolplanes.yaml
@@ -3458,6 +3458,36 @@ spec:
x-kubernetes-map-type: atomic
location:
type: string
+ msiClientIDs:
+ description: |-
+ MSIClientIDs contains the client IDs related to the managed identities needed for the following control plane
+ components: cluster-image-registry, cluster-ingress, cluster-storage, and cluster-network operators.
+ properties:
+ imageRegistryMSIClientID:
+ description: |-
+ ImageRegistryMSIClientID is the client ID of a pre-existing managed identity ID of that will be associated with
+ the cluster-image-registry-operator. The managed identity will be in a different resource group other than
+ ResourceGroupName.
+ type: string
+ ingressMSIClientID:
+ description: |-
+ IngressMSIClientID is the client ID of a pre-existing managed identity ID of that will be associated with
+ the cluster-ingress-operator. The managed identity will be in a different resource group other than
+ ResourceGroupName.
+ type: string
+ networkMSIClientID:
+ description: |-
+ NetworkMSIClientID is the client ID of a pre-existing managed identity ID of that will be associated with
+ the cluster-network-operator. The managed identity will be in a different resource group other than
+ ResourceGroupName.
+ type: string
+ storageMSIClientID:
+ description: |-
+ StorageMSIClientID is the client ID of a pre-existing managed identity ID of that will be associated with
+ the cluster-storage-operator. The managed identity will be in a different resource group other than
+ ResourceGroupName.
+ type: string
+ type: object
resourceGroup:
type: string
securityGroupID:
@@ -8215,6 +8245,36 @@ spec:
x-kubernetes-validations:
- message: Location is immutable
rule: self == oldSelf
+ msiClientIDs:
+ description: |-
+ MSIClientIDs contains the client IDs related to the managed identities needed for the following control plane
+ components: cluster-image-registry, cluster-ingress, cluster-storage, and cluster-network operators.
+ properties:
+ imageRegistryMSIClientID:
+ description: |-
+ ImageRegistryMSIClientID is the client ID of a pre-existing managed identity ID of that will be associated with
+ the cluster-image-registry-operator. The managed identity will be in a different resource group other than
+ ResourceGroupName.
+ type: string
+ ingressMSIClientID:
+ description: |-
+ IngressMSIClientID is the client ID of a pre-existing managed identity ID of that will be associated with
+ the cluster-ingress-operator. The managed identity will be in a different resource group other than
+ ResourceGroupName.
+ type: string
+ networkMSIClientID:
+ description: |-
+ NetworkMSIClientID is the client ID of a pre-existing managed identity ID of that will be associated with
+ the cluster-network-operator. The managed identity will be in a different resource group other than
+ ResourceGroupName.
+ type: string
+ storageMSIClientID:
+ description: |-
+ StorageMSIClientID is the client ID of a pre-existing managed identity ID of that will be associated with
+ the cluster-storage-operator. The managed identity will be in a different resource group other than
+ ResourceGroupName.
+ type: string
+ type: object
resourceGroup:
default: default
description: |-
diff --git a/control-plane-operator/controllers/hostedcontrolplane/cno/clusternetworkoperator.go b/control-plane-operator/controllers/hostedcontrolplane/cno/clusternetworkoperator.go
index 3f7506a295a..47253308fd4 100644
--- a/control-plane-operator/controllers/hostedcontrolplane/cno/clusternetworkoperator.go
+++ b/control-plane-operator/controllers/hostedcontrolplane/cno/clusternetworkoperator.go
@@ -60,22 +60,25 @@ type Images struct {
}
type Params struct {
- ReleaseVersion string
- AvailabilityProberImage string
- HostedClusterName string
- CAConfigMap string
- CAConfigMapKey string
- APIServerAddress string
- APIServerPort int32
- TokenAudience string
- Images Images
- OwnerRef config.OwnerRef
- DeploymentConfig config.DeploymentConfig
- IsPrivate bool
- DefaultIngressDomain string
+ ReleaseVersion string
+ AvailabilityProberImage string
+ HostedClusterName string
+ CAConfigMap string
+ CAConfigMapKey string
+ APIServerAddress string
+ APIServerPort int32
+ TokenAudience string
+ Images Images
+ OwnerRef config.OwnerRef
+ DeploymentConfig config.DeploymentConfig
+ platform hyperv1.PlatformType
+ IsPrivate bool
+ DefaultIngressDomain string
+ NetworkMSIClientIdExists bool
}
func NewParams(hcp *hyperv1.HostedControlPlane, version string, releaseImageProvider *imageprovider.ReleaseImageProvider, userReleaseImageProvider *imageprovider.ReleaseImageProvider, setDefaultSecurityContext bool, defaultIngressDomain string) Params {
+ networkMSIClientIdExists := hcp.Spec.Platform.Type == hyperv1.AzurePlatform && hcp.Spec.Platform.Azure.MSIClientIDs != nil && len(hcp.Spec.Platform.Azure.MSIClientIDs.NetworkMSIClientID) > 0
p := Params{
Images: Images{
NetworkOperator: releaseImageProvider.GetImage("cluster-network-operator"),
@@ -99,15 +102,17 @@ func NewParams(hcp *hyperv1.HostedControlPlane, version string, releaseImageProv
CLI: releaseImageProvider.GetImage("cli"),
Socks5Proxy: releaseImageProvider.GetImage("socks5-proxy"),
},
- ReleaseVersion: version,
- AvailabilityProberImage: releaseImageProvider.GetImage(util.AvailabilityProberImageName),
- OwnerRef: config.OwnerRefFrom(hcp),
- IsPrivate: util.IsPrivateHCP(hcp),
- HostedClusterName: hcp.Name,
- TokenAudience: hcp.Spec.IssuerURL,
- DefaultIngressDomain: defaultIngressDomain,
- CAConfigMap: caConfigMap,
- CAConfigMapKey: caConfigMapKey,
+ ReleaseVersion: version,
+ AvailabilityProberImage: releaseImageProvider.GetImage(util.AvailabilityProberImageName),
+ OwnerRef: config.OwnerRefFrom(hcp),
+ IsPrivate: util.IsPrivateHCP(hcp),
+ HostedClusterName: hcp.Name,
+ TokenAudience: hcp.Spec.IssuerURL,
+ DefaultIngressDomain: defaultIngressDomain,
+ CAConfigMap: caConfigMap,
+ CAConfigMapKey: caConfigMapKey,
+ platform: hcp.Spec.Platform.Type,
+ NetworkMSIClientIdExists: networkMSIClientIdExists,
}
p.DeploymentConfig.AdditionalLabels = map[string]string{
@@ -566,6 +571,15 @@ if [[ -n $sc ]]; then kubectl --kubeconfig $kc delete --ignore-not-found validat
}
o.WaitForInfrastructureResource = true
})
+
+ if params.NetworkMSIClientIdExists {
+ dep.Spec.Template.Spec.Containers[0].Env = append(dep.Spec.Template.Spec.Containers[0].Env,
+ corev1.EnvVar{
+ Name: "AZURE_MSI_AUTHENTICATION",
+ Value: "true",
+ })
+ }
+
return nil
}
diff --git a/control-plane-operator/controllers/hostedcontrolplane/ingressoperator/ingressoperator.go b/control-plane-operator/controllers/hostedcontrolplane/ingressoperator/ingressoperator.go
index 39d0442f6d5..a22fc00352f 100644
--- a/control-plane-operator/controllers/hostedcontrolplane/ingressoperator/ingressoperator.go
+++ b/control-plane-operator/controllers/hostedcontrolplane/ingressoperator/ingressoperator.go
@@ -31,30 +31,33 @@ const (
)
type Params struct {
- IngressOperatorImage string
- IngressCanaryImage string
- HAProxyRouterImage string
- KubeRBACProxyImage string
- ReleaseVersion string
- TokenMinterImage string
- AvailabilityProberImage string
- ProxyImage string
- Platform hyperv1.PlatformType
- DeploymentConfig config.DeploymentConfig
- ProxyConfig *configv1.ProxySpec
- NoProxy string
+ IngressOperatorImage string
+ IngressCanaryImage string
+ HAProxyRouterImage string
+ KubeRBACProxyImage string
+ ReleaseVersion string
+ TokenMinterImage string
+ AvailabilityProberImage string
+ ProxyImage string
+ Platform hyperv1.PlatformType
+ DeploymentConfig config.DeploymentConfig
+ ProxyConfig *configv1.ProxySpec
+ NoProxy string
+ IngressMSIClientIdExists bool
}
func NewParams(hcp *hyperv1.HostedControlPlane, version string, releaseImageProvider *imageprovider.ReleaseImageProvider, userReleaseImageProvider *imageprovider.ReleaseImageProvider, setDefaultSecurityContext bool, platform hyperv1.PlatformType) Params {
+ ingressMSIClientIdExists := platform == hyperv1.AzurePlatform && hcp.Spec.Platform.Azure.MSIClientIDs != nil && len(hcp.Spec.Platform.Azure.MSIClientIDs.IngressMSIClientID) > 0
p := Params{
- IngressOperatorImage: releaseImageProvider.GetImage("cluster-ingress-operator"),
- IngressCanaryImage: userReleaseImageProvider.GetImage("cluster-ingress-operator"),
- HAProxyRouterImage: userReleaseImageProvider.GetImage("haproxy-router"),
- ReleaseVersion: version,
- TokenMinterImage: releaseImageProvider.GetImage("token-minter"),
- ProxyImage: releaseImageProvider.GetImage(util.CPOImageName),
- AvailabilityProberImage: releaseImageProvider.GetImage(util.AvailabilityProberImageName),
- Platform: platform,
+ IngressOperatorImage: releaseImageProvider.GetImage("cluster-ingress-operator"),
+ IngressCanaryImage: userReleaseImageProvider.GetImage("cluster-ingress-operator"),
+ HAProxyRouterImage: userReleaseImageProvider.GetImage("haproxy-router"),
+ ReleaseVersion: version,
+ TokenMinterImage: releaseImageProvider.GetImage("token-minter"),
+ ProxyImage: releaseImageProvider.GetImage(util.CPOImageName),
+ AvailabilityProberImage: releaseImageProvider.GetImage(util.AvailabilityProberImageName),
+ Platform: platform,
+ IngressMSIClientIdExists: ingressMSIClientIdExists,
}
if hcp.Spec.Configuration != nil {
p.ProxyConfig = hcp.Spec.Configuration.Proxy
@@ -152,7 +155,8 @@ func ReconcileDeployment(dep *appsv1.Deployment, params Params, platformType hyp
{Name: "konnectivity-proxy-ca", VolumeSource: corev1.VolumeSource{ConfigMap: &corev1.ConfigMapVolumeSource{LocalObjectReference: corev1.LocalObjectReference{Name: manifests.KonnectivityCAConfigMap("").Name}, DefaultMode: ptr.To[int32](0640)}}},
}
- if params.Platform == hyperv1.AWSPlatform {
+ switch params.Platform {
+ case hyperv1.AWSPlatform:
dep.Spec.Template.Spec.Containers[0].VolumeMounts = append(dep.Spec.Template.Spec.Containers[0].VolumeMounts,
corev1.VolumeMount{Name: "serviceaccount-token", MountPath: "/var/run/secrets/openshift/serviceaccount"},
)
@@ -185,6 +189,14 @@ func ReconcileDeployment(dep *appsv1.Deployment, params Params, platformType hyp
})
dep.Spec.Template.Spec.Volumes = append(dep.Spec.Template.Spec.Volumes,
corev1.Volume{Name: "serviceaccount-token", VolumeSource: corev1.VolumeSource{EmptyDir: &corev1.EmptyDirVolumeSource{}}})
+ case hyperv1.AzurePlatform:
+ if params.IngressMSIClientIdExists {
+ dep.Spec.Template.Spec.Containers[0].Env = append(dep.Spec.Template.Spec.Containers[0].Env,
+ corev1.EnvVar{
+ Name: "AZURE_MSI_AUTHENTICATION",
+ Value: "true",
+ })
+ }
}
util.AvailabilityProber(
diff --git a/control-plane-operator/controllers/hostedcontrolplane/registryoperator/reconcile.go b/control-plane-operator/controllers/hostedcontrolplane/registryoperator/reconcile.go
index 31f1a347447..0fd3ef8d2b0 100644
--- a/control-plane-operator/controllers/hostedcontrolplane/registryoperator/reconcile.go
+++ b/control-plane-operator/controllers/hostedcontrolplane/registryoperator/reconcile.go
@@ -97,17 +97,19 @@ var (
)
type Params struct {
- operatorImage string
- tokenMinterImage string
- platform hyperv1.PlatformType
- issuerURL string
- releaseVersion string
- registryImage string
- prunerImage string
- deploymentConfig config.DeploymentConfig
+ operatorImage string
+ tokenMinterImage string
+ platform hyperv1.PlatformType
+ issuerURL string
+ releaseVersion string
+ registryImage string
+ prunerImage string
+ deploymentConfig config.DeploymentConfig
+ ImageRegistryClientIdExists bool
}
func NewParams(hcp *hyperv1.HostedControlPlane, version string, releaseImageProvider *imageprovider.ReleaseImageProvider, userReleaseImageProvider *imageprovider.ReleaseImageProvider, setDefaultSecurityContext bool) Params {
+ imageRegistryClientIdExists := hcp.Spec.Platform.Type == hyperv1.AzurePlatform && hcp.Spec.Platform.Azure.MSIClientIDs != nil && len(hcp.Spec.Platform.Azure.MSIClientIDs.ImageRegistryMSIClientID) > 0
params := Params{
operatorImage: releaseImageProvider.GetImage("cluster-image-registry-operator"),
tokenMinterImage: releaseImageProvider.GetImage("token-minter"),
@@ -142,7 +144,9 @@ func NewParams(hcp *hyperv1.HostedControlPlane, version string, releaseImageProv
},
},
},
+ ImageRegistryClientIdExists: imageRegistryClientIdExists,
}
+
params.deploymentConfig.SetRestartAnnotation(hcp.ObjectMeta)
if hcp.Annotations[hyperv1.ControlPlanePriorityClass] != "" {
params.deploymentConfig.Scheduling.PriorityClass = hcp.Annotations[hyperv1.ControlPlanePriorityClass]
@@ -192,6 +196,14 @@ func ReconcileDeployment(deployment *appsv1.Deployment, params Params) error {
MountPath: "/var/run/secrets/openshift/serviceaccount",
},
)
+ case hyperv1.AzurePlatform:
+ if params.ImageRegistryClientIdExists {
+ deployment.Spec.Template.Spec.Containers[0].Env = append(deployment.Spec.Template.Spec.Containers[0].Env,
+ corev1.EnvVar{
+ Name: "AZURE_MSI_AUTHENTICATION",
+ Value: "true",
+ })
+ }
}
params.deploymentConfig.ApplyTo(deployment)
diff --git a/control-plane-operator/controllers/hostedcontrolplane/storage/operator.go b/control-plane-operator/controllers/hostedcontrolplane/storage/operator.go
index 03f559846de..c71d0a85f81 100644
--- a/control-plane-operator/controllers/hostedcontrolplane/storage/operator.go
+++ b/control-plane-operator/controllers/hostedcontrolplane/storage/operator.go
@@ -31,6 +31,14 @@ func ReconcileOperatorDeployment(
case "cluster-storage-operator":
deployment.Spec.Template.Spec.Containers[i].Image = params.StorageOperatorImage
params.ImageReplacer.replaceEnvVars(deployment.Spec.Template.Spec.Containers[i].Env)
+
+ if params.platform == hyperv1.AzurePlatform && params.StorageMSIClientIdExists {
+ deployment.Spec.Template.Spec.Containers[i].Env = append(deployment.Spec.Template.Spec.Containers[i].Env,
+ corev1.EnvVar{
+ Name: "AZURE_MSI_AUTHENTICATION",
+ Value: "true",
+ })
+ }
}
}
diff --git a/control-plane-operator/controllers/hostedcontrolplane/storage/params.go b/control-plane-operator/controllers/hostedcontrolplane/storage/params.go
index be4c3c6615d..e2d1ee0d080 100644
--- a/control-plane-operator/controllers/hostedcontrolplane/storage/params.go
+++ b/control-plane-operator/controllers/hostedcontrolplane/storage/params.go
@@ -13,11 +13,13 @@ const (
)
type Params struct {
- OwnerRef config.OwnerRef
- StorageOperatorImage string
- ImageReplacer *environmentReplacer
+ StorageMSIClientIdExists bool
+ StorageOperatorImage string
+ AvailabilityProberImage string
+ OwnerRef config.OwnerRef
+ ImageReplacer *environmentReplacer
+ platform hyperv1.PlatformType
- AvailabilityProberImage string
config.DeploymentConfig
}
@@ -32,11 +34,14 @@ func NewParams(
ir.setVersions(version)
ir.setOperatorImageReferences(releaseImageProvider.ComponentImages(), userReleaseImageProvider.ComponentImages())
+ storageMSIClientIdExists := hcp.Spec.Platform.Type == hyperv1.AzurePlatform && hcp.Spec.Platform.Azure.MSIClientIDs != nil && len(hcp.Spec.Platform.Azure.MSIClientIDs.StorageMSIClientID) > 0
params := Params{
- OwnerRef: config.OwnerRefFrom(hcp),
- StorageOperatorImage: releaseImageProvider.GetImage(storageOperatorImageName),
- AvailabilityProberImage: releaseImageProvider.GetImage(util.AvailabilityProberImageName),
- ImageReplacer: ir,
+ OwnerRef: config.OwnerRefFrom(hcp),
+ StorageOperatorImage: releaseImageProvider.GetImage(storageOperatorImageName),
+ AvailabilityProberImage: releaseImageProvider.GetImage(util.AvailabilityProberImageName),
+ ImageReplacer: ir,
+ StorageMSIClientIdExists: storageMSIClientIdExists,
+ platform: hcp.Spec.Platform.Type,
}
params.DeploymentConfig = config.DeploymentConfig{
AdditionalLabels: map[string]string{
diff --git a/docs/content/reference/api.md b/docs/content/reference/api.md
index 46dc8e60e7e..a88842e0646 100644
--- a/docs/content/reference/api.md
+++ b/docs/content/reference/api.md
@@ -2680,6 +2680,21 @@ configuration for the Azure cloud provider, aka Azure cloud controller manager (
expected to exist under the same subscription as SubscriptionID.
+
+
+msiClientIDs
+
+
+ControlPlaneManagedServiceIdentities
+
+
+ |
+
+(Optional)
+ MSIClientIDs contains the client IDs related to the managed identities needed for the following control plane
+components: cluster-image-registry, cluster-ingress, cluster-storage, and cluster-network operators.
+ |
+
###CIDRBlock { #hypershift.openshift.io/v1beta1.CIDRBlock }
@@ -3400,6 +3415,75 @@ and reports missing images if any.
+###ControlPlaneManagedServiceIdentities { #hypershift.openshift.io/v1beta1.ControlPlaneManagedServiceIdentities }
+
+(Appears on:
+AzurePlatformSpec)
+
+
+
+
+
+
+| Field |
+Description |
+
+
+
+
+
+imageRegistryMSIClientID
+
+string
+
+ |
+
+ ImageRegistryMSIClientID is the client ID of a pre-existing managed identity ID of that will be associated with
+the cluster-image-registry-operator. The managed identity will be in a different resource group other than
+ResourceGroupName.
+ |
+
+
+
+ingressMSIClientID
+
+string
+
+ |
+
+ IngressMSIClientID is the client ID of a pre-existing managed identity ID of that will be associated with
+the cluster-ingress-operator. The managed identity will be in a different resource group other than
+ResourceGroupName.
+ |
+
+
+
+networkMSIClientID
+
+string
+
+ |
+
+ NetworkMSIClientID is the client ID of a pre-existing managed identity ID of that will be associated with
+the cluster-network-operator. The managed identity will be in a different resource group other than
+ResourceGroupName.
+ |
+
+
+
+storageMSIClientID
+
+string
+
+ |
+
+ StorageMSIClientID is the client ID of a pre-existing managed identity ID of that will be associated with
+the cluster-storage-operator. The managed identity will be in a different resource group other than
+ResourceGroupName.
+ |
+
+
+
###DNSSpec { #hypershift.openshift.io/v1beta1.DNSSpec }
(Appears on:
diff --git a/hack/app-sre/saas_template.yaml b/hack/app-sre/saas_template.yaml
index 37398f076b2..936539c2a7f 100644
--- a/hack/app-sre/saas_template.yaml
+++ b/hack/app-sre/saas_template.yaml
@@ -49379,6 +49379,36 @@ objects:
x-kubernetes-map-type: atomic
location:
type: string
+ msiClientIDs:
+ description: |-
+ MSIClientIDs contains the client IDs related to the managed identities needed for the following control plane
+ components: cluster-image-registry, cluster-ingress, cluster-storage, and cluster-network operators.
+ properties:
+ imageRegistryMSIClientID:
+ description: |-
+ ImageRegistryMSIClientID is the client ID of a pre-existing managed identity ID of that will be associated with
+ the cluster-image-registry-operator. The managed identity will be in a different resource group other than
+ ResourceGroupName.
+ type: string
+ ingressMSIClientID:
+ description: |-
+ IngressMSIClientID is the client ID of a pre-existing managed identity ID of that will be associated with
+ the cluster-ingress-operator. The managed identity will be in a different resource group other than
+ ResourceGroupName.
+ type: string
+ networkMSIClientID:
+ description: |-
+ NetworkMSIClientID is the client ID of a pre-existing managed identity ID of that will be associated with
+ the cluster-network-operator. The managed identity will be in a different resource group other than
+ ResourceGroupName.
+ type: string
+ storageMSIClientID:
+ description: |-
+ StorageMSIClientID is the client ID of a pre-existing managed identity ID of that will be associated with
+ the cluster-storage-operator. The managed identity will be in a different resource group other than
+ ResourceGroupName.
+ type: string
+ type: object
resourceGroup:
type: string
securityGroupID:
@@ -54175,6 +54205,36 @@ objects:
x-kubernetes-validations:
- message: Location is immutable
rule: self == oldSelf
+ msiClientIDs:
+ description: |-
+ MSIClientIDs contains the client IDs related to the managed identities needed for the following control plane
+ components: cluster-image-registry, cluster-ingress, cluster-storage, and cluster-network operators.
+ properties:
+ imageRegistryMSIClientID:
+ description: |-
+ ImageRegistryMSIClientID is the client ID of a pre-existing managed identity ID of that will be associated with
+ the cluster-image-registry-operator. The managed identity will be in a different resource group other than
+ ResourceGroupName.
+ type: string
+ ingressMSIClientID:
+ description: |-
+ IngressMSIClientID is the client ID of a pre-existing managed identity ID of that will be associated with
+ the cluster-ingress-operator. The managed identity will be in a different resource group other than
+ ResourceGroupName.
+ type: string
+ networkMSIClientID:
+ description: |-
+ NetworkMSIClientID is the client ID of a pre-existing managed identity ID of that will be associated with
+ the cluster-network-operator. The managed identity will be in a different resource group other than
+ ResourceGroupName.
+ type: string
+ storageMSIClientID:
+ description: |-
+ StorageMSIClientID is the client ID of a pre-existing managed identity ID of that will be associated with
+ the cluster-storage-operator. The managed identity will be in a different resource group other than
+ ResourceGroupName.
+ type: string
+ type: object
resourceGroup:
default: default
description: |-
@@ -59667,6 +59727,36 @@ objects:
x-kubernetes-map-type: atomic
location:
type: string
+ msiClientIDs:
+ description: |-
+ MSIClientIDs contains the client IDs related to the managed identities needed for the following control plane
+ components: cluster-image-registry, cluster-ingress, cluster-storage, and cluster-network operators.
+ properties:
+ imageRegistryMSIClientID:
+ description: |-
+ ImageRegistryMSIClientID is the client ID of a pre-existing managed identity ID of that will be associated with
+ the cluster-image-registry-operator. The managed identity will be in a different resource group other than
+ ResourceGroupName.
+ type: string
+ ingressMSIClientID:
+ description: |-
+ IngressMSIClientID is the client ID of a pre-existing managed identity ID of that will be associated with
+ the cluster-ingress-operator. The managed identity will be in a different resource group other than
+ ResourceGroupName.
+ type: string
+ networkMSIClientID:
+ description: |-
+ NetworkMSIClientID is the client ID of a pre-existing managed identity ID of that will be associated with
+ the cluster-network-operator. The managed identity will be in a different resource group other than
+ ResourceGroupName.
+ type: string
+ storageMSIClientID:
+ description: |-
+ StorageMSIClientID is the client ID of a pre-existing managed identity ID of that will be associated with
+ the cluster-storage-operator. The managed identity will be in a different resource group other than
+ ResourceGroupName.
+ type: string
+ type: object
resourceGroup:
type: string
securityGroupID:
@@ -64441,6 +64531,36 @@ objects:
x-kubernetes-validations:
- message: Location is immutable
rule: self == oldSelf
+ msiClientIDs:
+ description: |-
+ MSIClientIDs contains the client IDs related to the managed identities needed for the following control plane
+ components: cluster-image-registry, cluster-ingress, cluster-storage, and cluster-network operators.
+ properties:
+ imageRegistryMSIClientID:
+ description: |-
+ ImageRegistryMSIClientID is the client ID of a pre-existing managed identity ID of that will be associated with
+ the cluster-image-registry-operator. The managed identity will be in a different resource group other than
+ ResourceGroupName.
+ type: string
+ ingressMSIClientID:
+ description: |-
+ IngressMSIClientID is the client ID of a pre-existing managed identity ID of that will be associated with
+ the cluster-ingress-operator. The managed identity will be in a different resource group other than
+ ResourceGroupName.
+ type: string
+ networkMSIClientID:
+ description: |-
+ NetworkMSIClientID is the client ID of a pre-existing managed identity ID of that will be associated with
+ the cluster-network-operator. The managed identity will be in a different resource group other than
+ ResourceGroupName.
+ type: string
+ storageMSIClientID:
+ description: |-
+ StorageMSIClientID is the client ID of a pre-existing managed identity ID of that will be associated with
+ the cluster-storage-operator. The managed identity will be in a different resource group other than
+ ResourceGroupName.
+ type: string
+ type: object
resourceGroup:
default: default
description: |-