Questo tutorial mostra come utilizzare Azure Pipelines, Google Kubernetes Engine (GKE) e Google Container Registry per creare una pipeline di integrazione continua/deployment continuo (CI/CD) per un'applicazione web MVC ASP.NET. Ai fini di questo tutorial, puoi scegliere tra due applicazioni di esempio:
- Un'applicazione web ASP.NET Core che utilizza .NET 6.0 e viene eseguita su Linux
- Un'applicazione web ASP.NET MVC che utilizza .NET Framework 4 ed è in esecuzione su Windows.
La pipeline CI/CD utilizza due cluster GKE separati, uno per lo sviluppo e uno per la produzione, come mostra il diagramma seguente.
All'inizio della pipeline, gli sviluppatori impegnano le modifiche al codebase di esempio. Questa azione attiva la pipeline per creare una release e eseguirne il deployment nel cluster di sviluppo. Un gestore delle release può quindi promuovere la release in modo che venga sottoposta a deployment nel cluster di produzione.
Questo tutorial è destinato agli sviluppatori e ai tecnici DevOps. Si presume che tu abbia una conoscenza di base di Microsoft .NET, Azure Pipelines e GKE. Il tutorial richiede anche di avere l'accesso amministrativo a un account DevOps di Azure.
Obiettivi
- Connetti Google Container Registry ad Azure Pipelines per la pubblicazione delle immagini Docker.
- Preparare un'app di esempio.NET per il deployment in GKE.
- Esegui l'autenticazione in modo sicuro contro GKE senza dover utilizzare l'autenticazione legacy.
- Usa la gestione delle release di Azure Pipelines per orchestrare i deployment GKE.
Costi
In questo documento vengono utilizzati i seguenti componenti fatturabili di Google Cloud:
- GKE
- Cloud Load Balancing
- Cloud Storage (per Container Registry)
Per generare una stima dei costi basata sull'utilizzo previsto,
utilizza il Calcolatore prezzi.
Una volta completate le attività descritte in questo documento, puoi evitare la fatturazione continua eliminando le risorse che hai creato. Per ulteriori informazioni, consulta la pagina Pulizia.
Consulta la pagina dei prezzi di DevOps di Azure per conoscere le eventuali tariffe applicabili all'utilizzo di Azure DevOps.
Prima di iniziare
In genere, è consigliabile utilizzare progetti separati per i carichi di lavoro di sviluppo e produzione, in modo che i ruoli e le autorizzazioni di Identity and Access Management (IAM) possano essere concessi singolarmente. Per semplicità, questo tutorial utilizza un singolo progetto per entrambi i cluster GKE, uno per lo sviluppo e uno per la produzione.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Assicurati che la fatturazione sia attivata per il tuo progetto Google Cloud.
- Assicurati di avere un account DevOps di Azure e di avere l'accesso come amministratore. Se non hai ancora un account DevOps di Azure, puoi registrarti sulla home page di Azure DevOps.
Creazione di un progetto DevOps di Azure
Utilizzi Azure DevOps per gestire il codice sorgente, eseguire build e test e orchestrare il deployment in GKE. Per iniziare, crea un progetto nel tuo account DevOps di Azure.
- Vai alla home page di Azure DevOps (https://dev.azure.com/YOUR_AZURE_DEVOPS_ACCOUNT_NAME).
- Fai clic su Nuovo progetto.
- Inserisci un nome per il progetto, ad esempio
CloudDemo
. - Imposta Visibilità su Privato, quindi fai clic su Crea.
- Dopo aver creato il progetto, fai clic su Repos nel menu a sinistra.
- Fai clic su Importa per creare un fork del repository
dotnet-docs-samples
da GitHub, quindi imposta i seguenti valori:- Tipo di repository:
Git
- Clona URL:
https://github.com/GoogleCloudPlatform/dotnet-docs-samples.git
- Tipo di repository:
Fai clic su Import (Importa).
Al termine della procedura di importazione, viene visualizzato il codice sorgente del repository
dotnet-docs-samples
.
Connessione di pipeline Azure a Google Container Registry
Prima di poter configurare l'integrazione continua per l'app CloudDemo
, devi connettere Azure Pipelines a Container Registry. Questa connessione consente a Azure Pipelines di pubblicare immagini container in Container Registry.
Configura un account di servizio per pubblicare le immagini
Crea un account di servizio Google Cloud nel tuo progetto:
Apri la console Google Cloud.
-
In the Google Cloud console, activate Cloud Shell.
Per risparmiare tempo durante la digitazione dell'ID progetto e delle opzioni della zona di Compute Engine, imposta i valori di configurazione predefiniti eseguendo questi comandi:
gcloud config set project PROJECT_ID gcloud config set compute/zone us-central1-a
Sostituisci
PROJECT_ID
con l'ID del tuo progetto.Abilita l'API Container Registry nel progetto:
gcloud services enable containerregistry.googleapis.com
Crea un account di servizio utilizzato da Azure Pipelines per pubblicare immagini Docker:
gcloud iam service-accounts create azure-pipelines-publisher \ --display-name="Azure Pipelines Publisher"
Concedi il ruolo IAM Amministratore archiviazione (
roles/storage.admin
) all'account di servizio per consentire il push delle pipeline Azure a Container Registry:AZURE_PIPELINES_PUBLISHER=azure-pipelines-publisher@$GOOGLE_CLOUD_PROJECT.iam.gserviceaccount.com gcloud projects add-iam-policy-binding $GOOGLE_CLOUD_PROJECT \ --member serviceAccount:$AZURE_PIPELINES_PUBLISHER \ --role roles/storage.admin
Genera una chiave dell'account di servizio:
gcloud iam service-accounts keys create azure-pipelines-publisher.json \ --iam-account $AZURE_PIPELINES_PUBLISHER tr -d '\n' < azure-pipelines-publisher.json > azure-pipelines-publisher-oneline.json
Visualizza i contenuti del file della chiave dell'account di servizio:
echo $(<azure-pipelines-publisher-oneline.json)
Devi avere la chiave dell'account di servizio in uno dei seguenti passaggi.
Crea una connessione a un servizio per Google Container Registry
In Azure Pipelines, crea una nuova connessione di servizio per Container Registry:
- Nel menu DevOps di Azure, seleziona Impostazioni progetto, quindi Pipelines > Connessioni del servizio.
- Fai clic su Crea connessione servizio.
- Seleziona Docker Registry dall'elenco, quindi fai clic su Next (Avanti).
- Nella finestra di dialogo, inserisci i valori per i seguenti campi:
- Tipo di registry: Altri
- Docker Registry:
https://gcr.io/PROJECT_ID
, che sostituiscePROJECT_ID
con il nome del tuo progetto (ad esempiohttps://gcr.io/azure-pipelines-test-project-12345
). - ID dock:
_json_key
- Password: incolla i contenuti di
azure-pipelines-publisher-oneline.json
. - Nome connessione servizio:
gcr-tutorial
- Fai clic su Salva per creare la connessione.
Creazione continua
Ora puoi utilizzare le pipeline di Azure per configurare l'integrazione continua. Per ogni commit inviato al repository Git, Azure Pipelines crea il codice e pacchettizza gli artefatti di build in un container Docker. Il container viene quindi pubblicato in Container Registry.
Il repository contiene già il seguente Dockerfile:
.NET/Linux
.NET Framework/Windows
Ora creerai una nuova pipeline che utilizza la sintassi YAML:
- Utilizzando Visual Studio o un client
git
a riga di comando, clona il nuovo repository Git e controlla il ramomain
. - Nella directory principale del repository, crea un file denominato
azure-pipelines.yml
. Copia il seguente codice nel file:
.NET/Linux
resources: - repo: self fetchDepth: 1 pool: vmImage: ubuntu-20.04 trigger: - main variables: TargetFramework: 'net6.0' BuildConfiguration: 'Release' DockerImageName: 'PROJECT_ID/clouddemo' steps: - task: DotNetCoreCLI@2 displayName: Publish inputs: projects: 'applications/clouddemo/netcore/CloudDemo.MvcCore.sln' publishWebProjects: false command: publish arguments: '--configuration $(BuildConfiguration) --framework=$(TargetFramework)' zipAfterPublish: false modifyOutputPath: false - task: CmdLine@1 displayName: 'Lock image version in deployment.yaml' inputs: filename: /bin/bash arguments: '-c "awk ''{gsub(\"CLOUDDEMO_IMAGE\", \"gcr.io/$(DockerImageName):$(Build.BuildId)\", $0); print}'' applications/clouddemo/netcore/deployment.yaml > $(build.artifactstagingdirectory)/deployment.yaml"' - task: PublishBuildArtifacts@1 displayName: 'Publish Artifact' inputs: PathtoPublish: '$(build.artifactstagingdirectory)' - task: Docker@2 displayName: 'Login to Container Registry' inputs: command: login containerRegistry: 'gcr-tutorial' - task: Docker@2 displayName: 'Build and push image' inputs: Dockerfile: 'applications/clouddemo/netcore/Dockerfile' command: buildAndPush repository: '$(DockerImageName)'
.NET Framework/Windows
resources: - repo: self fetchDepth: 1 pool: vmImage: windows-2019 # Matches WINDOWS_LTSC in GKE demands: - msbuild - visualstudio trigger: - master variables: Solution: 'applications/clouddemo/net4/CloudDemo.Mvc.sln' BuildPlatform: 'Any CPU' BuildConfiguration: 'Release' DockerImageName: 'PROJECT_ID/clouddemo' steps: - task: NuGetCommand@2 displayName: 'NuGet restore' inputs: restoreSolution: '$(Solution)' - task: VSBuild@1 displayName: 'Build solution' inputs: solution: '$(Solution)' msbuildArgs: '/p:DeployOnBuild=true /p:PublishProfile=FolderProfile' platform: '$(BuildPlatform)' configuration: '$(BuildConfiguration)' - task: PowerShell@2 displayName: 'Lock image version in deployment.yaml' inputs: targetType: 'inline' script: '(Get-Content applications\clouddemo\net4\deployment.yaml) -replace "CLOUDDEMO_IMAGE","gcr.io/$(DockerImageName):$(Build.BuildId)" | Out-File -Encoding ASCII $(build.artifactstagingdirectory)\deployment.yaml' - task: PublishBuildArtifacts@1 displayName: 'Publish Artifact' inputs: PathtoPublish: '$(build.artifactstagingdirectory)' - task: Docker@2 displayName: 'Login to Container Registry' inputs: command: login containerRegistry: 'gcr-tutorial' - task: Docker@2 displayName: 'Build and push image' inputs: Dockerfile: 'applications/clouddemo/net4/Dockerfile' command: buildAndPush repository: '$(DockerImageName)'
Sostituisci
PROJECT_ID
con il nome del tuo progetto, quindi salva il file.Esegui il commit delle modifiche e inviale a Azure Pipelines.
Studio visivo
- Apri Team Explorer e fai clic sull'icona Home.
- Fai clic su Modifiche.
- Inserisci un messaggio di commit, ad esempio
Add pipeline definition
. - Fai clic su Commit All and Push.
Riga di comando
Archiviazione temporanea di tutti i file modificati:
git add -A
Esegui il commit delle modifiche nel repository locale:
git commit -m "Add pipeline definition"
Esegui il push delle modifiche ad Azure DevOps:
git push
Nel menu DevOps di Azure, seleziona Pipelines e fai clic su Crea pipeline.
Seleziona Azure Repos Git.
Seleziona il tuo repository.
Nella pagina Controlla la pipeline YAML, fai clic su Esegui.
Viene attivata una nuova build. Il completamento della build potrebbe richiedere circa 6 minuti.
Per verificare che l'immagine sia stata pubblicata in Container Registry, passa al tuo progetto nella console Google Cloud, seleziona Container Registry > Immagini, quindi fai clic su clouddemo.
Vengono visualizzate una singola immagine e il tag di questa immagine. Il tag corrisponde all'ID numerico della build che è stato eseguito in Azure Pipelines.
Deployment continuo
Con Azure Pipelines, che crea automaticamente il tuo codice e pubblica immagini Docker per ogni commit, ora puoi concentrarti sul deployment.
A differenza di altri sistemi di integrazione continua, Azure Pipelines distingue tra creazione e deployment e fornisce un set specializzato di strumenti etichettati per la gestione delle release per tutte le attività relative al deployment.
Azure Pipelines Release Management si basa sui seguenti concetti:
- Una release si riferisce a un insieme di elementi che costituiscono una versione specifica dell'app e che di solito sono il risultato di un processo di compilazione.
- Il deployment si riferisce al processo di prendere una release e di eseguirne il deployment in un ambiente specifico.
- Un deployment esegue un set di attività che possono essere raggruppate nei job.
- Le fasi ti consentono di segmentare la pipeline e possono essere utilizzate per orchestrare i deployment in più ambienti, ad esempio ambienti di sviluppo e test.
L'artefatto principale prodotto dal processo di compilazione CloudDemo è l'immagine Docker. Tuttavia, poiché l'immagine Docker è pubblicata in Container Registry, non rientra nell'ambito di Azure Pipelines. Pertanto, l'immagine non funge da definizione di release.
Per eseguire il deployment in Kubernetes, devi anche avere un manifest simile a una distinta base. Il manifest non solo definisce le risorse che Kubernetes prevede di creare e gestire, ma specifica anche la versione esatta dell'immagine Docker da utilizzare. Il manifest di Kubernetes è adatto a essere utilizzato come artefatto che definisce il rilascio in Azure Pipelines Release Management.
Configura il deployment Kubernetes
Per eseguire CloudDemo in Kubernetes, hai bisogno delle seguenti risorse:
- Un deployment che definisce un singolo pod che esegue l'immagine Docker prodotta dalla build.
- Un servizio NodePort che rende il pod accessibile a un bilanciatore del carico.
- Una risorsa Ingress che espone l'applicazione alla rete Internet pubblica utilizzando un bilanciatore del carico HTTP(S) Cloud.
Il repository contiene già il seguente manifest di Kubernetes che definisce queste risorse:
.NET/Linux
.NET Framework/Windows
Configurare gli ambienti di sviluppo e produzione
Prima di tornare ad Azure Pipelines Release Management, devi creare i cluster GKE.
Crea cluster GKE
Torna alla tua istanza di Cloud Shell.
Abilita l'API GKE per il progetto:
gcloud services enable container.googleapis.com
Crea il cluster di sviluppo utilizzando il comando seguente. Tieni presente che il completamento di questi passaggi potrebbe richiedere alcuni minuti:
.NET/Linux
gcloud container clusters create azure-pipelines-cicd-dev --enable-ip-alias
.NET Framework/Windows
gcloud container clusters create azure-pipelines-cicd-dev --enable-ip-alias gcloud container node-pools create azure-pipelines-cicd-dev-win \ --cluster=azure-pipelines-cicd-dev \ --image-type=WINDOWS_LTSC \ --no-enable-autoupgrade \ --machine-type=n1-standard-2
Crea il cluster di produzione utilizzando il comando seguente. Tieni presente che il completamento di questi passaggi potrebbe richiedere alcuni minuti:
.NET/Linux
gcloud container clusters create azure-pipelines-cicd-prod --enable-ip-alias
.NET Framework/Windows
gcloud container clusters create azure-pipelines-cicd-prod --enable-ip-alias gcloud container node-pools create azure-pipelines-cicd-prod-win \ --cluster=azure-pipelines-cicd-prod \ --image-type=WINDOWS_LTSC \ --no-enable-autoupgrade \ --machine-type=n1-standard-2
Connetti Azure Pipelines al cluster di sviluppo
Proprio come puoi utilizzare Azure Pipelines per connetterti a un registro Docker esterno come Container Registry, Azure Pipelines supporta l'integrazione di cluster Kubernetes esterni.
È possibile autenticarsi in Container Registry utilizzando un account di servizio Google Cloud, ma l'utilizzo degli account di servizio Google Cloud non è supportato da Azure Pipelines per l'autenticazione con GKE. Devi invece utilizzare un account di servizio Kubernetes.
Per connettere Azure Pipelines al tuo cluster di sviluppo, devi prima creare un account di servizio Kubernetes.
In Cloud Shell, connettiti al cluster di sviluppo:
gcloud container clusters get-credentials azure-pipelines-cicd-dev
Crea un account di servizio Kubernetes per Azure Pipelines:
kubectl create serviceaccount azure-pipelines-deploy
Crea un secret di Kubernetes contenente una credenziale del token per Azure Pipelines:
kubectl create secret generic azure-pipelines-deploy-token --type=kubernetes.io/service-account-token --dry-run -o yaml \ | kubectl annotate --local -o yaml -f - kubernetes.io/service-account.name=azure-pipelines-deploy \ | kubectl apply -f -
Assegna il ruolo
cluster-admin
all'account di servizio creando un'associazione dei ruoli cluster:kubectl create clusterrolebinding azure-pipelines-deploy --clusterrole=cluster-admin --serviceaccount=default:azure-pipelines-deploy
Determina l'indirizzo IP del cluster:
gcloud container clusters describe azure-pipelines-cicd-dev --format=value\(endpoint\)
Questo indirizzo sarà richiesto tra poco.
Nel menu DevOps di Azure, seleziona Impostazioni progetto, quindi seleziona Pipelines > Connessioni del servizio.
Fai clic su Nuova connessione al servizio.
Seleziona Kubernetes e fai clic su Avanti.
Configura le seguenti impostazioni.
- Metodo di autenticazione: account di servizio.
- URL server:
https://PRIMARY_IP
. SostituisciPRIMARY_IP
con l'indirizzo IP che hai stabilito in precedenza. - Secret: il secret di Kubernetes che hai creato in precedenza. Per ottenere il Secret, esegui il comando seguente, copia il Secret, quindi copia il Secret nella pagina Azure.
kubectl get secret azure-pipelines-deploy-token -o yaml
- Nome connessione servizio:
azure-pipelines-cicd-dev
.
Fai clic su Salva.
Connetti Azure Pipelines al cluster di produzione
Per connettere le pipeline di Azure al cluster di produzione, puoi seguire lo stesso approccio.
In Cloud Shell, connettiti al cluster di produzione:
gcloud container clusters get-credentials azure-pipelines-cicd-prod
Crea un account di servizio Kubernetes per Azure Pipelines:
kubectl create serviceaccount azure-pipelines-deploy
Assegna il ruolo
cluster-admin
all'account di servizio creando un'associazione dei ruoli cluster:kubectl create clusterrolebinding azure-pipelines-deploy --clusterrole=cluster-admin --serviceaccount=default:azure-pipelines-deploy
Determina l'indirizzo IP del cluster:
gcloud container clusters describe azure-pipelines-cicd-prod --format=value\(endpoint\)
Questo indirizzo sarà richiesto tra poco.
Nel menu DevOps di Azure, seleziona Impostazioni progetto, quindi seleziona Pipelines > Connessioni del servizio.
Fai clic su Nuova connessione al servizio.
Seleziona Kubernetes e fai clic su Avanti.
Configura le seguenti impostazioni:
- Metodo di autenticazione: account di servizio.
- URL server:
https://PRIMARY_IP
. SostituisciPRIMARY_IP
con l'indirizzo IP che hai stabilito in precedenza. - Secret: esegui questo comando in Cloud Shell e copia
l'output:
kubectl get secret $(kubectl get serviceaccounts azure-pipelines-deploy -o custom-columns=":secrets[0].name") -o yaml
- Nome connessione servizio:
azure-pipelines-cicd-prod
.
Fai clic su Salva.
Configura la pipeline di rilascio
Dopo aver configurato l'infrastruttura GKE, torni ad Azure Pipelines per automatizzare il deployment, che include quanto segue:
- Deployment nell'ambiente di sviluppo in corso...
- Richiedere l'approvazione manuale prima di avviare un deployment nell'ambiente di produzione.
- Deployment nell'ambiente di produzione in corso...
Crea una definizione di release
Come primo passaggio, crea una nuova definizione di release.
- Nel menu DevOps di Azure, seleziona Pipelines > Releases.
- Fai clic su Nuova pipeline.
- Dall'elenco dei modelli, seleziona Job vuoto.
- Quando ti viene chiesto un nome per la fase, inserisci
Development
. - Nella parte superiore dello schermo, assegna il nome CloudDemo-KubernetesEngine.
- Nel diagramma della pipeline, accanto ad Artefatti, fai clic su Aggiungi.
Seleziona Build e aggiungi le seguenti impostazioni:
- Tipo di origine: build
- Origine (pipeline di build): seleziona la definizione di build (deve essere presente una sola opzione)
- Versione predefinita:
Latest
- Alias origine:
manifest
Fai clic su Add (Aggiungi).
Nella casella Elemento, fai clic su Trigger di deployment continuo (l'icona del fulmine) per aggiungere un trigger di deployment.
In Trigger di deployment continuo, imposta l'opzione su Abilitato.
Fai clic su Salva.
Se vuoi, inserisci un commento, quindi conferma facendo clic su OK.
La pipeline viene visualizzata in modo simile al seguente.
Eseguire il deployment nel cluster di sviluppo
Con la definizione della release creata, puoi configurare il deployment nel cluster di sviluppo GKE.
- Nel menu, passa alla scheda Attività.
Fai clic su Job agente e configura le seguenti impostazioni:
- Pool di agenti: Azure Pipelines
- Specifica dell'agente: ubuntu-18.04
Accanto a Job agente, fai clic su Aggiungi un'attività al job agente
per aggiungere un passaggio alla fase.Seleziona l'attività Deploy to Kubernetes e fai clic su Add.
Fai clic sull'attività appena aggiunta e configura le seguenti impostazioni:
- Nome visualizzato:
Deploy
- Azione: deploy
- Connessione al servizio Kubernetes: azure-pipelines-cicd-dev
- Spazio dei nomi:
default
- Strategia: Nessuna
- Manifest:
manifest/drop/deployment.yaml
- Nome visualizzato:
Fai clic su Salva.
Se vuoi, inserisci un commento, quindi conferma facendo clic su OK.
Eseguire il deployment nel cluster di produzione
Infine, configurerai il deployment nel cluster di produzione GKE.
- Nel menu, passa alla scheda Pipeline.
- Nella casella Fasi, seleziona Aggiungi > Nuova fase.
- Dall'elenco dei modelli, seleziona Job vuoto.
- Quando ti viene chiesto un nome per la fase, inserisci
Production
. - Fai clic sull'icona a forma di lampo della fase appena creata.
Configura le seguenti impostazioni:
- Seleziona trigger: dopo la fase.
- Fasi: Dev
- Approvazioni precedenti al deployment: (abilitate)
- Approvatori: seleziona il tuo nome utente.
La pipeline ora ha il seguente aspetto:
Passa alla scheda Attività.
Tieni il mouse sulla scheda Attività e seleziona Attività > Produzione.
Fai clic su Job agente e configura le seguenti impostazioni:
- Pool di agenti: Azure Pipelines
- Specifica dell'agente: ubuntu-18.04
Fai clic su Aggiungi un'attività al job agente
per aggiungere un passaggio alla fase.Seleziona l'attività Deploy to Kubernetes e fai clic su Add.
Fai clic sull'attività appena aggiunta e configura le seguenti impostazioni:
- Nome visualizzato:
Deploy
- Azione: deploy
- Connessione al servizio Kubernetes: azure-pipelines-cicd-prod
- Spazio dei nomi:
default
- Strategia: Nessuna
- Manifest:
manifest/drop/deployment.yaml
- Nome visualizzato:
Fai clic su Salva.
Se vuoi, inserisci un commento, quindi conferma facendo clic su OK.
esegui la pipeline.
Ora che hai configurato l'intera pipeline, puoi testarla eseguendo una modifica del codice sorgente:
Sul computer locale, apri il file
Index.cshtml
dal repository Git che hai clonato in precedenza:.NET/Linux
Il file si trova in
applications\clouddemo\netcore\CloudDemo.MvcCore\Views\Home\
.NET Framework/Windows
Il file si trova in
applications\clouddemo\net4\CloudDemo.Mvc\Views\Home\
Nella riga 26, modifica il valore di
ViewBag.Title
daHome Page
aThis app runs on GKE
.Esegui il commit delle modifiche e inviale ad Azure Pipelines.
Studio visivo
- Apri Team Explorer e fai clic sull'icona Home.
- Fai clic su Modifiche.
- Inserisci un messaggio di commit, ad esempio
Change site title
. - Fai clic su Commit All and Push.
Riga di comando
Archiviazione temporanea di tutti i file modificati:
git add -A
Esegui il commit delle modifiche nel repository locale:
git commit -m "Change site title"
Esegui il push delle modifiche ad Azure Pipelines:
git push
Nel menu DevOps di Azure, seleziona Pipelines. Viene attivata una build.
Una volta terminata la build, seleziona Pipelines > Release. Viene avviato un processo di rilascio.
Fai clic su Release-1 per aprire la pagina dei dettagli e attendi lo stato della fase di Sviluppo per passare a Riuscito.
Nella console Google Cloud, seleziona Kubernetes Engine > Servizi e Ingress > In entrata.
Individua il servizio Ingress per il cluster azure-pipelines-cicd-dev e attendi che il suo stato passi a OK. L'operazione potrebbe richiedere alcuni minuti.
Apri il link nella colonna Frontend della stessa riga. Inizialmente potresti visualizzare un errore perché il bilanciatore del carico richiede alcuni minuti per diventare disponibile. Quando è pronto, osserva che è stato eseguito il deployment di CloudDemo e utilizza il titolo personalizzato.
In Pipelines di Azure, fai clic sul pulsante Approva nella fase di produzione per promuovere il deployment nell'ambiente di produzione.
Se non vedi il pulsante, potrebbe essere necessario approvare o rifiutare una release precedente.
Se vuoi, inserisci un commento, quindi conferma facendo clic su Approva.
Attendi che lo stato dell'ambiente Prod passi a Riuscito. Potresti dover aggiornare manualmente la pagina nel browser.
Nella console Google Cloud, aggiorna la pagina Servizi e Ingress.
Individua il servizio Ingress per il cluster azure-pipelines-cicd-prod e attendi che il suo stato passi a OK. L'operazione potrebbe richiedere alcuni minuti.
Apri il link nella colonna Frontend della stessa riga. Anche in questo caso, inizialmente potresti visualizzare un messaggio di errore perché il bilanciatore del carico richiede alcuni minuti per diventare disponibile. Quando sarà pronta, vedrai di nuovo l'app CloudDemo con il titolo personalizzato, questa volta in esecuzione nel cluster di produzione.
Esegui la pulizia
Per evitare che ti vengano addebitati altri costi dopo aver completato questo tutorial, elimina le entità che hai creato.
Elimina il progetto Azure Pipelines
Per eliminare il progetto Azure Pipelines, consulta la documentazione dei servizi DevOps di Azure. L'eliminazione del progetto Azure Pipelines causa la perdita di tutte le modifiche al codice sorgente.
Elimina lo sviluppo e i progetti Google Cloud
- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.
Passaggi successivi
- Configurare il controllo dell'controllo dell'accesso granulare per Container Registry.
- Scopri come eseguire il deployment di un gruppo SQL Server a disponibilità elevata su Compute Engine.
- Ulteriori informazioni su .NET su Google Cloud Platform.
- Installa Cloud Tools for Visual Studio.
- Esplora architetture di riferimento, diagrammi e best practice su Google Cloud. Dai un'occhiata al nostro Centro di architettura cloud.