All Products
Search
Document Center

Container Compute Service:Menyebarkan Layanan gRPC di Knative

Last Updated:Jul 02, 2025

Jika Layanan Knative Anda menggunakan arsitektur terdistribusi atau layanan mikro, Anda dapat menggunakan gRPC untuk meningkatkan efisiensi komunikasi antara klien dan server. ACS Knative mendukung protokol HTTP dan HTTP/2, termasuk gRPC. Anda dapat menambahkan Layanan gRPC ke file YAML dari Layanan Knative. Kemudian, Knative Ingress secara otomatis akan mengarahkan lalu lintas berdasarkan gRPC.

Prasyarat

Knative telah diterapkan di kluster ACS. Untuk informasi lebih lanjut, lihat Menyebarkan Knative.

Langkah 1: Menyebarkan Layanan gRPC

  1. Masuk ke konsol ACS. Di panel navigasi sebelah kiri, klik Clusters.

  2. Di halaman Clusters, temukan kluster yang ingin Anda kelola dan klik ID-nya. Di panel navigasi sebelah kiri pada halaman detail kluster, pilih Applications > Knative.

  3. Di halaman Knative, klik tab Services. Atur Namespace menjadi default, klik Create from Template, dan pilih Custom dari daftar drop-down Sample Template. Salin konten berikut ke editor template dan 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 # Gambar ini berisi alat yang digunakan untuk menguji gRPC dengan menyediakan Layanan gRPC untuk 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. Peta nama domain default di kolom Default Domain ke alamat gateway di kolom Gateway pada tab Layanan.

    Temukan file Hosts di mesin Anda dan tambahkan pemetaan ke file tersebut. Format pemetaan adalah Alamat Gateway + Karakter Spasi + Nama Domain Default. 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. Kunjungi grpcbin dan instal BloomRPC yang sesuai untuk OS Anda.

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

    syntax = "proto3";
    
    package grpcbin;
    
    service GRPCBin {
      rpc Index(EmptyMessage) returns (IndexReply) {}
      // Tentukan metode RPC yang mengambil pesan kosong sebagai input dan mengembalikan pesan kosong sebagai output. 
      rpc Empty(EmptyMessage) returns (EmptyMessage) {}
      // Tentukan metode RPC yang mengambil pesan dummy sebagai input dan mengembalikan pesan dummy sebagai output. 
      rpc DummyUnary(DummyMessage) returns (DummyMessage) {}
      // Tentukan metode RPC yang mengambil pesan dummy sebagai input dan mengembalikan aliran pesan dummy (10 pesan) sebagai output. 
      rpc DummyServerStream(DummyMessage) returns (stream DummyMessage) {}
      // Tentukan metode RPC yang mengambil aliran pesan dummy (10 pesan) sebagai input dan mengembalikan pesan dummy sebagai output. 
      rpc DummyClientStream(stream DummyMessage) returns (DummyMessage) {}
      // Tentukan metode RPC yang mengambil aliran pesan dummy sebagai input dan mengembalikan aliran pesan dummy sebagai output. 
      rpc DummyBidirectionalStreamStream(stream DummyMessage) returns (stream DummyMessage) {}
      // Tentukan metode RPC yang mengembalikan pesan kesalahan gRPC tertentu. 
      rpc SpecificError(SpecificErrorRequest) returns (EmptyMessage) {}
      // Tentukan metode RPC yang mengembalikan pesan kesalahan acak.
      rpc RandomError(EmptyMessage) returns (EmptyMessage) {}
      // Tentukan metode RPC yang mengembalikan header. 
      rpc HeadersUnary(EmptyMessage) returns (HeadersMessage) {}
      // Tentukan 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. Jalur Layanan gRPC adalah {Nama Paket}.{Nama Layanan}/{Nama Metode}. Anda dapat mengonfigurasi gateway Knative untuk merutekan paket gRPC dengan menyetel bidang Path ke jalur tersebut. Sebagai contoh, atur bidang Path ke grpcbin.GRPCBin/Index jika Anda menggunakan gRPC untuk mengakses GRPCBin Index melalui HTTP/2.

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

    1. Impor file gRPC.proto ke BloomRPC.

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

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

Referensi

Untuk informasi lebih lanjut tentang cara mengonfigurasi sertifikat untuk mengakses Layanan melalui HTTPS menggunakan nama domain kustom, lihat Konfigurasikan sertifikat untuk mengakses Layanan Knative melalui HTTPS.