Menguji layanan Cloud Run secara lokal

Selama pengembangan, Anda dapat menjalankan dan menguji image container secara lokal sebelum men-deploy. Anda dapat menggunakan Cloud Code atau Docker yang diinstal secara lokal untuk menjalankan dan menguji secara lokal, termasuk berjalan secara lokal dengan akses ke layanan Google Cloud.

Sebelum memulai

Jika Anda baru mencoba pertama kali untuk menjalankan secara lokal, Anda mungkin tidak memiliki semua izin yang diperlukan untuk mengakses image dari registry penampung yang didukung yang Anda gunakan.

Periksa dokumentasi registry penampung yang didukung tentang cara mendapatkan akses. Anda dapat mengonfigurasi Docker untuk mendapatkan akses ke Artifact Registry menggunakan helper kredensial gcloud CLI

gcloud auth configure-docker LOCATION-docker.pkg.dev
.

Menguji secara lokal

Anda dapat menguji secara lokal menggunakan Docker, Docker dengan Akses Google Cloud, emulator Cloud Code, atau Google Cloud CLI. Pilih tab yang sesuai untuk mendapatkan petunjuk.

Docker

Untuk menguji image container secara lokal menggunakan Docker:

  1. Gunakan perintah Docker:

    PORT=8080 && docker run -p 9090:${PORT} -e PORT=${PORT} IMAGE_URL

    Ganti IMAGE_URL dengan referensi ke image container, contohnya, us-docker.pkg.dev/cloudrun/container/hello:latest. Jika Anda menggunakan Artifact Registry, repositori REPO_NAME harus sudah dibuat. Struktur URL-nya adalah LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG .

    Variabel lingkungan PORT menentukan port yang akan digunakan aplikasi Anda untuk memproses permintaan HTTP atau HTTPS Ini adalah persyaratan dari kontrak runtime Container. Dalam contoh ini, kita menggunakan port 8080.

  2. Buka http://localhost:9090 di browser Anda.

Jika Anda baru mulai menggunakan container, sebaiknya Anda meninjau panduan Memulai Docker. Untuk mempelajari perintah Docker lebih lanjut, lihat panduan dokumentasi Docker.

Docker dengan Akses Google Cloud

Jika Anda menggunakan library klien Google Cloud untuk mengintegrasikan aplikasi Anda dengan layanan Google Cloud, dan belum mengamankan layanan tersebut untuk mengontrol akses eksternal, Anda dapat menyiapkan container lokal untuk melakukan autentikasi dengan layanan Google Cloud menggunakan Kredensial Default Aplikasi.

Untuk menjalankan secara lokal:

  1. Lihat Mulai Menggunakan Autentikasi untuk mendapatkan petunjuk tentang cara membuat, mengambil, dan mengonfigurasi kredensial Akun Layanan Anda.

  2. Berikut bagaimana menjalankan flag Docker tersebut untuk masuk ke kredensial dan konfigurasi dari sistem lokal Anda ke dalam container lokal:

    1. Gunakan flag --volume (-v) untuk memasukkan file kredensial ke dalam container (dengan asumsi Anda telah menetapkan variabel lingkungan GOOGLE_APPLICATION_CREDENTIALS di mesin Anda):
      -v $GOOGLE_APPLICATION_CREDENTIALS:/tmp/keys/FILE_NAME.json:ro
    2. Gunakan tanda --environment (-e) untuk menetapkan variabel GOOGLE_APPLICATION_CREDENTIALS di dalam container:
      -e GOOGLE_APPLICATION_CREDENTIALS=/tmp/keys/FILE_NAME.json
  3. Anda juga dapat menggunakan perintah run Docker yang dikonfigurasi sepenuhnya ini:

    PORT=8080 && docker run \
    -p 9090:${PORT} \
    -e PORT=${PORT} \
    -e K_SERVICE=dev \
    -e K_CONFIGURATION=dev \
    -e K_REVISION=dev-00001 \
    -e GOOGLE_APPLICATION_CREDENTIALS=/tmp/keys/FILE_NAME.json \
    -v $GOOGLE_APPLICATION_CREDENTIALS:/tmp/keys/FILE_NAME.json:ro \
    IMAGE_URL

    Perhatikan bahwa jalur

    /tmp/keys/FILE_NAME.json
    yang ditampilkan dalam contoh di atas adalah lokasi yang wajar untuk menempatkan kredensial Anda di dalam penampung.

    Namun lokasi direktori lainnya juga dapat berfungsi. Persyaratan pentingnya adalah variabel lingkungan GOOGLE_APPLICATION_CREDENTIALS harus cocok dengan lokasi pemasangan binding di dalam container.

    Perlu diperhatikan bahwa dengan beberapa layanan Google Cloud, Anda dapat menggunakan konfigurasi alternatif untuk mengisolasi pemecahan masalah lokal dari data dan performa produksi.

Emulator Cloud Code

Plugin Cloud Code untuk VS Code dan JetBrains IDEs memungkinkan Anda menjalankan dan men-debug image container secara lokal di Cloud Run emulator dalam IDE Anda. Dengan emulator, Anda dapat mengonfigurasi lingkungan yang mewakili layanan Anda yang berjalan di Cloud Run.

Anda dapat mengonfigurasi properti seperti CPU dan alokasi memori, menentukan variabel lingkungan, serta menetapkan koneksi database Cloud SQL

  1. Instal Cloud Code untuk VS Code atau JetBrains IDE.
  2. Ikuti petunjuk untuk pengembangan dan proses debug secara lokal di dalam IDE Anda
  3. VS Code: Mengembangkan dan melakukan proses debug secara lokal
  4. IntelliJ: Mengembangkan dan melakukan proses debug secara lokal

gcloud CLI

Google Cloud CLI berisilingkungan pengembangan lokal untuk mengemulasi Cloud Run yang dapat membangun container dari sumber, menjalankan container di mesin lokal, dan secara otomatis membangun ulang container setelah kode sumber berubah.

Untuk memulai lingkungan pengembangan lokal:

  1. Ubah direktori ke direktori yang berisi kode sumber layanan Anda.

  2. Panggil perintah:

    gcloud beta code dev
    Jika ada Dockerfile di direktori lokal, Dockerfile akan digunakan untuk membangun container. Jika tidak ada Dockerfile, container dibuat dengan buildpack Google Cloud.

Untuk melihat layanan Anda berjalan, buka http://localhost:8080/ di browser Anda. Jika Anda menentukan port kustom dengan opsi --local-port, jangan lupa untuk membuka browser ke port tersebut.

Untuk menghentikan server lokal:

  • Mac OS dan Linux: Control-C
  • Windows: Control+Break

Menyesuaikan konfigurasi layanan

Anda dapat menyesuaikan konfigurasi layanan Cloud Run yang berjalan secara lokal menggunakan file YAML. Format YAML sama dengan yang dapat digunakan untuk men-deploy layanan Cloud Run, tetapi hanya mendukung sebagian setelan layanan Cloud Run. gcloud beta code dev mencari dan menggunakan file yang memiliki.akhiran *.service.dev.yaml di direktori saat ini. Jika tidak ada yang ditemukan, itu akan menggunakan file apa pun yang berakhiran dengan *.service.yaml

Anda dapat mengonfigurasi setelan berikut untuk pengembangan lokal:

Kolom image container tidak diperlukan untuk pengembangan lokal, karena image dibuat dan diberikan ke layanan saat perintah dijalankan.

Anda dapat menggunakan contoh file service.dev.yaml berikut untuk pengembangan lokal:

  apiVersion: serving.knative.dev/v1
  kind: Service
  metadata:
    name: my-service-name
  spec:
    template:
      spec:
        containers:
        - env:
          - name: FOO
            value: bar

Uji menggunakan kredensial

Untuk memberikan izin ke container agar dapat menggunakan layanan Google Cloud, Anda harus memberikan kredensial akses kepada container.

  • Untuk memberi container akses ke kredensial menggunakan akun Anda, login menggunakan gcloud dan masukan flag --application-default-credential:

    gcloud auth application-default login
    gcloud beta code dev --dockerfile=PATH_TO_DOCKERFILE --application-default-credential

  • Untuk memberikan kredensial aplikasi sebagai akun layanan, gunakan flag --service-account:

    gcloud beta code dev --dockerfile=PATH_TO_DOCKERFILE --service-account=SERVICE_ACCOUNT_EMAIL

    Flag --service-account menyebabkan kunci akun layanan didownload dan di-cache secara lokal. Pengguna bertanggung jawab untuk menjaga kunci tetap aman dan menghapusnya saat tidak diperlukan lagi.

Konfirmasi bahwa kode Anda berjalan secara lokal

Saat melakukan pengujian secara lokal di Cloud Run, Anda dapat mengonfirmasi dalam kode bahwa container Anda berjalan secara lokal dengan memeriksa variabel lingkungan K_REVISION, yang disediakan Cloud Run untuk semua container.

Docker

Untuk mengonfirmasi bahwa Anda menjalankan kode secara lokal di Google Cloud CLI, Anda dapat mencoba membuat kueri variabel lingkungan K_REVISION, tetapi karena belum ditetapkan, tidak ada nilai yang akan muncul.

Docker dengan Akses Google Cloud

Jika Anda menggunakan nilai yang tepat dari bagian di atas pada Langkah 3 untuk mengonfirmasi bahwa Anda menjalankan kode secara lokal di Google Cloud CLI, Anda dapat membuat kueri untuk variabel lingkungan K_REVISION dan mencari nilai dev-00001 untuk mengonfirmasi bahwa sistem tersebut berjalan secara lokal.

Emulator Cloud Code

Untuk mengonfirmasi bahwa Anda menjalankan kode secara lokal di Cloud Code, Anda dapat membuat kueri variabel lingkungan K_REVISION dan mencari nilai local untuk mengonfirmasi bahwa kode tersebut berjalan secara lokal.

gcloud CLI

Untuk mengonfirmasi bahwa Anda menjalankan kode secara lokal di Google Cloud CLI, Anda dapat membuat kueri variabel lingkungan K_REVISION dan mencari nilai yang dimulai dengan dev- untuk mengonfirmasi bahwa kode tersebut berjalan secara lokal.

Langkah berikutnya