Mengonfigurasi health check container untuk layanan

Pemeriksaan kesehatan Cloud Run memastikan bahwa instance container Anda berjalan dengan benar dan dapat menyalurkan traffic. Dengan health check Cloud Run, Anda dapat menyesuaikan kapan penampung siap menerima permintaan, dan kapan penampung harus dianggap tidak responsif sehingga memerlukan mulai ulang.

Kasus penggunaan

Anda dapat mengonfigurasi dua jenis pemeriksaan health check:

  • Pemeriksaan startup menentukan apakah container telah dimulai dan siap untuk menerima traffic.

    • Saat Anda mengonfigurasi pemeriksaan startup, pemeriksaan keaktifan dinonaktifkan hingga pemeriksaan startup menentukan bahwa container dimulai, untuk mencegah gangguan pada startup layanan.
    • Pemeriksaan startup sangat berguna jika Anda menggunakan pemeriksaan keaktifan pada container yang dimulai dengan lambat, karena pemeriksaan startup mencegah container dimatikan sebelum waktunya sebelum container aktif dan berjalan.
  • Pemeriksaan keaktifan menentukan apakah akan memulai ulang container.

    • Memulai ulang container dalam hal ini dapat meningkatkan ketersediaan layanan jika terjadi bug.
    • Pemeriksaan keaktifan dimaksudkan untuk memulai ulang setiap instance yang tidak dapat dipulihkan dengan cara lain. Pemeriksaan ini harus digunakan terutama untuk kegagalan instance yang tidak dapat dipulihkan, seperti mendeteksi deadlock saat layanan berjalan, tetapi tidak dapat membuat progres. Anda dapat memerlukan pemeriksaan keaktifan untuk setiap penampung menggunakan kebijakan organisasi kustom.

Jika layanan mengalami kegagalan pemeriksaan startup atau keaktifan berulang, Cloud Run akan membatasi mulai ulang instance untuk mencegah loop error yang tidak terkontrol.

Mengonfigurasi pemeriksaan

Setiap perubahan konfigurasi akan menghasilkan revisi baru. Revisi selanjutnya juga akan otomatis mendapatkan setelan konfigurasi ini, kecuali jika Anda melakukan pembaruan eksplisit untuk mengubahnya.

Mengonfigurasi pemeriksaan startup

Anda dapat mengonfigurasi pemeriksaan HTTP, TCP, dan gRPC menggunakan Google Cloud konsol, YAML, atau Terraform:

Konsol

  1. Di konsol Google Cloud , buka halaman Cloud Run:

    Buka Cloud Run

  2. Untuk layanan baru, luaskan Container, volumes, networking, security untuk menampilkan opsi pemeriksaan kesehatan. Untuk layanan yang ada, klik layanan yang ingin Anda konfigurasi, lalu klik Edit dan deploy untuk menampilkan opsi pemeriksaan kesehatan.

  3. Di bagian Container, buka Health checks, lalu klik Add health check untuk membuka panel konfigurasi Add health check.

  4. Dari menu Pilih jenis health check, pilih jenis health check yang ingin ditambahkan.

  5. Dari menu Select probe type, pilih jenis probe yang ingin Anda gunakan, misalnya, HTTP atau gRPC. Tindakan ini akan menampilkan formulir konfigurasi probe.

  6. Perhatikan bahwa konfigurasi probe bervariasi menurut jenis probe. Konfigurasikan setelan probe:

    • Jika Anda menggunakan probe HTTP:

      • Pastikan layanan Anda menggunakan HTTP/1 (default Cloud Run), bukan HTTP/2.

      • Gunakan kolom Jalur untuk menentukan jalur relatif ke endpoint, misalnya, /.

      • Centang kotak HTTP Headers untuk menentukan header kustom opsional. Tentukan nama header di kolom Nama dan nilai header di kolom Nilai. Klik Tambahkan header HTTP untuk menentukan header lainnya.

    • Jika Anda menggunakan pemeriksaan gRPC, pastikan image container Anda menerapkan protokol health check gRPC. Untuk mengetahui informasi selengkapnya, lihat Protokol Pemeriksaan Kesehatan GRPC.

    • Untuk Port, tentukan port container yang digunakan untuk layanan Anda.

    • Untuk Penundaan awal, tentukan jumlah detik yang akan ditunggu setelah penampung dimulai sebelum melakukan pemeriksaan pertama. Tentukan nilai dari 0 detik hingga 240 detik. Nilai default-nya adalah 0 detik.

    • Untuk Periode, tentukan periode (dalam detik) untuk melakukan pemeriksaan. Misalnya, 2 melakukan pemeriksaan setiap 2 detik. Tentukan nilai dari 1 detik hingga 240 detik. Nilai default-nya adalah 10 detik.

    • Untuk Batas kegagalan, tentukan frekuensi untuk mencoba kembali pemeriksaan sebelum menonaktifkan penampung. Nilai defaultnya adalah 3.

    • Untuk Waktu tunggu, tentukan jumlah detik untuk menunggu hingga waktu pemeriksaan habis. Nilai ini tidak boleh melebihi nilai yang ditentukan untuk periodSeconds. Tentukan nilai dari 1 hingga 240. Nilai defaultnya adalah 1.

  7. Klik Tambahkan untuk menambahkan nilai minimum baru

gcloud

Startup TCP

Jalankan perintah berikut:

  gcloud run deploy SERVICE \
      --image=IMAGE_URL \
      --startup-probe tcpSocket.port=CONTAINER_PORT,initialDelaySeconds=DELAY,failureThreshold=THRESHOLD,timeoutSeconds=TIMEOUT,periodSeconds=PERIOD

Ganti:

  • SERVICE dengan nama layanan Cloud Run Anda.
  • IMAGE_URL dengan referensi ke image container, misalnya, us-docker.pkg.dev/cloudrun/container/hello:latest. Jika Anda menggunakan Artifact Registry, repositori REPO_NAME harus sudah dibuat. URL berbentuk LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
  • (OPSIONAL) CONTAINER_PORT harus ditetapkan ke port container yang digunakan untuk layanan Anda.
  • DELAY dengan jumlah detik untuk menunggu setelah container dimulai sebelum melakukan pemeriksaan pertama. Tentukan nilai dari 0 detik hingga 240 detik. Nilai default-nya adalah 0 detik.
  • (OPSIONAL) TIMEOUT dengan jumlah detik untuk menunggu hingga waktu pemeriksaan habis. Nilai ini tidak boleh melebihi nilai yang ditentukan untuk periodSeconds. Tentukan nilai dari 1 hingga 240. Nilai defaultnya adalah 1.
  • THRESHOLD dengan frekuensi untuk mencoba kembali pemeriksaan sebelum menutup container. Nilai defaultnya adalah 3.
  • PERIOD dengan periode (dalam detik) untuk melakukan pemeriksaan. Misalnya, 2 melakukan pemeriksaan setiap 2 detik. Tentukan nilai dari 1 detik hingga 240 detik. Nilai default-nya adalah 10 detik.

Startup HTTP

Jalankan perintah berikut:

  gcloud run deploy SERVICE \
      --image=IMAGE_URL \
      --startup-probe httpGet.path=PATH,httpGet.port=CONTAINER_PORT,initialDelaySeconds=DELAY,failureThreshold=THRESHOLD,timeoutSeconds=TIMEOUT,periodSeconds=PERIOD

Ganti:

  • SERVICE dengan nama layanan Cloud Run Anda.
  • IMAGE_URL dengan referensi ke image container, misalnya, us-docker.pkg.dev/cloudrun/container/hello:latest. Jika Anda menggunakan Artifact Registry, repositori REPO_NAME harus sudah dibuat. URL berbentuk LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
  • PATH dengan jalur relatif ke endpoint HTTP, misalnya, /ready.
  • (OPSIONAL) CONTAINER_PORT harus ditetapkan ke port container yang digunakan untuk layanan Anda.
  • (OPSIONAL) DELAY dengan jumlah detik untuk menunggu setelah container dimulai sebelum melakukan pemeriksaan pertama. Tentukan nilai dari 0 detik hingga 240 detik. Nilai default-nya adalah 0 detik.
  • (OPSIONAL) THRESHOLD dengan frekuensi untuk mencoba kembali pemeriksaan sebelum menutup container. Nilai defaultnya adalah 3.
  • (OPSIONAL)TIMEOUT dengan jumlah detik untuk menunggu hingga waktu pemeriksaan habis. Nilai ini tidak boleh melebihi nilai yang ditentukan untuk periodSeconds. Tentukan nilai dari 1 hingga 240. Nilai defaultnya adalah 1.
  • (OPSIONAL) PERIOD dengan periode (dalam detik) untuk melakukan pemeriksaan. Misalnya, 2 melakukan pemeriksaan setiap 2 detik. Tentukan nilai dari 1 detik hingga 240 detik. Nilai default-nya adalah 10 detik.

Startup gRPC

Sebelum menggunakan pemeriksaan gRPC, pastikan image penampung Anda menerapkan protokol pemeriksaan kesehatan gRPC. Untuk mengetahui informasi selengkapnya, lihat Protokol Pemeriksaan Kesehatan GRPC.

Jalankan perintah berikut:

  gcloud run deploy SERVICE \
      --image=IMAGE_URL \
      --startup-probe grpc.port=CONTAINER_PORT,grpc.service=GRPC_SERVICE,initialDelaySeconds=DELAY,failureThreshold=THRESHOLD,timeoutSeconds=TIMEOUT,periodSeconds=PERIOD

Ganti:

  • SERVICE dengan nama layanan Cloud Run Anda.
  • IMAGE_URL dengan referensi ke image container, misalnya, us-docker.pkg.dev/cloudrun/container/hello:latest. Jika Anda menggunakan Artifact Registry, repositori REPO_NAME harus sudah dibuat. URL berbentuk LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
  • (OPSIONAL) GRPC_SERVICE. Jika ditetapkan, ini akan digunakan di kolom layanan grpc.health.v1.HealthCheckRequest saat RPC grpc.health.v1.Health.Check dipanggil.
  • (OPSIONAL) CONTAINER_PORT harus ditetapkan ke port container yang digunakan untuk layanan Anda.
  • (OPSIONAL) DELAY dengan jumlah detik untuk menunggu setelah container dimulai sebelum melakukan pemeriksaan pertama. Tentukan nilai dari 0 detik hingga 240 detik. Nilai default-nya adalah 0 detik.
  • (OPSIONAL) THRESHOLD dengan frekuensi untuk mencoba kembali pemeriksaan sebelum menutup container. Nilai defaultnya adalah 3.
  • (OPSIONAL)TIMEOUT dengan jumlah detik untuk menunggu hingga waktu pemeriksaan habis. Nilai ini tidak boleh melebihi nilai yang ditentukan untuk periodSeconds. Tentukan nilai dari 1 hingga 240. Nilai defaultnya adalah 1.
  • (OPSIONAL) PERIOD dengan periode (dalam detik) untuk melakukan pemeriksaan. Misalnya, 2 melakukan pemeriksaan setiap 2 detik. Tentukan nilai dari 1 detik hingga 240 detik. Nilai default-nya adalah 10 detik.

YAML

Startup TCP

  1. Jika Anda membuat layanan baru, lewati langkah ini. Jika Anda mengupdate layanan yang sudah ada, download konfigurasi YAML-nya:
    gcloud run services describe SERVICE --format export > service.yaml
  2. Konfigurasikan atribut startupProbe seperti yang ditunjukkan berikut:

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
     name: SERVICE
    spec:
     template:
       metadata:
       spec:
         containers:
         - image: IMAGE_URL
           startupProbe:
             tcpSocket:
               port: CONTAINER_PORT
             initialDelaySeconds: DELAY
             timeoutSeconds: TIMEOUT
             failureThreshold: THRESHOLD
             periodSeconds: PERIOD

    Ganti:

    • SERVICE dengan nama layanan Cloud Run Anda.
    • IMAGE_URL dengan referensi ke image container, misalnya, us-docker.pkg.dev/cloudrun/container/hello:latest. Jika Anda menggunakan Artifact Registry, repositori REPO_NAME harus sudah dibuat. URL berbentuk LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
    • (OPSIONAL) CONTAINER_PORT harus ditetapkan ke port container yang digunakan untuk layanan Anda.
    • DELAY dengan jumlah detik untuk menunggu setelah container dimulai sebelum melakukan pemeriksaan pertama. Tentukan nilai dari 0 detik hingga 240 detik. Nilai default-nya adalah 0 detik.
    • (OPSIONAL) TIMEOUT dengan jumlah detik untuk menunggu hingga waktu pemeriksaan habis. Nilai ini tidak boleh melebihi nilai yang ditentukan untuk periodSeconds. Tentukan nilai dari 1 hingga 240. Nilai defaultnya adalah 1.
    • THRESHOLD dengan frekuensi untuk mencoba kembali pemeriksaan sebelum menutup container. Nilai defaultnya adalah 3.
    • PERIOD dengan periode (dalam detik) untuk melakukan pemeriksaan. Misalnya, 2 melakukan pemeriksaan setiap 2 detik. Tentukan nilai dari 1 detik hingga 240 detik. Nilai default-nya adalah 10 detik.
  3. Buat atau perbarui layanan menggunakan perintah berikut:
    gcloud run services replace service.yaml

Startup HTTP

  1. Jika Anda membuat layanan baru, lewati langkah ini. Jika Anda mengupdate layanan yang sudah ada, download konfigurasi YAML-nya:
    gcloud run services describe SERVICE --format export > service.yaml
  2. Pastikan layanan Anda menggunakan HTTP/1 (default Cloud Run), bukan HTTP/2.

  3. Konfigurasikan atribut startupProbe seperti yang ditunjukkan berikut:

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      name: SERVICE
    spec:
      template:
        metadata:
        spec:
          containers:
          - image: IMAGE_URL
            startupProbe:
              httpGet:
                path: PATH
                port: CONTAINER_PORT
                httpHeaders:
                  - name: HEADER_NAME
                    value: HEADER_VALUE
              initialDelaySeconds: DELAY
              timeoutSeconds: TIMEOUT
              failureThreshold: THRESHOLD
              periodSeconds: PERIOD

    Ganti:

    • SERVICE dengan nama layanan Cloud Run Anda.
    • IMAGE_URL dengan referensi ke image container, misalnya, us-docker.pkg.dev/cloudrun/container/hello:latest. Jika Anda menggunakan Artifact Registry, repositori REPO_NAME harus sudah dibuat. URL berbentuk LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
    • PATH dengan jalur relatif ke endpoint HTTP, misalnya, /ready.
    • (OPSIONAL) CONTAINER_PORT harus ditetapkan ke port container yang digunakan untuk layanan Anda.
    • (OPSIONAL) DELAY dengan jumlah detik untuk menunggu setelah container dimulai sebelum melakukan pemeriksaan pertama. Tentukan nilai dari 0 detik hingga 240 detik. Nilai default-nya adalah 0 detik.
    • (OPSIONAL) THRESHOLD dengan frekuensi untuk mencoba kembali pemeriksaan sebelum menutup container. Nilai defaultnya adalah 3.
    • (OPSIONAL) httpHeaders dapat digunakan untuk menyediakan beberapa header kustom atau berulang menggunakan kolom HEADER_NAME dan HEADER_VALUE seperti yang ditunjukkan.
    • (OPSIONAL)TIMEOUT dengan jumlah detik untuk menunggu hingga waktu pemeriksaan habis. Nilai ini tidak boleh melebihi nilai yang ditentukan untuk periodSeconds. Tentukan nilai dari 1 hingga 240. Nilai defaultnya adalah 1.
    • (OPSIONAL) PERIOD dengan periode (dalam detik) untuk melakukan pemeriksaan. Misalnya, 2 melakukan pemeriksaan setiap 2 detik. Tentukan nilai dari 1 detik hingga 240 detik. Nilai default-nya adalah 10 detik.
  4. Buat atau perbarui layanan menggunakan perintah berikut:
    gcloud run services replace service.yaml

Startup gRPC

Sebelum menggunakan pemeriksaan gRPC, pastikan image penampung Anda menerapkan protokol pemeriksaan kesehatan gRPC. Untuk mengetahui informasi selengkapnya, lihat Protokol Pemeriksaan Kesehatan GRPC.

  1. Jika Anda membuat layanan baru, lewati langkah ini. Jika Anda mengupdate layanan yang sudah ada, download konfigurasi YAML-nya:
    gcloud run services describe SERVICE --format export > service.yaml
  2. Konfigurasikan atribut startupProbe seperti yang ditunjukkan berikut:

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      name: SERVICE
    spec:
      template:
        metadata:
        spec:
          containers:
          - image: IMAGE_URL
            startupProbe:
              grpc:
                service: GRPC_SERVICE
                port: CONTAINER_PORT
              initialDelaySeconds: DELAY
              timeoutSeconds: TIMEOUT
              failureThreshold: THRESHOLD
              periodSeconds: PERIOD

    Ganti:

    • SERVICE dengan nama layanan Cloud Run Anda.
    • IMAGE_URL dengan referensi ke image container, misalnya, us-docker.pkg.dev/cloudrun/container/hello:latest. Jika Anda menggunakan Artifact Registry, repositori REPO_NAME harus sudah dibuat. URL berbentuk LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
    • (OPSIONAL) GRPC_SERVICE. Jika ditetapkan, ini akan digunakan di kolom layanan grpc.health.v1.HealthCheckRequest saat RPC grpc.health.v1.Health.Check dipanggil.
    • (OPSIONAL) CONTAINER_PORT harus ditetapkan ke port container yang digunakan untuk layanan Anda.
    • (OPSIONAL) DELAY dengan jumlah detik untuk menunggu setelah container dimulai sebelum melakukan pemeriksaan pertama. Tentukan nilai dari 0 detik hingga 240 detik. Nilai default-nya adalah 0 detik.
    • (OPSIONAL) THRESHOLD dengan frekuensi untuk mencoba kembali pemeriksaan sebelum menutup container. Nilai defaultnya adalah 3.
    • (OPSIONAL)TIMEOUT dengan jumlah detik untuk menunggu hingga waktu pemeriksaan habis. Nilai ini tidak boleh melebihi nilai yang ditentukan untuk periodSeconds. Tentukan nilai dari 1 hingga 240. Nilai defaultnya adalah 1.
    • (OPSIONAL) PERIOD dengan periode (dalam detik) untuk melakukan pemeriksaan. Misalnya, 2 melakukan pemeriksaan setiap 2 detik. Tentukan nilai dari 1 detik hingga 240 detik. Nilai default-nya adalah 10 detik.
  3. Buat atau perbarui layanan menggunakan perintah berikut:
    gcloud run services replace service.yaml

Terraform

Untuk mempelajari cara menerapkan atau menghapus konfigurasi Terraform, lihat Perintah dasar Terraform.

Startup TCP

Konfigurasikan layanan Cloud Run dengan atribut startup_probe seperti yang ditunjukkan:

resource "google_cloud_run_v2_service" "default" {
  name     = "cloudrun-service-healthcheck"
  location = "us-central1"

  deletion_protection = false # set to "true" in production

  template {
    containers {
      image = "us-docker.pkg.dev/cloudrun/container/hello"

      startup_probe {
        failure_threshold     = 5
        initial_delay_seconds = 10
        timeout_seconds       = 3
        period_seconds        = 3

        tcp_socket {
          port = 8080
        }
      }
    }
  }
}

Startup HTTP

Pastikan layanan Anda menggunakan HTTP/1 (default Cloud Run), bukan HTTP/2.

Konfigurasikan layanan Cloud Run dengan atribut startup_probe seperti yang ditunjukkan:

resource "google_cloud_run_v2_service" "default" {
  name     = "cloudrun-service-healthcheck"
  location = "us-central1"

  deletion_protection = false # set to "true" in production

  template {
    containers {
      image = "us-docker.pkg.dev/cloudrun/container/hello"

      startup_probe {
        failure_threshold     = 5
        initial_delay_seconds = 10
        timeout_seconds       = 3
        period_seconds        = 3

        http_get {
          path = "/"
          # Custom headers to set in the request
          # https://registry.terraform.io/providers/hashicorp/google/latest/docs/resources/cloud_run_v2_service#http_headers
          http_headers {
            name  = "Access-Control-Allow-Origin"
            value = "*"
          }
        }
      }
    }
  }
}

Startup gRPC

Sebelum menggunakan pemeriksaan gRPC, pastikan image penampung Anda menerapkan protokol pemeriksaan kesehatan gRPC. Untuk mengetahui informasi selengkapnya, lihat Protokol Pemeriksaan Kesehatan GRPC.

Konfigurasikan layanan Cloud Run dengan atribut startup_probe seperti yang ditunjukkan:

resource "google_cloud_run_v2_service" "default" {
  name     = "cloudrun-service-healthcheck"
  location = "us-central1"

  deletion_protection = false # set to "true" in production

  template {
    containers {
      # Note: Change to the name of your image
      image = "us-docker.pkg.dev/cloudrun/container/hello"

      startup_probe {
        failure_threshold     = 5
        initial_delay_seconds = 10
        timeout_seconds       = 3
        period_seconds        = 3

        grpc {
          # Note: Change to the name of your pre-existing grpc health status service
          service = "grpc.health.v1.Health"
        }
      }
    }
  }
}

Pemeriksaan startup TCP default

Pemeriksaan startup TCP secara otomatis dikonfigurasi untuk layanan Cloud Run baru dengan nilai default. Pemeriksaan default setara dengan hal berikut:

startupProbe:
  tcpSocket:
    port: CONTAINER_PORT
  timeoutSeconds: 1
  periodSeconds: 10
  failureThreshold: 3

Ganti CONTAINER_PORT dengan port container yang ditetapkan untuk layanan Anda.

Anda dapat mengubah nilai default ini dengan mengikuti petunjuk di bagian konfigurasi probe di halaman ini.

Persyaratan dan perilaku pemeriksaan startup

Jenis Probe Persyaratan Perilaku
Startup TCP Tidak ada Secara default, Cloud Run membuat koneksi TCP untuk membuka Soket TCP pada port yang ditentukan. Jika Cloud Run tidak dapat terhubung, hal ini menunjukkan kegagalan.

Jika pemeriksaan startup tidak berhasil dalam waktu yang ditentukan (failureThreshold * periodSeconds), yang tidak boleh melebihi 240 detik, penampung akan dimatikan. Lihat juga Default TCP.
Startup HTTP Membuat endpoint health check HTTP
Gunakan HTTP/1
Setelah konfigurasi pemeriksaan, Cloud Run akan membuat permintaan HTTP GET ke endpoint pemeriksaan kesehatan layanan (misalnya, /ready). Setiap respons antara 200 dan 400 berhasil, yang lainnya menunjukkan kegagalan.

Jika pemeriksaan startup tidak berhasil dalam waktu yang ditentukan (failureThreshold * periodSeconds), yang tidak boleh melebihi 240 detik, penampung akan dimatikan.

Jika pemeriksaan startup HTTP berhasil dalam waktu yang ditentukan, dan Anda telah mengonfigurasi pemeriksaan keaktifan HTTP, pemeriksaan keaktifan HTTP akan dimulai.
Startup gRPC Menerapkan protokol Health Check gRPC di layanan Cloud Run Jika pemeriksaan startup tidak berhasil dalam waktu yang ditentukan (failureThreshold * periodSeconds), yang tidak dapat melebihi 240 detik, container akan dimatikan.

Mengonfigurasi pemeriksaan keaktifan

Anda dapat mengonfigurasi pemeriksaan HTTP dan gRPC menggunakan Google Cloud konsol, YAML, atau Terraform:

Konsol

Sebelum menggunakan pemeriksaan gRPC, pastikan image penampung Anda menerapkan protokol pemeriksaan kesehatan gRPC. Untuk mengetahui informasi selengkapnya, lihat Protokol Pemeriksaan Kesehatan GRPC.
  1. Di konsol Google Cloud , buka halaman Cloud Run:

    Buka Cloud Run

  2. Untuk layanan baru, luaskan Container, volumes, networking, security untuk menampilkan opsi pemeriksaan kesehatan. Untuk layanan yang ada, klik layanan yang ingin Anda konfigurasi, lalu klik Edit dan deploy untuk menampilkan opsi pemeriksaan kesehatan.

  3. Di bagian Container, buka Health checks, lalu klik Add health check untuk membuka panel konfigurasi Add health check.

  4. Dari menu Pilih jenis health check, pilih jenis health check yang ingin ditambahkan.

  5. Dari menu Select probe type, pilih jenis probe yang ingin Anda gunakan, misalnya, HTTP atau gRPC. Tindakan ini akan menampilkan formulir konfigurasi probe.

  6. Perhatikan bahwa konfigurasi probe bervariasi menurut jenis probe. Konfigurasikan setelan probe:

    • Jika Anda menggunakan probe HTTP:

      • Pastikan layanan Anda menggunakan HTTP/1 (default Cloud Run), bukan HTTP/2.

      • Gunakan kolom Jalur untuk menentukan jalur relatif ke endpoint, misalnya, /.

      • Centang kotak HTTP Headers untuk menentukan header kustom opsional. Tentukan nama header di kolom Nama dan nilai header di kolom Nilai. Klik Tambahkan header HTTP untuk menentukan header lainnya.

    • Jika Anda menggunakan pemeriksaan gRPC, pastikan image container Anda menerapkan protokol health check gRPC. Untuk mengetahui informasi selengkapnya, lihat Protokol Pemeriksaan Kesehatan GRPC.

    • Untuk Port, tentukan port container yang digunakan untuk layanan Anda.

    • Untuk Penundaan awal, tentukan jumlah detik yang akan ditunggu setelah penampung dimulai sebelum melakukan pemeriksaan pertama. Tentukan nilai dari 0 detik hingga 240 detik. Nilai default-nya adalah 0 detik.

    • Untuk Periode, tentukan periode (dalam detik) untuk melakukan pemeriksaan. Misalnya, 2 melakukan pemeriksaan setiap 2 detik. Tentukan nilai dari 1 detik hingga 240 detik. Nilai default-nya adalah 10 detik.

    • Untuk Batas kegagalan, tentukan frekuensi untuk mencoba kembali pemeriksaan sebelum menonaktifkan penampung. Nilai defaultnya adalah 3.

    • Untuk Waktu tunggu, tentukan jumlah detik untuk menunggu hingga waktu pemeriksaan habis. Nilai ini tidak boleh melebihi nilai yang ditentukan untuk periodSeconds. Tentukan nilai dari 1 hingga 240. Nilai defaultnya adalah 1.

  7. Klik Tambahkan untuk menambahkan nilai minimum baru

gcloud

Status aktif HTTP

Jalankan perintah berikut:

  gcloud run deploy SERVICE \
      --image=IMAGE_URL \
      --liveness-probe httpGet.path=PATH,httpGet.port=CONTAINER_PORT,initialDelaySeconds=DELAY,failureThreshold=THRESHOLD,timeoutSeconds=TIMEOUT,periodSeconds=PERIOD

Ganti:

  • SERVICE dengan nama layanan Cloud Run Anda.
  • IMAGE_URL dengan referensi ke image container, misalnya, us-docker.pkg.dev/cloudrun/container/hello:latest. Jika Anda menggunakan Artifact Registry, repositori REPO_NAME harus sudah dibuat. URL berbentuk LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
  • PATH dengan jalur relatif ke endpoint HTTP, misalnya, /ready.
  • (OPSIONAL) CONTAINER_PORT harus ditetapkan ke port container yang digunakan untuk layanan Anda.
  • (OPSIONAL) DELAY dengan jumlah detik untuk menunggu setelah container dimulai sebelum melakukan pemeriksaan pertama. Tentukan nilai dari 0 detik hingga 240 detik. Nilai default-nya adalah 0 detik.
  • (OPSIONAL) THRESHOLD dengan frekuensi untuk mencoba kembali pemeriksaan sebelum menutup container. Nilai defaultnya adalah 3.
  • (OPSIONAL) TIMEOUT dengan jumlah detik untuk menunggu hingga waktu pemeriksaan habis. Nilai ini tidak boleh melebihi nilai yang ditentukan untuk periodSeconds. Tentukan nilai dari 1 hingga 3600.Nilai defaultnya adalah 1.
  • (OPSIONAL) PERIOD dengan periode (dalam detik) untuk melakukan pemeriksaan. Misalnya, 2 melakukan pemeriksaan setiap 2 detik. Tentukan nilai dari 1 detik hingga 3600 detik. Nilai default-nya adalah 10 detik.

Keaktifan gRPC

Sebelum menggunakan pemeriksaan gRPC, pastikan image penampung Anda menerapkan protokol pemeriksaan kesehatan gRPC. Untuk mengetahui informasi selengkapnya, lihat Protokol Pemeriksaan Kesehatan GRPC.

Jalankan perintah berikut:

  gcloud run deploy SERVICE \
      --image=IMAGE_URL \
      --liveness-probe grpc.port=CONTAINER_PORT,grpc.service=GRPC_SERVICE,initialDelaySeconds=DELAY,failureThreshold=THRESHOLD,timeoutSeconds=TIMEOUT,periodSeconds=PERIOD

Ganti:

  • SERVICE dengan nama layanan Cloud Run Anda.
  • IMAGE_URL dengan referensi ke image container, misalnya, us-docker.pkg.dev/cloudrun/container/hello:latest. Jika Anda menggunakan Artifact Registry, repositori REPO_NAME harus sudah dibuat. URL berbentuk LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
  • (OPSIONAL) GRPC_SERVICE. Jika ditetapkan, nilai ini akan digunakan di kolom layanan grpc.health.v1.HealthCheckRequest saat RPC grpc.health.v1.Health.Check dipanggil.
  • (OPSIONAL) CONTAINER_PORT harus ditetapkan ke port container yang digunakan untuk layanan Anda.
  • (OPSIONAL) DELAY dengan jumlah detik untuk menunggu setelah container dimulai sebelum melakukan pemeriksaan pertama. Tentukan nilai dari 0 detik hingga 240 detik. Nilai default-nya adalah 0 detik.
  • (OPSIONAL) THRESHOLD dengan frekuensi untuk mencoba kembali pemeriksaan sebelum menutup container. Nilai defaultnya adalah 3.
  • (OPSIONAL) TIMEOUT dengan jumlah detik untuk menunggu hingga waktu pemeriksaan habis. Nilai ini tidak boleh melebihi nilai yang ditentukan untuk periodSeconds. Tentukan nilai dari 1 hingga 3600.Nilai defaultnya adalah 1.
  • (OPSIONAL) PERIOD dengan periode (dalam detik) untuk melakukan pemeriksaan. Misalnya, 2 melakukan pemeriksaan setiap 2 detik. Tentukan nilai dari 1 detik hingga 3600 detik. Nilai default-nya adalah 10 detik.

YAML

Status aktif HTTP

  1. Jika Anda membuat layanan baru, lewati langkah ini. Jika Anda mengupdate layanan yang sudah ada, download konfigurasi YAML-nya:
    gcloud run services describe SERVICE --format export > service.yaml
  2. Pastikan layanan Anda menggunakan HTTP/1 (default Cloud Run), bukan HTTP/2.

  3. Konfigurasikan atribut livenessProbe seperti yang ditunjukkan berikut:

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      name: SERVICE
    spec:
      template:
        metadata:
        spec:
          containers:
          - image: IMAGE_URL
            livenessProbe:
              httpGet:
                path: PATH
                port: CONTAINER_PORT
                httpHeaders:
                  - name: HEADER_NAME
                    value: HEADER_VALUE
              initialDelaySeconds: DELAY
              timeoutSeconds: TIMEOUT
              failureThreshold: THRESHOLD
              periodSeconds: PERIOD

    Ganti:

    • SERVICE dengan nama layanan Cloud Run Anda.
    • IMAGE_URL dengan referensi ke image container, misalnya, us-docker.pkg.dev/cloudrun/container/hello:latest. Jika Anda menggunakan Artifact Registry, repositori REPO_NAME harus sudah dibuat. URL berbentuk LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
    • PATH dengan jalur relatif ke endpoint HTTP, misalnya, /ready.
    • (OPSIONAL) CONTAINER_PORT harus ditetapkan ke port container yang digunakan untuk layanan Anda.
    • (OPSIONAL) DELAY dengan jumlah detik untuk menunggu setelah container dimulai sebelum melakukan pemeriksaan pertama. Tentukan nilai dari 0 detik hingga 240 detik. Nilai default-nya adalah 0 detik.
    • (OPSIONAL) THRESHOLD dengan frekuensi untuk mencoba kembali pemeriksaan sebelum menutup container. Nilai defaultnya adalah 3.
    • (OPSIONAL) httpHeaders dapat digunakan untuk menyediakan beberapa header kustom atau berulang menggunakan kolom HEADER_NAME dan HEADER_VALUE seperti yang ditunjukkan.
    • (OPSIONAL) TIMEOUT dengan jumlah detik untuk menunggu hingga waktu pemeriksaan habis. Nilai ini tidak boleh melebihi nilai yang ditentukan untuk periodSeconds. Tentukan nilai dari 1 hingga 3600.Nilai defaultnya adalah 1.
    • (OPSIONAL) PERIOD dengan periode (dalam detik) untuk melakukan pemeriksaan. Misalnya, 2 melakukan pemeriksaan setiap 2 detik. Tentukan nilai dari 1 detik hingga 3600 detik. Nilai default-nya adalah 10 detik.
  4. Buat atau perbarui layanan menggunakan perintah berikut:
    gcloud run services replace service.yaml

Keaktifan gRPC

Sebelum menggunakan pemeriksaan gRPC, pastikan image penampung Anda menerapkan protokol pemeriksaan kesehatan gRPC. Untuk mengetahui informasi selengkapnya, lihat Protokol Pemeriksaan Kesehatan GRPC.

  1. Jika Anda membuat layanan baru, lewati langkah ini. Jika Anda mengupdate layanan yang sudah ada, download konfigurasi YAML-nya:
    gcloud run services describe SERVICE --format export > service.yaml
  2. Konfigurasikan atribut livenessProbe seperti yang ditunjukkan berikut:

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      name: SERVICE
    spec:
      template:
        metadata:
        spec:
          containers:
          - image: IMAGE_URL
            livenessProbe:
              grpc:
                port: CONTAINER_PORT
                service: GRPC_SERVICE
              initialDelaySeconds: DELAY
              timeoutSeconds: TIMEOUT
              failureThreshold: THRESHOLD
              periodSeconds: PERIOD

    Ganti

    • SERVICE dengan nama layanan Cloud Run Anda.
    • IMAGE_URL dengan referensi ke image container, misalnya, us-docker.pkg.dev/cloudrun/container/hello:latest. Jika Anda menggunakan Artifact Registry, repositori REPO_NAME harus sudah dibuat. URL berbentuk LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
    • (OPSIONAL) GRPC_SERVICE. Jika ditetapkan, nilai ini akan digunakan di kolom layanan grpc.health.v1.HealthCheckRequest saat RPC grpc.health.v1.Health.Check dipanggil.
    • (OPSIONAL) CONTAINER_PORT harus ditetapkan ke port container yang digunakan untuk layanan Anda.
    • (OPSIONAL) DELAY dengan jumlah detik untuk menunggu setelah container dimulai sebelum melakukan pemeriksaan pertama. Tentukan nilai dari 0 detik hingga 240 detik. Nilai default-nya adalah 0 detik.
    • (OPSIONAL) THRESHOLD dengan frekuensi untuk mencoba kembali pemeriksaan sebelum menutup container. Nilai defaultnya adalah 3.
    • (OPSIONAL) TIMEOUT dengan jumlah detik untuk menunggu hingga waktu pemeriksaan habis. Nilai ini tidak boleh melebihi nilai yang ditentukan untuk periodSeconds. Tentukan nilai dari 1 hingga 3600.Nilai defaultnya adalah 1.
    • (OPSIONAL) PERIOD dengan periode (dalam detik) untuk melakukan pemeriksaan. Misalnya, 2 melakukan pemeriksaan setiap 2 detik. Tentukan nilai dari 1 detik hingga 3600 detik. Nilai default-nya adalah 10 detik.

  3. Buat atau perbarui layanan menggunakan perintah berikut:
    gcloud run services replace service.yaml

Terraform

Untuk mempelajari cara menerapkan atau menghapus konfigurasi Terraform, lihat Perintah dasar Terraform.

Status aktif HTTP

Pastikan layanan Anda menggunakan HTTP/1 (default Cloud Run), bukan HTTP/2.

Konfigurasikan layanan Cloud Run dengan atribut liveness_probe seperti yang ditunjukkan:

resource "google_cloud_run_v2_service" "default" {
  name     = "cloudrun-service-healthcheck"
  location = "us-central1"

  deletion_protection = false # set to "true" in production

  template {
    containers {
      image = "us-docker.pkg.dev/cloudrun/container/hello"

      liveness_probe {
        failure_threshold     = 5
        initial_delay_seconds = 10
        timeout_seconds       = 3
        period_seconds        = 3

        http_get {
          path = "/"
          # Custom headers to set in the request
          # https://registry.terraform.io/providers/hashicorp/google/latest/docs/resources/cloud_run_v2_service#http_headers
          http_headers {
            name  = "Access-Control-Allow-Origin"
            value = "*"
          }
        }
      }
    }
  }
}

Keaktifan gRPC

Sebelum menggunakan pemeriksaan gRPC, pastikan image penampung Anda menerapkan protokol pemeriksaan kesehatan gRPC. Untuk mengetahui informasi selengkapnya, lihat Protokol Pemeriksaan Kesehatan GRPC.

Konfigurasikan layanan Cloud Run dengan atribut liveness_probe seperti yang ditunjukkan:

resource "google_cloud_run_v2_service" "default" {
  name     = "cloudrun-service-healthcheck"
  location = "us-central1"

  deletion_protection = false # set to "true" in production

  template {
    containers {
      # Note: Change to the name of your image
      image = "us-docker.pkg.dev/cloudrun/container/hello"

      liveness_probe {
        failure_threshold     = 5
        initial_delay_seconds = 10
        timeout_seconds       = 3
        period_seconds        = 3

        # Note: Change to the name of your pre-existing grpc health status service
        grpc {
          service = "grpc.health.v1.Health"
        }
      }
    }
  }
}

Persyaratan dan perilaku pemeriksaan keaktifan

Jenis Probe Persyaratan Perilaku
Status aktif HTTP Membuat endpoint health check HTTP
Gunakan HTTP/1
Pemeriksaan keaktifan hanya dimulai setelah pemeriksaan startup berhasil. Setelah konfigurasi pemeriksaan, dan semua pemeriksaan startup berhasil, Cloud Run akan membuat permintaan HTTP GET ke endpoint pemeriksaan kesehatan layanan (misalnya, /health). Setiap respons antara 200 dan 400 berhasil, yang lainnya menunjukkan kegagalan.

Jika pemeriksaan keaktifan tidak berhasil dalam waktu yang ditentukan (failureThreshold * periodSeconds), penampung akan dimatikan menggunakan sinyal SIGKILL. Permintaan yang tersisa yang masih ditayangkan oleh penampung akan dihentikan dengan kode status HTTP 503. Setelah container dinonaktifkan, penskalaan otomatis Cloud Run akan memulai instance container baru.
Keaktifan gRPC Menerapkan protokol Health Check gRPC di layanan Cloud Run Jika Anda mengonfigurasi pemeriksaan startup gRPC, pemeriksaan keaktifan hanya dimulai setelah pemeriksaan startup berhasil.

Setelah pemeriksaan keaktifan dikonfigurasi, dan semua pemeriksaan startup berhasil, Cloud Run akan membuat permintaan health check ke layanan.

Jika pemeriksaan keaktifan tidak berhasil dalam waktu yang ditentukan (failureThreshold * periodSeconds), container akan dimatikan menggunakan sinyal SIGKILL. Setelah container dinonaktifkan, penskalaan otomatis Cloud Run akan memulai instance container baru.

Membuat endpoint health check HTTP

Jika mengonfigurasi layanan Cloud Run untuk pemeriksaan startup HTTP, Anda perlu menambahkan endpoint dalam kode layanan untuk merespons pemeriksaan tersebut. Endpoint dapat memiliki nama apa pun yang Anda inginkan, misalnya, /startup atau /ready, tetapi nama tersebut harus cocok dengan nilai yang Anda tentukan untuk path dalam konfigurasi pemeriksaan, sebagai berikut:

startupProbe:
    httpGet:
      path: /ready

Jika mengonfigurasi layanan Cloud Run untuk pemeriksaan keaktifan HTTP menggunakan jalur seperti /healthz, Anda harus menentukannya dalam konfigurasi pemeriksaan sebagai berikut:

livenessProbe:
    httpGet:
      path: /healthz

Endpoint HTTP Healthcheck dapat diakses secara eksternal dan mengikuti prinsip yang sama seperti endpoint layanan HTTP lainnya yang diekspos secara eksternal.

Alokasi CPU

  • CPU selalu dialokasikan saat pemeriksaan dijalankan.
  • Semua pemeriksaan ditagih untuk konsumsi penggunaan CPU dan memori, tetapi tidak ada biaya berbasis permintaan.