traefik-helm-chart
traefik-helm-chart copied to clipboard
Support for service annotation customization by port type
Use case
Assign private and public Load Balancer to distinct ports / entrypoints.
Current limitation
The current chart provides good support for dynamic entrypoint customizations through values.ports. Individual services will effectively be created in Kubernetes for each individual ports. The service annotations will however be shared from service.annotations values. As a result, there is no way to have specific annotations for distinct ports.
Proposed solution
~~Add a second layer of service annotations by adding a new ports.<port>.service.annotations property namespace. A template helper could merge both source and apply them at~~ https://github.com/traefik/traefik-helm-chart/blob/db26e8e834c43d06e17bd68102a4095476147b7d/traefik/templates/service.yaml#L26
I came to realize that my proposed solution will not work since I wrongly interpreted that the chart would create a distinct service per port definition. The only option left would be to have a new level of configuration with dynamic services (just like ports). I'll try to see if I can come up with something.
I'm planing to contribute that change unless someone jumps in with a different solution to support my use case.
I came to realize that my proposed solution will not work since I wrongly interpreted that the chart would create a distinct service per port definition.
Turns out the only option would be to have a new level of configuration with dynamic services (just like ports). I'll try to see if I can come up with something.
@SantoDE I'm facing a dilema. Either I run two distinct traefik instance with different service annotations or I break the configuration values of service.xxxx. Supporting multiple services with an opt-in services.xxxx values would add a new dimension of configuration. To avoid breaking existing deployment, the template helper would have to support both service.* and services.*.
ports.* values would also be ignored as they would be expected to be found in services.xxxxx.ports.*. What do you think of this?
Duplicates of #436