|
| 1 | +--- |
| 2 | +title: Regional endpoints for geo-replicated registries (Preview) |
| 3 | +description: Learn how to use regional endpoints to target specific geo-replicas in Azure Container Registry for predictable routing and client-side failover. |
| 4 | +ms.topic: how-to |
| 5 | +ms.date: "2026-03-02" |
| 6 | +ms.author: johsh |
| 7 | +ms.service: azure-container-registry |
| 8 | +--- |
| 9 | + |
| 10 | +## Regional endpoints for geo-replicated registries (Preview) |
| 11 | + |
| 12 | +Azure Container Registry regional endpoints allow you to target specific geo-replicas directly, bypassing Azure-managed routing. This feature is useful when you need predictable routing, client-side failover, or regional affinity for your container registry operations. |
| 13 | + |
| 14 | +> [!IMPORTANT] |
| 15 | +> Regional endpoints are currently in **private preview**. To enable the preview, see [Enroll in the preview](#enroll-in-the-preview). |
| 16 | +
|
| 17 | +## About regional endpoints |
| 18 | + |
| 19 | +When you use a geo-replicated registry's global endpoint (`myregistry.azurecr.io`), Azure automatically routes requests to the most suitable replica based on network performance. While this works well for most scenarios, it doesn't provide explicit control over which replica handles your requests. |
| 20 | + |
| 21 | +Regional endpoints solve this by providing dedicated login server URLs for each geo-replica: |
| 22 | + |
| 23 | +``` |
| 24 | +myregistry.<region-name>.geo.azurecr.io |
| 25 | +``` |
| 26 | + |
| 27 | +For example: |
| 28 | + |
| 29 | +- `myregistry.eastus.geo.azurecr.io` |
| 30 | +- `myregistry.westeurope.geo.azurecr.io` |
| 31 | + |
| 32 | +### When to use regional endpoints |
| 33 | + |
| 34 | +| Scenario | Description | |
| 35 | +|----------|-------------| |
| 36 | +| **Client-side failover** | Implement your own failover logic that explicitly switches between regions based on health checks. | |
| 37 | +| **Regional affinity** | Ensure specific applications always use a designated replica. | |
| 38 | +| **Troubleshooting** | Test or debug a specific regional replica. | |
| 39 | +| **Push/pull consistency** | Ensure images are pushed and pulled from the same replica. | |
| 40 | + |
| 41 | +### Regional endpoints coexist with global endpoints |
| 42 | + |
| 43 | +Enabling regional endpoints doesn't disable or replace the global endpoint. You can use both simultaneously: |
| 44 | + |
| 45 | +- Use the **global endpoint** (`myregistry.azurecr.io`) for most operations with automatic routing. |
| 46 | +- Use **regional endpoints** when you need explicit regional control. |
| 47 | + |
| 48 | +## Prerequisites |
| 49 | + |
| 50 | +- **Premium SKU** - Regional endpoints are available exclusively on Premium tier registries. |
| 51 | +- **Azure CLI** - Version 2.74.0 or later. |
| 52 | +- **Preview feature registration** - You must register the `RegionalEndpoints` feature flag. See [Enroll in the preview](#enroll-in-the-preview). |
| 53 | +- **API version** - Regional endpoints are available in all production regions in Azure Public Cloud via the `2026-01-01-preview` ACR ARM API version. |
| 54 | + |
| 55 | +> [!NOTE] |
| 56 | +> During private preview, regional endpoints are only available in Azure Public Cloud. Support for Azure Government, Azure China, and other national clouds will be available in public preview and beyond. |
| 57 | +
|
| 58 | +> [!NOTE] |
| 59 | +> Regional endpoints can be enabled on any Premium SKU registry, even without geo-replication. A registry without geo-replication has a single geo-replica in the home region, which gets one regional endpoint URL. However, the feature is most useful when your registry has at least two geo-replicas. |
| 60 | +
|
| 61 | +## Enroll in the preview |
| 62 | + |
| 63 | +To enable the regional endpoints private preview, complete the following steps before using regional endpoints. |
| 64 | + |
| 65 | +### 1. Register the feature flag |
| 66 | + |
| 67 | +Register the `RegionalEndpoints` feature flag for your subscription: |
| 68 | + |
| 69 | +```azurecli |
| 70 | +az feature register \ |
| 71 | + --namespace Microsoft.ContainerRegistry \ |
| 72 | + --name RegionalEndpoints |
| 73 | +``` |
| 74 | + |
| 75 | +The feature registration is auto-approved and takes approximately 1 hour to propagate. You can check the status with: |
| 76 | + |
| 77 | +```azurecli |
| 78 | +az feature show \ |
| 79 | + --namespace Microsoft.ContainerRegistry \ |
| 80 | + --name RegionalEndpoints |
| 81 | +``` |
| 82 | + |
| 83 | +Wait until the `state` shows **Registered** before proceeding. |
| 84 | + |
| 85 | +### 2. Propagate the registration |
| 86 | + |
| 87 | +Once the feature registration has propagated, update your provider registration: |
| 88 | + |
| 89 | +```azurecli |
| 90 | +az provider register -n Microsoft.ContainerRegistry |
| 91 | +``` |
| 92 | + |
| 93 | +### 3. Install the preview CLI extension |
| 94 | + |
| 95 | +Install the preview Azure CLI extension for regional endpoints: |
| 96 | + |
| 97 | +Download the preview Azure CLI extension wheel file from <https://aka.ms/acr/regionalendpoints/download> and install it: |
| 98 | + |
| 99 | +```azurecli |
| 100 | +# Download the .whl file from the link above, then install: |
| 101 | +az extension add \ |
| 102 | + --source acrregionalendpoint-1.0.0b1-py3-none-any.whl \ |
| 103 | + --allow-preview true |
| 104 | +``` |
| 105 | + |
| 106 | +## Enable regional endpoints |
| 107 | + |
| 108 | +You can enable regional endpoints when creating a new registry or update an existing registry. |
| 109 | + |
| 110 | +**Create a new registry with regional endpoints enabled for all geo-replicas:** |
| 111 | + |
| 112 | +```azurecli |
| 113 | +az acr create \ |
| 114 | + -n myregistry \ |
| 115 | + -g myrg \ |
| 116 | + -l regionname \ |
| 117 | + --sku Premium \ |
| 118 | + --regional-endpoints enabled |
| 119 | +``` |
| 120 | + |
| 121 | +**Enable regional endpoints for all geo-replicas for an existing registry:** |
| 122 | + |
| 123 | +```azurecli |
| 124 | +az acr update \ |
| 125 | + -n myregistry \ |
| 126 | + -g myrg \ |
| 127 | + --regional-endpoints enabled |
| 128 | +``` |
| 129 | + |
| 130 | +--- |
| 131 | + |
| 132 | +Regional endpoints are enabled at the registry level and apply to every geo-replica. You can't enable regional endpoints for individual replicas. When you enable regional endpoints, Azure Container Registry automatically creates login server URLs for each of your geo-replicas. |
| 133 | + |
| 134 | +### View all endpoints |
| 135 | + |
| 136 | +Use the `az acr show-endpoints` command to view all endpoints for your registry, including the global URL, regional endpoints (if enabled), and dedicated data endpoints (if enabled): |
| 137 | + |
| 138 | +```azurecli |
| 139 | +az acr show-endpoints --name myregistry --resource-group myrg |
| 140 | +``` |
| 141 | + |
| 142 | +This command displays: |
| 143 | + |
| 144 | +- The global login server URL (`myregistry.azurecr.io`) |
| 145 | +- Regional endpoint URLs for each geo-replica (if regional endpoints are enabled) |
| 146 | +- Dedicated data endpoint URLs for each geo-replica (if dedicated data endpoints are enabled) |
| 147 | + |
| 148 | +## Authenticate and use regional endpoints |
| 149 | + |
| 150 | +Regional endpoints support the same authentication methods as the global endpoint: Microsoft Entra ID (formerly Azure Active Directory), service principals, managed identities, and admin credentials. |
| 151 | + |
| 152 | +### Sign in to a regional endpoint |
| 153 | + |
| 154 | +**Sign in to the global endpoint (default):** |
| 155 | + |
| 156 | +```azurecli |
| 157 | +az acr login --name myregistry |
| 158 | +``` |
| 159 | + |
| 160 | +**Sign in to a specific regional endpoint:** |
| 161 | + |
| 162 | +```azurecli |
| 163 | +az acr login --name myregistry --endpoint eastus |
| 164 | +``` |
| 165 | + |
| 166 | +### Tag and push an image to a regional endpoint |
| 167 | + |
| 168 | +Tag an existing image with the regional endpoint URL, then push it: |
| 169 | + |
| 170 | +```bash |
| 171 | +docker tag myapp:v1 myregistry.eastus.geo.azurecr.io/myapp:v1 |
| 172 | +docker push myregistry.eastus.geo.azurecr.io/myapp:v1 |
| 173 | +``` |
| 174 | + |
| 175 | +### Pull an image from a regional endpoint |
| 176 | + |
| 177 | +```bash |
| 178 | +docker pull myregistry.eastus.geo.azurecr.io/myapp:v1 |
| 179 | +``` |
| 180 | + |
| 181 | +## Use regional endpoints with Kubernetes |
| 182 | + |
| 183 | +You can specify regional endpoints directly in Kubernetes deployment manifests. This ensures clusters in specific regions always pull from their local replica. |
| 184 | + |
| 185 | +```yaml |
| 186 | +apiVersion: apps/v1 |
| 187 | +kind: Deployment |
| 188 | +metadata: |
| 189 | + name: myapp |
| 190 | +spec: |
| 191 | + template: |
| 192 | + spec: |
| 193 | + containers: |
| 194 | + - name: myapp |
| 195 | + image: myregistry.eastus.geo.azurecr.io/myapp:v1 |
| 196 | +``` |
| 197 | +
|
| 198 | +For information about authenticating Azure Kubernetes Service (AKS) with ACR, see [Authenticate with Azure Container Registry from Azure Kubernetes Service](https://learn.microsoft.com/azure/container-registry/container-registry-auth-aks). |
| 199 | +
|
| 200 | +## Import from specific geo-replicas |
| 201 | +
|
| 202 | +When importing images between registries, you can use regional endpoints to import from a specific geo-replica of the source registry. This is useful for scenarios where you want predictable network paths or need to import from a replica in a specific region. |
| 203 | +
|
| 204 | +**Import from the global endpoint (Azure chooses the replica):** |
| 205 | +
|
| 206 | +```azurecli |
| 207 | +az acr import \ |
| 208 | + --name mydownstreamregistry \ |
| 209 | + --source myupstreamregistry.azurecr.io/myapp:v1 \ |
| 210 | + --image myapp:v1 |
| 211 | +``` |
| 212 | + |
| 213 | +**Import from a specific geo-replica using its regional endpoint:** |
| 214 | + |
| 215 | +```azurecli |
| 216 | +az acr import \ |
| 217 | + --name mydownstreamregistry \ |
| 218 | + --source myupstreamregistry.westeurope.geo.azurecr.io/myapp:v1 \ |
| 219 | + --image myapp:v1 |
| 220 | +``` |
| 221 | + |
| 222 | +This allows downstream registries to explicitly import from a specific geo-replica of an upstream registry, providing control over which regional replica serves the import operation. |
| 223 | + |
| 224 | +## Network considerations |
| 225 | + |
| 226 | +### Firewall rules |
| 227 | + |
| 228 | +When using regional endpoints, configure your firewall rules to allow access to: |
| 229 | + |
| 230 | +| Endpoint | Purpose | |
| 231 | +|----------|---------| |
| 232 | +| `myregistry.<region-name>.geo.azurecr.io` | Regional endpoint for registry operations | |
| 233 | +| `myregistry.azurecr.io` | Global endpoint (if also used) | |
| 234 | +| `myregistry.<region-name>.data.azurecr.io` | Layer downloads (if using private endpoints or dedicated data endpoints) | |
| 235 | +| `*.blob.core.windows.net` | Layer downloads (if not using private endpoints or dedicated data endpoints) | |
| 236 | + |
| 237 | +### Private endpoints |
| 238 | + |
| 239 | +For registries with private endpoints enabled, enabling regional endpoints creates an additional private IP address for each geo-replica in all associated virtual networks. |
| 240 | + |
| 241 | +**Example**: If your registry has 3 geo-replicas and you enable regional endpoints, each virtual network with a private endpoint to your registry consumes 3 additional private IP addresses (one per regional endpoint). |
| 242 | + |
| 243 | +For more information, see [Connect privately to an Azure container registry using Azure Private Link](https://learn.microsoft.com/azure/container-registry/container-registry-private-link). |
| 244 | + |
| 245 | +### Dedicated data endpoints |
| 246 | + |
| 247 | +Regional endpoints work with [dedicated data endpoints](https://learn.microsoft.com/azure/container-registry/container-registry-dedicated-data-endpoints). When both features are enabled, layer downloads from regional endpoints automatically redirect to the geo-replica's dedicated data endpoint. |
| 248 | + |
| 249 | +> [!TIP] |
| 250 | +> It is recommended to also enable dedicated data endpoints for optimal in-region performance when using regional endpoints: |
| 251 | +> |
| 252 | +> ```azurecli |
| 253 | +> az acr update -n <registry-name> --data-endpoint-enabled true |
| 254 | +> ``` |
| 255 | +
|
| 256 | +## Endpoint types reference |
| 257 | +
|
| 258 | +| Endpoint type | URL format | Purpose | |
| 259 | +|---------------|------------|---------| |
| 260 | +| Global endpoint | `myregistry.azurecr.io` | Login server with Azure-managed routing to any geo-replica | |
| 261 | +| Regional endpoint | `myregistry.<region-name>.geo.azurecr.io` | Login server for a specific geo-replica | |
| 262 | +| Data endpoint | `myregistry.<region-name>.data.azurecr.io` | Layer downloads for private endpoint or dedicated data endpoint-enabled registries | |
| 263 | +
|
| 264 | +## Related content |
| 265 | +
|
| 266 | +- [Geo-replication in Azure Container Registry](https://learn.microsoft.com/azure/container-registry/container-registry-geo-replication) |
| 267 | +- [Dedicated data endpoints for Azure Container Registry](https://learn.microsoft.com/azure/container-registry/container-registry-dedicated-data-endpoints) |
| 268 | +- [Connect privately using Azure Private Link](https://learn.microsoft.com/azure/container-registry/container-registry-private-link) |
| 269 | +- [Configure firewall access rules](https://learn.microsoft.com/azure/container-registry/container-registry-firewall-access-rules) |
0 commit comments