All Products
Search
Document Center

Container Service for Kubernetes:Deploy a gRPC Service in Knative

Last Updated:Sep 18, 2026

Jika layanan Knative Anda menggunakan sistem terdistribusi atau arsitektur microservices, Anda dapat memanfaatkan protokol gRPC untuk meningkatkan efisiensi komunikasi antara klien dan server. ACK Knative mendukung protokol HTTP dan HTTP/2, termasuk gRPC.

Prasyarat

Knative telah dideploy di kluster Anda. Untuk informasi selengkapnya, lihat Deploy and manage Knative components.

Langkah 1: Deploy a gRPC Service

  1. Masuk ke ACK console. Di panel navigasi kiri, klik Clusters.

  2. Pada halaman Clusters, klik nama kluster yang ingin Anda kelola, lalu pilih Applications > Knative di panel navigasi sebelah kiri.

  3. Pada halaman Knative, klik tab Services. Atur Namespace menjadi default, klik Buat dengan Template, lalu pilih Custom dari daftar drop-down Sampel Template. Salin konten berikut ke editor templat, lalu klik Create untuk membuat layanan Knative bernama helloworld-grpc.

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      name: helloworld-grpc
    spec:
      template:
        metadata:
          annotations:
            autoscaling.knative.dev/class: mpa.autoscaling.knative.dev
        spec:
          containers:
          - image: docker.io/moul/grpcbin # Image ini berisi tool yang digunakan untuk menguji gRPC dengan menyediakan layanan gRPC yang merespons permintaan.
            env:
            - name: TARGET
              value: "Knative"
            ports:
            - containerPort: 9000
              name: h2c # Tetapkan nama layanan gRPC di bagian port Knative menjadi h2c.
              protocol: TCP
  4. Tambahkan pemetaan ke file Hosts. Petakan nama domain default pada kolom Default Domain ke alamat gateway pada kolom Gateway di tab Services.

    Cari file Hosts di mesin Anda dan tambahkan pemetaan tersebut ke file Hosts. Format pemetaannya harus berupa Alamat Gateway + Karakter spasi + Nama domain default. Setelah itu, gunakan nama domain default untuk mengakses layanan gRPC.

    Contoh:

    121.xx.xxx.xx helloworld-grpc.default.example.com

Langkah 2: Verifikasi ketersediaan layanan gRPC

  1. Buka grpcbin dan instal BloomRPC yang sesuai dengan sistem operasi Anda.

  2. Salin konten berikut ke file gRPC.proto dan simpan file tersebut di mesin lokal Anda:

    syntax = "proto3";
    
    package grpcbin;
    
    service GRPCBin {
      rpc Index(EmptyMessage) returns (IndexReply) {}
      // Definisikan metode RPC yang menerima pesan kosong sebagai input dan mengembalikan pesan kosong sebagai output.
      rpc Empty(EmptyMessage) returns (EmptyMessage) {}
      // Definisikan metode RPC yang menerima pesan dummy sebagai input dan mengembalikan pesan dummy sebagai output.
      rpc DummyUnary(DummyMessage) returns (DummyMessage) {}
      // Definisikan metode RPC yang menerima pesan dummy sebagai input dan mengembalikan aliran pesan dummy (10 pesan) sebagai output.
      rpc DummyServerStream(DummyMessage) returns (stream DummyMessage) {}
      // Definisikan metode RPC yang menerima aliran pesan dummy (10 pesan) sebagai input dan mengembalikan pesan dummy sebagai output.
      rpc DummyClientStream(stream DummyMessage) returns (DummyMessage) {}
      // Definisikan metode RPC yang menerima aliran pesan dummy sebagai input dan mengembalikan aliran pesan dummy sebagai output.
      rpc DummyBidirectionalStreamStream(stream DummyMessage) returns (stream DummyMessage) {}
      // Definisikan metode RPC yang mengembalikan pesan berisi error gRPC tertentu.
      rpc SpecificError(SpecificErrorRequest) returns (EmptyMessage) {}
      // Definisikan metode RPC yang mengembalikan pesan berisi error acak.
      rpc RandomError(EmptyMessage) returns (EmptyMessage) {}
      // Definisikan metode RPC yang mengembalikan header.
      rpc HeadersUnary(EmptyMessage) returns (HeadersMessage) {}
      // Definisikan metode RPC yang tidak mengembalikan pesan apa pun.
      rpc NoResponseUnary(EmptyMessage) returns (EmptyMessage) {}
    }
    
    message HeadersMessage {
      message Values {
        repeated string values = 1;
      }
      map<string, Values> Metadata = 1;
    }
    
    message SpecificErrorRequest {
      uint32 code = 1;
      string reason = 2;
    }
    
    message EmptyMessage {}
    
    message DummyMessage {
      message Sub {
        string f_string = 1;
      }
      enum Enum {
        ENUM_0 = 0;
        ENUM_1 = 1;
        ENUM_2 = 2;
      }
      string f_string = 1;
      repeated string f_strings = 2;
      int32 f_int32 = 3;
      repeated int32 f_int32s = 4;
      Enum f_enum = 5;
      repeated Enum f_enums = 6;
      Sub f_sub = 7;
      repeated Sub f_subs = 8;
      bool f_bool = 9;
      repeated bool f_bools = 10;
      int64 f_int64 = 11;
      repeated int64 f_int64s= 12;
      bytes f_bytes = 13;
      repeated bytes f_bytess = 14;
      float f_float = 15;
      repeated float f_floats = 16;
    }
    
    message IndexReply {
      message Endpoint {
        string path = 1;
        string description = 2;
      }
      string description = 1;
      repeated Endpoint endpoints = 2;
    }

    Layanan gRPC menggunakan HTTP/2. Path layanan gRPC adalah {Nama paket}.{Nama layanan}/{Nama metode}. Anda dapat mengonfigurasi gateway Knative untuk mengarahkan paket gRPC dengan mengatur bidang Path menggunakan format path tersebut. Misalnya, untuk memanggil metode Index dalam paket grpcbin, path-nya adalah grpcbin.GRPCBin/Index.

  3. Gunakan BloomRPC untuk memverifikasi ketersediaan layanan gRPC. Layanan gRPC tersedia jika server mengembalikan tanggapan secara normal.

    1. Impor file gRPC.proto ke BloomRPC.

    2. Di panel navigasi kiri, klik metode DummyUnary dan masukkan Nama domain:Port di bagian atas halaman. Contoh: helloworld-grpc.default.example.com:80.

    3. Klik tombol hijau dan periksa apakah tanggapan yang dikembalikan oleh server normal.

Referensi

Anda dapat mengonfigurasi Sertifikat untuk mengakses layanan melalui HTTPS menggunakan nama domain kustom. Untuk informasi selengkapnya, lihat Configure HTTPS access.