Condividi tramite


Pull di immagini di App contenitore di Azure con l'identità gestita

È possibile eseguire il pull delle immagini dai repository privati in Registro Microsoft Azure Container usando identità gestite per l'autenticazione per evitare l'uso di credenziali amministrative.

È possibile usare un'identità gestita assegnata dal sistema o dall'utente per l'autenticazione con Registro Azure Container.

  • Con un'identità gestita assegnata dall'utente, si crea e si gestisce l'identità all'esterno di App contenitore di Azure. Può essere assegnato a più risorse di Azure, incluse le App contenitore di Azure.
  • Con un'identità gestita assegnata dal sistema, l'identità viene creata e gestita da App contenitore di Azure. È associato all'app contenitore e viene eliminato quando l'app viene eliminata.
  • Quando possibile, è consigliabile usare un'identità gestita assegnata dall'utente per eseguire il pull delle immagini.

App contenitore verifica la presenza di una nuova versione dell'immagine ogni volta che viene avviato un contenitore. Nella terminologia di Docker o Kubernetes, l’App contenitore imposta i criteri di pull delle immagini di ogni contenitore su always.

Questo articolo descrive come usare il portale di Azure per configurare l'app contenitore in modo da usare le identità gestite assegnate dall'utente e assegnate dal sistema per eseguire il pull delle immagini dai repository privati di Registro Azure Container.

Identità gestita assegnata dall'utente

I passaggi seguenti descrivono il processo per configurare l'app contenitore in modo da usare un'identità gestita assegnata dall'utente per eseguire il pull delle immagini dai repository privati di Registro Azure Container.

  1. Creare un'app contenitore con un'immagine pubblica.
  2. Aggiungere l'identità gestita assegnata dall'utente all'app contenitore.
  3. Creare una revisione dell'app contenitore con un'immagine privata e l'identità gestita assegnata dall'utente.

Prerequisiti

  • Un account Azure con una sottoscrizione attiva.

  • Un Registro Azure Container privato contenente un'immagine di cui si vuole eseguire il pull.

  • Il Registro Azure Container deve consentire ai token del gruppo di destinatari ARM di eseguire l'autenticazione per usare l'identità gestita per eseguire il pull delle immagini. Usare il comando seguente per verificare se i token ARM sono autorizzati ad accedere al Registro Azure Container (ACR):

    az acr config authentication-as-arm show -r <REGISTRY>
    

    Se i token ARM non sono consentiti, è possibile consentirli con il comando seguente:

    az acr config authentication-as-arm update -r <REGISTRY> --status enabled
    
  • Creare un'identità gestita assegnata dall'utente. Per altre informazioni, vedere Creare un'identità gestita assegnata dall'utente.

Creare un'app contenitore

Usare i passi seguente per creare un'app contenitore con l'immagine di avvio rapido predefinita.

  1. Passare alla pagina Home del portale.

  2. Cercare App contenitore nella barra di ricerca superiore.

  3. Selezionare App contenitore nei risultati della ricerca.

  4. Selezionare il pulsante Crea.

  5. Nella scheda Dati principali eseguire le azioni seguenti.

    Impostazione Azione
    Abbonamento Seleziona la tua sottoscrizione di Azure.
    Gruppo di risorse Selezionare un gruppo di risorse esistente oppure creane uno nuovo.
    Nome app contenitore Immettere un nome dell'app contenitore.
    Location Selezionare una località.
    Creare un ambiente dell'app contenitore Creare un nuovo ambiente o selezionare un ambiente esistente.
  6. Selezionare il pulsante Rivedi e crea nella parte inferiore della pagina Crea app contenitore.

  7. Selezionare il pulsante Crea nella parte inferiore della finestra Crea app contenitore.

Attendere alcuni minuti per il completamento della distribuzione dell'app contenitore. Al termine della distribuzione, selezionare Vai alla risorsa.

Aggiungere l'identità gestita assegnata dall'utente.

  1. Selezionare Identità dal menu a sinistra.
  2. Selezionare la scheda Assegnato dall'utente.
  3. Selezionare il pulsante Aggiungi identità gestita assegnata dall'utente.
  4. Selezionare la propria sottoscrizione.
  5. Selezionare l'identità creata.
  6. Selezionare Aggiungi.

Creare una revisione dell'app contenitore

Creare una revisione dell'app contenitore con un'immagine privata e l'identità gestita assegnata dal sistema.

  1. Selezionare Gestione revisioni dal menu a sinistra.

  2. Selezionare Crea nuova revisione.

  3. Selezionare l'immagine del contenitore dalla tabella Immagine contenitore.

  4. Immettere le informazioni nella finestra di dialogo Modifica un contenitore.

    Campo Azione
    Nome Immettere un nome per il contenitore.
    Origine immagine Selezionare Registro Azure Container.
    Autenticazione Selezionare Identità gestita.
    Identità Selezionare l'identità creata dal menu a discesa.
    Registro Selezionare il registro che si vuole usare dal menu a discesa.
    Image Immettere il nome dell'immagine da usare.
    Tag dell'immagine Immettere il nome e il tag dell'immagine da estrarre.

    Screenshot della finestra di dialogo Modifica contenitore che immette l'identità gestita assegnata dall'utente.

    Nota

    Se le credenziali amministrative non sono abilitate nel Registro Azure Container, verrà visualizzato un messaggio di avviso e sarà necessario immettere manualmente il nome dell'immagine e le informazioni sui tag.

  5. Seleziona Salva.

  6. Selezionare Crea dalla pagina Crea e distribuisci nuova revisione.

Verrà creata e distribuita una nuova revisione. Il portale tenterà automaticamente di aggiungere il ruolo acrpull all'identità gestita assegnata dall'utente. Se il ruolo non viene aggiunto, è possibile aggiungerlo manualmente.

È possibile verificare che il ruolo sia stato aggiunto controllando l'identità dal riquadro Identità della pagina dell'app contenitore.

  1. Selezionare Identità dal menu a sinistra.
  2. Selezionare la scheda Assegnato dall'utente.
  3. Selezionare l'identità gestita assegnata dall'utente.
  4. Selezionare Assegnazioni di ruolo di Azure dal menu nella pagina della risorsa di identità gestita.
  5. Verificare che il ruolo acrpull sia assegnato all'identità gestita assegnata dall'utente.

Creare un'app contenitore con un'immagine privata

Se non si vuole iniziare creando un'app contenitore con un'immagine pubblica, è anche possibile eseguire le operazioni seguenti.

  1. Creare un'identità gestita assegnata dall'utente.
  2. Aggiungere il ruolo acrpull all’identità gestita assegnata dall'utente.
  3. Creare un'app contenitore con un'immagine privata e l'identità gestita assegnata dall'utente.

Questo metodo è tipico negli scenari Infrastruttura come codice (IaC)

Pulire le risorse

Se non si intende continuare a usare questa applicazione, è possibile eliminare l'istanza di App contenitore di Azure e tutti i servizi associati rimuovendo il gruppo di risorse.

Avviso

L'eliminazione del gruppo di risorse eliminerà tutte le risorse nel gruppo. Se nel gruppo sono presenti altre risorse, verranno eliminate anche queste. Se si vogliono mantenere le risorse, è possibile eliminare l'istanza dell'app contenitore e l'ambiente dell'app contenitore.

  1. Selezionare il gruppo di risorse nella sezione Panoramica.
  2. Selezionare il pulsante Elimina gruppo di risorse nella parte superiore della pagina di Panoramica del gruppo di risorse.
  3. Immettere il nome del gruppo di risorse nella finestra di dialogo di conferma.
  4. Selezionare Elimina. Il completamento del processo per eliminare il gruppo di risorse può richiedere alcuni minuti.

Identità gestita assegnata dal sistema

Il metodo per configurare un'identità gestita assegnata dal sistema nel portale di Azure equivale alla configurazione di un'identità gestita assegnata dall'utente. L'unica differenza è che non è necessario creare un'identità gestita assegnata dall'utente. Al contrario, l'identità gestita assegnata dal sistema viene creata quando si crea l'app contenitore.

Il metodo per configurare un'identità gestita assegnata dal sistema nel portale di Azure è:

  1. Creare un'app contenitore con un'immagine pubblica.
  2. Creare una revisione dell'app contenitore con un'immagine privata e l'identità gestita assegnata dal sistema.

Prerequisiti

Creare un'app contenitore

Seguire questa procedura per creare un'app contenitore con l'immagine di avvio rapido predefinita.

  1. Passare alla pagina Home del portale.

  2. Cercare App contenitore nella barra di ricerca superiore.

  3. Selezionare App contenitore nei risultati della ricerca.

  4. Selezionare il pulsante Crea.

  5. Nella scheda Dati principali eseguire le azioni seguenti.

    Impostazione Azione
    Abbonamento Seleziona la tua sottoscrizione di Azure.
    Gruppo di risorse Selezionare un gruppo di risorse esistente oppure creane uno nuovo.
    Nome app contenitore Immettere un nome dell'app contenitore.
    Origine distribuzione Lasciare questa opzione impostata su Immagine contenitore.
    Area Scegliere un'area.
    Ambiente app contenitore Selezionare un ambiente esistente o selezionare Crea nuovo. Per altre informazioni, vedere Ambienti di App Azure Container
  6. Selezionare Avanti: Contenitore >.

  7. Nella scheda Contenitore abilitare Usa immagine di avvio rapido. Lasciare l'immagine di avvio rapido impostata su Contenitore Simple hello world.

  8. Selezionare il pulsante Rivedi e crea nella parte inferiore della pagina Crea app contenitore.

  9. Selezionare il pulsante Crea nella parte inferiore della pagina Crea app contenitore.

Attendere alcuni minuti per il completamento della distribuzione dell'app contenitore. Al termine della distribuzione, selezionare Vai alla risorsa.

Modificare e distribuire una revisione

Modificare il contenitore per usare l'immagine dal Registro Azure Container privato e configurare l'autenticazione per l'uso dell'identità assegnata dal sistema.

  1. In Applicazione selezionare Contenitori.

  2. Nella pagina Contenitori selezionare Modifica e distribuzione.

  3. Selezionare il contenitore simple-hello-world-container dall'elenco.

  4. Nella pagina Modifica un contenitore eseguire le azioni seguenti.

    Impostazione Azione
    Nome Immettere il nome dell'app contenitore.
    Origine immagine Selezionare Registro Azure Container.
    Abbonamento Seleziona la tua sottoscrizione di Azure.
    Registro Selezionare il registro contenitori.
    Image Immettere il nome dell'immagine.
    Tag dell'immagine Immettere il tag immagine.
    Tipo di autenticazione Selezionare Identità gestita.
    Identità gestita Selezionare Sistema assegnato.
  5. Selezionare Salva nella parte inferiore della pagina.

  6. Selezionare Crea nella parte inferiore della pagina Crea e distribuisci nuova revisione

  7. Dopo alcuni minuti, selezionare Aggiorna nella pagina Gestione revisioni per visualizzare la nuova revisione.

Verrà creata e distribuita una nuova revisione. Il portale tenterà automaticamente di aggiungere il ruolo acrpull all'identità gestita assegnata dal sistema. Se il ruolo non viene aggiunto, è possibile aggiungerlo manualmente.

È possibile verificare che il ruolo sia stato aggiunto controllando l'identità nel riquadro Identità della pagina dell'app contenitore.

  1. Selezionare Identità dal menu a sinistra.
  2. Selezionare la scheda Assegnata dal sistema.
  3. Selezionare assegnazioni di ruolo di Azure.
  4. Verificare che il ruolo acrpull sia assegnato all'identità gestita assegnata dal sistema.

Pulire le risorse

Se non si intende continuare a usare questa applicazione, è possibile eliminare l'istanza di App contenitore di Azure e tutti i servizi associati rimuovendo il gruppo di risorse.

Avviso

L'eliminazione del gruppo di risorse eliminerà tutte le risorse nel gruppo. Se nel gruppo sono presenti altre risorse, verranno eliminate anche queste. Se si vogliono mantenere le risorse, è possibile eliminare l'istanza dell'app contenitore e l'ambiente dell'app contenitore.

  1. Selezionare il gruppo di risorse nella sezione Panoramica.
  2. Selezionare il pulsante Elimina gruppo di risorse nella parte superiore della pagina di Panoramica del gruppo di risorse.
  3. Immettere il nome del gruppo di risorse nella finestra di dialogo di conferma.
  4. Selezionare Elimina. Il completamento del processo per eliminare il gruppo di risorse può richiedere alcuni minuti.

Questo articolo descrive come configurare l'app contenitore per l'uso di identità gestite per eseguire il pull delle immagini da un repository privato di Registro Azure Container usando l'interfaccia della riga di comando di Azure e Azure PowerShell.

Prerequisiti

Prerequisito Descrizione
Account Azure Un account Azure con una sottoscrizione attiva. Se non hai un account, puoi crearlo gratuitamente.
Interfaccia della riga di comando di Azure Se si usa l'interfaccia della riga di comando di Azure, installare l'interfaccia della riga di comando di Azure nel computer locale.
Azure PowerShell Se si usa PowerShell, installare Azure PowerShell nel computer locale. Verificare che l’ultima versione del modulo Az.App sia installata eseguendo il comando Install-Module -Name Az.App.
Registro Azure Container Un Registro Azure Container privato contenente un'immagine di cui si vuole eseguire il pull. Avvio rapido: Creare un registro contenitori privato usando l'interfaccia della riga di comando di Azure o Avvio rapido: Creare un registro contenitori privato con Azure PowerShell

Attrezzaggio

Per accedere ad Azure dall'interfaccia della riga di comando, eseguire il comando seguente e seguire le istruzioni per completare il processo di autenticazione.

az login

Assicurarsi di eseguire l'ultima versione dell'interfaccia della riga di comando eseguire il comando di aggiornamento.

az upgrade

Installare o aggiornare quindi l'estensione App contenitore di Azure per l'interfaccia della riga di comando.

Se si ricevono errori relativi ai parametri mancanti quando si eseguono comandi az containerapp nell'interfaccia della riga di comando di Azure o nei cmdlet del modulo Az.App in Azure PowerShell, assicurarsi di avere installato la versione più recente dell'estensione App contenitore di Azure.

az extension add --name containerapp --upgrade

Nota

A partire da maggio 2024, le estensioni dell'interfaccia della riga di comando di Azure non abilitano più le funzionalità di anteprima per impostazione predefinita. Per accedere alle funzionalità di anteprima di App contenitore, installare l'estensione App contenitore con --allow-preview true.

az extension add --name containerapp --upgrade --allow-preview true

Ora che l'estensione o il modulo corrente è installato, registrare gli spazi dei nomi Microsoft.App e Microsoft.OperationalInsights.

az provider register --namespace Microsoft.App
az provider register --namespace Microsoft.OperationalInsights

Impostare quindi le variabili di ambiente seguenti. Sostituire i segnaposto racchiusi tra <> con i propri valori.

RESOURCE_GROUP="<YOUR_RESOURCE_GROUP_NAME>"
LOCATION="<YOUR_LOCATION>"
CONTAINERAPPS_ENVIRONMENT="<YOUR_ENVIRONMENT_NAME>"
REGISTRY_NAME="<YOUR_REGISTRY_NAME>"
CONTAINERAPP_NAME="<YOUR_CONTAINERAPP_NAME>"
IMAGE_NAME="<YOUR_IMAGE_NAME>"

Se si dispone già di un gruppo di risorse, ignorare questo passaggio. In caso contrario, creare un gruppo di risorse.

az group create \
  --name $RESOURCE_GROUP \
  --location $LOCATION

Creare un ambiente dell’app contenitore

Se l'ambiente non esiste, eseguire il comando seguente:

Per creare l'ambiente, eseguire il comando seguente:

az containerapp env create \
  --name $CONTAINERAPPS_ENVIRONMENT \
  --resource-group $RESOURCE_GROUP \
  --location $LOCATION

Passare alla sezione successiva per configurare l'identità gestita assegnata dall'utente o passare alla sezione Identità gestita assegnata dal sistema.

Identità gestita assegnata dall'utente

Seguire questa procedura per configurare l'identità gestita assegnata dall'utente:

  1. Creare un'identità gestita assegnata dall'utente.
  2. Se si usa PowerShell, assegnare un ruolo acrpull per il registro all'identità gestita. L'interfaccia della riga di comando di Azure effettua automaticamente questa assegnazione.
  3. Creare un'app contenitore con l'immagine dal registro privato autenticato con l'identità gestita assegnata dall'utente.

Creare un'identità gestita assegnata dall'utente

Creare un'identità gestita assegnata dall'utente. Prima di eseguire il comando seguente, sostituire i <PLACEHOLDER> con il nome dell'identità gestita.

IDENTITY="<YOUR_IDENTITY_NAME>"
az identity create \
  --name $IDENTITY \
  --resource-group $RESOURCE_GROUP

Ottenere l'ID risorsa dell'identità.

IDENTITY_ID=$(az identity show \
  --name $IDENTITY \
  --resource-group $RESOURCE_GROUP \
  --query id \
  --output tsv)

Creare un'app contenitore

Creare l'app contenitore con l'immagine dal registro privato autenticato con l'identità.

Copiare l'ID risorsa dell'identità da incollare nei segnaposto <IDENTITY_ID> nel comando seguente. Se il tag immagine non è latest, sostituire “latest” con il tag.

echo $IDENTITY_ID
az containerapp create \
  --name $CONTAINERAPP_NAME \
  --resource-group $RESOURCE_GROUP \
  --environment $CONTAINERAPPS_ENVIRONMENT \
  --user-assigned <IDENTITY_ID> \
  --registry-identity <IDENTITY_ID> \
  --registry-server "${REGISTRY_NAME}.azurecr.io" \
  --image "${REGISTRY_NAME}.azurecr.io/${IMAGE_NAME}:latest"

Eseguire la pulizia

Attenzione

Nell'esempio seguente, il gruppo di risorse specificato e tutte le risorse al suo interno vengono eliminati. Se nel gruppo di risorse specificato sono presenti anche risorse diverse da quelle usate in questa guida di avvio rapido, verranno eliminate.

az group delete --name $RESOURCE_GROUP

Identità gestita assegnata dal sistema

Per configurare un'identità assegnata dal sistema, è necessario:

  1. Creare un'app contenitore con un'immagine pubblica.
  2. Assegnare un'identità gestita assegnata dal sistema all'app contenitore.
  3. Aggiornare l'app contenitore con l'immagine privata.

Creare un'app contenitore

Creare un contenitore con un'immagine pubblica.

az containerapp create \
  --name $CONTAINERAPP_NAME \
  --resource-group $RESOURCE_GROUP \
  --environment $CONTAINERAPPS_ENVIRONMENT \
  --image mcr.microsoft.com/k8se/quickstart:latest \
  --target-port 80 \
  --ingress external

Aggiornare l'app contenitore

Aggiornare l'app contenitore con l'immagine dal registro contenitori privato e aggiungere un'identità assegnata dal sistema per autenticare il pull di Registro Azure Container. È anche possibile includere altre impostazioni necessarie per l'app contenitore, ad esempio l'ingresso, la scalabilità e le impostazioni Dapr.

Impostare il server del Registro di sistema e attivare l'identità gestita assegnata dal sistema nell'app contenitore.

az containerapp registry set \
  --name $CONTAINERAPP_NAME \
  --resource-group $RESOURCE_GROUP \
  --identity system \
  --server "${REGISTRY_NAME}.azurecr.io"
az containerapp update \
  --name $CONTAINERAPP_NAME \
  --resource-group $RESOURCE_GROUP \
  --image "${REGISTRY_NAME}.azurecr.io/${IMAGE_NAME}:latest"

Eseguire la pulizia

Attenzione

Nell'esempio seguente, il gruppo di risorse specificato e tutte le risorse al suo interno vengono eliminati. Se nel gruppo di risorse specificato sono presenti anche risorse diverse da quelle usate in questa guida di avvio rapido, verranno eliminate.

az group delete --name $RESOURCE_GROUP

Questo articolo descrive come usare un modello Bicep per configurare l'app contenitore in modo da usare le identità gestite assegnate dall'utente per eseguire il pull delle immagini dai repository privati di Registro Azure Container.

Prerequisiti

Attrezzaggio

Per accedere ad Azure dall'interfaccia della riga di comando, eseguire il comando seguente e seguire le istruzioni per completare il processo di autenticazione.

az login

Assicurarsi di eseguire l'ultima versione dell'interfaccia della riga di comando eseguire il comando di aggiornamento.

az upgrade

Installare o aggiornare quindi l'estensione App contenitore di Azure per l'interfaccia della riga di comando.

Se si ricevono errori relativi ai parametri mancanti quando si eseguono comandi az containerapp nell'interfaccia della riga di comando di Azure o nei cmdlet del modulo Az.App in Azure PowerShell, assicurarsi di avere installato la versione più recente dell'estensione App contenitore di Azure.

az extension add --name containerapp --upgrade

Nota

A partire da maggio 2024, le estensioni dell'interfaccia della riga di comando di Azure non abilitano più le funzionalità di anteprima per impostazione predefinita. Per accedere alle funzionalità di anteprima di App contenitore, installare l'estensione App contenitore con --allow-preview true.

az extension add --name containerapp --upgrade --allow-preview true

Ora che l'estensione o il modulo corrente è installato, registrare gli spazi dei nomi Microsoft.App e Microsoft.OperationalInsights.

az provider register --namespace Microsoft.App
az provider register --namespace Microsoft.OperationalInsights

Installare Bicep

Se Bicep non è installato, è possibile installarlo come segue.

az bicep install

Se Bicep è installato, assicurarsi di avere la versione più recente.

az bicep upgrade

Per altre informazioni, vedere Installazione di Bicep.

Impostare le variabili di ambiente

Impostare quindi le variabili di ambiente seguenti. Sostituire i segnaposto racchiusi tra <> con i propri valori.

RESOURCE_GROUP="<RESOURCE_GROUP_NAME>"
LOCATION="<LOCATION>"
REGISTRY_NAME="<REGISTRY_NAME>"
IMAGE_NAME="<IMAGE_NAME>"
IMAGE_TAG="<IMAGE_TAG>"
BICEP_TEMPLATE="<BICEP_TEMPLATE>"
CONTAINERAPPS_ENVIRONMENT="<ENVIRONMENT_NAME>"
CONTAINER_NAME="<CONTAINER_NAME>"
CONTAINERAPP_NAME="<CONTAINERAPP_NAME>"
USER_ASSIGNED_IDENTITY_NAME="<USER_ASSIGNED_IDENTITY_NAME>"
LOG_ANALYTICS_WORKSPACE_NAME="<LOG_ANALYTICS_WORKSPACE_NAME>"
APP_INSIGHTS_NAME="<APP_INSIGHTS_NAME>"
ACR_PULL_DEFINITION_ID="7f951dda-4ed3-4680-a7ca-43fe172d538d"

Il ruolo AcrPull concede all'identità gestita assegnata dall'utente l'autorizzazione per eseguire il pull dell'immagine dal Registro di sistema.

Modello Bicep

Copiare il modello Bicep seguente e salvarlo come file con l'estensione .bicep.

param environmentName string 
param logAnalyticsWorkspaceName string
param appInsightsName string
param containerAppName string 
param azureContainerRegistry string
param azureContainerRegistryImage string 
param azureContainerRegistryImageTag string
param acrPullDefinitionId string
param userAssignedIdentityName string
param location string = resourceGroup().location

resource identity 'Microsoft.ManagedIdentity/userAssignedIdentities@2022-01-31-preview' = {
  name: userAssignedIdentityName
  location: location 
}

resource roleAssignment 'Microsoft.Authorization/roleAssignments@2022-04-01' = {
  name: guid(resourceGroup().id, azureContainerRegistry, 'AcrPullTestUserAssigned')
  properties: {
    principalId: identity.properties.principalId  
    principalType: 'ServicePrincipal'
    // acrPullDefinitionId has a value of 7f951dda-4ed3-4680-a7ca-43fe172d538d
    roleDefinitionId: resourceId('Microsoft.Authorization/roleDefinitions', acrPullDefinitionId)
  }
}

resource logAnalyticsWorkspace 'Microsoft.OperationalInsights/workspaces@2022-10-01' = {
  name: logAnalyticsWorkspaceName
  location: location
  properties: any({
    retentionInDays: 30
    features: {
      searchVersion: 1
    }
    sku: {
      name: 'PerGB2018'
    }
  })
}

resource appInsights 'Microsoft.Insights/components@2020-02-02' = {
  name: appInsightsName
  location: location
  kind: 'web'
  properties: {
    Application_Type: 'web'
    WorkspaceResourceId: logAnalyticsWorkspace.id
  }
}

resource appEnvironment 'Microsoft.App/managedEnvironments@2022-06-01-preview' = {
  name: environmentName
  location: location
  properties: {
    daprAIInstrumentationKey: appInsights.properties.InstrumentationKey
    appLogsConfiguration: {
      destination: 'log-analytics'
      logAnalyticsConfiguration: {
        customerId: logAnalyticsWorkspace.properties.customerId
        sharedKey: logAnalyticsWorkspace.listKeys().primarySharedKey
      }
    }
  }
}

resource containerApp 'Microsoft.App/containerApps@2022-06-01-preview' = {
  name: containerAppName
  location: location
  identity: {
    type: 'UserAssigned'
    userAssignedIdentities: {
      '${identity.id}': {}
    }
  }
  properties: {
    environmentId: appEnvironment.id
    configuration: {
      ingress: {
        targetPort: 8080
        external: true
      }
      registries: [
        {
          server: '${azureContainerRegistry}.azurecr.io'
          identity: identity.id
        }
      ]
    }
    template: {
      containers: [
        {
          image: '${azureContainerRegistry}.azurecr.io/${azureContainerRegistryImage}:${azureContainerRegistryImageTag}'
          name: '${azureContainerName}'
          resources: {
            cpu: 1
            memory: '2Gi'
          }
        }
      ]
      scale: {
        minReplicas: 1
        maxReplicas: 1
      }
    }
  }
}

output location string = location
output environmentId string = appEnvironment.id

Distribuire l'app contenitore

Distribuire l'app contenitore con il comando seguente.

az deployment group create \
  --resource-group $RESOURCE_GROUP \
  --template-file $BICEP_TEMPLATE \
  --parameters environmentName="${CONTAINERAPPS_ENVIRONMENT}" \
  logAnalyticsWorkspaceName="${LOG_ANALYTICS_WORKSPACE_NAME}" \
  appInsightsName="${APP_INSIGHTS_NAME}" \
  containerAppName="${CONTAINERAPP_NAME}" \
  azureContainerRegistry="${REGISTRY_NAME}" \
  azureContainerRegistryImage="${IMAGE_NAME}" \
  azureContainerRegistryImageTag="${IMAGE_TAG}" \
  azureContainerName="${CONTAINER_NAME}" \
  acrPullDefinitionId="${ACR_PULL_DEFINITION_ID}" \
  userAssignedIdentityName="${USER_ASSIGNED_IDENTITY_NAME}" \
  location="${LOCATION}"

Questo comando distribuisce quanto segue.

  • Un gruppo di risorse di Azure.
  • Ambiente delle app contenitore.
  • Un'area di lavoro Log Analytics associata all'ambiente App contenitore.
  • Una risorsa di Application Insights per la traccia distribuita.
  • Un'identità gestita assegnata dall'utente.
  • Contenitore in cui archiviare l'immagine.
  • App contenitore basata sull'immagine.

Se viene visualizzato l'errore Failed to parse '<YOUR_BICEP_FILE_NAME>', please check whether it is a valid JSON format, assicurarsi che il file del modello Bicep abbia l'estensione .bicep.

Risorse aggiuntive

Per ulteriori informazioni, vedere quanto segue.

Passaggi successivi