Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
In rete virtuale di Azure è possibile distribuire i gruppi di contenitori usando il comando az container create nell'interfaccia della riga di comando di Azure. È anche possibile fornire impostazioni di configurazione avanzate al comando az container create usando un file di configurazione YAML.
Questo articolo illustra come distribuire un gruppo di contenitori con impostazioni DNS personalizzate usando un file di configurazione YAML.
Per altre informazioni sulla distribuzione di gruppi di contenitori in una rete virtuale, vedere l'articolo distribuire in una rete virtuale.
Importante
In precedenza, il processo di distribuzione dei gruppi di contenitori nelle reti virtuali ha usato profili di rete per la configurazione. Tuttavia, i profili di rete sono stati ritirati a partire dalla versione dell'API 2021-07-01. È consigliabile usare la versione più recente dell'API, che si basa sugli ID subnet.
Prerequisiti
Una sottoscrizione di Azure attiva. Se non si ha una sottoscrizione di Azure attiva, creare un account gratuito prima di iniziare.
Interfaccia della riga di comando di Azure. gli esempi della riga di comando in questo articolo usano l'interfaccia della riga di comando di Azure e sono formattati per la shell Bash. È possibile installare l'interfaccia della riga di comando di Azure localmente o usare Azure Cloud Shell.
Un gruppo di risorse per la gestione di tutte le risorse usate in questa guida pratica. In questo articolo viene usato il nome del gruppo di risorse di esempio ACIResourceGroup.
az group create --name ACIResourceGroup --location westus
Limiti
L'INDIRIZZO IP del resolver DNS di Azure, 168.63.129.16, viene aggiunto automaticamente al file /etc/resolv.conf nelle istanze del contenitore anche quando viene applicata una configurazione DNS personalizzata. La presenza dell'INDIRIZZO IP del sistema di risoluzione DNS di Azure può causare risoluzioni DNS non corrette per le distribuzioni usando musl-libc, ad esempio Alpine Linux. Questa risoluzione errata è dovuta al fatto che musl-libc invia query DNS in parallelo e memorizza nella cache la risposta più veloce. Per evitare questo problema, è consigliabile usare distribuzioni che gestiscono le query DNS in sequenza, ad esempio Ubuntu e RHEL, che usano glibc anziché musl-libc.
Per altri scenari e limitazioni di rete, vedere Scenari e risorse di rete virtuale per Istanze di Azure Container.
Importante
La distribuzione di gruppi di contenitori in una rete virtuale è disponibile per i contenitori Linux, nella maggior parte delle aree in cui è disponibile Istanze di Azure Container. Per informazioni dettagliate, vedere Aree e disponibilità delle risorse. Gli esempi di questo articolo sono formattati per la shell Bash. PowerShell o il prompt dei comandi, modificare di conseguenza i caratteri di continuazione di riga.
Creare la rete virtuale
È necessaria una rete virtuale per distribuire un gruppo di contenitori con una configurazione DNS personalizzata. Questa rete virtuale richiede una subnet con autorizzazioni per creare risorse di Istanze di Azure Container e una zona DNS privata collegata per testare la risoluzione dei nomi.
Questa guida usa una rete virtuale denominata aci-vnet, una subnet denominata aci-subnet e una zona DNS privata denominata private.contoso.com. Vengono usate le Zone DNS private di Azure di cui è possibile avere informazioni nella panoramica DNS privato.
Se si dispone di una rete virtuale esistente che soddisfa questi criteri, è possibile passare a Distribuire il gruppo di contenitori.
Suggerimento
È possibile modificare i comandi seguenti con le proprie informazioni in base alle esigenze.
Creare la rete virtuale con il comando az network vnet create. Immettere i prefissi di indirizzo nel formato CIDR (Classless Inter-Domain Routing), ad esempio
10.0.0.0/16.az network vnet create \ --name aci-vnet \ --resource-group ACIResourceGroup \ --location westus \ --address-prefix 10.0.0.0/16Creare la subnet usando il comando az network vnet subnet create. Il comando seguente crea una subnet nella rete virtuale con una delega che consente di creare gruppi di contenitori. Per altre informazioni sull'uso delle subnet, vedere Aggiungere, modificare o eliminare le subnet di rete virtuale. Per altre informazioni sulla delega della subnet, vedere la sezione Scenari di rete virtuale e risorse sulle subnet delegate.
az network vnet subnet create \ --name aci-subnet \ --resource-group ACIResourceGroup \ --vnet-name aci-vnet \ --address-prefixes 10.0.0.0/24 \ --delegations Microsoft.ContainerInstance/containerGroupsRegistrare la coppia chiave-valore ID subnet dall'output di questo comando. Questa coppia chiave-valore viene usata nel file di configurazione YAML in un secondo momento. Utilizza il formato
"id":"/subscriptions/<subscription-ID>/resourceGroups/ACIResourceGroup/providers/Microsoft.Network/virtualNetworks/aci-vnet/subnets/aci-subnet".Creare la zona DNS privata usando il comando az network private-dns zone create.
az network private-dns zone create -g ACIResourceGroup -n private.contoso.comCollegare la zona DNS alla rete virtuale usando il comando az network private-dns link vnet create. Il server DNS è necessario solo per testare la risoluzione dei nomi. Il flag
-eabilita la registrazione automatica del nome host, che non è necessario, quindi la proprietà viene impostata sufalse.az network private-dns link vnet create \ -g ACIResourceGroup \ -n aciDNSLink \ -z private.contoso.com \ -v aci-vnet \ -e false
Dopo aver completato i passaggi precedenti, verrà visualizzato un output con una coppia chiave-valore finale che legge "virtualNetworkLinkState": "Completed".
Distribuire il gruppo di contenitori
Nota
Le impostazioni DNS personalizzate non sono attualmente disponibili nel portale di Azure per le distribuzioni di gruppi di contenitori. Devono essere forniti con il file YAML, il modello di Resource Manager, l'API REST o un Azure SDK.
Copiare il codice YAML seguente in un nuovo file denominato custom-dns-deploy-aci.yaml. Modificare le configurazioni seguenti con i valori:
dnsConfig: impostazioni DNS per i contenitori all'interno del gruppo di contenitori.nameServers: elenco di server dei nomi da usare per le ricerche DNS.searchDomains: suffissi DNS da aggiungere per le ricerche DNS.
ipAddress: impostazioni dell'indirizzo IP privato per il gruppo di contenitori.ports: porte da aprire, se presenti.protocol: protocollo (TCP o UDP) per la porta aperta.
subnetIDs: impostazioni di rete per le subnet nella rete virtuale.id: ID risorsa di Resource Manager completo della subnet, ottenuto in precedenza.
Nota
In questo momento, i campi di configurazione DNS non vengono sottoposti automaticamente a query, quindi questi campi devono essere compilati in modo esplicito.
apiVersion: '2021-07-01'
location: westus
name: pwsh-vnet-dns
properties:
containers:
- name: pwsh-vnet-dns
properties:
command:
- /bin/bash
- -c
- echo hello; sleep 10000
environmentVariables: []
image: mcr.microsoft.com/powershell:latest
ports:
- port: 80
resources:
requests:
cpu: 1.0
memoryInGB: 2.0
dnsConfig:
nameServers:
- 10.0.0.10 # DNS Server 1
- 10.0.0.11 # DNS Server 2
searchDomains: contoso.com # DNS search suffix
ipAddress:
type: Private
ports:
- port: 80
subnetIds:
- id: /subscriptions/<subscription-ID>/resourceGroups/ACIResourceGroup/providers/Microsoft.Network/virtualNetworks/aci-vnet/subnets/aci-subnet
osType: Linux
tags: null
type: Microsoft.ContainerInstance/containerGroups
Distribuire il gruppo di contenitori con il comando az container create, specificando il nome di file YAML con il parametro --file:
az container create --resource-group ACIResourceGroup \
--file custom-dns-deploy-aci.yaml
Dopo il completamento della distribuzione, eseguire il comando az container show per distribuirne lo stato. Output di esempio:
az container show --resource-group ACIResourceGroup --name pwsh-vnet-dns -o table
Name ResourceGroup Status Image IP:ports Network CPU/Memory OsType Location
---------------- --------------- -------- ------------------------------------------ ----------- --------- --------------- -------- ----------
pwsh-vnet-dns ACIResourceGroup Running mcr.microsoft.com/powershell 10.0.0.5:80 Private 1.0 core/2.0 gb Linux westus
Dopo aver visualizzato lo stato Running, eseguire il comando az container exec per ottenere l'accesso bash all'interno del contenitore.
az container exec --resource-group ACIResourceGroup --name pwsh-vnet-dns --exec-command "/bin/bash"
Verificare che il DNS funzioni come previsto all'interno del contenitore. Ad esempio, leggere il file /etc/resolv.conf per garantire la configurazione corretta delle impostazioni DNS fornite nel file YAML.
Nota
Si noti che l'INDIRIZZO IP del resolver DNS di Azure 168.63.129.16 viene aggiunto automaticamente al file /etc/resolv.conf nelle interfacce di controllo di accesso, anche quando viene applicata una configurazione DNS personalizzata. Ciò può causare problemi di risoluzione nelle distribuzioni che gestiscono i processi di query DNS in parallelo. Per altre informazioni, vedere la sezione Limitazioni.
root@wk-caas-81d609b206c541589e11058a6d260b38-90b0aff460a737f346b3b0:/# cat /etc/resolv.conf
nameserver 10.0.0.10
nameserver 10.0.0.11
nameserver 168.63.129.16
search contoso.com
Pulire le risorse
Eliminare le istanze di contenitore
Al termine della creazione dell'istanza del contenitore, eliminarla con il comando az container delete:
az container delete --resource-group ACIResourceGroup --name pwsh-vnet-dns -y
Eliminare le risorse di rete
Se non si prevede di usare di nuovo questa rete virtuale, è possibile eliminarla con il comando az network vnet delete:
az network vnet delete --resource-group ACIResourceGroup --name aci-vnet
Elimina gruppo di risorse
Se non si prevede di usare questo gruppo di risorse all'esterno di questa guida, è possibile eliminarlo con il comando az group delete:
az group delete --name ACIResourceGroup
Immettere y quando richiesto se si vuole eseguire l'operazione.
Passaggi successivi
Per altre informazioni su come distribuire un gruppo di contenitori all'interno di una rete virtuale, vedere Il modello di avvio rapido di Azure Creare un gruppo di contenitori di Azure con rete virtuale.