Praktik terbaik: Menjalankan tugas terjadwal di perimeter Kontrol Layanan VPC

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:

Perimeter sc vpc Cloud Run

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:

  1. Buat tugas, dan catat nama tugas Anda.

  2. 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.

  3. 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:.

  4. 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.

  5. Buat tugas cron Cloud Scheduler yang memicu layanan proxy Cloud Run Anda:

    1. Buka halaman konsol tugas Cloud Scheduler

    2. Klik Create Job.

    3. Masukkan nilai yang Anda inginkan untuk kolom Name, Region, Frequency, dan Timezone. Untuk mengetahui informasi selengkapnya, lihat Membuat tugas cron menggunakan Cloud Scheduler.

    4. Klik Configure the execution.

    5. Pilih Jenis target HTTP.

    6. Untuk URL, masukkan URL layanan proxy Cloud Run yang Anda catat di langkah sebelumnya.

    7. Untuk metode HTTP, pilih Get.

    8. Untuk header Auth, pilih Tambahkan token OIDC

    9. Untuk Akun Layanan, pilih Akun layanan default Compute Engine atau akun layanan kustom yang memiliki izin run.routes.invoke atau peran Cloud Run Invoker.

    10. Untuk Audiens, masukkan URL layanan proxy Cloud Run yang sama dengan yang Anda catat di langkah sebelumnya.

    11. Biarkan kolom lain kosong.

    12. 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.

  1. 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)))
  2. Buat file bernama requirements.txt lalu tempelkan kode berikut ke dalamnya:

    google-cloud-run
    flask
  3. 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"]
  4. 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: