Tous les produits
Search
Centre de documentation

Container Service for Kubernetes:Deploy a gRPC Service in Knative

Dernière mise à jour :Aug 11, 2026

Si votre service Knative repose sur une architecture de système distribué ou de microservices, utilisez le protocole gRPC pour optimiser les communications entre le client et le serveur. ACK Knative prend en charge les protocoles HTTP et HTTP/2, y compris gRPC.

Prérequis

Knative est déployé dans votre cluster. Pour plus d'informations, consultez les rubriques et Déployer et gérer les composants Knative.

Étape 1 : Déployer un service gRPC

  1. Connectez-vous à la console ACK. Dans le volet de navigation de gauche, cliquez sur Clusters.

  2. Sur la page Clusters, cliquez sur le nom du cluster à gérer, puis choisissez Applications > Knative dans le volet de navigation de gauche.

  3. Sur la page Knative, cliquez sur l'onglet Services. Définissez le paramètre Namespace sur default, cliquez sur Create from Template, puis sélectionnez Custom dans la liste déroulante Sample Template. Copiez le contenu suivant dans l'éditeur de modèle et cliquez sur Create pour créer un service Knative nommé 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 # The image contains a tool that is used to test gRPC by providing a gRPC Service to respond to requests. 
            env:
            - name: TARGET
              value: "Knative"
            ports:
            - containerPort: 9000
              name: h2c # Set the name of the gRPC Service in the Knative port section to h2c. 
              protocol: TCP
  4. Ajoutez une entrée au fichier hosts. Faites correspondre le nom de domaine par défaut figurant dans la colonne Default Domain à l'adresse de passerelle indiquée dans la colonne Gateway de l'onglet Services.

    Localisez le fichier hosts sur votre machine et ajoutez-y la correspondance au format suivant : Adresse de passerelle + Espace + Nom de domaine par défaut. Utilisez ensuite ce nom de domaine pour accéder au service gRPC.

    Exemple :

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

Étape 2 : Vérifier la disponibilité du service gRPC

  1. Accédez à la page grpcbin et installez BloomRPC, adapté à votre système d'exploitation.

  2. Copiez le contenu suivant dans le fichier gRPC.proto et enregistrez-le sur votre machine locale :

    syntax = "proto3";
    
    package grpcbin;
    
    service GRPCBin {
      rpc Index(EmptyMessage) returns (IndexReply) {}
      // Define an RPC method that takes an empty message as the input and returns an empty message as the output. 
      rpc Empty(EmptyMessage) returns (EmptyMessage) {}
      // Define an RPC method that takes a dummy message as the input and returns a dummy message as the output. 
      rpc DummyUnary(DummyMessage) returns (DummyMessage) {}
      // Define an RPC method that takes a dummy message as the input and returns a stream of dummy messages (10 messages) as the output. 
      rpc DummyServerStream(DummyMessage) returns (stream DummyMessage) {}
      // Define an RPC method that takes a stream of dummy messages (10 messages) as the input and returns a dummy message as the output. 
      rpc DummyClientStream(stream DummyMessage) returns (DummyMessage) {}
      // Define an RPC method that takes a stream of dummy messages as the input and returns a stream of dummy messages as the output. 
      rpc DummyBidirectionalStreamStream(stream DummyMessage) returns (stream DummyMessage) {}
      // Define an RPC method that returns a message of the specified gRPC error. 
      rpc SpecificError(SpecificErrorRequest) returns (EmptyMessage) {}
      // Define an RPC method that returns a message of a random error.
      rpc RandomError(EmptyMessage) returns (EmptyMessage) {}
      // Define an RPC method that returns a header. 
      rpc HeadersUnary(EmptyMessage) returns (HeadersMessage) {}
      // Define an RPC method that does not return any messages. 
      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;
    }

    Le service gRPC utilise HTTP/2. Le chemin d'accès au service gRPC suit le format {Nom du paquet}.{Nom du service}/{Nom de la méthode}. Configurez la passerelle Knative pour router les paquets gRPC en définissant le champ Path avec ce format. Par exemple, pour appeler la méthode Index du paquet grpcbin, le chemin est grpcbin.GRPCBin/Index.

  3. Utilisez BloomRPC pour vérifier la disponibilité du service gRPC. Le service est disponible si le serveur renvoie des réponses normales.

    1. Importez le fichier gRPC.proto dans BloomRPC.

    2. Dans le volet de navigation de gauche, cliquez sur la méthode DummyUnary et spécifiez Nom de domaine:Port dans la partie supérieure de la page. Exemple : helloworld-grpc.default.example.com:80.

    3. Cliquez sur le bouton vert et vérifiez que les réponses renvoyées par le serveur sont correctes.

Références

Vous pouvez configurer un certificat pour accéder aux services via HTTPS en utilisant un nom de domaine personnalisé. Pour plus d'informations, consultez la rubrique Configurer l'accès HTTPS.