Back to Blog
3 min read

Azure Arc: Manage Resources Anywhere

Azure Arc extends Azure management to any infrastructure. On-premises servers, Kubernetes clusters, SQL instances—managed through the Azure control plane.

Arc-Enabled Services

  • Servers: Windows and Linux machines
  • Kubernetes: Any conformant K8s cluster
  • SQL Server: On-premises SQL instances
  • Data Services: Azure SQL MI and PostgreSQL anywhere

Arc-Enabled Servers

# Download and run the onboarding script
wget https://aka.ms/azcmagent-linux
chmod +x azcmagent-linux

# Connect to Azure Arc
./azcmagent connect \
    --resource-group myRG \
    --location eastus \
    --subscription-id {sub-id} \
    --tenant-id {tenant-id} \
    --service-principal-id {sp-id} \
    --service-principal-secret {secret}

Arc-Enabled Kubernetes

# Install connectedk8s extension
az extension add --name connectedk8s

# Connect cluster
az connectedk8s connect \
    --name my-onprem-cluster \
    --resource-group myRG \
    --location eastus

# Verify connection
az connectedk8s show \
    --name my-onprem-cluster \
    --resource-group myRG

GitOps with Flux

# Create GitOps configuration
az k8s-configuration flux create \
    --name cluster-config \
    --cluster-name my-onprem-cluster \
    --resource-group myRG \
    --cluster-type connectedClusters \
    --scope cluster \
    --namespace flux-system \
    --url https://github.com/myorg/k8s-config \
    --branch main \
    --kustomization name=infra path=./infrastructure prune=true \
    --kustomization name=apps path=./apps prune=true depends_on=["infra"]

Azure Policy for Arc

# Assign policy to Arc-enabled servers
az policy assignment create \
    --name "audit-ssh-posture" \
    --policy "audit-linux-ssh-settings" \
    --scope "/subscriptions/{sub}/resourceGroups/myRG"

Arc-Enabled SQL Server

# Register SQL Server with Arc
az sql server-arc create \
    --name sql-onprem-001 \
    --resource-group myRG \
    --location eastus \
    --license-type Paid \
    --cores-limit 8

Benefits:

  • Azure Defender for SQL (threat detection)
  • Azure Policy guest configurations
  • Inventory and assessment
  • Best practices recommendations

Arc Data Services

Run Azure data services anywhere:

# Create data controller
az arcdata dc create \
    --name arc-dc \
    --resource-group myRG \
    --location eastus \
    --connectivity-mode indirect \
    --namespace arc

# Deploy SQL Managed Instance
az sql mi-arc create \
    --name sql-mi-arc \
    --resource-group myRG \
    --location eastus \
    --data-controller-name arc-dc \
    --cores-limit 4 \
    --memory-limit 8Gi

VM Extensions on Arc Servers

# Install Log Analytics agent
az connectedmachine extension create \
    --machine-name my-server \
    --resource-group myRG \
    --name MicrosoftMonitoringAgent \
    --type MicrosoftMonitoringAgent \
    --publisher Microsoft.EnterpriseCloud.Monitoring \
    --settings '{"workspaceId":"xxx"}' \
    --protected-settings '{"workspaceKey":"xxx"}'

Unified Operations

┌─────────────────────────────────────────────────┐
│                 Azure Portal                      │
│  (Single pane of glass)                          │
├─────────────────────────────────────────────────┤
│                                                   │
│  ┌─────────┐  ┌─────────┐  ┌─────────┐         │
│  │ Azure   │  │ On-Prem │  │  AWS    │         │
│  │ VMs     │  │ Servers │  │  EC2    │         │
│  └─────────┘  └─────────┘  └─────────┘         │
│                                                   │
│  ┌─────────┐  ┌─────────┐  ┌─────────┐         │
│  │  AKS    │  │ VMware  │  │  EKS    │         │
│  │         │  │ K8s     │  │         │         │
│  └─────────┘  └─────────┘  └─────────┘         │
└─────────────────────────────────────────────────┘

Azure Arc: your hybrid cloud, unified.

Michael John Peña

Michael John Peña

Senior Data Engineer based in Sydney. Writing about data, cloud, and technology.