It looks like I misunderstood what `juju expose` is supposed to do. What it does is create an Ingress resource for the charm, which should be accessible via the kubernetes-worker units on ports 80 and 443.
I think there's a problem with the Ingress resource that gets created, though:
The k8s-dashboard pods serve HTTPS traffic, but I think nginx-ingress-controller is trying to reach out to it via HTTP, likely because the backend-protocol annotation[1] is not set in the Ingress resource.
It looks like I misunderstood what `juju expose` is supposed to do. What it does is create an Ingress resource for the charm, which should be accessible via the kubernetes-worker units on ports 80 and 443.
I think there's a problem with the Ingress resource that gets created, though:
$ curl http:/34. 216.138. 173.xip. io
Client sent an HTTP request to an HTTPS server.
$ curl -k https:/ 34.216. 138.173. xip.io
Client sent an HTTP request to an HTTPS server.
The k8s-dashboard pods serve HTTPS traffic, but I think nginx-ingress- controller is trying to reach out to it via HTTP, likely because the backend-protocol annotation[1] is not set in the Ingress resource.
[1]: https:/ /github. com/kubernetes/ ingress- nginx/blob/ master/ docs/user- guide/nginx- configuration/ annotations. md#backend- protocol