Adds option to namespace k8s ingresses

If the flag kubernetes.namespaces is set...
Then we only select ingresses from that/those namespace(s)

This allows multiple instances of traefik to
independently load balance for each namespace.
This could be for logical or security reasons.

Addresses #336
This commit is contained in:
Ed Robinson 2016-04-28 01:23:55 +01:00
parent d1b0bece47
commit 301a463aeb
No known key found for this signature in database
GPG key ID: EC501FCA6421CCF0
6 changed files with 449 additions and 3 deletions

View file

@ -23,6 +23,7 @@ const (
type Kubernetes struct {
BaseProvider `mapstructure:",squash"`
Endpoint string
Namespaces []string
}
func (provider *Kubernetes) createClient() (k8s.Client, error) {
@ -123,7 +124,15 @@ func (provider *Kubernetes) Provide(configurationChan chan<- types.ConfigMessage
func (provider *Kubernetes) loadIngresses(k8sClient k8s.Client) (*types.Configuration, error) {
ingresses, err := k8sClient.GetIngresses(func(ingress k8s.Ingress) bool {
return true
if len(provider.Namespaces) == 0 {
return true
}
for _, n := range provider.Namespaces {
if ingress.ObjectMeta.Namespace == n {
return true
}
}
return false
})
if err != nil {
log.Errorf("Error retrieving ingresses: %+v", err)