In questo tutorial creerai un inventario dei servizi Cloud Run utilizzando Google Cloud CLI all'interno di un ambiente Cloud Run completamente gestito di Google Cloud. Puoi applicare ciò che apprendi in questo tutorial alle tue applicazioni script operativi o per creare un proof-of-concept prima di utilizzare le librerie client. per creare un servizio più affidabile.
Utilizzi gcloud CLI come qualsiasi script shell all'interno di un ambiente ad esempio, come mostrato nella guida rapida di Shell. In Cloud Run, entrambi gli strumenti funzionano con Google Cloud mediante l'autenticazione automatica con Cloud Run identità del servizio. Qualsiasi autorizzazione concessa all'identità del servizio sono disponibili per gcloud CLI.
gcloud CLI è così ampiamente capace di raccogliere informazioni e risorse e la gestione di Google Cloud che la difficoltà di utilizzarlo all'interno riduce al minimo il rischio che un chiamante faccia un uso improprio di queste funzionalità. Senza controlli di sicurezza, potresti creare rischi per altri servizi o risorse in esecuzione nello stesso progetto consentendo attività. Ecco alcuni esempi di questi rischi:
- Abilitazione del rilevamento degli indirizzi IP delle macchine virtuali private
- Abilitazione dell'accesso ai dati privati da un database nello stesso progetto
- Abilitazione dell'eliminazione di altri servizi in esecuzione
Diversi passaggi di questo tutorial mostrano come imporre controlli per ridurre al minimo i rischi.
ad esempio specificando il comando gcloud
da eseguire nel codice, anziché lasciare
si apre come input utente.
Lo scripting con lo strumento a riga di comando all'interno di un servizio Cloud Run in modo simile all'uso della riga di comando in locale. La differenza principale è che le altre da aggiungere alla logica principale dello script.
Obiettivi
- Scrivi e crea un container personalizzato con un Dockerfile
- Scrivi, crea ed esegui il deployment di un servizio Cloud Run
- Usa gcloud CLI in modo sicuro in un servizio web
- Genera un report dei servizi Cloud Run e salvalo in Cloud Storage
Costi
In questo documento vengono utilizzati i seguenti componenti fatturabili di Google Cloud:
Per generare una stima dei costi basata sull'utilizzo previsto,
utilizza il Calcolatore prezzi.
Prima di iniziare
- Accedi al tuo account Google Cloud. Se non conosci Google Cloud, crea un account per valutare le prestazioni dei nostri prodotti in scenari reali. I nuovi clienti ricevono anche 300 $di crediti gratuiti per l'esecuzione, il test e il deployment dei carichi di lavoro.
-
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.
-
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.
-
Abilita le API Artifact Registry, Cloud Build, Cloud Run, and Cloud Storage.
- Installa e inizializza gcloud CLI.
Ruoli obbligatori
Per ottenere le autorizzazioni necessarie per completare il tutorial: chiedi all'amministratore di concederti i seguenti ruoli IAM sul tuo progetto:
-
Editor Cloud Build (
roles/cloudbuild.builds.editor
) -
Amministratore Cloud Run (
roles/run.admin
) -
Crea account di servizio (
roles/iam.serviceAccountCreator
) -
Amministratore IAM progetto (
roles/resourcemanager.projectIamAdmin
) -
Utente account di servizio (
roles/iam.serviceAccountUser
) -
Consumer Service Usage (
roles/serviceusage.serviceUsageConsumer
) -
Storage Admin (
roles/storage.admin
)
Per saperne di più sulla concessione dei ruoli, consulta Gestire l'accesso.
Potresti anche riuscire a ottenere le autorizzazioni richieste tramite la ruoli o altri ruoli predefiniti ruoli.
Configura le impostazioni predefinite di gcloud
Per configurare gcloud con i valori predefiniti per il tuo servizio Cloud Run:
Imposta il progetto predefinito:
gcloud config set project PROJECT_ID
Sostituisci PROJECT_ID con il nome del progetto per cui hai creato questo tutorial.
Configura gcloud per la regione scelta:
gcloud config set run/region REGION
Sostituisci REGION con il Cloud Run supportato regione di tua scelta.
Località Cloud Run
Cloud Run è regionale, il che significa che l'infrastruttura
dei tuoi servizi Cloud Run si trova in una regione specifica
gestiti da Google in modo che siano disponibili in modo ridondante
tutte le zone all'interno di quella regione.
Soddisfare i requisiti di latenza, disponibilità o durabilità è fondamentale
i fattori necessari per selezionare la regione in cui vengono eseguiti i servizi Cloud Run.
Generalmente puoi selezionare la regione più vicina ai tuoi utenti, ma devi considerare
la località dell'altro account Google Cloud
prodotti utilizzati dal tuo servizio Cloud Run.
L'utilizzo combinato dei prodotti Google Cloud in più località può influire
nonché la latenza del tuo servizio.
Cloud Run è disponibile nelle regioni seguenti:
Soggetto ai prezzi di Livello 1
asia-east1
(Taiwan)asia-northeast1
(Tokyo)asia-northeast2
(Osaka)europe-north1
(Finlandia)A basse emissioni di CO2
europe-southwest1
(Madrid)A basse emissioni di CO2
europe-west1
(Belgio)A basse emissioni di CO2
europe-west4
(Paesi Bassi)A basse emissioni di CO2
europe-west8
(Milano)europe-west9
(Parigi)A basse emissioni di CO2
me-west1
(Tel Aviv)us-central1
(Iowa)A basse emissioni di CO2
us-east1
(Carolina del Sud)us-east4
(Virginia del Nord)us-east5
(Colombo)us-south1
(Dallas)A basse emissioni di CO2
us-west1
(Oregon)A basse emissioni di CO2
Soggetto ai prezzi di Livello 2
africa-south1
(Johannesburg)asia-east2
(Hong Kong)asia-northeast3
(Seul, Corea del Sud)asia-southeast1
(Singapore)asia-southeast2
(Giacarta)asia-south1
(Mumbai, India)asia-south2
(Delhi, India)australia-southeast1
(Sydney)australia-southeast2
(Melbourne)europe-central2
(Varsavia, Polonia)europe-west10
(Berlino)A basse emissioni di CO2
europe-west12
(Torino)europe-west2
(Londra, Regno Unito)A basse emissioni di CO2
europe-west3
(Francoforte, Germania)A basse emissioni di CO2
europe-west6
(Zurigo, Svizzera)A basse emissioni di CO2
me-central1
(Doha)me-central2
(Dammam)northamerica-northeast1
(Montreal)A basse emissioni di CO2
northamerica-northeast2
(Toronto)A basse emissioni di CO2
southamerica-east1
(San Paolo, Brasile)A basse emissioni di CO2
southamerica-west1
(Santiago, Cile)A basse emissioni di CO2
us-west2
(Los Angeles)us-west3
(Salt Lake City)us-west4
(Las Vegas)
Se hai già creato un servizio Cloud Run, puoi visualizzare nella dashboard di Cloud Run all'interno Console Google Cloud.
Recupero dell'esempio di codice in corso
Per recuperare l'esempio di codice da utilizzare:
Clona il repository dell'app di esempio nella tua macchina locale:
git clone https://github.com/GoogleCloudPlatform/cloud-run-samples.git
In alternativa, puoi scarica l'esempio come file ZIP ed estrarlo.
Passa alla directory che contiene l'esempio di Cloud Run codice:
cd cloud-run-samples/gcloud-report/
Esamina il codice
Questa sezione include informazioni sull'esempio di codice recuperato.
Genera un report e caricalo su Cloud Storage
Questo script shell genera un report dei servizi Cloud Run in
progetto e regione attuali e carica il risultato in Cloud Storage. Elenca
servizi il cui nome contiene l'argomento stringa search
fornito.
Lo script utilizza il comando gcloud run services list
,
Opzioni di formato avanzate per gcloud
e
Modalità di copia Trasferimento streaming di gcloud
.
Questo script può essere eseguito in sicurezza come servizio perché viene richiamato ripetutamente aggiornare il report senza ulteriori costosi abbandono. Gli altri script che utilizzano gcloud CLI può essere più costoso se richiamato ripetutamente, ad esempio la creazione di nuove risorse Cloud o l'esecuzione di attività costose. Script idempotenti, che producono lo stesso risultato a chiamate ripetute, sono più sicure da eseguire completamente gestito di Google Cloud.
Richiama lo script su una richiesta HTTP
Questo codice Go configura un servizio web che esegue uno script shell per generare un report. Poiché la query di ricerca è input utente, il codice la convalida per garantire che Contiene solo lettere, numeri o trattini per impedire l'inserimento di comandi dannosi. Questo insieme di caratteri è sufficientemente limitato da prevenire attacchi di tipo command injection.
Il servizio web passa il parametro di ricerca come argomento allo script shell.
Un file go.mod
dichiara le dipendenze dell'applicazione in un
modulo go:
Definisci l'ambiente del container
Il Dockerfile definisce il modo in cui l'ambiente viene creato per il servizio.
È simile al Dockerfile
guida rapida di helloworld-shell,
ad eccezione del fatto che l'immagine container finale si basa sull'immagine gcloud
di Google Cloud CLI. Questo
consente al tuo servizio di utilizzare gcloud
senza installazione personalizzata
i passaggi di configurazione
per Google Cloud CLI.
Crea un repository standard Artifact Registry
Crea un repository standard Artifact Registry per archiviare la tua immagine container:
gcloud artifacts repositories create REPOSITORY \ --repository-format=docker \ --location=REGION
Sostituisci:
- REPOSITORY con un nome univoco per il repository.
- REGION con la regione Google Cloud di Artifact Registry.
configura il bucket Cloud Storage
Crea un bucket Cloud Storage per caricare i report:
gcloud storage buckets create gs://REPORT_ARCHIVE_BUCKET
Sostituisci REPORT_ARCHIVE_BUCKET con un nome di bucket univoco a livello globale.
Configura l'identità del servizio
Per limitare i privilegi del servizio ad altre infrastrutture, crei un'identità di servizio e personalizzi le autorizzazioni IAM specifiche necessario per svolgere il lavoro.
In questo caso, i privilegi richiesti sono l'autorizzazione per leggere Cloud Run e le autorizzazioni per leggere e scrivere nel bucket Cloud Storage.
Crea un account di servizio:
gcloud iam service-accounts create gcloud-report-identity
Concedi all'account di servizio l'autorizzazione per leggere i servizi Cloud Run:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:gcloud-report-identity@PROJECT_ID.iam.gserviceaccount.com \ --role roles/run.viewer
Concedi all'account di servizio l'autorizzazione di lettura e scrittura nel bucket Cloud Storage:
gcloud storage buckets add-iam-policy-binding gs://REPORT_ARCHIVE_BUCKET \ --member=serviceAccount:gcloud-report-identity@PROJECT_ID.iam.gserviceaccount.com \ --role=roles/storage.objectUser
L'accesso limitato di questa identità di servizio personalizzata impedisce al servizio di l'accesso ad altre risorse Google Cloud.
Spedisci il servizio
Il codice di spedizione prevede tre passaggi:
- Creazione di un'immagine container con Cloud Build
- Caricamento dell'immagine container in Artifact Registry
- Deployment dell'immagine container in Cloud Run.
Per spedire il codice:
Crea il tuo container e pubblicalo su Artifact Registry:
gcloud builds submit --tag REGION-docker.pkg.dev/PROJECT_ID/REPOSITORY/gcloud-report
Sostituisci:
- PROJECT_ID con il tuo ID progetto Google Cloud
- REPOSITORY con il nome del repository Artifact Registry.
- REGION con la regione Google Cloud di Artifact Registry.
gcloud-report
è il nome del tuo servizio.Se l'operazione riesce, viene visualizzato un messaggio "SUCCESS" che mostra l'ID, l'ora di creazione e il nome dell'immagine. L'immagine è archiviata in Artifact Registry e può essere riutilizzata se necessario.
Esegui questo comando per eseguire il deployment del tuo servizio:
gcloud run deploy gcloud-report \ --image REGION-docker.pkg.dev/PROJECT_ID/REPOSITORY/gcloud-report \ --update-env-vars GCLOUD_REPORT_BUCKET=REPORT_ARCHIVE_BUCKET \ --service-account gcloud-report-identity \ --no-allow-unauthenticated
Sostituisci:
- PROJECT_ID con il tuo ID progetto Google Cloud.
- REPOSITORY con il nome del repository Artifact Registry.
- REGION con la regione Google Cloud del servizio.
gcloud-report
fa parte del nome del container e del nome del servizio. Viene eseguito il deployment dell'immagine container nel servizio e nella regione (Cloud Run) che hai configurato in Impostazione di gcloud.Il flag
--no-allow-unauthenticated
limita l'accesso non autenticato al completamente gestito di Google Cloud. Mantenendo privato il servizio puoi fare Cloud Run autenticazione integrata per bloccare le richieste non autorizzate. Per ulteriori dettagli su basata su Identity and Access Management (IAM), consulta Gestione dell'accesso mediante IAM.Attendi il completamento del deployment. Questa operazione può richiedere circa mezzo minuto. Se l'operazione riesce, la riga di comando visualizza l'URL del servizio.
Se vuoi eseguire il deployment di un aggiornamento del codice nel servizio, ripeti la precedente passaggi. Ogni deployment in un servizio crea una nuova revisione e, e inizia a gestire il traffico quando è pronto.
Per informazioni su come concedere agli utenti Google Cloud l'accesso per richiamare questo servizio, consulta Gestione dell'accesso tramite IAM. Gli editor e i proprietari del progetto dispongono automaticamente di questo accesso.
Generare un report
Per generare un report dei servizi Cloud Run:
Utilizza curl per inviare una richiesta autenticata:
curl -H "Authorization: Bearer $(gcloud auth print-identity-token)" SERVICE_URL
Sostituisci SERVICE_URL con l'URL fornito da Cloud Run dopo aver completato il deployment.
Se hai creato un nuovo progetto e seguito questo tutorial, l'output verrà simile a:
Wrote report to gs://REPORT_ARCHIVE_BUCKET/report-.-DATE.txt
.
nel nome file è l'argomento di ricerca predefinito, come indicato nel codice sorgente.Per utilizzare la funzionalità di ricerca, aggiungi un argomento
search
alla richiesta:curl -H "Authorization: Bearer $(gcloud auth print-identity-token)" SERVICE_URL?search=gcloud
Questa query restituirà un output simile a questo:
Wrote report to gs://REPORT_ARCHIVE_BUCKET/report-gcloud-DATE.txt
Recupera il file in locale utilizzando gcloud CLI:
gcloud storage cp gs://REPORT_FILE_NAME .
.
nel comando indica la directory di lavoro corrente.Sostituisci REPORT_FILE_NAME con il nome dell'oggetto Cloud Storage nel passaggio precedente.
Apri il file per visualizzare il report. Dovrebbe avere il seguente aspetto:
![Screenshot dell'elenco dei servizi Cloud Run nel progetto con colonne per quattro attributi di servizio.](https://cloud.google.com/static/run/docs/tutorials/images/gcloud-report-output.png?hl=it)
Migliorare la robustezza per il futuro
Se intendi sviluppare ulteriormente questo servizio, valuta la possibilità di riscriverlo in modo un linguaggio di programmazione molto efficace e utilizzando l'API Cloud Run Admin e la libreria client di Cloud Storage.
Puoi esaminare le chiamate API effettuate (e vedere alcuni dettagli di autenticazione).
aggiungendo --log-http
ai comandi della gcloud CLI.
Automatizza questa operazione
Ora che il report dei servizi Cloud Run può essere attivato da una richiesta HTTP richiesta, utilizza l'automazione per generare report quando ne hai bisogno:
- Esegui questo servizio in base a una pianificazione con Cloud Scheduler
- Crea il report come attività in coda o pianifica nel futuro con Google Tasks
Esegui la pulizia
Se hai creato un nuovo progetto per questo tutorial, elimina il progetto. Se hai utilizzato un progetto esistente e vuoi mantenerlo senza l'aggiunta delle modifiche In questo tutorial, elimina le risorse create per il tutorial.
Elimina il progetto
Il modo più semplice per eliminare la fatturazione creato per il tutorial.
Per eliminare il progetto:
- Nella console Google Cloud, vai alla pagina Gestisci risorse.
- Nell'elenco dei progetti, seleziona il progetto che vuoi eliminare, quindi fai clic su Elimina.
- Nella finestra di dialogo, digita l'ID del progetto e fai clic su Chiudi per eliminare il progetto.
Eliminazione delle risorse del tutorial in corso...
Elimina il servizio Cloud Run di cui hai eseguito il deployment in questo tutorial:
gcloud run services delete SERVICE-NAME
Dove SERVICE-NAME è il nome del servizio che hai scelto.
I servizi Cloud Run possono essere eliminati anche Console Google Cloud.
Rimuovi la configurazione predefinita della regione gcloud che hai aggiunto durante il tutorial configurazione:
gcloud config unset run/region
Rimuovi la configurazione del progetto:
gcloud config unset project
Elimina altre risorse Google Cloud create in questo tutorial:
Passaggi successivi
- Riduci le dipendenze del servizio sostituendo il comando gcloud CLI con le chiamate API: Upload Objects (Caricamento di oggetti), Riferimento API Cloud Run Admin
- Migliora ulteriormente la sicurezza utilizzando i controlli in entrata di rete per limitare l'accesso al tuo servizio.
- Esplora le architetture di riferimento, i diagrammi e le best practice su Google Cloud. Dai un'occhiata al nostro Centro architetture cloud.