Health check container (layanan)

Anda dapat mengonfigurasi pemeriksaan health check startup HTTP, TCP, dan gRPC, beserta pemeriksaan keaktifan HTTP dan gRPC untuk layanan Cloud Run baru dan yang sudah ada. Anda mengonfigurasi pemeriksaan startup atau keaktifan untuk layanan Cloud Run menggunakan file YAML. Konfigurasi ini bervariasi, bergantung pada jenis pemeriksaan.

Anda dapat menggunakan pemeriksaan keaktifan untuk menentukan kapan harus memulai ulang container, misalnya, untuk mengetahui deadlock saat layanan berjalan, tetapi tidak dapat membuat progres. Memulai ulang container dalam hal ini dapat meningkatkan ketersediaan layanan jika terjadi bug.

Anda dapat menggunakan pemeriksaan startup untuk menentukan kapan 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 ini mencegahnya dimatikan sebelum container aktif dan berjalan.

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

Penagihan dan alokasi CPU

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

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.

Mengonfigurasi pemeriksaan startup HTTP

Tidak ada pemeriksaan startup HTTP default untuk HTTP, tetapi Anda dapat mengonfigurasinya untuk layanan Cloud Run. Perlu diperhatikan bahwa untuk menggunakan health check HTTP, Anda harus membuat endpoint pemeriksaan kesehatan HTTP yang sesuai di layanan untuk merespons pemeriksaan tersebut. Selain itu, layanan Anda harus menggunakan HTTP/1 (default Cloud Run), bukan HTTP/2.

Setelah pemeriksaan startup dikonfigurasi, 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 dapat melebihi 240 detik, container akan dimatikan.

Jika pemeriksaan startup HTTP berhasil dalam waktu yang ditentukan, dan Anda telah mengonfigurasi pemeriksaan keaktifan HTTP, pemeriksaan keaktifan HTTP akan dimulai.

Anda dapat mengonfigurasi pemeriksaan startup HTTP menggunakan Google Cloud Console untuk layanan yang ada, atau YAML untuk layanan baru atau yang sudah ada:

Konsol

  1. Buka Cloud Run

  2. Klik layanan yang ingin Anda konfigurasi.

  3. Klik tab YAML.

  4. Klik Edit dan konfigurasikan atribut startupProbe seperti yang ditunjukkan di bawah ini:

    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 memiliki bentuk 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) httpHeaders dapat digunakan untuk menyediakan beberapa header kustom atau berulang menggunakan kolom HEADER_NAME dan HEADER_VALUE seperti yang ditunjukkan.
    • (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) 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) THRESHOLD dengan frekuensi untuk mencoba kembali pemeriksaan sebelum menandai container sebagai Belum siap. Nilai defaultnya adalah 3.
    • (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.
  5. Klik Simpan dan Deploy Revisi baru.

YAML

Anda dapat mendownload dan melihat konfigurasi layanan yang ada menggunakan perintah gcloud run services describe --format export, yang memberikan hasil yang telah diolah dalam format YAML. Kemudian, Anda dapat mengubah kolom yang dijelaskan di bawah ini dan mengunggah YAML yang telah dimodifikasi menggunakan perintah gcloud run services replace. Pastikan Anda hanya mengubah kolom seperti yang didokumentasikan.

  1. Untuk melihat dan mendownload konfigurasi:

    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:
              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 memiliki bentuk 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) httpHeaders dapat digunakan untuk menyediakan beberapa header kustom atau berulang menggunakan kolom HEADER_NAME dan HEADER_VALUE seperti yang ditunjukkan.
    • (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) 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) THRESHOLD dengan frekuensi untuk mencoba kembali pemeriksaan sebelum menandai container sebagai Belum siap. Nilai defaultnya adalah 3.
    • (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. Ganti layanan dengan konfigurasi barunya menggunakan perintah berikut:

    gcloud run services replace service.yaml

Terraform

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

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"

  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 = "*"
          }
        }
      }
    }
  }
}

Membuat endpoint health check HTTP

Jika mengonfigurasi layanan Cloud Run untuk pemeriksaan startup HTTP atau pemeriksaan keaktifan, 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. Misalnya, jika Anda menentukan /ready untuk pemeriksaan startup HTTP, tentukan path dalam konfigurasi pemeriksaan Anda seperti yang ditunjukkan di bawah ini:

startupProbe:
  httpGet:
    path: /ready

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

Mengonfigurasi pemeriksaan startup TCP

Pemeriksaan startup TCP secara otomatis dikonfigurasi dengan nilai default untuk layanan Cloud Run baru jika Anda tidak mengonfigurasi pemeriksaan startup sendiri. Pemeriksaan default setara dengan hal berikut:

startupProbe:
  tcpSocket:
    port: CONTAINER_PORT
  timeoutSeconds: 240
  periodSeconds: 240
  failureThreshold: 1

dengan CONTAINER_PORT ditetapkan ke port container yang digunakan untuk layanan Anda.

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

Untuk pemeriksaan startup TCP, 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 dapat melebihi 240 detik, container akan dimatikan.

Anda dapat mengonfigurasi pemeriksaan startup TCP menggunakan Google Cloud Console untuk layanan yang ada, atau YAML untuk layanan baru atau yang sudah ada:

Konsol

  1. Buka Cloud Run

  2. Klik layanan yang ingin Anda konfigurasi.

  3. Klik tab YAML.

  4. Klik Edit dan konfigurasikan atribut startupProbe seperti yang ditunjukkan di bawah ini:

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

    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 memiliki bentuk LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
    • (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) 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) THRESHOLD dengan frekuensi untuk mencoba kembali pemeriksaan sebelum menandai container sebagai Belum siap. Nilai defaultnya adalah 3.
    • (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.
  5. Klik Simpan dan Deploy Revisi baru.

YAML

Anda dapat mendownload dan melihat konfigurasi layanan yang ada menggunakan perintah gcloud run services describe --format export, yang memberikan hasil yang telah diolah dalam format YAML. Kemudian, Anda dapat mengubah kolom yang dijelaskan di bawah ini dan mengunggah YAML yang telah dimodifikasi menggunakan perintah gcloud run services replace. Pastikan Anda hanya mengubah kolom seperti yang didokumentasikan.

  1. Untuk melihat dan mendownload konfigurasi:

    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 memiliki bentuk 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 menandai container sebagai Belum siap. 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. Ganti layanan dengan konfigurasi barunya menggunakan perintah berikut:

    gcloud run services replace service.yaml

Terraform

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

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"

  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
        }
      }
    }
  }
}

Mengonfigurasi pemeriksaan startup gRPC

Untuk menggunakan pemeriksaan startup gRPC, Anda harus menerapkan protokol pemeriksaan kesehatan gRPC di layanan Cloud Run, lalu mengonfigurasi pemeriksaan yang sesuai, seperti yang dijelaskan di bagian ini.

Anda dapat mengonfigurasi pemeriksaan startup gRPC menggunakan Google Cloud Console untuk layanan yang ada, atau YAML untuk layanan baru atau yang sudah ada:

Konsol

  1. Buka Cloud Run

  2. Klik layanan yang ingin Anda konfigurasi.

  3. Klik tab YAML.

  4. Klik Edit dan konfigurasikan atribut startupProbe seperti yang ditunjukkan di bawah ini:

    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 memiliki bentuk LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
    • (OPSIONAL) CONTAINER_PORT harus ditetapkan ke port container yang digunakan untuk layanan Anda.
    • GRPC_SERVICE dengan nama layanan gRPC yang akan dikirimi pemeriksaan kesehatan.
    • (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) 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) THRESHOLD dengan frekuensi untuk mencoba kembali pemeriksaan sebelum menandai container sebagai Belum siap. Nilai defaultnya adalah 3.
    • (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.
  5. Klik Simpan dan Deploy Revisi baru.

YAML

Anda dapat mendownload dan melihat konfigurasi layanan yang ada menggunakan perintah gcloud run services describe --format export, yang memberikan hasil yang telah diolah dalam format YAML. Kemudian, Anda dapat mengubah kolom yang dijelaskan di bawah ini dan mengunggah YAML yang telah dimodifikasi menggunakan perintah gcloud run services replace. Pastikan Anda hanya mengubah kolom seperti yang didokumentasikan.

  1. Untuk melihat dan mendownload konfigurasi:

    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 memiliki bentuk LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
    • GRPC_SERVICE dengan nama layanan gRPC yang akan dikirimi pemeriksaan kesehatan.
    • (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) WAKTU TUNGGU 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) THRESHOLD dengan frekuensi untuk mencoba kembali pemeriksaan sebelum menandai container sebagai Belum siap. Nilai defaultnya adalah 3.
      • (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. Ganti layanan dengan konfigurasi barunya menggunakan perintah berikut:

    gcloud run services replace service.yaml

Terraform

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

Layanan Anda harus menerapkan health check 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"

  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"
        }
      }
    }
  }
}

Mengonfigurasi pemeriksaan keaktifan

Anda dapat mengonfigurasi pemeriksaan keaktifan HTTP dan gRPC.

Mengonfigurasi pemeriksaan keaktifan HTTP

Jika Anda mengonfigurasi pemeriksaan startup HTTP, pemeriksaan keaktifan hanya dimulai setelah pemeriksaan startup berhasil. Perlu diperhatikan bahwa untuk menggunakan health check HTTP, Anda harus membuat endpoint pemeriksaan kesehatan HTTP yang sesuai di layanan untuk merespons pemeriksaan tersebut. Selain itu, layanan Anda harus menggunakan HTTP/1 (default Cloud Run), bukan HTTP/2.

Setelah pemeriksaan keaktifan dikonfigurasi, dan semua pemeriksaan startup berhasil, Cloud Run akan membuat permintaan HTTP GET ke endpoint health check 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), container akan dinonaktifkan menggunakan sinyal SIGKILL. Semua permintaan yang tersisa dan masih dilayani oleh container akan dihentikan dengan kode status HTTP 503. Setelah container dihentikan, penskalaan otomatis Cloud Run akan memulai instance container baru.

Anda dapat mengonfigurasi pemeriksaan keaktifan HTTP menggunakan Google Cloud Console untuk layanan yang sudah ada, atau YAML untuk layanan baru atau yang sudah ada:

Konsol

  1. Buka Cloud Run

  2. Klik layanan yang ingin Anda konfigurasi.

  3. Klik tab YAML.

  4. Klik Edit dan konfigurasikan atribut livenessProbe seperti yang ditunjukkan di bawah ini:

    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 memiliki bentuk 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) httpHeaders dapat digunakan untuk menyediakan beberapa header kustom atau berulang menggunakan kolom HEADER_NAME dan HEADER_VALUE seperti yang ditunjukkan.
    • (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) 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) THRESHOLD dengan frekuensi untuk mencoba kembali pemeriksaan sebelum menandai container sebagai Belum siap. Nilai defaultnya adalah 3.
    • (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.
  5. Klik Simpan dan Deploy Revisi baru.

YAML

Anda dapat mendownload dan melihat konfigurasi layanan yang ada menggunakan perintah gcloud run services describe --format export, yang memberikan hasil yang telah diolah dalam format YAML. Kemudian, Anda dapat mengubah kolom yang dijelaskan di bawah ini dan mengunggah YAML yang telah dimodifikasi menggunakan perintah gcloud run services replace. Pastikan Anda hanya mengubah kolom seperti yang didokumentasikan.

  1. Untuk melihat dan mendownload konfigurasi:

    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:
              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 memiliki bentuk 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) httpHeaders dapat digunakan untuk menyediakan beberapa header kustom atau berulang menggunakan kolom HEADER_NAME dan HEADER_VALUE seperti yang ditunjukkan.
    • (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) 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) THRESHOLD dengan frekuensi untuk mencoba kembali pemeriksaan sebelum menandai container sebagai Belum siap. Nilai defaultnya adalah 3.
    • (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. Ganti layanan dengan konfigurasi barunya menggunakan perintah berikut:

    gcloud run services replace service.yaml

Terraform

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

Layanan Anda harus menerapkan health check 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"

  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 = "*"
          }
        }
      }
    }
  }
}

Setelah konfigurasi pemeriksaan HTTP, Anda juga harus membuat endpoint healthcheck untuk merespons pemeriksaan tersebut.

Mengonfigurasi pemeriksaan keaktifan gRPC

Jika Anda mengonfigurasi pemeriksaan startup gRPC, pemeriksaan keaktifan hanya dimulai setelah pemeriksaan startup berhasil. Perlu diperhatikan bahwa untuk menggunakan pemeriksaan health check gRPC, Anda harus menerapkan protokol Health Check gRPC di layanan Cloud Run.

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 dinonaktifkan menggunakan sinyal SIGKILL. Setelah container dihentikan, penskalaan otomatis Cloud Run akan memulai instance container baru.

Anda dapat mengonfigurasi pemeriksaan keaktifan gRPC menggunakan Google Cloud Console untuk layanan yang ada, atau YAML untuk layanan baru atau yang sudah ada:

Konsol

  1. Buka Cloud Run

  2. Klik layanan yang ingin Anda konfigurasi.

  3. Klik tab YAML.

  4. Klik Edit dan konfigurasikan atribut livenessProbe seperti yang ditunjukkan di bawah ini:

    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 memiliki bentuk LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
    • (OPSIONAL) CONTAINER_PORT harus ditetapkan ke port container yang digunakan untuk layanan Anda.
    • GRPC_SERVICE dengan nama layanan gRPC yang akan dikirimi pemeriksaan kesehatan.
    • (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) 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) THRESHOLD dengan frekuensi untuk mencoba kembali pemeriksaan sebelum menandai container sebagai Belum siap. Nilai defaultnya adalah 3.
    • (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.
  5. Klik Simpan dan Deploy Revisi baru.

YAML

Anda dapat mendownload dan melihat konfigurasi layanan yang ada menggunakan perintah gcloud run services describe --format export, yang memberikan hasil yang telah diolah dalam format YAML. Kemudian, Anda dapat mengubah kolom yang dijelaskan di bawah ini dan mengunggah YAML yang telah dimodifikasi menggunakan perintah gcloud run services replace. Pastikan Anda hanya mengubah kolom seperti yang didokumentasikan.

  1. Untuk melihat dan mendownload konfigurasi:

    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 memiliki bentuk LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
    • (OPSIONAL) CONTAINER_PORT harus ditetapkan ke port container yang digunakan untuk layanan Anda.
    • GRPC_SERVICE dengan nama layanan gRPC yang akan dikirimi pemeriksaan kesehatan.
    • (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) 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) THRESHOLD dengan frekuensi untuk mencoba kembali pemeriksaan sebelum menandai container sebagai Belum siap. Nilai defaultnya adalah 3.
    • (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. Ganti layanan dengan konfigurasi barunya menggunakan perintah berikut:

    gcloud run services replace service.yaml

Terraform

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

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"

  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"
        }
      }
    }
  }
}