Skip to content

Commit 5c9c5a3

Browse files
committed
Avoid periodic check for secret changes
1 parent c1cf8ff commit 5c9c5a3

File tree

3 files changed

+21
-7
lines changed

3 files changed

+21
-7
lines changed

core/pkg/ingress/controller/backend_ssl.go

+8-2
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ import (
3434
// syncSecret keeps in sync Secrets used by Ingress rules with the files on
3535
// disk to allow copy of the content of the secret to disk to be used
3636
// by external processes.
37-
func (ic *GenericController) syncSecret() {
37+
func (ic *GenericController) syncSecret(key string) {
3838
glog.V(3).Infof("starting syncing of secrets")
3939

4040
if !ic.controllersInSync() {
@@ -46,7 +46,13 @@ func (ic *GenericController) syncSecret() {
4646
var cert *ingress.SSLCert
4747
var err error
4848

49-
keys := ic.secretTracker.List()
49+
// by default we sync just one secret
50+
keys := []interface{}{key}
51+
// if the key is empty we check all the secrets
52+
if key == "" {
53+
keys = ic.secretTracker.List()
54+
}
55+
5056
for _, k := range keys {
5157
key := k.(string)
5258
cert, err = ic.getPemCertificate(key)

core/pkg/ingress/controller/backend_ssl_test.go

+3-2
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ import (
2222
"testing"
2323

2424
"fmt"
25+
2526
meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
2627
testclient "k8s.io/client-go/kubernetes/fake"
2728
api_v1 "k8s.io/client-go/pkg/api/v1"
@@ -166,15 +167,15 @@ func TestSyncSecret(t *testing.T) {
166167
ic.secrLister.Add(secret)
167168

168169
// for add
169-
ic.syncSecret()
170+
ic.syncSecret("")
170171
if foo.expectSuccess {
171172
// validate
172173
_, exist := ic.sslCertTracker.Get(foo.secretName)
173174
if !exist {
174175
t.Errorf("Failed to sync secret: %s", foo.secretName)
175176
} else {
176177
// for update
177-
ic.syncSecret()
178+
ic.syncSecret("")
178179
}
179180
}
180181
})

core/pkg/ingress/controller/controller.go

+10-3
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,6 @@ import (
3030

3131
"k8s.io/apimachinery/pkg/fields"
3232
"k8s.io/apimachinery/pkg/util/intstr"
33-
"k8s.io/apimachinery/pkg/util/wait"
3433
clientset "k8s.io/client-go/kubernetes"
3534
unversionedcore "k8s.io/client-go/kubernetes/typed/core/v1"
3635
def_api "k8s.io/client-go/pkg/api"
@@ -203,6 +202,12 @@ func newIngressController(config *Configuration) *GenericController {
203202
}
204203

205204
secrEventHandler := cache.ResourceEventHandlerFuncs{
205+
UpdateFunc: func(old, cur interface{}) {
206+
if !reflect.DeepEqual(old, cur) {
207+
sec := cur.(*api.Secret)
208+
ic.syncSecret(fmt.Sprintf("%v/%v", sec.Namespace, sec.Name))
209+
}
210+
},
206211
DeleteFunc: func(obj interface{}) {
207212
sec := obj.(*api.Secret)
208213
ic.sslCertTracker.Delete(fmt.Sprintf("%v/%v", sec.Namespace, sec.Name))
@@ -1151,6 +1156,10 @@ func (ic GenericController) extractSecretNames(ing *extensions.Ingress) {
11511156
}
11521157

11531158
for _, tls := range ing.Spec.TLS {
1159+
if tls.SecretName == "" {
1160+
continue
1161+
}
1162+
11541163
key := fmt.Sprintf("%v/%v", ing.Namespace, tls.SecretName)
11551164
_, exists := ic.secretTracker.Get(key)
11561165
if !exists {
@@ -1191,8 +1200,6 @@ func (ic GenericController) Start() {
11911200

11921201
go ic.syncQueue.Run(10*time.Second, ic.stopCh)
11931202

1194-
go wait.Forever(ic.syncSecret, 10*time.Second)
1195-
11961203
if ic.syncStatus != nil {
11971204
go ic.syncStatus.Run(ic.stopCh)
11981205
}

0 commit comments

Comments
 (0)