Condividi tramite


Memorizzazione nella cache dello stato della distribuzione

Il aspire deploy comando gestisce lo stato della distribuzione tramite i file di configurazione memorizzati nella cache archiviati localmente nel computer. Questo meccanismo di memorizzazione nella cache semplifica le distribuzioni ripetute mantenendo le impostazioni e i parametri di provisioning, rendendo le distribuzioni successive più veloci ed efficienti.

Comportamento predefinito

Il aspire deploy comando gestisce automaticamente lo stato della distribuzione in base all'esistenza della configurazione memorizzata nella cache per l'applicazione e l'ambiente di destinazione.

Prima implementazione

Quando si esegue aspire deploy per la prima volta o per la prima volta in una destinazione --environment, il comando :

  1. Richiede informazioni di provisioning (ID di sottoscrizione, nome del gruppo di risorse, località).
  2. Richiede parametri di distribuzione, ad esempio chiavi API, stringhe di connessione.
  3. Avvia il processo di distribuzione.
  4. Salva tutti i valori richiesti e lo stato di distribuzione in ~/.aspire/deployments/{AppHostSha}/production.json.

Distribuzioni successive

Nelle esecuzioni successive aspire deploy , il comando :

  1. Rileva il file di stato della distribuzione esistente in ~/.aspire/deployments/{AppHostSha}/production.json.
  2. Notifica che le impostazioni verranno lette dal file memorizzato nella cache.
  3. Richiede conferma per caricare le impostazioni memorizzate nella cache.
  4. Carica la configurazione dal file memorizzato nella cache nel provider di configurazione.
  5. Procede con la distribuzione usando i valori salvati nella cache (senza richiedere nuovamente).

Distribuzioni specifiche per ambiente

Diversi ambienti di distribuzione, ad esempio sviluppo, gestione temporanea e produzione, richiedono in genere configurazioni diverse, nomi di risorse e stringhe di connessione. Il aspire deploy comando supporta distribuzioni specifiche dell'ambiente, assicurandosi che ogni ambiente mantenga lo stato di distribuzione isolato.

Specificare un ambiente

Usare il --environment flag per la distribuzione in ambienti diversi:

aspire deploy --environment staging

Prima distribuzione in un ambiente specifico:

  • Si richiedono tutte le informazioni relative al provisioning e ai parametri.
  • Salva lo stato della distribuzione in ~/.aspire/deployments/{AppHostSha}/{environment}.json (ad esempio ,staging.json).

Distribuzioni successive:

  • Legge il file memorizzato nella cache specifico dell'ambiente.
  • Carica la configurazione dallo stato memorizzato nella cache.
  • Usa i valori memorizzati nella cache senza richiedere conferma.

Supporto delle variabili di ambiente

L'ambiente di distribuzione può essere specificato anche usando la DOTNET_ENVIRONMENT variabile di ambiente:

export DOTNET_ENVIRONMENT=staging && aspire deploy

Questo comportamento si comporta in modo identico all'uso del --environment flag, caricando il file di configurazione memorizzato nella cache appropriato.

Gestione della cache

Il aspire deploy comando fornisce meccanismi per gestire lo stato di distribuzione memorizzato nella cache, dandoti il controllo su quando usare i valori memorizzati nella cache e quando iniziare da zero.

Cancellare la cache

Usare il --clear-cache flag per reimpostare lo stato di distribuzione:

aspire deploy --clear-cache

Comportamento:

  1. Richiede conferma prima di eliminare la cache per l'ambiente specificato.
  2. Elimina il file di stato di distribuzione specifico dell'ambiente(ad esempio ~/.aspira/deployments/{AppHostSha}/production.json).
  3. Richiede tutte le informazioni sul provisioning e sui parametri come se lo si distribuisse per la prima volta.
  4. Procede al rilascio.
  5. Non salva i valori richiesti nella cache.

Cancellazione della cache specifica dell'ambiente

Il --clear-cache flag rispetta il contesto dell'ambiente:

aspire deploy --environment staging --clear-cache

Cancella solo il file della cache staging.json, lasciando intatte altre cache dell'ambiente (ad esempio production.json).

Percorso di archiviazione file

  • Modello di percorso:~/.aspira/deployments/{AppHostSha}/{environment}.json.
  • Ambiente predefinito:production.
  • AppHostSha: Valore hash che rappresenta la configurazione host dell'applicazione, assicurando che gli stati di distribuzione siano specifici di ogni configurazione dell'applicazione.

Usare lo stato di distribuzione nelle pipeline CI/CD

Quando si usa il aspire deploy comando nelle pipeline di integrazione continua e distribuzione (CI/CD), è possibile rendere persistente lo stato di distribuzione tra le esecuzioni della pipeline. Questo approccio può essere utile per mantenere configurazioni di distribuzione coerenti senza intervento manuale.

GitHub Esempio di azioni

Nell'esempio seguente viene illustrato come memorizzare nella cache lo stato di distribuzione in un GitHub flusso di lavoro Actions usando l'azione actions/cache :

name: Deploy to Azure

on:
  push:
    branches: [ main ]

jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v4
    
    - name: Cache Aspire deployment state
      uses: actions/cache@v4
      with:
        path: ~/.aspire/deployments
        key: aspire-deploy-${{ hashFiles('**/AppHost.csproj') }}-${{ github.ref }}
        restore-keys: |
          aspire-deploy-${{ hashFiles('**/AppHost.csproj') }}-
          aspire-deploy-
    
    - name: Deploy with Aspire CLI
      run: aspire deploy --environment production
      env:
        AZURE_CREDENTIALS: ${{ secrets.AZURE_CREDENTIALS }}

Questo flusso di lavoro memorizza nella cache la directory ~/.aspire/deployments , usando l'hash del file di progetto AppHost e il riferimento di ramo come chiavi della cache. L'azione actions/cache ripristina automaticamente la cache prima del passaggio di distribuzione e salva tutti gli aggiornamenti nella cache al termine del processo. Le esecuzioni successive del flusso di lavoro ripristinano lo stato di distribuzione memorizzato nella cache, consentendo distribuzioni automatizzate senza richiedere nuovamente i valori di configurazione.

Attenzione

Quando si memorizza nella cache lo stato di distribuzione nelle pipeline CI/CD, assicurarsi che la pipeline disponga di controlli di accesso appropriati e procedure di gestione dei segreti, in quanto lo stato memorizzato nella cache potrebbe contenere valori di configurazione sensibili.

Considerazioni sulla sicurezza

I file di stato della distribuzione vengono archiviati localmente nel computer nella directory ~/.aspire/deployments . Questi file contengono le impostazioni di provisioning e i valori dei parametri, inclusi i segreti che potrebbero essere associati alle risorse dei parametri. Il aspire deploy comando segue lo stesso modello .NETdi sicurezza del gestore dei segreti utente:

  • I file vengono archiviati all'esterno del codice sorgente per prevenire la divulgazione accidentale di informazioni riservate nel controllo delle versioni.
  • I segreti vengono archiviati in testo normale nel file system locale.
  • Qualsiasi processo in esecuzione con l'account utente può accedere a questi file.

Prendere in considerazione queste procedure consigliate per la sicurezza:

  • Verificare che il computer locale disponga di misure di sicurezza appropriate.
  • Prestare attenzione durante la condivisione o il backup dei file dalla directory ~/.aspire/deployments .
  • Usare il --clear-cache flag quando è necessario modificare i valori dei parametri sensibili.

Punti chiave

  • Ogni ambiente mantiene il proprio stato di distribuzione isolato.
  • I valori memorizzati nella cache vengono mantenuti tra le distribuzioni, a meno che non vengano cancellati in modo esplicito.
  • Il --clear-cache flag esegue una distribuzione una tantum senza rendere persistenti i nuovi valori.
  • La selezione dell'ambiente può essere specificata tramite flag o variabile di ambiente.
  • Viene richiesto di confermare quando si caricano le impostazioni memorizzate nella cache.
  • I file della cache vengono archiviati per applicazione (tramite AppHostSha) e per ogni ambiente.

Vedere anche