Mantieni tutto organizzato con le raccolte Salva e classifica i contenuti in base alle tue preferenze.
Guida rapida: deployment di un servizio shell in Cloud Run

Esegui il deployment di un servizio shell in Cloud Run

Scopri come creare una semplice applicazione Hello World, pacchettizzarla in un'immagine container, caricarla in Container Registry ed eseguire il deployment dell'immagine container su Cloud Run. Puoi utilizzare altre lingue oltre a quelle mostrate.

Prima di iniziare

  1. 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.
  2. Nella pagina del selettore dei progetti in Google Cloud Console, seleziona o crea un progetto Google Cloud.

    Vai al selettore progetti

  3. Assicurati che la fatturazione sia attivata per il tuo progetto Cloud. Scopri come verificare se la fatturazione è abilitata su un progetto.

  4. Installa e inizializza Google Cloud CLI.
  5. Nella pagina del selettore dei progetti in Google Cloud Console, seleziona o crea un progetto Google Cloud.

    Vai al selettore progetti

  6. Assicurati che la fatturazione sia attivata per il tuo progetto Cloud. Scopri come verificare se la fatturazione è abilitata su un progetto.

  7. Installa e inizializza Google Cloud CLI.
    1. Per impostare il progetto predefinito per il tuo servizio Cloud Run:
       gcloud config set project PROJECT_ID
      Sostituisci PROJECT_ID con il nome del progetto che hai creato per questa guida rapida.

scrivi l'applicazione di esempio

Per scrivere un'applicazione Shell:

  1. Crea una nuova directory denominata helloworld-shell e modificala al suo interno:

    mkdir helloworld-shell
    cd helloworld-shell
    
  2. Inizializza un file go.mod per dichiarare il modulo go:

    module github.com/GoogleCloudPlatform/cloud-run-samples/helloworld-shell
    
    go 1.19
    

    Puoi creare il file go.mod direttamente nel formato mostrato sopra o inizializzarlo dalla directory del progetto con:

    go mod init
    
  3. Crea un file script.sh con il seguente contenuto:

    
    set -e
    echo "Hello ${NAME:-World}!"
    

    Per eseguire questo script shell su ogni richiesta in entrata, questo esempio utilizza un piccolo programma Go che avvia un server web di base e rimane in ascolto sulla porta definita dalla variabile di ambiente PORT.

  4. Crea un file invoke.go con il seguente contenuto:

    
    // Sample helloworld-shell is a Cloud Run shell-script-as-a-service.
    package main
    
    import (
    	"log"
    	"net/http"
    	"os"
    	"os/exec"
    )
    
    func main() {
    	http.HandleFunc("/", scriptHandler)
    
    	// Determine port for HTTP service.
    	port := os.Getenv("PORT")
    	if port == "" {
    		port = "8080"
    		log.Printf("Defaulting to port %s", port)
    	}
    
    	// Start HTTP server.
    	log.Printf("Listening on port %s", port)
    	if err := http.ListenAndServe(":"+port, nil); err != nil {
    		log.Fatal(err)
    	}
    }
    
    func scriptHandler(w http.ResponseWriter, r *http.Request) {
    	cmd := exec.CommandContext(r.Context(), "/bin/bash", "script.sh")
    	cmd.Stderr = os.Stderr
    	out, err := cmd.Output()
    	if err != nil {
    		w.WriteHeader(500)
    	}
    	w.Write(out)
    }
    
  5. Crea un nuovo file denominato Dockerfile nella stessa directory dei file di origine:

    
    # Use the offical golang image to create a binary.
    # This is based on Debian and sets the GOPATH to /go.
    # https://hub.docker.com/_/golang
    FROM golang:1.19-buster as builder
    
    # Create and change to the app directory.
    WORKDIR /app
    
    # Retrieve application dependencies.
    # This allows the container build to reuse cached dependencies.
    # Expecting to copy go.mod and if present go.sum.
    COPY go.* ./
    RUN go mod download
    
    # Copy local code to the container image.
    COPY invoke.go ./
    
    # Build the binary.
    RUN go build -mod=readonly -v -o server
    
    # Use the official Debian slim image for a lean production container.
    # https://hub.docker.com/_/debian
    # https://docs.docker.com/develop/develop-images/multistage-build/#use-multi-stage-builds
    FROM debian:buster-slim
    RUN set -x && apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y \
        --no-install-recommends \
        ca-certificates && \
        rm -rf /var/lib/apt/lists/*
    
    # Create and change to the app directory.
    WORKDIR /
    
    # Copy the binary to the production image from the builder stage.
    COPY --from=builder /app/server /app/server
    COPY script.sh ./
    
    # Run the web service on container startup.
    CMD ["/app/server"]
    

L'app è stata completata e il deployment è pronto.

Esegui il deployment in Cloud Run dall'origine

Importante: questa guida rapida presuppone che tu abbia i ruoli di proprietario o di editor nel progetto che stai utilizzando per la guida rapida. In caso contrario, consulta le autorizzazioni di deployment di Cloud Run, le autorizzazioni di Cloud Build e le autorizzazioni di Artifact Registry per le autorizzazioni richieste.

Il deployment dall'origine crea automaticamente un'immagine container dal codice sorgente ed esegue il deployment.

Per eseguire il deployment dall'origine:

  1. Nella directory del codice sorgente, esegui il deployment dall'origine utilizzando il comando seguente:

    gcloud run deploy

    Se ti viene richiesto di abilitare l'API, rispondi y per attivarla.

    1. Quando ti viene chiesto di eseguire la posizione del codice sorgente, premi Invio per eseguire il deployment della cartella corrente.

    2. Quando ti viene chiesto il nome del servizio, premi Invio per accettare il nome predefinito, helloworld.

    3. Se ti viene chiesto di abilitare l'API Artifact Registry, rispondi premendo y.

    4. Quando viene richiesta la regione: seleziona la regione che preferisci, ad esempio us-central1.

    5. Ti verrà chiesto di consentire chiamate non autenticate: rispondi y .

    Attendi qualche istante fino al completamento del deployment. Se l'operazione riesce, la riga di comando visualizza l'URL del servizio.

  2. Visita il servizio di cui hai eseguito il deployment aprendo l'URL del servizio in un browser web.

Località di Cloud Run

Cloud Run è a livello di regione, ossia l'infrastruttura che esegue i tuoi servizi Cloud Run si trova in una regione specifica ed è gestita da Google in modo che sia ridondante disponibile in tutte le zone al suo interno.

Soddisfare i requisiti di latenza, disponibilità o durabilità sono fattori principali per la selezione dell'area geografica in cui vengono eseguiti i servizi Cloud Run. In genere, puoi selezionare l'area geografica più vicina ai tuoi utenti, ma dovresti considerare la località degli altri prodotti Google Cloud utilizzati dal servizio Cloud Run. L'utilizzo combinato dei prodotti Google Cloud in più località può influire sulla latenza del servizio e sui costi.

Cloud Run è disponibile nelle seguenti regioni:

Soggetto ai prezzi di Livello 1

  • asia-east1 (Taiwan)
  • asia-northeast1 (Tokyo)
  • asia-northeast2 (Osaka)
  • europe-north1 (Finlandia) icona Fogliolina Bassi livelli di CO2
  • europe-southwest1 (Madrid) icona Fogliolina CO bassa2
  • europe-west1 (Belgio) icona Fogliolina CO bassa2
  • europe-west4 (Paesi Bassi)
  • europe-west8 (Milano)
  • europe-west9 (Parigi) icona Fogliolina Basso livello di CO2
  • us-central1 (Iowa) icona Fogliolina CO basso2
  • us-east1 (Carolina del Sud)
  • us-east4 (Virginia del Nord)
  • us-east5 (Columbus)
  • us-south1 (Dallas)
  • us-west1 (Oregon) icona Fogliolina Bassi livelli di CO2

Soggetto ai prezzi di Livello 2

  • 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-west2 (Londra, Regno Unito)
  • europe-west3 (Francoforte, Germania)
  • europe-west6 (Zurigo, Svizzera) icona Fogliolina Basso livello di CO2
  • northamerica-northeast1 (Montreal) icona Fogliolina CO bassa2
  • northamerica-northeast2 (Toronto) icona Fogliolina Basso livello di CO2
  • southamerica-east1 (San Paolo, Brasile) icona Fogliolina Basso CO2
  • southamerica-west1 (Santiago, Cile)
  • us-west2 (Los Angeles)
  • us-west3 (Salt Lake City)
  • us-west4 (Las Vegas)

Se hai già creato un servizio Cloud Run, puoi visualizzare l'area geografica nella dashboard di Cloud Run nella Google Cloud Console.

Complimenti! Hai appena eseguito il deployment di un'immagine container dal codice sorgente in Cloud Run. Cloud Run scala automaticamente e orizzontalmente l'immagine container per gestire le richieste ricevute, quindi fa lo scale down quando la domanda diminuisce. Paghi solo per la CPU, la memoria e le reti utilizzate durante la gestione delle richieste.

Esegui la pulizia

Rimuovi il progetto di test

Sebbene non siano previsti addebiti per Cloud Run quando il servizio non è in uso, ti potrebbero comunque essere addebitati i costi di archiviazione dell'immagine container in Artifact Registry. Per evitare incorrere in addebiti, puoi eliminare l'immagine container o eliminare il progetto Cloud. L'eliminazione del tuo progetto Cloud interrompe la fatturazione per tutte le risorse utilizzate all'interno di quel progetto.

  1. In Google Cloud Console, vai alla pagina Gestisci risorse.

    Vai a Gestisci risorse

  2. Nell'elenco dei progetti, seleziona il progetto che vuoi eliminare, quindi fai clic su Elimina.
  3. Nella finestra di dialogo, digita l'ID del progetto e fai clic su Chiudi per eliminare il progetto.

Passaggi successivi

Per saperne di più sulla creazione di un container da un'origine codice e sul push in un repository, consulta: