### What happened?

On Kubernetes 1.29 with PersistentVolumeLabel admission plugin enabled and no in-tree cloud provider configured in the kube-apiserver, the admission plugins adds label `topology.kubernetes.io/region: ""` to in-tree Azure Disk PVs.

The label is completely wrong - the Azure cloud provider is not initialized and [this](https://github.com/kubernetes/kubernetes/blob/d9d45306df052aa5824fd8b2dab4e61f5ecc481c/staging/src/k8s.io/legacy-cloud-providers/azure/azure_managedDiskController.go#L368) just provides empty string. This makes any pod that uses these PVs unschedulable.

As result, all in-tree PVs dynamically provisioned using CSI migration are not usable, because they have a wrong region.

### What did you expect to happen?

When there is no cloud config provided, PersistentVolumeLabel does not add any labels to PVs. PVs created by the CSI driver + CSI migration already have correct `nodeAffinity`, the labels are useless.

### How can we reproduce it (as minimally and precisely as possible)?

1. Enable PersistentVolumeLabel admission in your cluster and disable any cloud providers. It does not need access to Azure, you can run it anywhere.

    Example for `local-up-cluster.sh`:

    ```
    ENABLE_ADMISSION_PLUGINS="NamespaceLifecycle,LimitRanger,ServiceAccount,DefaultStorageClass,DefaultTolerationSeconds,Priority,MutatingAdmissionWebhook,ValidatingAdmissionWebhook,ResourceQuota,NodeRestriction,PersistentVolumeLabel"
    hack/local-up-cluster.sh
    ```

2. Create in-tree Azure Disk PV. Again, we're testing just the admission, we're not going to use the PV in a pod, so no access to Azure is needed. UUIDs were sanitized ;-)

    ```
    $ kubectl create -f <<EOF
    
    apiVersion: v1
    kind: PersistentVolume
    metadata:
      name: myvol
    spec:
      accessModes:
      - ReadWriteOnce
      capacity:
        storage: 5Gi
      azureDisk:
          cachingMode: ReadWrite
          diskName: pvc-ade30d58-5a51-4a62-a83a-142267b74f9e
          diskURI: /subscriptions/4347f140-6c74-4199-b4fc-1938eb6c16c0/resourceGroups/jsafrane-h-jsafrane-h-kxvpr/providers/Microsoft.Compute/disks/pvc-ade30d58-5a51-4a62-a83a-142267b74f9e
          fsType: ext4
          kind: Managed
          readOnly: false
    
    EOF
    ```

Actual result: wrong region label on the PV:

```
$ kubectl get pv --show-labels
LABELS
topology.kubernetes.io/region=
```

Expected result: no labels on the PV.

### Anything else we need to know?

_No response_

### Kubernetes version

<details>

```console
$ kubectl version
Server Version: v1.29.3
```

</details>


### Cloud provider

<details>
None
</details>


### OS version

_No response_

### Install tools

<details>

</details>


### Container runtime (CRI) and version (if applicable)

<details>

</details>


### Related plugins (CNI, CSI, ...) and versions (if applicable)

<details>

</details>

PersistentVolumeLabel admission plugin provides wrong Azure region
This is a GitHub Issue
repo:kubernetes
owner:kubernetes
Title : PersistentVolumeLabel admission plugin provides wrong Azure region
Issue date:

--- start body ---
### What happened?

On Kubernetes 1.29 with PersistentVolumeLabel admission plugin enabled and no in-tree cloud provider configured in the kube-apiserver, the admission plugins adds label `topology.kubernetes.io/region: ""` to in-tree Azure Disk PVs.

The label is completely wrong - the Azure cloud provider is not initialized and [this](https://github.com/kubernetes/kubernetes/blob/d9d45306df052aa5824fd8b2dab4e61f5ecc481c/staging/src/k8s.io/legacy-cloud-providers/azure/azure_managedDiskController.go#L368) just provides empty string. This makes any pod that uses these PVs unschedulable.

As result, all in-tree PVs dynamically provisioned using CSI migration are not usable, because they have a wrong region.

### What did you expect to happen?

When there is no cloud config provided, PersistentVolumeLabel does not add any labels to PVs. PVs created by the CSI driver + CSI migration already have correct `nodeAffinity`, the labels are useless.

### How can we reproduce it (as minimally and precisely as possible)?

1. Enable PersistentVolumeLabel admission in your cluster and disable any cloud providers. It does not need access to Azure, you can run it anywhere.

    Example for `local-up-cluster.sh`:

    ```
    ENABLE_ADMISSION_PLUGINS="NamespaceLifecycle,LimitRanger,ServiceAccount,DefaultStorageClass,DefaultTolerationSeconds,Priority,MutatingAdmissionWebhook,ValidatingAdmissionWebhook,ResourceQuota,NodeRestriction,PersistentVolumeLabel"
    hack/local-up-cluster.sh
    ```

2. Create in-tree Azure Disk PV. Again, we're testing just the admission, we're not going to use the PV in a pod, so no access to Azure is needed. UUIDs were sanitized ;-)

    ```
    $ kubectl create -f <<EOF
    
    apiVersion: v1
    kind: PersistentVolume
    metadata:
      name: myvol
    spec:
      accessModes:
      - ReadWriteOnce
      capacity:
        storage: 5Gi
      azureDisk:
          cachingMode: ReadWrite
          diskName: pvc-ade30d58-5a51-4a62-a83a-142267b74f9e
          diskURI: /subscriptions/4347f140-6c74-4199-b4fc-1938eb6c16c0/resourceGroups/jsafrane-h-jsafrane-h-kxvpr/providers/Microsoft.Compute/disks/pvc-ade30d58-5a51-4a62-a83a-142267b74f9e
          fsType: ext4
          kind: Managed
          readOnly: false
    
    EOF
    ```

Actual result: wrong region label on the PV:

```
$ kubectl get pv --show-labels
LABELS
topology.kubernetes.io/region=
```

Expected result: no labels on the PV.

### Anything else we need to know?

_No response_

### Kubernetes version

<details>

```console
$ kubectl version
Server Version: v1.29.3
```

</details>


### Cloud provider

<details>
None
</details>


### OS version

_No response_

### Install tools

<details>

</details>


### Container runtime (CRI) and version (if applicable)

<details>

</details>


### Related plugins (CNI, CSI, ...) and versions (if applicable)

<details>

</details>

--- end body ---
