Creare una rete Hub & Spoke in Microsoft Azure con Virtual Network Manager
Il Networking all’interno di Azure può sembrare complesso e non molto intuitivo ad un primo approccio, specialmente se si viene come esperienza dal mondo On-Premises.
Con il tempo però sono nati all’interno della piattaforma tutta una serie di strumenti che consentono di gestire e automattizare la gestione delle Virtual Network in modo semplice e strutturato.
Figura 1: Disegno infrastrutturale di una rete Hub & Spoke in Azure
Uno di questi esempi è il Virtual Network Manager di Azure che consente di creare topologie di Rete all’interno della piattaforma Cloud di Microsoft in contesti multi Subscription e perfino Multi-Tenant.
La topologia che verrà presa in esame all’interno di questa guida è la Hub & Spoke, composta appunto da un Hub centrale che contiene le risorse condivise e di gestione come il Firewall, Azure Bastion, la parte di Virtual Network Gateway, ecc… e le spoke, che vengono utilizzate per segregare e governare i vari Workload appoggiati su di esse.
Requisiti
Per eseguire la configurazione proposta sarà necessario avere quanto segue:
- Tenant Entra ID
- Azure Subscription
- VS Code
- Powershell 7 con Bicep e Az-Cli
Creazione delle virtual Network
Per la creazione delle Virtual Network consiglio di utlizzare degli script Bicep, che consentono di creare velocemente tutte le reti necessarie alla topologia Hub and Spoke senza la necessità di utilizzare il portale.
Di seguito vengono riportati gli script necessari e i comandi Powershell per distribuire le risorse all’interno di Microsoft Azure.
Al seguente LINK lascio il mio repository GitHub con il codice.
Resource Group:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
targetScope = 'subscription' param location string = 'italynorth' resource rgHub 'Microsoft.Resources/resourceGroups@2021-04-01' = { name: 'RG-WPC-HUB-ITN-01' location: location } resource rgSpk1 'Microsoft.Resources/resourceGroups@2021-04-01' = { name: 'RG-WPC-SPK-ITN-01' location: location } resource rgSpk2 'Microsoft.Resources/resourceGroups@2021-04-01' = { name: 'RG-WPC-SPK-ITN-02' location: location } |
Virtul Network Hub:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
param location string = ‘italynorth’ resource vnetHub ‘Microsoft.Network/virtualNetworks@2021-02-01’ = { name: ‘vnet-prod-hub-itn-01’ location: location properties: { addressSpace: { addressPrefixes: [ ‘172.16.10.0/24’ ] } subnets: [ { name: ‘AzureBastionSubnet’ properties: { addressPrefix: ‘172.16.10.0/26’ } } { name: ‘AzureFirewallSubnet’ properties: { addressPrefix: ‘172.16.10.64/26’ } } { name: ‘GatewaySubnet’ properties: { addressPrefix: ‘172.16.10.128/27’ } } ] } } |
Virtual Network Spoke-01:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
param location string = 'italynorth' resource vnetSpk1 'Microsoft.Network/virtualNetworks@2021-02-01' = { name: 'vnet-prod-spk-itn-01' location: location properties: { addressSpace: { addressPrefixes: [ '172.16.11.0/24' ] } subnets: [ { name: 'snet-prod-iaas-itn-01' properties: { addressPrefix: '172.16.11.0/28' } } ] } } |
Virtual Network Spoke-02:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
param location string = 'italynorth' resource vnetSpk2 'Microsoft.Network/virtualNetworks@2021-02-01' = { name: 'vnet-prod-spk-itn-02' location: location properties: { addressSpace: { addressPrefixes: [ '172.16.12.0/24' ] } subnets: [ { name: 'snet-prod-paas-itn-01' properties: { addressPrefix: '172.16.12.0/28' } } ] } } |
Una volta clonato il repository consiglio di utilizzare il terminale Powershell presente in VS Code per spostarsi nella cartella dove avete appoggiato gli script:
Figura 2: Terminale di VS Code utilizzato per impostare il path nella cartella con gli script BICEP
A questo punto è possibile utilizzare i comandi Powershell di cui sotto per eseguire prima il login al proprio Tenat di destinazione e successviamente distribuire le risorse in Azure attraverso il comando “az deployment“:
Powershell in VS Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
#Login to azure az login --*inserisci il tuo Tenant ID* # Deploy Resource Group az deployment sub create --location italynorth --template-file .\ResourceGroup.bicep # Deploy Bicep File to Specific resource Group az deployment group create --resource-group RG-WPC-HUB-ITN-01 --template-file .\Hub-Vnet.bicep az deployment group create --resource-group RG-WPC-SPK-ITN-01 --template-file .\Spk01-Vnet.bicep az deployment group create --resource-group RG-WPC-SPK-ITN-02 --template-file .\Spk02-Vnet.bicep |
A beneficio della chiarezza, i passaggi eseguiti dello script sono 3:
- Login in Azure
- Creazione dei Resource Group nella region Italy North
- Creazione delle Virtual Network nei Resource Group di cui al punto precedente
Una volta eseguiti gli script è possibile fare accesso al portale Azure per verificare il risultato:
Figura 3: Verifica della creazione dei Resource Group
Controlliamo ora che le Vnet siano state distribuite e con le giuste configurazioni:
Figura 4: Verifica della creazione della VNET di Hub
Figura 5: Verifica aggiunta delle Subnet nella VNET di Hub
Implementazione Virtual Network Manager
Come visto nei punti precedenti, in questo momento abbiamo distribuito tre differenti Vnet, con le relative Subnet.
Ora però è il momento di creare una topologia di tipo Hub & Spoke attraverso l’utilizzo di Azure Virtual Network Manager.
Lo strumento creerà in autonomia i peering necessari alla comunicazione o, qualora presenti, si adatterà alla configurazione esistente.
Questo significa che potete utilizzarlo da subito nelle configurazioni già esistenti ma che magari necessatino delle funzionalità aggiuntive come le Security Admin Rules e/o la Direct Connectivity.
Eseguita la login al portale di Azure possiamo fare click nel campo di ricerca e digitare il nome del servizio “Virtual Network Manager”, successivamente fate click sul risultato corretto:
Figura 6: Ricerca del servizio Virtual Network Manager
Fare click a questo punto su “Get Started” e successivamente su “Create a network manager”
Figura 7: Fare click su “Create a network manager”
Compilare i vari campi presenti utilizzando il Resource Group dedicato alla rete di HUB, in questo caso “RG-WPC-HUB-ITN-01“, scegliere il nome e la region ed infine selezionare le “Features” che si desidera abilitare, in questo caso “Connectivity” e “Security admin“:
Figura 8: Selezionare le funzionalità di cui abbiamo bisogno
Una volta compilati tutti i campi fate click su “Next: Management Scope“:
Figura 9: Fare click su “Next: Management scope” per selezionare il Tenant e la Subscription da gestire
All’interno di questa sezione, selezionate “Add” per aggiungere le Subscription dove sono contenute le vostre Vnet:
Figura 10: Selezionare “Add” per aggiungere la Subscription corretta
Selezionate la Subscription dove sono presenti le vostre Vnet, quindi fate click su “Select“:
Figura 11: Selezionata la Subscription corretta fare click su “Select”
Verificate che l’aggiunta della Subscription target sia avvenuta correttamente, poi fate click su “Tags“:
Figura 12: Fare Click su “Next” per aggiungere i tag
Fare click su “Review + Create“:
Figura 13: Fare click su “Review + create”
Contrallate che le impostazioni siano corretta e poi fate click su “Create“:
Figura 14: Fare click su “Create” per procedere alla creazione della risorsa Azure
Una volta completata la distribuzione della risorsa è possibile fare click su “Go to resource” per raggiungere la pagina dedicata al Virtual Network Manager:
Figura 15: Fare click su “Go to resource” per verificare il risultato
Arrivati alla schermata del Virtual Network Manager fate click su “View Network Groups” per iniziare la creazione della topologia di rete Hub & Spoke:
Figura 16: Fare click su “View network Groups” per passare alla creazione dei Network Group
Fare click su “Create” per iniziare la creazione del Network Group:
Figura 17: Fare click su “Create” per creare il primo Network Group
Assegniamo un nome e il tipo di membership come da “figura 18“, successivamente fate click su “Create“:
Figura 18: Aggiungere un Nome e la tipologia di membership, poi fare click su “Create”
Una volta creata il nuovo Network Group, fare click sopra l’oggetto per aggiungere le Vnet che ne faranno parte:
Figura 19: Fare click nel nuovo oggetto per passare all’aggiunta delle Virtual Network
Fare click su “Add virtual Networks” per iniziare la procedura di aggiunta delle Vnet:
Figura 20: Fare click su “Add virtual networks” per aggiungere le Vnet
Aggiungere solo le Vnet di Spoke, quindi fare click su “Add“:
Figura 21: Selezionare le sole Vnet di Spoke e fare click su “Add”
Verificare che il numero delle Vnet che avete aggiunto corrisponda a quanto inserito al punto precedente:
Figura 22: Verificare che il numero delle Vnet che fanno parte del Network Group siano coerenti con le scelte fatte
A questo punto fare click su “Configurations” nella colonna di sinistra, quindi su “Create connectivity configuration“:
Figura 23: Spostarsi nel tab “Configurations” e fare click su “Create Connectivity Configuration”
Compilare con il nome desiderato e fare click su “Next: Topology“:
Figura 24: Inserire un nome e fare click su “Next: Topology”
All’interno della sezione topology, selezionare “Hub and spoke” e successivamente “Select a hub“:
Figura 25: Fare click su “Hub and spoke” e successivamente su “Select a Hub”
Selezionare la Vnet di Hub, quindi fare click su “Select“:
Figura 26: Selezionare la Vnet di Hub e fare click su “Select”
Spostandoci nella sezione inferiore possiamo fare click su “Add” e su “Add network groups“:
Figura 27: Fare click su “Add” e poi “Add network Groups”
Selezionare a questo punto il Network Group creato in precedenza e successivamente fare click su “Select“:
Figura 28: Aggiungere il Network group creato in precedenza e fare click su “Select”
Verificate le informazioni inserite e una volta pronti fate click su “Next Visualization“:
Figura 29: Fare click su “Next: Visualization” per verificare le configurazioni appena inserite
Presa visione della nuova topologia che verrà creata è possibile fare click su “Next: Review + create” per procedere nel setup:
Figura 30: Presa visione della nuova topologia è possibile fare click su “Review + Create”
Verificate tutte le informazioni potete fare click su “Create“:
Figura 31: Presa visione delle configurazioni fate click su “Create”
Spostarsi a questo punto nel Tab “Configurations” per verificare la configurazione appena creata:
Figura 32: Spostarsi nel tab Configurations per verificare se l’oggetto è stato creato correttamente
Infine spostarsi su “Deployments” per la fase finale:
Figura 33: Spostarsi nella colonna “Deployment”
All’interno del Tab “Deployments” fare click su “Deploy Configurations” quindi su “Connectivity Configurations“:
Figura 34: Fare click su “Deploy configurations” e poi su “Connectivity configuration”
Nella sezione “Goal state” selezionate la “Connectivity Configurations” corretta e la “Region” target del vostro deployment, in questo caso “Italy North“.
Al termine, fare click su “Next“:
Figura 35: Selezionare la configurazione e la region corretta, poi fare click su “Next”
Verificate la nuova configurazione, quindi fate click su “Deploy” per distribuire la nuova configurazione, ultimando così la configurazione:
Figura 36: Presa visione della nuova configurazione fare click su “Deploy”
Nella sezione “Deployments” del Virtual Network Manager è possibile verificare lo status del deployment, che ora risulta “Succeded“:
Figura 37: Al termine dell’operazione spostarsi in deployments e verificare che lo status sia “Succeded”
A questo punto, spostandoci nella rete di HUB è possibile verificare che sono stati creati due Peering per le spoke che fanno parte del “Network Group“:
Figura 38: Spostandoci nella Virtual Network di Hub è possibile verificare l’aggiunta dei Peering da parte del Vnet Manager
Conclusioni
Azure Virtual Network manager è un acceleratore dei nostri deployment all’interno di Microsoft Azure.
Esso garantisce un controllo sulle Virtual Network granulare, il vero single pane of glass nella gestione del Networking, consentondoci non solo di distribuire topologie di rete, ma anche configurazioni NSG tramite le Security Admin rule, oppure svolgere il ruolo di IPAM, questo ad oggi ancora in preview.
Quando utilizzare questo strumento? Come sempre la risposta è dipende dalla vostre esigenze, ma quando le Subscription crescono di numero e la complessità del vostro Networking aumenta, uno strumento del genere risolve davvero tanti problemi.
Vi lascio qualche link utile per approfondire questi temi:
https://learn.microsoft.com/en-us/azure/architecture/networking/architecture/hub-spoke
https://learn.microsoft.com/en-us/azure/virtual-network-manager/overview