Swagger UI "Try it out" option does not work with Azure Kubernetes Nginx Ingress

Abhishek Singh 381 Reputation points
2023-06-08T12:00:23.66+00:00

Swagger UI "Try It Out" option for DotNet Core 6 API app does not work with nginx ingress in azure kubernetes service (aks) , the path for service does not get added in the URL . I have tried multiple options like adding swagger endpoint in program.cs or removing the target-rewrite option but nothing worked.

The swagger UI works fine with localhost and with LoadBalancer service but not with nginx controller as shown below:

User's image

Below is my Ingress configuration

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: hello-world-ingress
  annotations:
    nginx.ingress.kubernetes.io/ssl-redirect: "false"
    nginx.ingress.kubernetes.io/use-regex: "true"
    nginx.ingress.kubernetes.io/rewrite-target: /$1
spec:
  ingressClassName: nginx
  rules:
  - http:
      paths:
      - path: /serv1/(.*)
        pathType: Prefix
        backend:
          service:
            name: myapp
            port:
              number: 80
      

Below is how my "program.cs" file looks

var builder = WebApplication.CreateBuilder(args);

// Add services to the container.

builder.Services.AddControllers();
// Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();

var app = builder.Build();

// Configure the HTTP request pipeline.

app.UseSwagger();
app.UseSwaggerUI();
    
//     options =>
// {
//     options.SwaggerEndpoint("/swagger/v1/swagger.json", "v1");
//     //options.RoutePrefix = "serv1/swagger";
// });


app.UseHttpsRedirection();

app.UseAuthorization();

app.MapControllers();

app.Run();
Azure API Management
Azure API Management
An Azure service that provides a hybrid, multi-cloud management platform for APIs.
2,447 questions
Azure Kubernetes Service
Azure Kubernetes Service
An Azure service that provides serverless Kubernetes, an integrated continuous integration and continuous delivery experience, and enterprise-grade security and governance.
2,447 questions
Developer technologies ASP.NET ASP.NET API
Developer technologies C#
{count} votes

2 answers

Sort by: Most helpful
  1. Keith Howling 10 Reputation points Microsoft Employee
    2023-06-08T16:02:39.11+00:00

    The LB nginx ingress provisions sets its heath check to look at the / path, and the dotnet api doesnt respond at all on /! You can change the path when you install the controller as described here, that should ping it to life: https://github.com/Azure/AKS-Construction/issues/573#issuecomment-1527253720

    1 person found this answer helpful.

  2. Bruce (SqlWork.com) 77,686 Reputation points Volunteer Moderator
    2023-06-12T18:20:07.24+00:00

    you have:

    app.UseHttpsRedirection()

    set, but are using http to connect from the proxy.


Your answer

Answers can be marked as Accepted Answers by the question author, which helps users to know the answer solved the author's problem.