Condividi tramite


Configurare l’immagine del contenitore per l’esecuzione di distribuzioni

Questo articolo illustra come creare immagini del contenitore personalizzate per distribuire le definizioni di ambiente in Crittografia dischi di Azure (ADE).

Questo articolo illustra come creare immagini di contenitori Terraform personalizzate per distribuire le definizioni di ambiente in Ambienti di distribuzione di Azure. Si apprenderà come configurare un'immagine personalizzata per eseguire il provisioning dell'infrastruttura usando il framework Infrastructure-as-Code (IaC) di Terraform.

In questo articolo si apprenderà come usare Pulumi per le distribuzioni in Ambienti di distribuzione di Azure (ADE). Si apprenderà come usare un'immagine di esempio fornita da Pulumi o come configurare un'immagine personalizzata per effettuare il provisioning dell'infrastruttura usando il framework Infrastructure-as-Code (IaC) di Pulumi.

ADE supporta un modello di estendibilità che consente di creare immagini personalizzate utilizzabili nelle definizioni dell'ambiente. Per usare questo modello di estendibilità, creare immagini personalizzate e archiviarle in un registro contenitori come Registro Azure Container (ACR) o Docker Hub. Quindi sarà possibile fare riferimento a queste immagini nelle definizioni dell'ambiente per distribuire gli ambienti.

Una definizione di ambiente include almeno due file: un file modello, ad esempio azuredeploy.json o main.bicep, e un file manifesto denominato environment.yaml. ADE usa i contenitori per distribuire le definizioni di ambiente.

Il team di Crittografia dischi di Azure offre una selezione di immagini per iniziare, tra cui un'immagine di base e un'immagine di Azure Resource Manager (ARM)-Bicep. È possibile accedere a queste immagini di esempio nella cartella Runner-Images.

Una definizione di ambiente include almeno due file: un file modello, ad esempio main.tf, e un file manifesto denominato environment.yaml. Si usa un contenitore per distribuire la definizione di ambiente che usa Terraform.

Una definizione di ambiente include almeno due file: un file di progetto Pulumi, Pulumi.yaml, e un file manifesto denominato environment.yaml. Inoltre potrebbe contenere un programma utente scritto nel linguaggio di programmazione preferito: C#, TypeScript, Python e così via. ADE usa i contenitori per distribuire le definizioni di ambiente.

Prerequisiti

Usare immagini del contenitore con Ambienti di distribuzione di Azure

È possibile adottare uno degli approcci seguenti per usare le immagini del contenitore con Ambienti di distribuzione di Azure:

  • Usare un’immagine del contenitore di esempio: per scenari semplici, usare l'immagine del contenitore Azure Resource Manager-Bicep di esempio fornita da Crittografia dischi di Azure.
  • Creare un'immagine del contenitore personalizzata: per scenari più complessi, creare un'immagine del contenitore personalizzata che soddisfi i requisiti specifici.

I passaggi principali da seguire quando si usa un'immagine del contenitore sono:

  1. Scegliere il tipo di immagine da usare: un'immagine di esempio o un'immagine personalizzata.
    • Se si usa un'immagine personalizzata, iniziare con un'immagine di esempio e quindi personalizzarla in base alle esigenze.
  2. Compilare l'immagine.
  3. Caricare l'immagine in un registro privato o in un registro pubblico.
  4. Configurare l’accesso al registro.
    • Configurare un pull anonimo per un registro pubblico.
    • Assegnare le autorizzazioni di Registro Azure Container di DevCenter per un registro privato.
  5. Aggiungere il percorso dell'immagine al parametro runner nella definizione di ambiente
  6. Distribuire ambienti che usano l'immagine personalizzata.

Il primo passaggio della procedura consiste nello scegliere il tipo di immagine da usare. Selezionare la scheda corrispondente per visualizzare la procedura.

Usare un'immagine del contenitore di esempio

Crittografia dischi di Azure supporta Azure Resource Manager e Bicep senza richiedere alcuna configurazione aggiuntiva. È possibile creare una definizione di ambiente che distribuisca le risorse di Azure per un ambiente di distribuzione aggiungendo i file modello (ad esempio azuredeploy.json ed environment.yaml) al catalogo. Crittografia dischi di Azure usa quindi l'immagine del contenitore di Azure Resource Manager - Bicep di esempio per creare l'ambiente di distribuzione.

Nel file environment.yaml la proprietà runner specifica il percorso dell'immagine del contenitore da usare. Per usare l'immagine di esempio pubblicata nel Registro artefatti Microsoft, usare gli identificatori corrispondentirunner.

L'esempio seguente mostra uno runner che fa riferimento all'immagine del contenitore di Azure Resource Manager-Bicep di esempio:

    name: WebApp
    version: 1.0.0
    summary: Azure Web App Environment
    description: Deploys a web app in Azure without a datastore
    runner: Bicep
    templatePath: azuredeploy.json

È possibile visualizzare l'immagine del contenitore di Bicep di esempio nel repository di esempio di Crittografia dischi di Azure nella cartella Runner-Images per l'immagine di Azure Resource Manager-Bicep.

Per altre informazioni su come creare definizioni di ambiente che usano le immagini del contenitore di Ambienti di distribuzione di Azure per distribuire le risorse di Azure, vedere Aggiungere e configurare una definizione di ambiente.

Usare un'immagine personalizzata per configurare un'immagine Terraform.

Usare un’immagine del contenitore di esempio fornita da Pulumi

Il team Pulumi fornisce un'immagine predefinita per le attività iniziali, visualizzabile nella cartella Strumento di esecuzione-immagine. Questa immagine è disponibile pubblicamente nel Docker Hub di Pulumi come pulumi/azure-deployment-environments, così da poterla usare direttamente dalle definizioni dell'ambiente ADE.

Un file environment.yaml di esempio che usa l’immagine predefinita è il seguente:

name: SampleDefinition
version: 1.0.0
summary: First Pulumi-Enabled Environment
description: Deploys a Storage Account with Pulumi
runner: pulumi/azure-deployment-environments:0.1.0
templatePath: Pulumi.yaml

Nella cartella Ambienti è possibile trovare alcune definizioni di ambiente di esempio.

Compilare un'immagine

È possibile creare l’immagine tramite l'interfaccia della riga di comando di Docker. Verificare che il motore Docker sia installato nel computer. Passare quindi alla directory del Dockerfile ed eseguire il comando seguente:

docker build . -t {YOUR_REGISTRY}.azurecr.io/{YOUR_REPOSITORY}:{YOUR_TAG}

Ad esempio, se si vuole salvare l'immagine in un repository all'interno del registro denominato customImage e si desidera eseguire il caricamento con la versione tag di 1.0.0, si eseguirà:

docker build . -t {YOUR_REGISTRY}.azurecr.io/customImage:1.0.0

Rendere l'immagine personalizzata accessibile a Crittografia dischi di Azure

Per usare immagini personalizzate, è necessario archiviarle in un registro contenitori. È possibile usare un registro contenitori pubblico o un registro contenitori privato. È altamente consigliabile usare Registro Azure Container in quanto, grazie alla stretta integrazione con Crittografia dischi di Azure, l'immagine può essere pubblicata senza consentire l'accesso pull anonimo pubblico. È necessario creare l'immagine del contenitore personalizzata ed eseguirne il push in un registro contenitori per renderla disponibile per l'uso in Crittografia dischi di Azure.

È anche possibile archiviare l'immagine in un registro contenitori diverso, ad esempio Docker Hub, ma in tal caso deve essere accessibile pubblicamente.

Attenzione

L'archiviazione dell'immagine del contenitore in un registro con accesso pull anonimo (non autenticato) lo rende accessibile pubblicamente. Non farlo se l'immagine contiene informazioni riservate. Archiviarla invece nel Registro Azure Container con accesso pull anonimo disabilitato.

Per usare un'immagine personalizzata archiviata nel Registro Azure Container, è necessario assicurarsi che Ambienti di distribuzione di Azure disponga delle autorizzazioni appropriate per accedere all'immagine. Quando si crea un'istanza del Registro Azure Container, è sicura per impostazione predefinita e consente solo agli utenti autenticati di ottenere l'accesso.

Pulumi consente di creare un Registro Azure Container e pubblicarvi l'immagine. Fare riferimento all'esempio provisioning/immagine personalizzata per un progetto Pulumi autonomo che crea le risorse necessarie nell'account Azure.

Selezionare la scheda appropriata per altre informazioni su ogni approccio.

Usare un registro privato con accesso protetto

Per impostazione predefinita, l'accesso al pull o al push di contenuto da un Registro Azure Container è disponibile solo per gli utenti autenticati. È possibile proteggere ulteriormente l'accesso al Registro Azure Container limitando l'accesso da determinate reti e assegnando ruoli specifici.

Per creare un'istanza del Registro Azure Container, operazione che si può effettuare tramite interfaccia della riga di comando di Azure, il portale di Azure, comandi di PowerShell e altro ancora, seguire un avvio rapido.

Limitare l'accesso alla rete

Per proteggere l'accesso alla rete per il Registro Azure Container, è possibile limitare l'accesso alle proprie reti o disabilitare completamente l'accesso alla rete pubblica. Se si limita l'accesso alla rete, è necessario abilitare l'eccezione del firewall Consenti ai servizi Microsoft attendibili di accedere a questo registro contenitori.

Per disabilitare l'accesso dalle reti pubbliche:

  1. Creare un'istanza del Registro Azure Container o usarne una esistente.

  2. Nel portale di Azure passare al Registro Azure Container da configurare.

  3. Nel menu a sinistra, in Impostazioni selezionare Rete.

  4. Nella pagina Rete, nella scheda Accesso pubblico, in Accesso alla rete pubblica selezionare Disabilitato.

    Screenshot del portale di Azure, che mostra le impostazioni di rete del Registro Azure Container, con Accesso pubblico e Disabilitato evidenziati.

  5. In Eccezione firewall verificare che Consenti ai servizi Microsoft attendibili di accedere a questo registro contenitori sia selezionato e quindi selezionare Salva.

    Screenshot delle impostazioni di rete del Registro Azure Container, con le opzioni Consenti ai servizi Microsoft attendibili di accedere a questo registro contenitori e Salva evidenziate.

Assegnare il ruolo AcrPull

La creazione di ambienti tramite immagini del contenitore usa l'infrastruttura di Ambienti di distribuzione di Azure, inclusi i progetti e i tipi di ambiente. Ogni progetto ha uno o più tipi di ambiente, che richiedono l'accesso in lettura all'immagine del contenitore che definisce l'ambiente da distribuire. Per accedere alle immagini all'interno del Registro Azure Container in modo sicuro, assegnare il ruolo AcrPull a ogni tipo di ambiente di progetto.

Per assegnare il ruolo AcrPull al tipo di ambiente del progetto:

  1. Nel portale di Azure passare al Registro Azure Container da configurare.

  2. Nel menu a sinistra selezionare Controllo di accesso (IAM).

  3. Seleziona Aggiungi>Aggiungi assegnazione ruolo.

  4. Assegnare il ruolo seguente. Per la procedura dettagliata, vedere Assegnare ruoli di Azure usando il portale di Azure.

    Impostazione Valore
    Ruolo Selezionare AcrPull.
    Assegna accesso a Selezionare Utente, gruppo o entità servizio.
    Membri Immettere il nome del tipo di ambiente del progetto che deve accedere all'immagine nel contenitore.

    Il tipo di ambiente del progetto viene visualizzato come nell'esempio seguente:

    Screenshot del riquadro di selezione membri, che mostra un elenco di tipi di ambiente del progetto con parte del nome evidenziato.

In questa configurazione, Ambienti di distribuzione di Azure usa l'identità gestita per il tipo di ambiente del progetto, che sia assegnata dal sistema o dall'utente.

Suggerimento

Questa assegnazione di ruolo deve essere eseguita per ogni tipo di ambiente di progetto. L'operazione può essere automatizzata tramite l'interfaccia della riga di comando di Azure.

Quando si è pronti per eseguire il push dell'immagine nel registro, eseguire il comando seguente:

docker push {YOUR_REGISTRY}.azurecr.io/{YOUR_IMAGE_LOCATION}:{YOUR_TAG}

Compilare un'immagine del contenitore con uno script

Anziché creare l'immagine personalizzata ed eseguirne il push in un registro contenitori manualmente, è possibile usare uno script per crearla ed eseguirne il push in un registro contenitori specificato.

Microsoft fornisce uno script di avvio rapido che consente di creare l'immagine personalizzata ed eseguirne il push in un registro. Lo script compila l'immagine ed esegue il push dell'immagine in un Registro Azure Container nel repository ade e con il tag latest.

Per usare lo script, è necessario:

  1. Creare un Dockerfile e una cartella per gli script per supportare il modello di estendibilità di Ambienti di distribuzione di Azure.
  2. Specificare una directory e un nome del registro per l'immagine personalizzata.
  3. Installare l'interfaccia della riga di comando di Azure e Docker Desktop nelle variabili PATH.
  4. Assicurarsi che Docker Desktop sia in esecuzione.
  5. Disporre delle autorizzazioni per eseguire il push nel registro specificato.

È possibile visualizzare lo script qui.

È possibile chiamare lo script usando il comando seguente in PowerShell:

.\quickstart-image-build.ps1 -Registry '{YOUR_REGISTRY}' -Directory '{DIRECTORY_TO_YOUR_IMAGE}'

Inoltre, se si vuole eseguire il push in un repository e un nome di tag specifici, è possibile eseguire:

.\quickstart-image.build.ps1 -Registry '{YOUR_REGISTRY}' -Directory '{DIRECTORY_TO_YOUR_IMAGE}' -Repository '{YOUR_REPOSITORY}' -Tag '{YOUR_TAG}'

Connettere l'immagine alla definizione dell'ambiente

Quando si creano definizioni di ambiente per usare l'immagine personalizzata nella distribuzione, modificare la proprietà runner nel file manifesto (environment.yaml o manifest.yaml).

runner: "{YOUR_REGISTRY}.azurecr.io/{YOUR_REPOSITORY}:{YOUR_TAG}"

Per altre informazioni su come creare definizioni di ambiente che usano le immagini del contenitore di Ambienti di distribuzione di Azure per distribuire le risorse di Azure, vedere Aggiungere e configurare una definizione di ambiente.