Upgrade a directly connected Azure Arc data controller using the portal

This article describes how to upgrade a directly connected Azure Arc-enabled data controller using the Azure portal.

During a data controller upgrade, portions of the data control plane such as Custom Resource Definitions (CRDs) and containers may be upgraded. An upgrade of the data controller will not cause downtime for the data services (SQL Managed Instance or PostgreSQL server).


You will need a directly connected data controller with the imageTag v1.0.0_2021-07-30 or later.

To check the version, run:

kubectl get datacontrollers -n <namespace> -o custom-columns=BUILD:.spec.docker.imageTag

Upgrade data controller

This section shows how to upgrade a directly connected data controller.


Some of the data services tiers and modes are generally available and some are in preview. If you install GA and preview services on the same data controller, you can't upgrade in place. To upgrade, delete all non-GA database instances. You can find the list of generally available and preview services in the Release Notes.

For supported upgrade paths, see Upgrade Azure Arc-enabled data services.


Open your data controller resource. If an upgrade is available, you will see a notification on the Overview blade that says, "One or more upgrades are available for this data controller."

Under Settings, select the Upgrade Management blade.

In the table of available versions, choose the version you want to upgrade to and click "Upgrade Now".

In the confirmation dialog box, click "Upgrade".

Monitor the upgrade status

To view the status of your upgrade in the portal, go to the resource group of the data controller and select the Activity log blade.

You will see a "Validate Deploy" option that shows the status.


When the desired version is set to a specific version, the bootstrapper job will attempt to upgrade to that version until it succeeds. If the upgrade is successful, the RunningVersion property of the spec is updated to the new version. Upgrades could fail for scenarios such as an incorrect image tag, unable to connect to registry or repository, insufficient CPU or memory allocated to the containers, or insufficient storage.

  1. Run the below command to see if any of the pods show an Error status or have high number of restarts:

    kubectl get pods --namespace <namespace>
  2. To look at Events to see if there is an error, run

    kubectl describe pod <pod name> --namespace <namespace>
  3. To get a list of the containers in the pods, run

    kubectl get pods <pod name> --namespace <namespace> -o jsonpath='{.spec.containers[*].name}*'
  4. To get the logs for a container, run

    kubectl logs <pod name> <container name> --namespace <namespace>

To view common errors and how to troubleshoot them go to Troubleshooting resources.