Questa pagina descrive le best practice per l'esecuzione di job Cloud Run pianificati per i progetti Google Cloud quando si utilizza un perimetro di Controlli di servizio VPC.
Cloud Scheduler non può attivare i job all'interno di un perimetro Controlli di servizio VPC. Devi eseguire ulteriori passaggi per configurare i job pianificati. In particolare, devi eseguire il proxy della richiesta tramite un altro componente. Ti consigliamo di utilizzare un servizio Cloud Run come proxy.
Il seguente diagramma mostra l'architettura:
Prima di iniziare
Configura Cloud Run per i Controlli di servizio VPC. Si tratta di una configurazione una tantum utilizzata da tutti i lavori pianificati successivi. Inoltre, in un secondo momento dovrai eseguire alcune configurazioni per servizio, come descritto nelle istruzioni che seguono.
Configurare un job pianificato
Per configurare un job pianificato all'interno di un perimetro dei Controlli di servizio VPC:
Crea un job e prendi nota del nome.
Completa la configurazione dei Controlli di servizio VPC per job specifici di Cloud Run. Devi collegare il tuo job a una rete VPC e instradare tutto il traffico attraverso questa rete.
Se non hai un job Cloud Run esistente da attivare, testa la funzionalità eseguendo il deployment del container di job Cloud Run di esempio
us-docker.pkg.dev/cloudrun/container/job:latest
in Cloud Run.Esegui il deployment del servizio Cloud Run che funge da proxy. Consulta Servizio proxy di esempio per un servizio di esempio che attiva un job Cloud Run in risposta a una richiesta. Dopo il deployment, la console mostra l'URL del servizio accanto al testo URL:.
Completa la configurazione dei Controlli di servizio VPC specifici per Cloud Run per ciascun servizio. Devi connettere il servizio a una rete VPC e instradare tutto il traffico attraverso questa rete. Assicurati di impostare Ingress su Interno.
Crea un cron job Cloud Scheduler che attivi il servizio proxy Cloud Run:
Fai clic su Crea job.
Inserisci i valori che preferisci per i campi Nome, Regione, Frequenza e Fuso orario. Per saperne di più, vedi Creare un cron job con Cloud Scheduler.
Fai clic su Configura l'esecuzione.
Seleziona il tipo di target HTTP.
In URL, inserisci l'URL del servizio proxy Cloud Run che hai annotato nel passaggio precedente.
Per il metodo HTTP, seleziona Get.
Per l'intestazione Auth, seleziona Aggiungi token OIDC.
Per Account di servizio, seleziona Account di servizio predefinito di Compute Engine o un account di servizio personalizzato con l'autorizzazione
run.routes.invoke
o il ruoloCloud Run Invoker
.In Segmento di pubblico, inserisci lo stesso URL del servizio proxy Cloud Run che hai annotato nel passaggio precedente.
Lascia vuoti tutti gli altri campi.
Fai clic su Crea per creare il cron job Cloud Scheduler.
Servizio proxy di esempio
La sezione seguente mostra un servizio Python di esempio che esegue il proxy delle richieste e attiva il job Cloud Run.
Crea un file denominato
main.py
e incolla il seguente codice. Aggiorna il nome del job, la regione e l'ID progetto con i valori necessari.import os from flask import Flask app = Flask(__name__) # pip install google-cloud-run from google.cloud import run_v2 @app.route('/') def hello(): client = run_v2.JobsClient() # UPDATE TO YOUR JOB NAME, REGION, AND PROJECT ID job_name = 'projects/YOUR_PROJECT_ID/locations/YOUR_JOB_REGION/jobs/YOUR_JOB_NAME' print("Triggering job...") request = run_v2.RunJobRequest(name=job_name) operation = client.run_job(request=request) response = operation.result() print(response) return "Done!" if __name__ == '__main__': app.run(debug=True, host="0.0.0.0", port=int(os.environ.get("PORT", 8080)))
Crea un file denominato
requirements.txt
e incolla il seguente codice:google-cloud-run flask
Crea un Dockerfile con i seguenti contenuti:
FROM python:3.9-slim-buster WORKDIR /app COPY requirements.txt requirements.txt RUN pip install --no-cache-dir -r requirements.txt COPY . . CMD ["python3", "main.py"]
Crea ed esegui il deployment del contenitore. I deployment basati su sorgente possono essere difficili da configurare in un ambiente VPC Service Controls, a causa della necessità di configurare i worker personalizzati di Cloud Build. Se hai già una pipeline di compilazione ed esecuzione, utilizzala per compilare il codice sorgente in un contenitore ed esegui il deployment del contenitore come servizio Cloud Run.
Se non hai già configurato la compilazione e il deployment, compila il contenitore localmente e caricalo in Artifact Registry, ad esempio:
PROJECT_ID=YOUR_PROJECT_ID REGION=YOUR_REGION AR_REPO=YOUR_AR_REPO CLOUD_RUN_SERVICE=job-runner-service docker build -t $CLOUD_RUN_SERVICE . docker tag $CLOUD_RUN_SERVICE $REGION_ID-docker.pkg.dev/$PROJECT_ID/AR_REPO/$CLOUD_RUN_SERVICE docker push $REGION_ID-docker.pkg.dev/$PROJECT_ID/AR_REPO/$CLOUD_RUN_SERVICE
Prendi nota dell'URL del servizio restituito dal comando di deployment.
Passaggi successivi
Dopo aver utilizzato questa funzionalità, scopri di più leggendo quanto segue:
- Visualizzare i log dei job
- Monitorare il rendimento dei job
- Creare un job
- Eseguire un job
- Gestire i job