Juju expose on k8s doesn't seem to support non-web services
Bug #1889703 reported by
Barry Price
This bug affects 1 person
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
Canonical Juju |
Triaged
|
High
|
Unassigned |
Bug Description
I can write a charm to deploy a network service running on an arbitrary TCP/UDP port, the pods deploy correctly and the service works fine on the individual units.
But Juju doesn't seem to be able to set up a Service for us in this use case.
Even with our service ports defined correctly in the pod spec as e.g. TCP/123 or UDP/456, running 'juju expose' seems to ignore them and instead creates an Ingress for TCP/80.
Changed in juju: | |
milestone: | none → 2.8.3 |
importance: | Undecided → High |
status: | New → Triaged |
summary: |
- k8s ingress doesn't seem to support non-web services + Juju expose on k8s doesn't seem to support non-web services |
description: | updated |
Changed in juju: | |
milestone: | 2.8.3 → none |
description: | updated |
To post a comment you must log in.
We dug into this a bit on our end, and the track led us down: /kubernetes. io/docs/ concepts/ services- networking/ ingress/ #ingress- rules
https:/
Really only defines ways of exposing HTTP workloads. There doesn't seem to be anything in Ingress rules that would expose alternative ports/sockets like UDP for Bind.
That said, Nginx is one of the most common ingress controllers, and it is happy to support configuration that exposes raw TCP or UDP: /kubernetes. github. io/ingress- nginx/user- guide/exposing- tcp-udp- services/
https:/
Do we know if there are plans inside K8s to update the Ingress definitions to expose services other-than-http?
In the meantime, could we have our Nginx ingress controller charm have a 'expose' sort of relation, that you could then relate your Bind charm to Nginx and have it ask for Nginx to get the extra configuration?