Condividi tramite


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

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

È possibile usare un'identità gestita assegnata dall'utente o assegnata dal sistema 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 Azure Container. Può essere assegnato a più risorse di Azure, incluse le app di Azure Container.
  • Con un'identità gestita assegnata dal sistema, l'identità viene creata e gestita da App Azure Container. È 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, 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 Registro Azure Container privati.

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 Registro Azure Container privati.

  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 da estrarre.

  • 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:

    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 la procedura seguente per creare un'app contenitore con l'immagine di avvio rapido predefinita.

  1. Passare alla home page 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 Informazioni di base 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 dell'app contenitore Immettere il nome di un'app contenitore.
    Location Selezionare una località.
    Creare l'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 Assegnata 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 di sistema che si vuole usare dal menu a discesa.
    Image Immettere il nome dell'immagine da usare.
    Tag 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 di Registro Azure Container, verrà visualizzato un messaggio di avviso e sarà necessario immettere manualmente il nome dell'immagine e le informazioni sul tag.

  5. Seleziona Salva.

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

Verrà creata e distribuita una nuova revisione. Il portale tenterà automaticamente di aggiungere il acrpull ruolo 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 Assegnata 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 acrpull ruolo 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 acrpull ruolo 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 IaC (Infrastructure as Code).

Pulire le risorse

Se non si intende continuare a usare questa applicazione, è possibile eliminare l'istanza di App Azure Container 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. 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 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 la configurazione di 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 home page 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 Informazioni di base 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 dell'app contenitore Immettere il nome di un'app contenitore.
    Location Selezionare una località.
    Creare l'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 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. Contenitori dal menu laterale a sinistra.

  2. Selezionare Modifica e distribuzione.

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

    Impostazione Azione
    Nome Immettere il nome dell'app contenitore.
    Origine immagine Selezionare Registro Azure Container.
    Autenticazione Selezionare Identità gestita.
    Identità Selezionare Sistema assegnato.
    Registro Immettere il nome del Registro di sistema.
    Image Immettere il nome dell'immagine.
    Tag immagine Immettere il tag .

    Screenshot Modificare un contenitore con identità gestita assegnata dal sistema.

    Nota

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

  4. Selezionare Salva nella parte inferiore della pagina.

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

  6. 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 acrpull ruolo 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 acrpull ruolo 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 Azure Container 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. 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 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 di Registro Azure Container privato usando l'interfaccia della riga di comando di Azure e Azure PowerShell.

Prerequisiti

Prerequisito Descrizione
Account di 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 la versione più recente 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 da estrarre. Guida introduttiva: 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

Per assicurarsi di eseguire la versione più recente dell'interfaccia della riga di comando, eseguire il comando di aggiornamento.

az upgrade

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

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

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 Microsoft.App spazi dei nomi e Microsoft.OperationalInsights .

Nota

Le risorse di App Azure Container sono state migrate dallo Microsoft.Web spazio dei nomi allo Microsoft.App spazio dei nomi . Per altri dettagli, vedere Migrazione dello spazio dei nomi da Microsoft.Web a Microsoft.App nel mese di marzo 2022.

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

Impostare quindi le variabili di ambiente seguenti. Sostituire i segnaposto racchiusi tra i <> 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 acrpull ruolo 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 PLACEHOLDERS <> 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`

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

Il comando seguente elimina il gruppo di risorse specificato e tutte le risorse contenute al suo interno. 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 l'Registro Azure Container pull. È 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

Il comando seguente elimina il gruppo di risorse specificato e tutte le risorse contenute al suo interno. 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 di Registro Azure Container privati.

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

Per assicurarsi di eseguire la versione più recente dell'interfaccia della riga di comando, eseguire il comando di aggiornamento.

az upgrade

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

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

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 Microsoft.App spazi dei nomi e Microsoft.OperationalInsights .

Nota

Le risorse di App Azure Container sono state migrate dallo Microsoft.Web spazio dei nomi allo Microsoft.App spazio dei nomi . Per altri dettagli, vedere Migrazione dello spazio dei nomi da Microsoft.Web a Microsoft.App nel mese di marzo 2022.

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 <> i 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 AcrPull ruolo 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.
  • Un ambiente app contenitore.
  • Un'area di lavoro Log Analytics associata all'ambiente App contenitore.
  • Una risorsa di Application Insights per la traccia distribuita.
  • Identità gestita assegnata dall'utente.
  • Contenitore in cui archiviare l'immagine.
  • Un'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