ASP.net Core OData serving HTTPS in Kubernetes with a certificate provided by an Ingress

6/12/2019

I have following working setup:

  • Container serving an ASP.net Core OData application on port 80
  • Ingress publishing web-app as HTTPS with a letsencrypt-certificate

Everything worked as expected. OData service is accessible via HTTPS. But now I wanted to connect with PowerBI to the web-service, and with the help of Fiddler I saw that PowerBi is not only calling /odata/$metadata, but also calling /odata/. This endpoint publishs a smaller metadata description with following entry:

"@odata.context": "http://my-url/odata/$metadata"

This url is used in an subsequent call by PowerBI and leads to an 308 (redirect). This results in an error in PowerBI. The returned url shall use HTTPS://. In my dev-environment, with a self-signed certificate, it works and returns the correct adress, depending on the used protocol.

Every examble, I found, which describes the usage of HTTPS, needs the certificate. But this does not make sense. The container shall not know the certificate. The certificate is defined outside (Ingress) of the application.

Another possible solution is a system-wide string-replace for the HTTP address. But this sounds weird and wrong to me.

I also tried to manually forward the port to 443, but this is not working.

-- masterchris_99
.net
asp.net
c#
docker
kubernetes

0 Answers