Halaman ini menjelaskan praktik terbaik untuk menjalankan tugas Cloud Run terjadwal untuk project Google Cloud saat menggunakan perimeter Kontrol Layanan VPC.
Cloud Scheduler tidak dapat memicu tugas di dalam perimeter Kontrol Layanan VPC. Anda harus melakukan langkah tambahan untuk menyiapkan tugas terjadwal. Secara khusus, Anda harus melakukan proxy permintaan melalui komponen lain. Sebaiknya gunakan layanan Cloud Run sebagai proxy.
Diagram berikut menunjukkan arsitekturnya:
Sebelum memulai
Menyiapkan Cloud Run untuk Kontrol Layanan VPC. Ini adalah penyiapan satu kali yang digunakan oleh semua tugas terjadwal berikutnya. Anda juga harus melakukan beberapa penyiapan per layanan nanti, yang dijelaskan dalam petunjuk berikut.
Menyiapkan tugas terjadwal
Untuk menyiapkan tugas terjadwal di dalam perimeter Kontrol Layanan VPC:
Buat tugas, dan catat nama tugas Anda.
Selesaikan penyiapan Kontrol Layanan VPC khusus Cloud Run per tugas. Anda harus menghubungkan tugas ke jaringan VPC dan merutekan semua traffic melalui jaringan tersebut.
Jika Anda tidak memiliki tugas Cloud Run yang ingin dipicu, uji fitur ini dengan men-deploy sampel container tugas Cloud Run
us-docker.pkg.dev/cloudrun/container/job:latest
ke Cloud Run.Deploy layanan Cloud Run yang bertindak sebagai proxy. Lihat Contoh layanan proxy untuk contoh layanan yang memicu tugas Cloud Run sebagai respons terhadap permintaan. Setelah deployment, konsol akan menampilkan URL layanan di samping teks URL:.
Selesaikan penyiapan Kontrol Layanan VPC khusus Cloud Run per layanan. Anda perlu menghubungkan layanan ke jaringan VPC, dan merutekan semua traffic melalui jaringan tersebut. Pastikan untuk menetapkan ingress ke Internal.
Buat tugas cron Cloud Scheduler yang memicu layanan proxy Cloud Run Anda:
Klik Create Job.
Masukkan nilai yang Anda inginkan untuk kolom Name, Region, Frequency, dan Timezone. Untuk mengetahui informasi selengkapnya, lihat Membuat tugas cron menggunakan Cloud Scheduler.
Klik Configure the execution.
Pilih Jenis target HTTP.
Untuk URL, masukkan URL layanan proxy Cloud Run yang Anda catat di langkah sebelumnya.
Untuk metode HTTP, pilih Get.
Untuk header Auth, pilih Tambahkan token OIDC
Untuk Akun Layanan, pilih Akun layanan default Compute Engine atau akun layanan kustom yang memiliki izin
run.routes.invoke
atau peranCloud Run Invoker
.Untuk Audiens, masukkan URL layanan proxy Cloud Run yang sama dengan yang Anda catat di langkah sebelumnya.
Biarkan kolom lain kosong.
Klik Buat untuk membuat tugas cron Cloud Scheduler.
Contoh layanan proxy
Bagian berikut menunjukkan contoh layanan python yang melakukan proxy permintaan dan memicu tugas Cloud Run.
Buat file bernama
main.py
lalu tempelkan kode berikut ke dalamnya. Perbarui nama tugas, region, dan project ID ke nilai yang Anda perlukan.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)))
Buat file bernama
requirements.txt
lalu tempelkan kode berikut ke dalamnya:google-cloud-run flask
Buat Dockerfile dengan konten berikut:
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"]
Build dan deploy container. Deployment berbasis sumber dapat menjadi tantangan untuk disiapkan di lingkungan Kontrol Layanan VPC, karena perlunya menyiapkan pekerja kustom Cloud Build. Jika Anda sudah memiliki pipeline build dan deployment, gunakan pipeline tersebut untuk mem-build kode sumber ke dalam container dan men-deploy container sebagai layanan Cloud Run.
Jika Anda tidak memiliki penyiapan build dan deployment yang ada, build penampung secara lokal dan kirimkan ke Artifact Registry, misalnya:
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
Perhatikan URL layanan yang ditampilkan oleh perintah deploy.
Langkah berikutnya
Setelah menggunakan fitur ini, pelajari lebih lanjut dengan membaca hal berikut: