---
title: v1.9 to v1.10
---

Follow the [Regular Upgrading Process](./README.md).

## Upgrading Notable Changes

### API Changes

* Introduce a new API named `WorkloadRebalancer` to support rescheduling.
* Introduced `ServiceAnnotations` to the `Karmada` API to provide an extra set of annotations to annotate karmada apiserver services.
* Add a short name `ric` for resourceinterpretercustomizations CRD resource.

### Deprecation

* The following labels have been deprecated from release `v1.8.0` and now have been removed:
  * `resourcebinding.karmada.io/uid`
  * `clusterresourcebinding.karmada.io/uid`
  * `work.karmada.io/uid`
  * `propagationpolicy.karmada.io/uid`
  * `clusterpropagationpolicy.karmada.io/uid`
* The following labels now have been deprecated and removed:
  * `resourcebinding.karmada.io/key` replaced by `resourcebinding.karmada.io/permanent-id`
  * `clusterresourcebinding.karmada.io/key` replaced by `clusterresourcebinding.karmada.io/permanent-id`
  * `work.karmada.io/namespace` replaced by `work.karmada.io/permanent-id`
  * `work.karmada.io/name` replaced by `work.karmada.io/permanent-id`
  * `resourcebinding.karmada.io/depended-id`
* `karmadactl`: The flag `--cluster-zone`, which was deprecated in release 1.7 and replaced by `--cluster-zones`, now has been removed.

### Webhook Configuration

In v1.10, we move the logic of generating Permanent ID from the karmada-controller-manager component to the Karmada-webhook component, so you need to add mutate configuration for ResourceBinding/ClusterResourceBinding/MultiClusterService type resources in the `mutating-config` MutatingWebhookConfiguration resource object. The specific configuration is as follows:

```yaml
  - name: resourcebinding.karmada.io
    rules:
      - operations: [ "CREATE" ]
        apiGroups: [ "work.karmada.io" ]
        apiVersions: [ "*" ]
        resources: [ "resourcebindings" ]
        scope: "Namespaced"
    clientConfig:
      url: https://karmada-webhook.karmada-system.svc:443/mutate-resourcebinding
      caBundle: {{caBundle}}
    failurePolicy: Fail
    sideEffects: None
    admissionReviewVersions: [ "v1" ]
    timeoutSeconds: 3
  - name: clusterresourcebinding.karmada.io
    rules:
      - operations: [ "CREATE" ]
        apiGroups: [ "work.karmada.io" ]
        apiVersions: [ "*" ]
        resources: [ "clusterresourcebindings" ]
        scope: "Cluster"
    clientConfig:
      url: https://karmada-webhook.karmada-system.svc:443/mutate-clusterresourcebinding
      caBundle: {{caBundle}}
    failurePolicy: Fail
    sideEffects: None
    admissionReviewVersions: [ "v1" ]
    timeoutSeconds: 3
  - name: multiclusterservice.karmada.io
    rules:
      - operations: [ "CREATE", "UPDATE" ]
        apiGroups: [ "networking.karmada.io" ]
        apiVersions: [ "*" ]
        resources: [ "multiclusterservices" ]
        scope: "Namespaced"
    clientConfig:
      url: https://karmada-webhook.karmada-system.svc:443/mutate-multiclusterservice
      caBundle: {{caBundle}}
    failurePolicy: Fail
    sideEffects: None
    admissionReviewVersions: [ "v1" ]
    timeoutSeconds: 3
```

### karmada-search

* The feature APIPriorityAndFairness now has moved to GA, thus not allowed to be disabled by feature gates. You have to remove it from the `--feature-gates` flag.

### karmada-aggregated-apiserver

* The feature APIPriorityAndFairness now has moved to GA, thus not allowed to be disabled by feature gates. You have to remove it from the `--feature-gates` flag.

Please refer to [v1.10.0 Release Notes](https://github.com/karmada-io/karmada/releases/tag/v1.10.0) for more details.
