<p>I have a server to server calls and I use GRPC (with .net core 5) It's working and test in local.</p>
<p>After that, I have moved all the services to Kubernetes Pod (Docker Desktop) and also tested through the flow (with swagger post-call) and it's working there too.</p>
<p>Now for monitoring, I added ISTIO and added the label to my namespace &quot;<em>istio-injection=enabled</em>&quot;
restarted all my pods and now all are having 2 containers inside each pod.</p>
<p>I tested the basic services (again swagger) and it's working. when it comes to testing the GRPC call. The call is failing from the caller side saying</p>
<p><strong>Grpc.Core.RpcException: Status(StatusCode=&quot;Unavailable&quot;, Detail=&quot;upstream connect error or disconnect/reset before headers. reset reason: protocol error&quot;)</strong></p>
<p>I checked the logs at GRPC server-side and it has no clue about this call and the service is just running. then I am kind of thinking that error is coming from the caller side whereas it is not able to or make a call to GRPC server.</p>
<p><a href="https://i.stack.imgur.com/Jgv0j.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/Jgv0j.png" alt="enter image description here" /></a></p>
<p>The error detail:</p>
<pre><code>Grpc.Core.RpcException: Status(StatusCode=&quot;Unavailable&quot;, Detail=&quot;upstream connect error or disconnect/reset before headers. reset reason: protocol error&quot;) 
at Basket.API.GrpcServices.DiscountGrpcService.GetDiscount(String productName) in /src/Services/Basket/Basket.API/GrpcServices/DiscountGrpcService.cs:line 21 
at Basket.API.Controllers.BasketController.UpdateBasket(ShoppingCart basket) in /src/Services/Basket/Basket.API/Controllers/BasketController.cs:line 47 at lambda_method7(Closure , Object ) 
at Microsoft.AspNetCore.Mvc.Infrastructure.ActionMethodExecutor.AwaitableObjectResultExecutor.Execute(IActionResultTypeMapper mapper, ObjectMethodExecutor executor, Object controller, Obje
</code></pre>
<p><em><strong>Again, I remove the Istio and tested and that's started working again (without changing anything) I added istio back and it started failing again. all other services are working with istio but not this call (This is only GRPC call I have).</strong></em></p>

<p>I found a solution at <a href="https://istiobyexample.dev/grpc/" rel="nofollow noreferrer">https://istiobyexample.dev/grpc/</a> where it describes the missing item.</p>
<p>istio recommends using the name and version tag as Label but more importantly when working with GRPC, the service that exposes the GRPC needs to have the port name GRPC.</p>
<p>I have added that restarted the service and it got started working as expected.
Again it's not something I resolved. All credit goes to the link  <a href="https://istiobyexample.dev/grpc/" rel="nofollow noreferrer">https://istiobyexample.dev/grpc/</a>  and the image posted below.</p>
<p><a href="https://i.stack.imgur.com/NDvCp.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/NDvCp.png" alt="enter image description here" /></a></p>
