Skip to content
This repository has been archived by the owner on Aug 26, 2021. It is now read-only.

Commit

Permalink
Merge pull request #257 from jackhopner/master
Browse files Browse the repository at this point in the history
Reintroduce default ingress provider
  • Loading branch information
munnerz authored Nov 7, 2017
2 parents 784fc8f + 45070b7 commit 039ab9c
Show file tree
Hide file tree
Showing 5 changed files with 29 additions and 9 deletions.
7 changes: 4 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -109,10 +109,11 @@ Please note:
| `LEGO_SUPPORTED_INGRESS_CLASS` | n | `nginx,gce` | Specify the supported ingress class |
| `LEGO_SUPPORTED_INGRESS_PROVIDER` | n | `nginx,gce` | Specify the supported ingress provider |
| `LEGO_INGRESS_NAME_NGINX` | n | `kube-lego-nginx` | Ingress name which contains the routing for HTTP verification for nginx ingress |
| `LEGO_PORT` | n | `8080` | Port where this daemon is listening for verifcation calls (HTTP method)|
| `LEGO_CHECK_INTERVAL` | n | `8h` | Interval for periodically certificate checks (to find expired certs)|
| `LEGO_MINIMUM_VALIDITY` | n | `720h` (30 days) | Request a renewal when the remaining certificate validity falls below that value|
| `LEGO_PORT` | n | `8080` | Port where this daemon is listening for verifcation calls (HTTP method) |
| `LEGO_CHECK_INTERVAL` | n | `8h` | Interval for periodically certificate checks (to find expired certs) |
| `LEGO_MINIMUM_VALIDITY` | n | `720h` (30 days) | Request a renewal when the remaining certificate validity falls below that value |
| `LEGO_DEFAULT_INGRESS_CLASS` | n | `nginx` | Default ingress class for resources without specification|
| `LEGO_DEFAULT_INGRESS_PROVIDER` | n | `$LEGO_DEFAULT_INGRESS_CLASS` | Default ingress provider for resources without specification |
| `LEGO_KUBE_API_URL` | n | `http://127.0.0.1:8080` | API server URL |
| `LEGO_LOG_LEVEL` | n | `info` | Set log level (`debug`, `info`, `warn` or `error`) |
| `LEGO_LOG_TYPE` | n | `text` | Set log type. Only `json` as custom value supported, everything else defaults to default logrus textFormat |
Expand Down
6 changes: 2 additions & 4 deletions pkg/ingress/ingress.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import (
"fmt"
"strings"

"github.com/jetstack/kube-lego/pkg/kubelego_const"
kubelego "github.com/jetstack/kube-lego/pkg/kubelego_const"

"github.com/Sirupsen/logrus"
k8sErrors "k8s.io/apimachinery/pkg/api/errors"
Expand Down Expand Up @@ -175,9 +175,7 @@ func (i *Ingress) IngressClass() string {
func (i *Ingress) IngressProvider() string {
val, ok := i.IngressApi.Annotations[kubelego.AnnotationIngressProvider]
if !ok {
// we return IngressClass() here in order to not break backwards
// compatibility with older versions of kube-lego
return i.IngressClass()
return i.kubelego.LegoDefaultIngressProvider()
}
return strings.ToLower(val)
}
Expand Down
20 changes: 20 additions & 0 deletions pkg/kubelego/kubelego.go
Original file line number Diff line number Diff line change
Expand Up @@ -196,6 +196,10 @@ func (kl *KubeLego) LegoDefaultIngressClass() string {
return kl.legoDefaultIngressClass
}

func (kl *KubeLego) LegoDefaultIngressProvider() string {
return kl.legoDefaultIngressProvider
}

func (kl *KubeLego) LegoIngressNameNginx() string {
return kl.legoIngressNameNginx
}
Expand Down Expand Up @@ -310,6 +314,22 @@ func (kl *KubeLego) paramsLego() error {
return fmt.Errorf("Unsupported default ingress class: '%s'. You can set the ingress class with 'LEGO_DEFAULT_INGRESS_CLASS'", legoDefaultIngressClass)
}
}

legoDefaultIngressProvider := os.Getenv("LEGO_DEFAULT_INGRESS_PROVIDER")
if len(legoDefaultIngressProvider) == 0 {
/*
To support backwards compatability we need to set the default provier
to the same as the default class
*/
kl.legoDefaultIngressProvider = kl.legoDefaultIngressClass
} else {
var err error = nil
kl.legoDefaultIngressProvider, err = ingress.IsSupportedIngressProvider(kl.legoSupportedIngressProvider, legoDefaultIngressProvider)
if err != nil {
return fmt.Errorf("Unsupported default ingress provider: '%s'. You can set the ingress provider with 'LEGO_DEFAULT_INGRESS_PROVIDER'", legoDefaultIngressProvider)
}
}

kl.legoIngressNameNginx = os.Getenv("LEGO_INGRESS_NAME_NGINX")
if len(kl.legoIngressNameNginx) == 0 {
kl.legoIngressNameNginx = os.Getenv("LEGO_INGRESS_NAME")
Expand Down
1 change: 1 addition & 0 deletions pkg/kubelego_const/interfaces.go
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ type KubeLego interface {
LegoServiceNameNginx() string
LegoServiceNameGce() string
LegoDefaultIngressClass() string
LegoDefaultIngressProvider() string
LegoSupportedIngressClass() []string
LegoSupportedIngressProvider() []string
LegoCheckInterval() time.Duration
Expand Down
4 changes: 2 additions & 2 deletions pkg/provider/nginx/nginx.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ package nginx

import (
"github.com/jetstack/kube-lego/pkg/ingress"
"github.com/jetstack/kube-lego/pkg/kubelego_const"
kubelego "github.com/jetstack/kube-lego/pkg/kubelego_const"
"github.com/jetstack/kube-lego/pkg/service"

"sort"
Expand Down Expand Up @@ -123,7 +123,7 @@ func (p *Nginx) updateIngress() error {
// TODO: use the ingres class as specified on the ingress we are
// requesting a certificate for
kubelego.AnnotationIngressClass: p.kubelego.LegoDefaultIngressClass(),
kubelego.AnnotationIngressProvider: "nginx",
kubelego.AnnotationIngressProvider: p.kubelego.LegoDefaultIngressProvider(),
kubelego.AnnotationWhitelistSourceRange: "0.0.0.0/0,::/0",
}

Expand Down

0 comments on commit 039ab9c

Please sign in to comment.