Azure Arc: One Control Plane for Servers, Kubernetes, and Data Anywhere
A beginner-friendly, book-style guide to Azure Arc. Learn how servers, clusters, databases, and virtual machines running outside Azure are projected into Azure, how the agent and resource bridge work, and how to govern, secure, update, monitor, and pay for a hybrid and multicloud estate in production.
Imagine a head teacher in charge of forty schools scattered across a country. Some are in big cities, some in remote villages, and a few are rented buildings owned by someone else. Each school has its own timetable system, its own safety checklists, its own way of recording attendance, and its own filing cabinet. To find out whether every school has working fire alarms, the head teacher must phone forty different offices and trust forty different answers. Nothing is wrong with the schools, but there is no single place from which to see them or to set common rules.
Many companies run their technology in exactly that way. Some servers sit in the company’s own data center. Others run in another public cloud. Some are in a factory, a shop, a ship, or a hospital basement. Each location has its own tools for patching, monitoring, and security. Azure Arc is Microsoft’s answer: it lets you connect all of those places to Azure, so that they appear in the same portal and follow the same rules as resources that live in Azure.
This guide assumes you know nothing about the topic. Every new term is explained the first time it appears, every big idea has an everyday comparison, and the chapters build on each other. By the end you will understand what Azure Arc is and is not, how its agent and bridge work, what you can manage through it, how to connect hundreds of machines at once, how to keep the arrangement secure, and how to find and fix problems.
1The Problem: Technology Scattered Everywhere
Before meeting any product, understand the problem it solves. Once the problem is clear, every feature of Azure Arc looks sensible instead of random.
How estates became scattered
Few organisations are “all in one place.” Companies grow by acquiring other companies, each with its own data center. Rules about data privacy force some information to stay in a particular country or building. Factories and shops need computers right next to the machines and the customers, because a network failure must not stop the production line. Teams choose different clouds for different strengths. And some old systems cannot be moved, either because they are too fragile or because the vendor will not support them anywhere else. The result is a hybrid estate, meaning part on-premises and part in the cloud, and often a multicloud estate, meaning spread over several cloud providers.
Nobody knows what exists
Servers are listed in spreadsheets that are months out of date. Security teams cannot say how many machines run an unsupported operating system.
Different protection everywhere
One location has modern threat detection, another has an old antivirus product, and a third has nothing. Attackers look for the weakest one.
Updates by hand
Each site patches in its own way and its own schedule. Reports to prove compliance take weeks to assemble.
A different console for each place
Staff must learn many tools, passwords, and processes, and mistakes creep in at every hand-off.
No common rules
Standards such as required tags, allowed settings, and access controls are enforced in Azure but invisible elsewhere.
Duplicate licences and effort
Separate tools and teams for each environment multiply expense and slow every change.
Think of an international airline whose planes are parked at airports all around the world. If each airport keeps its own maintenance records in its own language, the airline cannot say which planes are due for inspection. A single global control tower that sees every aircraft, uses one checklist, and issues the same instructions everywhere solves the problem without moving a single plane. Azure Arc plays the role of that control tower.
The two obvious answers, and why they are not enough
The first answer is “move everything to Azure.” That is ideal for many workloads, but not all of them, and not at once. Migration takes years, some systems must stay where they are for legal or physical reasons, and during the long journey the estate is split anyway. The second answer is “buy a management tool for each environment.” That multiplies tools, and it still leaves no common view. Azure Arc takes a third path: leave the resources where they are and extend Azure’s management layer out to them.
An illustrative example
Consider a hypothetical retail group with 600 servers: 200 in Azure, 250 in two company data centers, 100 in another public cloud acquired with a subsidiary, and 50 small servers in stores. Before using Arc, the security team needed four consoles and three weeks to answer “which servers are missing this month’s security patch?” After connecting the 400 servers outside Azure with Arc, the same question is answered by one query across all 600 machines in a few seconds. A single policy now requires an owner tag everywhere, and updates are scheduled from one place.
2Core Concepts: The Vocabulary of Azure Arc
Azure Arc has a manageable vocabulary. Learn these words once and every later chapter reads easily.
The words, one at a time
| Term | Plain meaning | Everyday comparison |
|---|---|---|
| Control plane | The layer that manages resources: creating, configuring, governing. It is separate from the data plane, which carries the actual work and data | The control tower, as opposed to the planes themselves |
| Azure Resource Manager | The Azure service that receives every management request and keeps the list of resources | The central register of everything under management |
| Projection | Representing a resource that lives elsewhere as a resource in Azure | A passport photo and file card for someone who lives abroad |
| Arc-enabled resource | A non-Azure server, cluster, or database that has been connected and now appears in Azure | A school added to the head teacher’s register |
| Connected Machine agent | Small software installed on a server to connect it to Azure | The radio that lets a plane talk to the tower |
| Extension | An add-on that the agent installs to provide a capability, such as monitoring or security | An attachment clipped onto the radio |
| Managed identity | An Azure identity given to the connected resource so it can safely call Azure services | An employee badge issued by head office |
| Resource bridge | A small appliance virtual machine that links a local virtualisation platform to Azure | A translator station at the border |
| Custom location | A named place in Azure that stands for a particular on-premises cluster or site, where you can deploy resources | A street address that Azure’s delivery service understands |
| Azure Local | Microsoft’s hyperconverged infrastructure software for running Azure services on hardware in your own site. Previously called Azure Stack HCI | A branch office of the cloud inside your building |
| Subscription and resource group | Azure’s billing and organisation containers, which hold Arc resources too | The department and the folder where the record is filed |
The central idea: the control plane travels, the workload stays
Beginners often assume that connecting a server to Azure Arc moves it to Azure, or that its data is copied to Azure. It does neither. The server keeps running exactly where it is, with the same programs and data. What Arc creates is a representation of the server in Azure Resource Manager, plus a secure two-way channel through which Azure can read information about the server and, if allowed, send management instructions to it. In technical terms, the control plane reaches out, while the data plane stays at home.
When you add a house to a property-management company’s system, the house does not move to the company’s office. The company creates a file card with the address, the owner, the inspection history, and a way to call the caretaker. Anyone at head office can see the card and ask the caretaker to fix the boiler. The house remains where it always was.
Three families of Arc
Servers, Kubernetes, and virtual machine platforms
Arc-enabled servers, Arc-enabled Kubernetes, and Arc resource bridge for VMware vSphere and System Center, plus Azure Local.
Databases
Arc-enabled SQL Server, and Arc-enabled data services such as SQL Managed Instance and PostgreSQL running on Kubernetes you operate.
Application services
Services such as App Service, Functions, and Logic Apps can run on an Arc-enabled Kubernetes cluster through application service extensions. Availability and status of these change, so check the current documentation.
Whenever Arc seems confusing, return to one sentence: “Arc gives resources outside Azure an identity and a record inside Azure, so Azure’s management tools can see and govern them.” Everything else is a consequence of that.
3What Azure Arc Is, and How It Differs from Its Neighbours
The word “hybrid” appears in many Microsoft products. Placing Arc next to its neighbours makes its job clear.
A short history
Microsoft announced Azure Arc in November 2019 at its Ignite conference, initially for managing servers and Kubernetes clusters outside Azure and for running selected Azure data services on any infrastructure. Over the following years the family grew: Arc-enabled SQL Server, support for VMware vSphere and System Center Virtual Machine Manager through the resource bridge, features such as Extended Security Updates delivered through Arc for older Windows Server versions, SSH access, and tighter links to Defender for Cloud and Azure Monitor. In parallel, Microsoft’s on-premises Azure-run platform, formerly Azure Stack HCI, was renamed Azure Local and uses Arc as its management foundation. Product names and packaging shift often, so treat any list in a book as a snapshot.
What Azure Arc gives you
Unified inventory
All connected resources appear in the portal and can be searched with Azure Resource Graph together with Azure-native ones.
Azure Policy and tags
Apply the same rules and labels to servers in any location, and measure compliance in one dashboard.
Defender and baselines
Extend Microsoft Defender for Cloud protections and security recommendations to non-Azure machines and clusters.
Updates, monitoring, automation
Manage patches, collect logs and metrics, run scripts, and track changes from Azure.
GitOps for clusters
Keep many clusters in a desired state described in a Git repository.
Azure experience on-premises
Create and manage virtual machines on VMware or Azure Local through Azure, using the same portal, templates, and access controls.
What Azure Arc is not
- It is not a migration tool. Arc does not move workloads to Azure. Azure Migrate does that.
- It is not a replacement for the hypervisor or the hardware. Your virtualisation platform or physical server keeps working as before.
- It is not a VPN or a network. It needs outbound connectivity from the resource to Azure, but does not create private network links between sites.
- It is not free for everything. Connecting a server and viewing it is generally free, but many of the services you then switch on are charged. Chapter 15 explains.
- It is not required for the workload to run. If the link to Azure breaks, the server keeps serving its users. Only management actions pause.
Arc compared with related offers
| Offer | What it is | Relationship to Arc |
|---|---|---|
| Azure Arc | Management and governance extended to resources anywhere | The connecting layer |
| Azure Local | Hardware and software stack that runs Azure-style virtualisation and Kubernetes in your site | Uses Arc as its management plane; Arc can also manage machines that are not Azure Local |
| Azure Stack Hub | A full, separate Azure-like cloud in your data center, for disconnected scenarios | A different product with its own portal; confirm current status and positioning |
| Azure Migrate | Discovery, assessment, and migration of servers and databases to Azure | Complementary: Arc governs what stays; Migrate moves what goes |
| Azure Site Recovery | Disaster recovery for servers | Can protect Arc-connected machines in some scenarios |
| Azure Kubernetes Service (AKS) | Managed Kubernetes in Azure | Arc brings similar management to clusters outside AKS |
| Other clouds’ hybrid tools | Each vendor’s own tools for connecting outside systems | Arc is Microsoft’s equivalent; many estates use more than one |
The Arc family changes quickly: features move from preview to general availability, some are renamed, and a few are retired. Before building a design on a specific capability, check its current status and supported platforms in Microsoft’s documentation.
4Architecture: How Azure Reaches Beyond Azure
Understanding the shape of the connection explains most behaviour, from what Azure can see to what happens when the network breaks.
flowchart LR
subgraph AZ["Azure"]
ARM["Azure Resource Manager"]
SVC["Policy, Defender, Monitor, Update Manager, Automation"]
HIS["Arc connected machine service endpoints"]
end
subgraph ONP["On-premises data center"]
SRV1["Server with Connected Machine agent"]
K8S["Kubernetes cluster with Arc agents"]
BRG["Resource bridge appliance"]
VC["VMware vCenter"]
BRG --- VC
end
subgraph OTH["Another cloud"]
SRV2["Virtual machine with Connected Machine agent"]
end
SRV1 -->|"outbound HTTPS"| HIS
K8S -->|"outbound HTTPS"| HIS
BRG -->|"outbound HTTPS"| HIS
SRV2 -->|"outbound HTTPS"| HIS
HIS --> ARM
ARM --> SVC
SVC -.->|"instructions delivered through the agent"| SRV1
Reading the diagram
On the left side are Azure’s own services: Azure Resource Manager, which records resources, and the services that act on them, such as Policy, Defender, Monitor, and Update Manager. On the right are your outside locations: an on-premises data center with a server, a Kubernetes cluster, and a resource bridge attached to VMware vCenter, and another cloud with a virtual machine. Each outside resource runs a small piece of Arc software that makes an outbound secure connection to Azure over HTTPS. Because the connection starts from inside, you do not need to open inbound ports in your firewalls for it. Instructions from Azure travel back down the same connection, delivered by the agent, so Azure can, for example, install an extension on a server that sits behind a corporate firewall.
Think of a field worker who telephones head office every few minutes to say “I’m here, and I’m well.” Head office cannot dial the field worker’s phone directly, because the number is private, but whenever the worker calls in, any waiting instructions are passed along. The outward call is what keeps the line open, and nobody needs to leave the front door unlocked.
The components
| Component | Role |
|---|---|
| Azure Resource Manager | Stores the Arc resource records (the “projection”), enforces access control, and applies policy to them |
| Arc service endpoints | Azure-side services that the agents talk to, covering identity, heartbeat, extensions, and guest configuration |
| Connected Machine agent | Installed on servers; maintains the connection, hosts the extension manager and the guest configuration service, and provides a local identity endpoint |
| Arc agents for Kubernetes | A set of pods that run in the cluster, connect it to Azure, and install cluster extensions |
| Resource bridge | An appliance virtual machine that lets Azure see and control a VMware or System Center environment |
| Custom location | An Azure resource that maps to a namespace in an Arc-enabled cluster, letting Azure deploy services into that cluster |
| Extensions | Add-on packages for monitoring, security, update management, key retrieval, and more |
| Managed identity of the resource | Lets software on the machine obtain Azure tokens, for example to read secrets from Key Vault |
What flows in each direction
From resource to Azure
Heartbeat, basic properties (operating system, name, agent version), extension status, compliance results, and whatever monitoring or security data you choose to collect.
From Azure to resource
Extension installation requests, policy configuration assignments, update schedules, and remote actions you explicitly allow.
Your application data
Business data stays where it is unless you choose to send logs or backups elsewhere.
Where the records live
Every Arc-enabled resource lives in a subscription and resource group you choose, in an Azure region. The region of the record is where its metadata is stored, such as name, tags, and properties. It does not define where the server runs. Choose a region close to the machines for lower latency and to meet data-residency needs for metadata. Because the record is an ordinary Azure resource, it supports tags, role-based access control, locks, and Azure Policy, just like a virtual machine in Azure.
Plan resource groups and tags for Arc resources before onboarding, using the same structure as for Azure resources: by environment, owner, application, and site. Renaming and moving afterwards is possible but tedious at scale.
5How Connecting a Machine Works Inside
Follow a single server as it joins Azure Arc, and you will understand identity, trust, and the agent’s daily behaviour.
sequenceDiagram
participant Admin as Administrator or script
participant Agent as Connected Machine agent
participant Entra as Microsoft Entra ID
participant Arc as Arc service in Azure
participant ARM as Azure Resource Manager
Admin->>Agent: Install agent and run connect command
Agent->>Entra: Sign in using onboarding identity
Entra-->>Agent: Access token with limited rights
Agent->>Arc: Request to create machine resource
Arc->>ARM: Create Arc machine resource in resource group
ARM-->>Arc: Resource created with managed identity
Arc-->>Agent: Identity details and certificate
loop Every few minutes
Agent->>Arc: Heartbeat with status
Arc-->>Agent: Pending extension or policy requests
end
Agent->>Agent: Extension manager installs extensions
Agent->>Arc: Report extension and compliance status
Step by step
Install the agent
The administrator or an automation tool downloads and installs the Connected Machine agent. Installation alone does not connect the machine to Azure.
Authenticate to onboard
A connect command is run with an identity that has the right to create Arc machine resources. This can be a person signing in interactively, or a service principal for automation. The identity only needs enough rights to onboard, and it is used just for this step.
Azure creates the resource
The Arc service creates a machine resource in the chosen subscription, resource group, and region, with the name and tags you supply.
The machine receives its own identity
Azure issues the machine a system-assigned managed identity and a certificate that the agent stores locally. From now on, the machine authenticates as itself, not with the onboarding credential.
Heartbeats begin
The agent contacts the service regularly, reporting that it is alive, and fetching any waiting work. This is why the portal shows Connected or Disconnected.
Extensions and policies arrive
As you assign policies or enable services, the extension manager downloads and installs the required extensions. The guest configuration service evaluates settings inside the machine and reports results.
Ongoing operation
The agent keeps its certificate fresh, reports changes, and continues until the machine is disconnected or deleted.
The agent’s inner services
Hybrid instance metadata service
Keeps the connection, holds the machine’s identity, and provides a local endpoint that software on the machine can call to get Azure tokens. It works much like the identity endpoint on an Azure virtual machine.
Extension manager
Downloads, installs, updates, and removes extensions, and reports their health.
Guest configuration
Checks and, where allowed, applies settings inside the operating system as required by Azure Policy.
Command-line tool
A local tool lets administrators connect, disconnect, view status, run connectivity checks, collect logs, and set local configuration.
Onboarding is like getting a staff pass. A manager (the onboarding identity) vouches for you at the front desk once, and the security office issues a personal badge (the managed identity and certificate). After that day, you use your own badge to enter, and the manager’s signature is no longer needed.
What happens when the connection drops
The machine continues running its workloads normally. Locally evaluated settings continue, and extensions already installed keep working, although those that need Azure, such as sending data to a cloud workspace, will buffer or fail until the link returns. In the portal the machine appears as disconnected after missed heartbeats. If a machine stays offline for a long time, measured in weeks in the documentation, its certificate can expire, and it must be reconnected. Check the current documented limit when you plan for ships, remote sites, or seasonal equipment.
Identity for software on the machine
Because every Arc machine has a managed identity, programs on it can request tokens from the local endpoint and use them to call Azure services, such as reading a secret from Key Vault or writing to storage, without storing passwords on the disk. You grant the machine’s identity roles on the target resource, exactly as you would for an Azure virtual machine. This is one of the most valuable but least understood benefits of Arc.
Anyone with administrator rights on the machine can use its managed identity to get tokens, so the identity’s roles should be as small as possible. Treat the identity as being only as trustworthy as the machine itself.
6Arc-Enabled Servers: The Foundation
The most widely used part of Azure Arc is the ability to connect Windows and Linux servers. It is the foundation on which many other features rest.
What counts as a server
An Arc-enabled server can be a physical machine, a virtual machine on any hypervisor, or a virtual machine in another cloud. It simply needs a supported operating system, the ability to install the agent, and outbound network access to Azure endpoints. Windows Server and many common Linux distributions are supported, and the list of versions is documented and updated as new ones appear.
Ways to onboard
| Method | Best for | Notes |
|---|---|---|
| Portal-generated script | A handful of servers, learning | Generate a script in the portal and run it on the server. Simple but manual |
| Service principal with scripts | Hundreds of servers | A limited identity authorises many onboarding runs without a person signing in. Protect its secret |
| Ansible, Chef, Puppet, or similar | Estates already using configuration management | Include agent installation and connection in existing roles |
| Microsoft Configuration Manager or Group Policy | Large Windows estates | Distribute the agent as a package or startup script |
| VMware or System Center via resource bridge | Virtualised environments | Discover machines through the bridge and enable Arc features for them in bulk |
| Azure Migrate and landing zone tooling | New builds | Include the agent in server build images or deployment pipelines |
| Cloud-provider connectors | Machines in other public clouds | Defender for Cloud and Arc offer connectors that discover and onboard cloud machines automatically |
What an Arc-enabled server looks like in Azure
The resource has a name, resource group, subscription, region, tags, operating system details, agent version, status, and a list of installed extensions. It supports role assignments, policy, locks, and activity logs. It is not a virtual machine in Azure: you cannot resize it or start it from the portal, because Azure does not control its power. The commands Azure can issue are those the agent and extensions provide.
Common first steps after onboarding
Tag and organise
Apply tags for environment, owner, application, and site, ideally during onboarding with the same scheme as Azure resources.
Turn on inventory and change tracking
See installed software and changes to files, services, and registry entries.
Assign baseline policy
Use Azure Policy to require monitoring, security, and update extensions.
Enable security assessment
Connect Defender for Cloud to start receiving recommendations.
Schedule updates
Define maintenance windows and update classifications.
Set up monitoring and alerts
Collect performance and event data, and alert on key conditions.
Connecting a server is like registering a new vehicle with a fleet company. First comes a number plate and a record, which is the Arc connection. Then the fleet company can schedule servicing, track faults, check insurance, and apply rules about who may drive it. The vehicle still belongs to its original garage and drives the same roads.
Disconnecting and deleting
You can disconnect a server from Arc by running the disconnect command, which removes the resource and the identity, and you can uninstall the agent. Deleting only the Azure resource without disconnecting leaves the agent running, which will then try to reconnect or fail, creating noise. Follow the documented order. Also remember that removal of the resource removes policy assignments and extension management for it, so plan clean-ups for retired servers to avoid paying for unused services.
Add the agent to your standard server build images but leave the final connect step to first-boot automation that sets the right tags and resource group. Then new servers join Arc at birth, instead of in a clean-up project later.
7Managing Servers Through Arc: What You Can Do
Once a server is connected, Azure’s management services can reach it. This chapter tours the main ones in plain language.
Azure Policy and machine configuration
Define rules for settings inside the operating system, such as password policy, required software, or firewall state. Arc-enabled servers are audited and, where allowed, corrected. Results appear in the same compliance dashboard as Azure resources.
Azure Update Manager
Assess missing updates and schedule installation in maintenance windows, for Windows and Linux, across Azure and Arc machines from a single view.
Microsoft Defender for Cloud
Gives secure score, recommendations, vulnerability assessment, and threat detection for connected servers through the Defender for Servers plan. Plans have separate pricing.
Azure Monitor
Collects performance counters, event logs, and syslog through the Azure Monitor Agent extension, using data collection rules to decide what goes where.
Run commands and automation
Run scripts remotely, use Azure Automation for state configuration and runbooks, and integrate with pipelines.
SSH and Entra sign-in
Reach servers over SSH through Azure without opening inbound ports, and sign in to Linux and Windows with Microsoft Entra identities and role-based access.
Key Vault extension
Keep certificates on the server refreshed automatically from Azure Key Vault.
Change tracking and inventory
See what software is installed and what changed, which helps incident investigation and audits.
Extended Security Updates
For some out-of-support Windows Server versions, security updates can be bought and delivered through Arc. Terms and dates are set by Microsoft and change, so check them.
Backup and disaster recovery integrations
Some backup and recovery capabilities extend to Arc machines. Support varies by scenario.
Extensions: how capabilities are delivered
Each capability above is delivered by an extension, a package that the agent downloads, installs, configures, and monitors. For example, the Azure Monitor Agent extension collects logs, and the Defender-related extensions gather security data. Extensions are versioned and can be updated automatically. They can be installed from the portal, from policy, or by templates. Because extensions run on your server, often with high privileges, they deserve the same scrutiny as any other software, which is why Chapter 13 covers allow and block lists.
The agent is a smartphone, and extensions are apps. The phone’s basic job is to stay connected. Whether it becomes a camera, a map, or a fitness tracker depends on which apps you install. You would not install every app on every phone, and for a work phone you would keep a list of allowed apps.
Policy-driven management at scale
The real power appears when you combine Arc with Azure Policy. With a few assignments at a management group, you can state that every Arc-enabled server must have the monitoring extension, must be assessed for updates, must carry an owner tag, and must send its logs to a central workspace. A DeployIfNotExists policy installs missing extensions automatically on new and existing machines, and reports non-compliance for any that fail. Estates of thousands of servers become manageable because rules replace manual clicks.
| Goal | Typical policy approach |
|---|---|
| Everything monitored | Deploy the monitoring agent and associate a data collection rule |
| Everything patched | Require update assessment and assign maintenance configurations by tag |
| Everything inspected for threats | Enable Defender plan at subscription level and deploy required extensions |
| Consistent security baseline | Audit or apply a machine configuration baseline for Windows and Linux |
| Ownership clarity | Require owner and cost-center tags; inherit them from resource groups |
| Restrict risky tools | Allow only approved extensions and block remote access features where not needed |
One view across everything with Resource Graph
Because Arc machines are Azure resources, Azure Resource Graph can query them together with native Azure virtual machines. A single query can list every server with an unsupported operating system, every machine missing a tag, or every machine that has not checked in recently, regardless of where it runs. This ends the spreadsheet era of inventory.
Create a handful of saved Resource Graph queries and workbooks, such as “Arc machines disconnected for more than 24 hours” and “Arc machines by operating system version.” They become the daily health page for the hybrid estate.
8Arc-Enabled Kubernetes and GitOps
Kubernetes clusters multiply fast and are hard to keep consistent. Arc brings them under one roof wherever they run.
A short explanation of Kubernetes
Kubernetes is software that runs many containers across a group of machines, restarts them when they crash, and scales them with demand. A cluster is one such group. Companies end up with many clusters: a few in Azure Kubernetes Service, some on-premises, some in other clouds, and small ones at the edge in shops or factories. Each cluster has its own settings, add-ons, and version, and keeping them aligned by hand is a recurring nightmare.
What Arc-enabled Kubernetes does
Any conformant cluster
Attach clusters running on other clouds, on-premises, or at the edge. The cluster appears as a resource in Azure with its version, nodes, and health.
GitOps with Flux
Describe the desired state of the cluster in a Git repository. An agent in the cluster pulls changes and applies them. Many clusters can follow the same repository.
Azure Policy for Kubernetes
Enforce rules inside clusters, such as banning privileged containers or requiring approved registries, using the same dashboard as other policies.
Defender for Containers
Security recommendations and threat detection for clusters and images, including those outside Azure.
Container insights and Prometheus
Collect logs and metrics into Azure Monitor and managed Prometheus and Grafana services.
Cluster connect
Access a cluster’s API through Azure without exposing it publicly, with Azure role assignments controlling who can do what.
flowchart TD DEV["Platform engineer commits desired state"] --> GIT["Git repository"] GIT --> FLX1["Flux agent in on-premises cluster"] GIT --> FLX2["Flux agent in other cloud cluster"] GIT --> FLX3["Flux agent in edge cluster"] FLX1 --> APP1["Apps and settings applied"] FLX2 --> APP2["Apps and settings applied"] FLX3 --> APP3["Apps and settings applied"] APP1 --> RPT["Compliance state reported to Azure"] APP2 --> RPT APP3 --> RPT POL["Azure Policy assignments"] --> RPT
GitOps in plain words
GitOps means that Git is the single source of truth for how a cluster should look. Instead of someone running commands against each cluster, they change files in a repository. A small agent inside each cluster, Flux, regularly checks the repository and makes the cluster match. If someone changes the cluster by hand, the agent corrects the drift. If a cluster is destroyed, a new one can be pointed at the repository and rebuilt to the same state.
GitOps is like a chain of restaurants following one master menu binder at head office. Each branch’s manager checks the binder every few minutes and adjusts the kitchen to match it. If a cook invents a new dish without approval, the next check removes it. Head office updates the binder once, and every branch follows, without a single phone call.
Why pull is safer than push
Traditional deployment tools push changes into clusters, which means they need credentials with strong rights to every cluster, usually from outside. GitOps pulls from inside, so the cluster needs only read access to the repository, and no external system holds cluster-admin credentials. Clusters behind firewalls with no inbound access can still be managed, because the connection is outbound only.
Cluster extensions
Arc-enabled clusters can host extensions, such as the Flux extension, the Azure Monitor and Defender components, the Azure Policy add-on, secrets store drivers for Key Vault, and application platform extensions. They are installed and updated through Azure, so you do not run separate installation procedures per cluster.
Related offers: AKS on your own hardware
For running Kubernetes on your own hardware, Microsoft provides AKS enabled by Arc, which delivers a managed-style Kubernetes experience on Azure Local and some other platforms. It handles cluster creation, upgrades, and integration with Azure management. Names and supported platforms evolve, so verify current options before choosing.
Arc-enabled Kubernetes manages and observes your cluster, but it does not operate it for you. You remain responsible for the cluster’s nodes, upgrades, backups, and capacity unless you use a managed distribution. Know where the line sits.
9Data Services: Arc-Enabled SQL Server and Data Services
Databases are among the most valuable and most closely guarded systems. Arc extends Azure’s data management to databases that run elsewhere.
Arc-enabled SQL Server
If you run Microsoft SQL Server on a connected Windows or Linux server, you can have an Arc-enabled SQL Server resource appear in Azure. The server’s Arc agent installs an extension for SQL Server that discovers instances and databases, and reports on them. Once connected, you gain several capabilities.
- Inventory and licence insight. See every instance, its edition, version, and processor count, across the estate. This helps with licence planning and audits.
- Best practices assessment. Regular automated checks of configuration, performance, and reliability settings, with recommendations.
- Security. Microsoft Defender for SQL assessments and threat detection. Authentication with Microsoft Entra ID, where supported, reduces dependence on local SQL accounts.
- Monitoring. Performance data collected into Azure Monitor.
- Licensing options. Some licensing models, such as pay-as-you-go billing for SQL Server through Azure, are enabled through Arc. Terms depend on agreements, so check them with Microsoft or a licensing specialist.
- Migration readiness. Assessments that estimate effort and target options for moving databases to Azure later.
Arc-enabled data services
Beyond managing existing databases, Arc can run certain Azure data services on Kubernetes you operate, such as Azure Arc-enabled SQL Managed Instance and PostgreSQL. The idea is that you get cloud-style database features, like fast provisioning, elastic scaling, built-in high availability, and automated backups, on your own hardware, in a place where data must stay. A data controller component in the cluster manages these databases and reports usage to Azure. It can operate in different connectivity modes: directly connected to Azure, or indirectly connected with periodic exports of usage data for places with limited connectivity.
Running Arc-enabled data services is like installing a branded franchise kitchen inside your own restaurant premises. You get the franchise recipes, equipment, and quality checks, but the building, power, and staff stay yours. Head office still receives the sales figures to keep its books.
The set of Arc-enabled data services, their supported versions, and their lifecycle status have changed over time, with some services retired or changed. Confirm what is currently supported and recommended before planning a project around them.
Choosing between options
| Need | Option | Note |
|---|---|---|
| Manage and secure SQL Server that already exists | Arc-enabled SQL Server | No change to the database; adds visibility and services |
| Run a cloud-style database on-premises | Arc-enabled data services on Kubernetes | Requires a Kubernetes platform and operational skills |
| Move the database to Azure | Azure SQL Managed Instance, Azure SQL Database, or SQL Server on an Azure VM | Use Azure Migrate or Database Migration Service |
| Run databases at the edge with poor connectivity | Arc-enabled SQL with indirect mode, or local databases with periodic reporting | Plan for offline operation |
Custom locations
To deploy services such as data services or application services onto an Arc-enabled cluster, Azure needs a target that it understands. A custom location is that target. It is an Azure resource that maps to a namespace in a cluster, so you can say “deploy this database to the Warehouse-London custom location” and Azure Resource Manager makes it happen using the cluster’s agents. It lets teams use the normal Azure portal, templates, and role assignments to deploy into on-premises clusters.
Start with Arc-enabled SQL Server if you have SQL Server estates. It gives quick visibility and security wins on existing databases without changing the way applications connect.
10Resource Bridge, VMware, System Center, and Azure Local
Many organisations run thousands of virtual machines on platforms such as VMware vSphere. Arc lets teams manage them from Azure without moving them.
The resource bridge
The Azure Arc resource bridge is a lightweight appliance, delivered as a virtual machine, that you deploy into your local environment. It acts as a translator between Azure Resource Manager and the local management system, such as VMware vCenter, System Center Virtual Machine Manager, or Azure Local. It reaches out to Azure over an outbound connection, receives requests like “create a virtual machine from this template,” and carries them out locally through the platform’s own interfaces.
flowchart LR USER["Engineer in Azure portal or pipeline"] --> ARM["Azure Resource Manager"] ARM -->|"outbound channel from bridge"| BR["Arc resource bridge appliance"] BR --> VC["vCenter or SCVMM or Azure Local"] VC --> HOSTS["Hypervisor hosts"] HOSTS --> VMS["Virtual machines"] BR -.->|"inventory sync"| ARM ARM -.->|"guest management via Arc agent"| VMS
What this enables
Inventory in Azure
Existing VMware or SCVMM virtual machines, templates, networks, and datastores appear as Azure resources, ready for tagging and policy.
Lifecycle from Azure
Start, stop, restart, resize, and delete virtual machines from the Azure portal, command line, or templates, within the permissions granted.
Create virtual machines
Developers deploy to on-premises infrastructure with the same Azure tooling they use in the cloud, using role-based access and quotas set by the platform team.
Guest management
Enable the Arc agent inside the discovered virtual machines in bulk to access extensions, updates, and policy.
Single access model
Use Azure role-based access control instead of separate vCenter permissions for self-service tasks.
Stepping stone
Teams learn Azure tooling and processes before moving workloads to the cloud.
The resource bridge is a professional interpreter at a meeting between an international head office and a local factory. Each side speaks its own language and uses its own procedures. The interpreter turns “build a new line of products” into instructions the factory machines understand, and reports back what was done.
Azure Local
Azure Local is Microsoft’s hyperconverged infrastructure solution for running virtual machines, containers, and Azure services on hardware in your own site, for example a store, a factory, or a data center that must stay local. It is managed through Arc: you register the system with Azure, and from then on its clusters, virtual machines, and Kubernetes clusters appear in the portal, receive updates, and follow Azure Policy. It suits scenarios with low latency needs, strict data location rules, or limited connectivity. Hardware choices, licensing, and feature sets are determined by Microsoft and partners, so consult current documentation.
Design considerations
- Bridge placement and sizing. Deploy the bridge on a stable network segment with access to vCenter or the management platform and to Azure endpoints. Plan for its own backup or redeployment.
- Credentials. The bridge uses an account in the local platform. Give it only the permissions required, and rotate its credentials.
- Upgrades. The bridge appliance has its own update cycle. Falling behind can break connectivity or features.
- Scale. Understand the documented limits for inventory size and operations per bridge.
- Roles. Define who can create and who can delete machines, to avoid self-service becoming an uncontrolled sprawl.
If the bridge is unavailable, your virtual machines keep running, but management actions from Azure are paused. Treat the bridge as a critical management component: monitor it, patch it, and know how to redeploy it.
11Governance at Scale: Structure, Tags, and Policy
Connecting resources is easy. Keeping thousands of them organised, secure, and accountable is where design pays off.
flowchart TD ROOT["Tenant root group"] --> CO["Company management group"] CO --> PLAT["Platform"] CO --> LZ["Landing zones in Azure"] CO --> HYB["Hybrid and multicloud"] HYB --> HDC["Subscription On-premises data centers"] HYB --> HEDGE["Subscription Edge and branch sites"] HYB --> HMC["Subscription Other cloud workloads"] HDC --> RGP["Resource groups by site and application"] HEDGE --> RGE["Resource groups by region"] HMC --> RGM["Resource groups by cloud account"] CO -.->|"Baseline policies for all resources"| CO HYB -.->|"Arc specific policies"| HYB
Where to put Arc resources
Arc resources live in ordinary subscriptions and resource groups. A common pattern is to create a management group for hybrid and multicloud resources, with separate subscriptions for on-premises data centers, edge sites, and workloads from other clouds. This lets you assign Arc-specific policies, for example requiring approved extensions and private connectivity, at that group, and apply company-wide baselines above it. Resource groups may follow site, application, or owner, depending on how teams work. Keep it simple, and consistent with how Azure resources are organised.
Tagging strategy
| Tag | Purpose | Example values |
|---|---|---|
| Environment | Distinguish production from test | prod, test, dev |
| Owner | Who to contact | team email or name |
| Application | What the machine serves | billing, inventory, point-of-sale |
| Site | Physical or cloud location | london-dc1, store-0142, aws-eu-west |
| Cost center | Charge-back for paid services | finance code |
| Patch group | Choose maintenance window | weekend-a, weekday-night |
| Criticality | Priority for response | tier1, tier2, tier3 |
Tags can be set during onboarding and enforced or inherited with policy. Consistent tags make updates, security reports, and billing sensible.
Role-based access
Azure role-based access control applies to Arc resources just as to Azure ones. Useful built-in roles include Azure Connected Machine Onboarding (can create Arc machine resources, ideal for the automation identity), Azure Connected Machine Resource Administrator (manage Arc machines and extensions), and standard Reader, Contributor, and Owner. Assign roles to groups at the lowest sensible scope. Separate who can onboard machines, who can install extensions, who can see data, and who can administer the operating system.
Policies for a healthy hybrid estate
- Require tags and inherit them from resource groups.
- Deploy monitoring, security, and update extensions automatically.
- Audit Arc machines that are disconnected, running old agent versions, or running unsupported operating systems.
- Restrict which extensions may be installed, and whether remote access features are enabled.
- Require private connectivity for Arc services where your network design supports it.
- Apply Kubernetes security policies to Arc-enabled clusters.
Governance at scale is like city planning for a growing town. You do not decide each house’s wallpaper, but you set zones, street names, and building rules, so inspectors, delivery drivers, and fire crews can find their way around any neighbourhood.
Ownership and operating model
Decide who owns what. A platform team usually owns the Arc fabric: onboarding automation, policy, agent versions, and shared monitoring. Application teams own what runs on their machines. Security teams own the baselines and response. Write down these boundaries, and agree on how teams request exceptions and report problems. Technology alone does not create governance; clear responsibilities do.
Begin with a pilot of a few dozen machines from each environment. Learn how onboarding, tagging, policy, and updates behave before rolling out to thousands. Early lessons are much cheaper at small scale.
12Onboarding at Scale
Connecting one server by hand is a five-minute task. Connecting five thousand needs a plan, an identity, a process, and checks.
flowchart TD
A["Inventory servers and sites"] --> B["Design subscriptions, resource groups, and tags"]
B --> C["Create onboarding service principal with minimal role"]
C --> D["Prepare network access and proxy settings"]
D --> E["Pilot with a small group"]
E --> F{"Pilot successful"}
F -->|"No"| G["Fix issues and repeat pilot"]
G --> E
F -->|"Yes"| H["Deploy agent and connect in waves using automation"]
H --> I["Verify connection and tags"]
I --> J["Policy installs extensions and baselines"]
J --> K["Report coverage and handle exceptions"]
Preparation
Take stock
List servers by location, operating system, owner, and criticality. Remove machines that are retired, and note special cases such as appliances that cannot run agents.
Design the Azure side
Choose subscriptions, resource groups, regions for metadata, and the tag set. Decide naming rules.
Create an onboarding identity
Create a service principal that holds only the Azure Connected Machine Onboarding role at the needed scope. Store its secret in a vault, not in scripts, and plan its rotation. Where possible, use short-lived or certificate-based credentials.
Open the network path
Allow outbound HTTPS to the required Azure endpoints through firewalls and proxies. Test from a sample server using the agent’s connectivity check.
Prepare the package
Choose how the agent will be distributed: configuration management, a software distribution tool, group policy, or a build image. Write one script that installs, connects with tags, and verifies.
Pilot and review
Connect machines from each environment and operating system. Review logs, resource properties, and the effect of policies.
Roll out in waves
Start with non-production, then production in batches. Pause after each wave to check health, performance impact, and support tickets.
Measure coverage
Compare the inventory with the Arc machine list, follow up on the gaps, and set a target date for completeness.
Tools for large deployments
| Tool | Use |
|---|---|
| Configuration management (Ansible, Puppet, Chef, DSC) | Roll out agent and settings with the rest of server configuration |
| Microsoft Configuration Manager | Deploy to Windows fleets as an application or task sequence |
| Group Policy startup script | Connect domain-joined servers using a shared script and secured credentials |
| Cloud connectors | Auto-discover and onboard virtual machines from other public clouds |
| Vendor virtualisation integrations | Enable Arc agents on virtual machines discovered through the resource bridge |
| Infrastructure as code pipelines | Include agent installation in new server builds |
Onboarding at scale is like adding every car in a city to a fleet-management system. You would not send one clerk to visit each car in turn. You would write a procedure, give a team limited authority to apply it, start with a handful of cars to check the procedure, and then roll it out street by street, tracking progress on a map.
Agent updates and lifecycle
The agent is updated regularly. You can update it manually, with your software distribution tools, or, for some versions, through Azure Update Manager and automatic mechanisms. Do not let agent versions fall far behind, because older versions may lose support and miss features and fixes. Monitor the version distribution and set a policy for the maximum age.
Machines you cannot or should not onboard
- Unsupported operating systems. Very old or unusual systems may not run the agent. Consider network-level monitoring, compensating controls, or migration plans.
- Appliances and locked-down devices. Vendor appliances often forbid third-party agents. Manage them by their own tools.
- Machines about to be retired. The effort may not be worthwhile.
- Template images. Do not connect a master image and then clone it; the clones would share an identity. Install the agent but leave the connect step to first boot.
The onboarding service principal is a powerful credential because it can create resources under your subscription. Scope it narrowly, restrict where it can be used, monitor its sign-ins, and remove or rotate it after the campaign ends.
13Security: Trusting the Bridge Between Worlds
Arc creates a management path between Azure and machines that may be anywhere. Used wisely, it improves security across the estate. Used carelessly, it becomes a new route for attackers.
Two sides of the coin
On the positive side, Arc extends modern controls to places that had none: threat detection, vulnerability scanning, consistent baselines, central logging, passwordless access, and fast patching. On the cautionary side, the same connection means that anyone who controls the Azure side with high privilege may be able to run code on the connected machines. The security of Azure subscriptions and identities therefore becomes part of the security of every connected server.
Giving head office remote control of every branch’s alarm system lets it respond to threats instantly. It also means that anyone who steals head office’s master key can switch off every alarm at once. The remote system is excellent, as long as the master key is guarded with exceptional care.
Protect the Azure side
- Strong identity. Require multifactor authentication and conditional access for anyone with rights to Arc resources. Use Privileged Identity Management for time-limited elevation.
- Least privilege. Separate roles for onboarding, reading, managing extensions, and running commands. The ability to install extensions or run commands on servers is equivalent to administrator access to them.
- Separate scopes. Place high-value servers in their own resource groups or subscriptions with tighter access.
- Locks and alerts. Use locks on critical Arc resources and alerts on changes such as new extensions, role assignments, and agent configuration.
- Protect onboarding credentials. Vault the service principal secrets and limit where they can be used.
Protect the machine side
Local agent configuration
Administrators on the machine can set local controls for the agent, such as allow and block lists for extensions and for the machine configuration feature, and whether remote access features are permitted. A strict local setting cannot be overridden from Azure.
Allow lists
Permit only the extensions you actually use. Block those that allow arbitrary command execution on machines where that is not appropriate.
Managed identity roles
Give the machine’s own identity only the Azure roles it needs, since any local administrator can obtain tokens for it.
Keep machines patched
An Arc connection does not make a vulnerable operating system safe. Use the update, assessment, and hardening features it provides.
Controlled egress
Restrict outbound traffic to the documented Azure endpoints through firewalls or proxies, and consider private connectivity.
Local protection of identity material
The agent stores its certificate and credentials locally. Protect the machine’s disks and backups like any other secret store.
Network security options
| Option | How it works | Use when |
|---|---|---|
| Public endpoints over HTTPS | The agent connects out to Azure service addresses over the internet using TLS | Simple setups, or where egress is allowed to named destinations |
| Proxy server | Agent traffic goes through a company proxy, with authentication if needed | Environments that require all outbound traffic to be filtered |
| Private Link scope | Agent traffic travels over private IP addresses through ExpressRoute or VPN to private endpoints | Strict policies forbidding internet paths; the scope must be set up and DNS resolved correctly |
| Arc gateway | A gateway endpoint that reduces the number of different destinations your firewall must allow | Locked-down networks with long allow lists; check availability and status |
Using Arc to raise security
- Enable Defender for Cloud on all connected servers and clusters for a single secure score.
- Assess vulnerabilities and track fixes through Update Manager.
- Apply machine configuration baselines for operating system hardening.
- Use Microsoft Entra sign-in and SSH through Azure instead of shared local passwords and open management ports.
- Keep certificates fresh with the Key Vault extension.
- Collect security logs centrally with Microsoft Sentinel or another SIEM.
Do not grant broad roles like Contributor on an entire hybrid subscription to many people. Contributor on Arc machines can include rights to run commands on all of them. Keep such rights small, audited, and time-limited.
14Networking, Connectivity, and Offline Behaviour
Because Arc depends on an outbound connection, networking is the commonest source of onboarding problems and of surprises at remote sites.
What the agent needs
The agent needs to make outbound HTTPS connections, on the standard secure web port, to a set of Azure service names. These cover Microsoft Entra authentication, Azure Resource Manager, the Arc service itself, the guest configuration service, and the download locations for extensions. Microsoft publishes the current list, which can be expressed as service tags or as DNS names. The agent does not need any inbound ports for its management channel. Time must also be reasonably accurate on the machine, since certificate and token checks depend on the clock.
Common network patterns
Direct internet egress
The easiest for data centers and cloud virtual machines. Allow the required destinations from the server subnets.
Via proxy
Set the proxy on the agent, and make sure the proxy permits TLS inspection exceptions where needed, since inspection can break certificate checks.
Private Link
Use private endpoints in a virtual network connected through ExpressRoute or VPN. Requires private DNS zones and careful routing.
Intermittent links
Remote sites with satellite or cellular connections can connect periodically. The machine keeps working offline and syncs when connected.
A remote research station may only have a radio window twice a day. The scientists carry on working regardless, and when the radio opens, they send their reports and receive any messages. Arc is built to live with such rhythms, but you must plan which tasks need a live link and which can wait.
Offline and disconnected situations
| Situation | What happens | Planning advice |
|---|---|---|
| Short outage (minutes to hours) | Workloads unaffected; Azure shows the machine as disconnected after missed heartbeats; data collection may buffer | Alert only after a sensible delay to avoid noise |
| Long outage (days) | Local checks continue; scheduled updates and policy changes cannot arrive; monitoring data gaps | Use local maintenance procedures for critical patches at remote sites |
| Very long outage (weeks) | The machine’s certificate may expire, and the resource may need reconnection | Check the documented limit; reconnect before it expires; use scripts for recovery |
| Permanently offline | Resource appears stale in Azure | Disconnect or delete to avoid confusion and unnecessary charges |
| Fully air-gapped | Standard Arc does not apply | Consider disconnected-capable products or alternative tools |
Bandwidth and data volume
The management channel itself uses little bandwidth. The heavy items are the data you choose to send: logs, metrics, and security events to Azure Monitor and Defender; extension downloads; and update packages. For sites with poor links, use data collection rules to filter what you send, schedule heavy downloads for off-peak times, and consider local caching or distribution points for updates.
DNS and certificates
- Machines must resolve Azure service names correctly. With Private Link, internal DNS must map those names to private addresses.
- TLS-inspecting firewalls that replace certificates can break the agent’s connection. Exempt Arc destinations from inspection.
- Root certificates must be current on older operating systems, otherwise secure connections fail.
- Keep time synchronised using NTP, as clock errors cause strange authentication failures.
The agent has a built-in connectivity check that tests all required endpoints and reports which fail. Run it as the first step of any onboarding troubleshooting, and make it part of your onboarding script.
15Cost and Licensing
The basic Arc connection is inexpensive, but the services you attach are not always free. Understanding where the charges arise prevents surprises.
The general principle
Microsoft generally does not charge for the Arc control-plane features of connecting a server or a Kubernetes cluster and viewing it as an Azure resource, with features such as inventory, tagging, and role-based access control included. You pay for the Azure services that you then use on those resources, and for some specific Arc offerings. Exact packaging and prices change, so always confirm on the official pricing pages and with your Microsoft representative.
| Item | Typical charging pattern |
|---|---|
| Connecting servers and viewing them in Azure | Generally no extra charge for the control-plane connection itself |
| Azure Policy and tagging | No separate charge for evaluation of resources; related deployed resources may cost |
| Azure Monitor data | Charged by the volume of logs and metrics ingested and retained |
| Defender for Cloud plans | Per server, per cluster, or per database per month, depending on plan |
| Update Manager | Pricing for Arc-enabled servers has differed from Azure virtual machines and has changed over time; check current terms |
| Extended Security Updates | Per core per period, as set by Microsoft, for eligible older versions |
| Arc-enabled SQL Server licensing options | Depends on agreement, including pay-as-you-go billing and Software Assurance benefits |
| Arc-enabled data services | Billed by usage such as cores or tier, with or without licence benefits |
| Azure Local | Per physical core host fee, plus guest licensing options |
| Network | ExpressRoute, VPN, and data transfer, billed by their providers |
A worked example
These figures are invented to show the arithmetic only. Suppose a company connects 500 servers. Basic connection is included. It enables a security plan on 300 of them at a per-server monthly price, collects logs from 200 of them at an average of 2 gigabytes per server per month, and buys extended security updates for 20 older servers by core. The monthly bill adds three elements: 300 times the security price, 400 gigabytes of log ingestion times the ingestion rate, and the update fee for the old servers. The company can control the total by choosing which servers get the paid plans, by filtering logs, and by retiring the old servers.
Ways to manage cost
Decide by tier
Apply full monitoring and security plans to important servers, and lighter coverage to low-risk ones.
Filter logs
Use data collection rules to send only the events and counters that you need. Verbose logging from thousands of machines gets expensive.
Retire stale resources
Delete Arc records for decommissioned machines so you do not pay for plans on machines that no longer exist.
Tag for charge-back
Cost tags let you split paid services among teams and sites.
Use licence benefits
Check whether existing licence agreements give rights for services delivered through Arc, such as hybrid benefits.
Watch the bills
Use Cost Management budgets and alerts on the hybrid subscriptions.
Registering a vehicle with a fleet system may cost nothing. But adding GPS tracking, insurance, a servicing plan, and driver monitoring each carries a monthly fee. You choose the options that make sense for each vehicle, and you do not buy premium cover for the old delivery bike.
Pricing, free allowances, and licence terms are among the details that change most. Do not rely on a book for numbers. Use the official pricing calculator and your agreement, and review them at least once a year.
16Monitoring, Logging, and Troubleshooting
A hybrid estate has many places to fail. Good monitoring and a clear troubleshooting method shorten every incident.
Where to look
Arc machine status
Connected or disconnected, last heartbeat, agent version, extension states, and policy compliance.
Agent command-line tool
Shows status, runs connectivity checks, and collects diagnostic logs on the machine.
Agent and extension logs
Files on the machine record connection attempts, errors, and extension installs.
Activity Log
Records who created, changed, or deleted Arc resources and extensions.
Resource Graph and workbooks
Fleet-wide views of disconnected machines, agent versions, and extension failures.
Azure Monitor alerts
Notify teams about disconnected machines, failed extensions, or compliance drops.
Common problems and their usual causes
| What you see | Usual cause | What to do |
|---|---|---|
| Connect command fails with network or timeout errors | Firewall or proxy blocks required endpoints, or DNS cannot resolve names | Run the connectivity check, fix egress rules or proxy settings, test name resolution |
| Connect fails with authorization errors | The onboarding identity lacks the role, wrong subscription, or resource provider not registered | Check the role assignment, scope, and register the Arc resource providers once per subscription |
| Machine shows Disconnected | Machine off, network path broken, agent service stopped, or clock wrong | Check the machine, run the agent status and connectivity checks, restart the service, fix time |
| Machine shows Expired | Offline longer than the certificate allows | Reconnect the machine with the connect command, after confirming it is the same machine |
| Extension installation fails | Insufficient permissions, blocked by local allow list, missing dependencies, no internet for download | Check the extension error, local configuration, and outbound access to extension download locations |
| Duplicate Arc resources for one server | A cloned virtual machine with the same agent identity, or reconnect without cleaning up | Disconnect and reconnect clones with unique names; clean old resources |
| Policy shows non-compliant but machine looks fine | Evaluation delay, extension not yet installed, or unsupported setting | Wait for the next cycle, check the machine configuration status and agent version |
| High resource use on the machine | Extension misbehaving, or very heavy data collection | Inspect extension logs, adjust data collection rules, update to current versions |
| Resource bridge not reachable | Appliance VM stopped, network change, expired credentials to vCenter, or certificate problems | Check the appliance, credentials, and connectivity; redeploy if necessary |
| Kubernetes agents crash or cluster shows disconnected | Outbound blocked, cluster resource shortage, or version incompatibility | Check pods in the Arc namespace, logs, and supported version ranges |
| GitOps configuration not applying | Repository access issue, wrong path, or invalid manifests | Read Flux status and events, test repository credentials, validate files |
A calm method for investigating
Check the status on the machine
Is the agent running, and what does it report? Local truth beats the portal’s picture.
Test the path
Run the connectivity check, then verify DNS, proxy, firewall, time, and certificates.
Sort the problem
Is it the machine, the network, the identity, the extension, or the Azure service?
Compare with a healthy machine
What differs: location, firewall zone, operating system, agent version, or configuration?
Fix once, then prevent
Apply the fix, confirm, and record it in a runbook. Add a policy or monitor to catch it earlier next time.
Alert on machines that have been disconnected for longer than a threshold, such as an hour for data center servers and a day for remote sites. Different thresholds by tag avoid flooding the team with noise from sites that are expected to be offline sometimes.
17Choosing the Right Approach: Arc, Migration, and Alternatives
Arc is a strong answer to some questions and the wrong answer to others. This chapter helps you decide.
flowchart TD
Q["You have resources outside Azure"] --> A{"Can and should they move to Azure"}
A -->|"Yes"| MIG["Plan migration with Azure Migrate and related tools"]
A -->|"No or not yet"| B{"Do you want Azure management for them"}
B -->|"Yes"| C{"What kind of resource"}
B -->|"No"| OTHER["Keep existing tools and review later"]
C -->|"Servers"| ARCS["Azure Arc enabled servers"]
C -->|"Kubernetes"| ARCK["Azure Arc enabled Kubernetes"]
C -->|"SQL Server"| ARCD["Azure Arc enabled SQL Server"]
C -->|"VMware or SCVMM"| ARCB["Arc resource bridge"]
C -->|"Need Azure services on own hardware"| LOCAL["Azure Local"]
MIG --> ARCS
The options compared
| Approach | Strength | Weakness | Best for |
|---|---|---|---|
| Azure Arc | Unified management and governance with no move, across clouds and sites | Needs agents and outbound connectivity; many features cost extra; ties management to Azure | Estates that must stay hybrid or multicloud for a long time |
| Migrate to Azure | Full cloud benefits, single platform, reduced local operations | Takes time and money; not all workloads can move | Workloads without a reason to stay |
| Azure Local | Azure-consistent platform on your hardware, managed with Arc | Requires validated hardware and operational skills | Sites needing local compute with cloud-style management |
| Native tools of each environment | Deep integration with each platform | Fragmented tools and skills; no common governance | Small, stable estates with a single environment |
| Third-party multi-cloud management platforms | Vendor-neutral features and sometimes broader coverage | Extra licensing and integration; may lack Azure depth | Organisations that standardise on a non-Azure management layer |
| Other clouds’ hybrid agents | Strong for managing that cloud’s own services | Duplicates effort in mixed estates | Estates primarily centered on another cloud |
Arc and migration together
Arc is often a stage on the way to migration, not an alternative. Connecting servers first gives you inventory, dependency information, and a consistent security and update approach while the migration is planned. Some workloads remain connected permanently because there are reasons they cannot move. The two tools answer different questions: Arc asks “how can I manage and govern this where it is?” and Azure Migrate asks “how can I move this to Azure?”
Arc is not a way to “pretend” machines are in Azure for reporting. If something is not truly managed, patched, and secured, listing it in Azure does not change its risk. The portal reflects reality, so build the processes that make that reality healthy.
Questions to settle the design
- Which resources will stay outside Azure, and for how long?
- What do we want to manage centrally: inventory, patching, security, monitoring, configuration?
- Which network pattern fits our rules: direct, proxy, or private?
- Who owns onboarding, policy, and incident response for the hybrid estate?
- Which paid services are justified for which resources?
- How will we handle sites with weak or intermittent connectivity?
18Patterns and Anti-Patterns
Teams that succeed with Azure Arc repeat a few good designs. Teams that struggle repeat a few familiar mistakes. Knowing both saves time.
Patterns that work
Policy-first onboarding
Design tags, groups, and baseline policies before connecting machines, so every new resource is governed from its first minute.
Automation with a narrow identity
One onboarding service principal with only the onboarding role, secrets in a vault, rotated after each campaign.
Hybrid management group
A dedicated branch of the hierarchy for Arc resources, with Arc-specific policies and clear owners.
Extension allow lists
Only approved extensions are permitted, and powerful ones are limited to the machines that need them.
GitOps for clusters
All clusters follow repositories for configuration, with pull-based delivery and no external cluster-admin credentials.
Cost by tier
Paid services are assigned by criticality tag, and logs are filtered at the source.
Fleet health dashboard
Resource Graph queries and workbooks show disconnected machines, outdated agents, and failing extensions in one place.
Arc then migrate
Connect first for visibility and security, then migrate what makes sense using Azure Migrate.
Habits compared
Healthy habits
- Pilot, then roll out in waves
- Least privilege for onboarding and operations
- Connectivity checks in every script
- Regular agent updates
- Clean-up of retired machines
Habits that hurt
- Connecting everything with a Contributor identity
- Cloning connected machines
- Collecting every log from every server
- Leaving extensions unrestricted
- Treating the portal view as proof of health
Four decisions worth recording
Teams that write down their key decisions avoid arguing about them again a year later. These short records use the common format of context, decision, and consequences. They are illustrative examples, not mandates.
Use Arc for all servers that will remain outside Azure for more than a year. Context: the company has 400 servers in two data centers and a shop network, managed with three different tools. Decision: every server with a planned lifetime beyond twelve months is onboarded to Arc, and shorter-lived servers are left as they are. Consequences: one patching and security process for most servers; extra work for onboarding, and a licence cost for chosen services.
Route Arc traffic through the corporate proxy with a defined allow list. Context: security policy forbids direct internet egress from server networks. Decision: Arc agents use the proxy, and the firewall team maintains the list of Azure endpoints from Microsoft’s published source. Consequences: compliance with network policy; a dependency on the proxy team, and periodic updates when endpoints change.
Block remote-command extensions on regulated database servers. Context: auditors objected to cloud-initiated commands on servers holding regulated data. Decision: local agent configuration blocks the run-command and similar extensions on those machines, and updates are applied through the approved change process using Update Manager only. Consequences: stronger assurance and audit comfort; less flexibility for emergency fixes through Azure.
Adopt GitOps with Flux for all Arc-enabled Kubernetes clusters. Context: 30 clusters across stores drifted from one another, and manual changes caused incidents. Decision: cluster configuration lives in repositories reviewed by the platform team, and each cluster pulls from a regional path. Consequences: consistency and an audit trail; teams must learn Git-based workflows, and emergency manual changes must be copied back to Git.
19Best Practices and Common Mistakes
This chapter gathers the advice of the whole book into one checklist to use before launch, during reviews, and after incidents.
Best practices
Define the purpose
Decide which outcomes you want, such as inventory, patching, security, or governance, before onboarding anything.
Design the structure first
Management groups, subscriptions, resource groups, tags, and naming, aligned with the Azure side.
Onboard in phases with automation
Pilot, then waves, with a script that installs, connects, tags, and verifies.
Use policy to apply capabilities
Deploy extensions, baselines, and monitoring through Azure Policy rather than by hand.
Secure both sides
Strong identity and least privilege in Azure, extension allow lists and hardening on the machines, and a controlled network path.
Plan for poor connectivity
Know the offline limits, set alert thresholds by site, and keep a local patch procedure.
Control cost deliberately
Choose paid services by tier, filter logs, retire stale resources, and watch budgets.
Keep agents and bridges current
Monitor versions and update on a schedule with testing.
Measure coverage and health
Compare inventory to Arc resources, and track disconnected machines and failed extensions.
Document ownership and runbooks
Who onboards, who patches, who responds, and how exceptions are requested.
Common mistakes
| Mistake | Consequence | Better approach |
|---|---|---|
| Assuming Arc moves workloads to Azure | Wrong expectations and planning | Explain that Arc only extends management; migration is separate |
| Onboarding without tags or structure | Messy estate that is hard to govern | Define tags and groups first, and set them at connect time |
| Broad rights on the onboarding identity | A leaked secret can create or alter many resources | Use the narrow onboarding role and vault the secret |
| Cloning Arc-connected virtual machines | Duplicate identities and confusing resources | Install the agent in images, connect at first boot |
| Ignoring proxy and TLS inspection | Connection failures that look random | Exempt Arc destinations and test with the connectivity check |
| Letting extensions run unrestricted | Unwanted remote execution rights | Allow lists and local agent configuration |
| Sending all logs to Azure Monitor | High, unexpected bills | Filter with data collection rules |
| Forgetting offline limits | Expired machines at remote sites | Check documented limits, alert early, reconnect on time |
| Not cleaning up decommissioned servers | Stale resources and ongoing charges | Add Arc disconnection to the decommissioning checklist |
| Neglecting agent and bridge updates | Unsupported versions and lost features | Monitor versions and schedule updates |
| Treating Defender score as the only security measure | Gaps in process and patching | Combine with hardening, access control, and incident response |
| No owner for the hybrid platform | Drifting standards and unresolved failures | Name a platform team and publish responsibilities |
20Real-World Scenarios
The following scenarios are invented illustrations built from common situations. They are not case studies of real companies, and the numbers are examples chosen to make the ideas concrete.
Scenario 1: A retailer manages stores, data centers, and another cloud
Situation. An imagined retailer has 600 servers across two data centers, 80 small servers in shops, and 100 machines in a second public cloud inherited from an acquisition. Patching and security reports require three tools and weeks of effort.
Design. The platform team creates a hybrid management group with three subscriptions. A service principal with the onboarding role and an automation script connect machines in waves, setting tags for site, owner, and patch group. Azure Policy deploys monitoring and update assessment, and Defender plans are enabled for tier 1 servers. Store servers use a proxy and have longer alert thresholds.
Outcome. After three months, the team answers “which servers are missing patches” with a single query. Patch compliance rises, and the audit report takes an afternoon instead of three weeks.
Scenario 2: A hospital group keeps data local but modernises operations
Situation. An imagined hospital group must keep patient systems on its own premises, but wants cloud-grade security monitoring and consistent updates.
Design. Servers are connected through Private Link over a dedicated circuit. Extension allow lists block remote command features on clinical systems. Update Manager schedules monthly maintenance windows agreed with clinical staff. Defender for Cloud provides assessment, and security logs flow to a central workspace within the country. Arc-enabled SQL Server gives the database team inventory and best practices assessments.
Outcome. Data never leaves the premises, security visibility improves across all sites, and the process for urgent patches is faster and documented.
Scenario 3: A logistics company runs clusters at the edge
Situation. An imagined logistics firm runs small Kubernetes clusters in 120 warehouses for scanning and routing applications. Links are slow and sometimes drop for hours.
Design. Each cluster is Arc-enabled and follows a regional GitOps path. Policies ban privileged containers. Logs are filtered at the edge, and only warnings and metrics summaries are sent to Azure. A fleet dashboard shows clusters out of sync, and alerts use long thresholds for sites with known weak links.
Outcome. A new application version reaches all warehouses within a day, without anyone logging in to a cluster, and sites that lose connection simply catch up when the link returns.
Scenario 4: A mid-size firm prepares for migration
Situation. An imagined engineering firm plans to move most servers to Azure over three years but needs control now.
Design. They connect all servers to Arc to gain inventory and security assessment, use dependency information to plan migration waves, and migrate application groups with Azure Migrate. After a move, the machine’s Arc record is removed because the server becomes a native Azure virtual machine. A few legacy machines stay connected permanently.
Outcome. The firm avoids a blind period before migration, improves its security immediately, and shortens the migration planning phase.
21Frequently Asked Questions
Short answers to the questions beginners ask most often.
22Summary and Key Takeaways
You began with a head teacher phoning forty schools. You now have the blueprint for a single control tower that sees every one of them.
Azure Arc extends Azure’s control plane to resources that run anywhere. A small agent, a set of cluster pods, or a resource bridge makes an outbound secure connection and creates a representation of the resource in Azure Resource Manager. From then on, Azure Policy, tags, role-based access, Resource Graph, Update Manager, Defender for Cloud, Monitor, and GitOps can govern servers, clusters, databases, and virtual machines wherever they are, without moving them. Success depends on design before deployment, narrow identities, controlled extensions, a reliable network path, thoughtful cost choices, and daily attention to health.
Key takeaways
- Control plane travels, workload stays. Arc projects resources into Azure; it does not move them or their data.
- Know the pieces. The Connected Machine agent, Kubernetes agents, the resource bridge, extensions, and custom locations each serve a part of the picture.
- Let policy do the work. Deploy extensions, baselines, and tags through Azure Policy, and use Resource Graph for fleet-wide views.
- Onboard with care. Pilot, roll out in waves, use a narrow onboarding identity, and never clone connected machines.
- Secure both sides. Protect Azure identities and roles, restrict extensions on machines, and control the network path.
- Plan for the edge. Understand offline behaviour and limits, and set alert thresholds that match each site.
- Pay for what you need. The connection is cheap, but attached services have cost, so assign them by tier and filter data.
Build a small project: onboard two or three test servers with a script and a narrow service principal, tag them, assign a policy that installs the monitoring extension and enables update assessment, query them with Resource Graph, and review the results. Then read the current Microsoft documentation for details that change quickly, such as supported platforms, endpoint lists, pricing, and the status of individual Arc features.