基于进程混合器适配器的istio会话从未调用过Validate / CreateSession / CloseSession

时间:2019-11-15 11:08:56

标签: grpc istio

我正在尝试使用进程混合器适配器构建一个istio。

几次尝试后一切正常,我现在希望能够使用“基于会话的”适配器模型配置我的适配器

如果我正确理解了这个概念,则只需要:

  • 使用我的参数创建config.proto:
syntax = "proto3";

package config;

import "gogoproto/gogo.proto";

option (gogoproto.goproto_getters_all) = false;
option (gogoproto.equal_all) = false;
option (gogoproto.gostring_all) = false;

message Params {
  string value1 = 1;

  string value2 = 2;
}

  • 使用protoc对其进行编译以输出一个描述符集文件
  • 此描述符在adapter.yml中设置
apiVersion: "config.istio.io/v1alpha2"
kind: adapter
metadata:
  name: exampleadapter
  namespace: istio-system
spec:
  description: "A sample adapter for test purposes"
  session_based: true
  templates:
    - ...
  config: ...config.proto descriptor set base64 encoded ...
  • 实现此gRPC protobuf接口:
syntax = "proto3";

package istio.mixer.adapter.model.v1beta1;

option go_package="istio.io/api/mixer/adapter/model/v1beta1";
option cc_generic_services = true;

import "google/protobuf/any.proto";
import "google/rpc/status.proto";


service InfrastructureBackend {

  rpc  Validate(ValidateRequest) returns (ValidateResponse);

  rpc  CreateSession(CreateSessionRequest) returns (CreateSessionResponse);

  rpc  CloseSession(CloseSessionRequest) returns (CloseSessionResponse);
}

message CreateSessionRequest {
  google.protobuf.Any adapter_config = 1;
  map<string, google.protobuf.Any> inferred_types = 2;
}

message CreateSessionResponse {
  string session_id = 1;
  google.rpc.Status status = 2;
}

message ValidateRequest {
  google.protobuf.Any adapter_config = 1;
  map<string, google.protobuf.Any> inferred_types = 2;
}

message ValidateResponse {
  google.rpc.Status status = 1;
}

message CloseSessionRequest {
  string session_id = 1;
}

message CloseSessionResponse {
  google.rpc.Status status = 1;
}

  • 创建一个用于设置配置值的Handler istio配置文件:
apiVersion: config.istio.io/v1alpha2
kind: handler
metadata:
  name: h1
  namespace: istio-system
spec:
  adapter: exampleadapter
  connection:
    address: exampleadapter:9070
  params:
    value1: testVal111
    value2: testVal2222

因此,我已经完成了所有这些步骤,但是我的Validate / CreateSession方法从不被调用

即使在调试中,我也尝试检查混合器(istio-policy)日志,但是我没有任何线索可以完全忽略此配置步骤!

有人会有什么想法吗?我想念的东西很明显吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

我在Istio GitHub问题跟踪器上得到了答案:https://github.com/istio/istio/issues/19194#issuecomment-558922143

TL; DR:尚未实现,并且没有计划在可预见的将来发布此功能。