Я экспериментирую с API-интерфейсом Asp.net, размещенным в экземпляре AKS. До сих пор все шло отлично. Я настроил вход, и мой API отвечает на запросы. Но теперь мне нужно временно передать статический html-файл из API, чтобы мое имя хоста могло быть проверено службой нагрузочного тестирования. HTML отлично загружается, когда я запускаю локально (через IIS Express или мой локальный экземпляр Docker). Но он просто не загрузится с моего экземпляра AKS k8s. Я не знаю, куда идти.
Вот конфигурация моего приложения ...
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
else
{
// The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
app.UseHsts();
}
app.UseRouting();
app.UseStaticFiles();
app.AddMonitorEndpoint("/heartbeat");
app.AddPathReturnEndpoint();
app.UseEndpoints(endpoints =>
{
endpoints.MapControllers();
});
}
Вот запуск моей программы ...
public class Program
{
public static void Main(string[] args)
{
CreateWebHostBuilder(args).Build().Run();
}
public static IWebHostBuilder CreateWebHostBuilder(string[] args )
{
var root = Path.Combine(Environment.CurrentDirectory, "wwwroot");
Console.WriteLine($"New Web Root path: {root}");
return WebHost.CreateDefaultBuilder(args)
.UseWebRoot(root)
.UseStartup<Startup>();
}
}
КакВы можете видеть выше, я пытаюсь заставить Kestrel использовать мою папку с веб-контентом (wwroot). Я думал, что это может все исправить, но это не так.
Наконец, вот мой входной yaml (извлеченный из моего экземпляра k8s) ...
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
annotations:
kubernetes.io/ingress.class: nginx
creationTimestamp: "2019-10-11T21:58:57Z"
generation: 6
labels:
app.kubernetes.io/instance: falcon-infrastructure
app.kubernetes.io/managed-by: Tiller
app.kubernetes.io/name: loader-api
app.kubernetes.io/version: "1.0"
helm.sh/chart: loader-api-1.0.0
name: loader-api
namespace: falcon
resourceVersion: "1479507"
selfLink: /apis/extensions/v1beta1/namespaces/falcon/ingresses/loader-api
uid: 52eb3832-ec72-11e9-9dc5-de03a35245a0
spec:
rules:
- host: localhost
http:
paths:
- backend:
serviceName: loader-api
servicePort: http
- host: << host ommitted >>
http:
paths:
- backend:
serviceName: loader-api
servicePort: http
status:
loadBalancer:
ingress:
- {}
Наконец, наконец, вотпример из журналов pod, показывающий, что сердцебиение (маршрут asp.net) успешно выполняется, и запрос статического контента отвечает 404.
?[40m?[32minfo?[39m?[22m?[49m: Microsoft.AspNetCore.Hosting.Diagnostics[1]
Request starting HTTP/1.1 GET http://<< host ommitted >>/heartbeat application/json 2
?[40m?[32minfo?[39m?[22m?[49m: Microsoft.AspNetCore.Hosting.Diagnostics[2]
Request finished in 1699.8789000000002ms 200 application.json
?[40m?[32minfo?[39m?[22m?[49m: Microsoft.AspNetCore.Hosting.Diagnostics[1]
Request starting HTTP/1.1 GET http://<< host ommitted >>/loaderio-c45f11b35aa6a575339d918cf887cc52.html text/html 2
?[40m?[32minfo?[39m?[22m?[49m: Microsoft.AspNetCore.Hosting.Diagnostics[2]
Request finished in 36.2461ms 404
Я в полной растерянности, поэтому я надеюсь, что какая-то добрая душа сможетчтобы помочь мне.
Заранее спасибо!