chore: update gateway URL configuration for staging environment
Build and Deploy to Kubernetes / build-and-deploy (push) Failing after 3m25s

- Changed GW_URL and GwUrl in frontoffice-deployment.yaml and Dockerfile to use the internal service URL http://cms-svc:8080 for the staging environment.
- Enhanced ConfigureServices to handle HTTP/1.1 for gRPC when using the internal service URL, ensuring compatibility with Kestrel's requirements.
This commit is contained in:
masoodafar-web
2026-05-14 00:36:54 +03:30
parent ceaf6de226
commit 28a55246df
3 changed files with 23 additions and 9 deletions
+2 -2
View File
@@ -29,9 +29,9 @@ spec:
- name: ASPNETCORE_ENVIRONMENT - name: ASPNETCORE_ENVIRONMENT
value: "Staging" value: "Staging"
- name: GW_URL - name: GW_URL
value: "https://cms.se.kbs1.ir" value: "http://cms-svc:8080"
- name: GwUrl - name: GwUrl
value: "https://cms.se.kbs1.ir" value: "http://cms-svc:8080"
resources: resources:
requests: requests:
memory: "256Mi" memory: "256Mi"
+15 -3
View File
@@ -103,16 +103,28 @@ public static class ConfigureServices
var baseUrl = ResolveGatewayUrl(configuration) var baseUrl = ResolveGatewayUrl(configuration)
?? throw new InvalidOperationException("Gateway URL is missing. Set GW_URL or GwUrl."); ?? throw new InvalidOperationException("Gateway URL is missing. Set GW_URL or GwUrl.");
// Register optimized HttpClient for gRPC var isHttp = baseUrl.StartsWith("http://", StringComparison.OrdinalIgnoreCase);
// When the base URL is plain HTTP (e.g. in-cluster http://cms-svc:8080), we must force HTTP/1.1
// so that GrpcChannel does not upgrade to h2c and trigger HTTP_1_1_REQUIRED from Kestrel.
// For HTTPS the default negotiation is fine.
services.AddScoped(sp => services.AddScoped(sp =>
{ {
var handler = new HttpClientHandler HttpMessageHandler inner = isHttp
? new SocketsHttpHandler
{
MaxConnectionsPerServer = 10,
AutomaticDecompression = System.Net.DecompressionMethods.GZip | System.Net.DecompressionMethods.Deflate,
DefaultRequestVersion = System.Net.HttpVersion.Version11,
DefaultVersionPolicy = System.Net.Http.HttpVersionPolicy.RequestVersionExact
}
: new HttpClientHandler
{ {
MaxConnectionsPerServer = 10, MaxConnectionsPerServer = 10,
AutomaticDecompression = System.Net.DecompressionMethods.GZip | System.Net.DecompressionMethods.Deflate AutomaticDecompression = System.Net.DecompressionMethods.GZip | System.Net.DecompressionMethods.Deflate
}; };
return new HttpClient(new GrpcWebHandler(GrpcWebMode.GrpcWeb, handler)) return new HttpClient(new GrpcWebHandler(GrpcWebMode.GrpcWeb, inner))
{ {
Timeout = TimeSpan.FromMinutes(10), Timeout = TimeSpan.FromMinutes(10),
BaseAddress = new Uri(baseUrl) BaseAddress = new Uri(baseUrl)
+2
View File
@@ -22,6 +22,8 @@ COPY --from=build /app/publish .
ENV ASPNETCORE_URLS=http://+:80 ENV ASPNETCORE_URLS=http://+:80
ENV GW_URL=https://cms.se.kbs1.ir ENV GW_URL=https://cms.se.kbs1.ir
# For Kubernetes staging, override GW_URL/GwUrl to http://cms-svc:8080 via deployment env vars
# to avoid TLS PartialChain when the public ingress cert is not trusted by the container.
EXPOSE 80 EXPOSE 80
ENTRYPOINT ["dotnet", "FrontOffice.Main.dll"] ENTRYPOINT ["dotnet", "FrontOffice.Main.dll"]