Tyk as gRPC passthrough

Hello, I am running tyk with gRPC as proxy passthrough.

Tyk is deployed in k8s, using ingress

When I call using postman I am having issue, I always get

13 INTERNAL
Status code 13 INTERNAL Received RST_STREAM with code 0 (Call ended without gRPC status)

In tyk logs everything looks fine even I see logs in pod that tyk reached it. Can you help me please?

tyk logs
time="Sep 26 09:12:35" level=debug msg="Started proxy"
time="Sep 26 09:12:35" level=debug msg=Started api_id=grpc_test api_name=grpc_test mw=ReverseProxy org_id=default ts=1758877955178161976
time="Sep 26 09:12:35" level=debug msg="Upstream request URL: /Proto.Example/get" api_id=grpc_test api_name=grpc_test mw=ReverseProxy org_id=default
time="Sep 26 09:12:35" level=debug msg="Outbound request URL: h2c://xxxxxx" api_id=grpc_test api_name=grpc_test mw=ReverseProxy org_id=default
time="Sep 26 09:12:35" level=debug msg=Finished api_id=grpc_test api_name=grpc_test mw=ReverseProxy ns=2653747 org_id=default
time="Sep 26 09:12:35" level=debug msg="Upstream request took (ms): 2.718733"
time="Sep 26 09:12:35" level=debug msg="Done proxy"

api config
{
“name”: “grpc_test”,
“api_id”: “grpc_test”,
“org_id”: “default”,
“proxy”: {
“listen_path”: “/”,
“target_url”: “h2c://xxxx”,
“strip_listen_path”: true,
“transport”: {
“ssl_insecure_skip_verify”: true
}
},
“protocol”: “http”,
“use_keyless”: true,
“version_data”: {
“not_versioned”: true,
“versions”: {
“default”: {
“name”: “default”,
“global_size_limit”: 4048576
}
}
},
“enable_detailed_logging”: true
}

tyk config
{
“listen_port”: 8080,
“node_secret”: “”,
“secret”: “xxxxx”,
“allow_insecure_configs”: true,
“enable_admin_api”: true, # :white_check_mark: Enable Admin API
“admin_api_path”: “/tyk”, # :white_check_mark: Set correct Admin API path
“enable_analytics”: true,
“enable_debug”: true,
“http_server_options”: {
“max_request_body_size”: 20000 # in bytes
“enable_http2”: true,
“enable_websockets”: true,
“flush_interval”: 1
},
“proxy_enable_http2”: true,
“oauth_token_expire”: 7200,
“oauth_token_expired_retain_period”: 7200,
“log_level”: “debug”,
“storage”: {
“type”: “redis”,
“host”: “redis”,
“port”: 6379
},
“policies”: {
“policy_source”: “file”,
“policy_record_name”: “/etc/tyk/policies/policies.json”
}
}

Also tried to set protocol to h2c but after that api is not working at all. Dont see anything in logs a client finished with error

Thank you

Hi @Petr_Svobodnik,

Thank you for your post and welcome to the community :partying_face:.

It looks like the error may be coming from the upstream service.

If you have access to the server logs, they may provide more details about the root cause.
You can also test directly using grpcurl to confirm.

grpcurl -plaintext your-upstream:50051 list

Also check the API definition, that the port is included in the target url - h2c://xxxx:port

Please let us know how you get on, and you may confirm the Gateway version in your reply.