All Products
Search
Document Center

Container Service for Kubernetes:Deploy a gRPC service in Knative

Last Updated:Apr 21, 2026

Jika layanan Knative Anda menggunakan sistem terdistribusi atau arsitektur mikroservis, Anda dapat memanfaatkan protokol gRPC untuk meningkatkan efisiensi komunikasi antara klien dan server. ACK Knative mendukung protokol akses HTTP dan HTTP/2, termasuk gRPC. Anda dapat menerapkan layanan gRPC menggunakan file YAML Knative Service. Gerbang Knative secara otomatis menangani routing untuk protokol gRPC.

Prasyarat

Langkah 1: Deploy layanan gRPC

  1. Masuk ke Container Service Management Console . Di panel navigasi sebelah kiri, klik Clusters.

  2. Pada halaman Clusters, klik nama kluster tujuan. Di panel navigasi sebelah kiri, pilih Applications > Knative.

  3. Pada halaman Knative, di tab Services, atur Namespace ke default. Klik Buat dengan Template. Dari daftar drop-down di samping Sampel Template, pilih custom. Tempel kode contoh berikut ke dalam 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 adalah tool untuk menguji gRPC. Layanan ini merespons permintaan dengan menyediakan layanan gRPC.
            env:
            - name: TARGET
              value: "Knative"
            ports:
            - containerPort: 9000
              name: h2c # Untuk layanan gRPC dalam layanan Knative, bidang name di bawah port harus diatur ke h2c.
              protocol: TCP
  4. Tambahkan pemetaan ke file Hosts Anda untuk mengikat Default Domain ke alamat IP Gateway, yang dapat Anda peroleh dari halaman manajemen layanan.

    Temukan file Hosts di komputer Anda dan tambahkan informasi binding dalam format <Access Gateway IP> <Default Domain Name>. Hal ini memungkinkan Anda mengakses layanan secara langsung menggunakan nama domain. Contohnya:

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

Langkah 2: Verifikasi ketersediaan layanan gRPC

  1. Buka grpcbin dan instal BloomRPC untuk sistem operasi Anda.

  2. Tempel kode berikut ke dalam file bernama gRPC.proto dan simpan file tersebut secara lokal.

    syntax = "proto3";
    
    package grpcbin;
    
    service GRPCBin {
      rpc Index(EmptyMessage) returns (IndexReply) {}
      // Metode yang dipanggil tanpa parameter. Mengembalikan respons kosong.
      rpc Empty(EmptyMessage) returns (EmptyMessage) {}
      // Respons mengembalikan parameter permintaan.
      rpc DummyUnary(DummyMessage) returns (DummyMessage) {}
      // Panggilan respons streaming. Mengirimkan 10 pesan respons.
      rpc DummyServerStream(DummyMessage) returns (stream DummyMessage) {}
      // Panggilan permintaan streaming. Menerima 10 permintaan dan mengembalikan isi permintaan terakhir.
      rpc DummyClientStream(stream DummyMessage) returns (DummyMessage) {}
      // Metode di mana permintaan dan respons keduanya merupakan stream.
      rpc DummyBidirectionalStreamStream(stream DummyMessage) returns (stream DummyMessage) {}
      // Metode ini mengembalikan error gRPC tertentu.
      rpc SpecificError(SpecificErrorRequest) returns (EmptyMessage) {}
      // Pemanggilan metode ini mengembalikan error acak.
      rpc RandomError(EmptyMessage) returns (EmptyMessage) {}
      // Pemanggilan metode ini mengembalikan header.
      rpc HeadersUnary(EmptyMessage) returns (HeadersMessage) {}
      // Pemanggilan metode ini tidak mengembalikan respons.
      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 dibangun di atas protokol HTTP/2. Format path-nya adalah {Nama Paket}.{Nama Layanan}/{Nama Metode}. Gerbang Knative menggunakan format path ini untuk mengarahkan traffic gRPC. Sebagai contoh, untuk mengakses metode Index dari grpcbin menggunakan gRPC, nilai bidang Path dalam protokol HTTP/2 adalah grpcbin.GRPCBin/Index.

  3. Gunakan BloomRPC untuk menguji ketersediaan layanan gRPC. Layanan tersedia jika server mengembalikan respons normal.

    1. Impor file gRPC.proto ke BloomRPC.

    2. Di panel navigasi sebelah kiri, klik metode DummyUnary. Di bagian atas halaman, masukkan alamat server dalam format `Nama Domain:Port`. Contohnya, helloworld-grpc.default.example.com:80.

    3. Klik tombol eksekusi berwarna hijau dan periksa apakah server mengembalikan respons normal.

Referensi

Anda dapat mengonfigurasi Sertifikat HTTPS untuk domain kustom Anda. Untuk informasi selengkapnya, lihat Configure HTTPS Certificate Access.