Skip to content

Commit 85bf83c

Browse files
authored
Add ability to reload cert and key from disk. (#45)
Enables frequent rotation of certificates
1 parent abe1360 commit 85bf83c

3 files changed

Lines changed: 21 additions & 2 deletions

File tree

cmd/main.go

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,8 @@ import (
2121
"github.com/tumblr/k8s-sidecar-injector/internal/pkg/version"
2222
"github.com/tumblr/k8s-sidecar-injector/pkg/coalescer"
2323
"github.com/tumblr/k8s-sidecar-injector/pkg/server"
24+
25+
"github.com/dyson/certman"
2426
)
2527

2628
var (
@@ -168,12 +170,16 @@ func main() {
168170
}
169171

170172
if parameters.CertFile != "" && parameters.KeyFile != "" {
171-
pair, err := tls.LoadX509KeyPair(parameters.CertFile, parameters.KeyFile)
173+
cm, err := certman.New(parameters.CertFile, parameters.KeyFile)
172174
if err != nil {
173175
glog.Errorf("Failed to load key pair: %v", err)
174176
os.Exit(1)
175177
}
176-
whsvr.Server.TLSConfig = &tls.Config{Certificates: []tls.Certificate{pair}}
178+
if err := cm.Watch(); err != nil {
179+
glog.Errorf("Failed to start watcher on key pair: %v", err)
180+
os.Exit(1)
181+
}
182+
whsvr.Server.TLSConfig = &tls.Config{GetCertificate: cm.GetCertificate}
177183
}
178184

179185
// define secure mux for routing requests that come in over our TLS port

go.mod

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,12 @@
11
module github.com/tumblr/k8s-sidecar-injector
22

3+
go 1.14
4+
35
require (
46
github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973 // indirect
57
github.com/davecgh/go-spew v1.1.1 // indirect
8+
github.com/dyson/certman v0.2.1
9+
github.com/fsnotify/fsnotify v1.4.9 // indirect
610
github.com/ghodss/yaml v1.0.0
711
github.com/gogo/protobuf v1.1.1 // indirect
812
github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b
@@ -21,6 +25,7 @@ require (
2125
github.com/nsf/jsondiff v0.0.0-20190712045011-8443391ee9b6
2226
github.com/petar/GoLLRB v0.0.0-20130427215148-53be0d36a84c // indirect
2327
github.com/peterbourgon/diskv v2.0.1+incompatible // indirect
28+
github.com/pkg/errors v0.9.1 // indirect
2429
github.com/prometheus/client_golang v0.9.1
2530
github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910 // indirect
2631
github.com/prometheus/common v0.0.0-20181020173914-7e9e6cabbd39 // indirect

go.sum

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,10 @@ github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24
33
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
44
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
55
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
6+
github.com/dyson/certman v0.2.1 h1:+EJdgffbfwIkBvnyx97mfS3slfn2o4UN/LWGm+mWVrQ=
7+
github.com/dyson/certman v0.2.1/go.mod h1:Z2ho3wmP4oCGON+c/RF+FJVsMb9zYZVsupp0c1a+SlQ=
8+
github.com/fsnotify/fsnotify v1.4.9 h1:hsms1Qyu0jgnwNXIxa+/V/PDsU6CfLf6CNO8H7IWoS4=
9+
github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ=
610
github.com/ghodss/yaml v1.0.0 h1:wQHKEahhL6wmXdzwWG11gIVCkOv05bNOh+Rxn0yngAk=
711
github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04=
812
github.com/go-test/deep v1.0.2/go.mod h1:wGDj63lr65AM2AQyKZd/NYHGb0R+1RLqB8NKt3aSFNA=
@@ -41,6 +45,8 @@ github.com/nsf/jsondiff v0.0.0-20190712045011-8443391ee9b6/go.mod h1:uFMI8w+ref4
4145
github.com/petar/GoLLRB v0.0.0-20130427215148-53be0d36a84c/go.mod h1:HUpKUBZnpzkdx0kD/+Yfuft+uD3zHGtXF/XJB14TUr4=
4246
github.com/peterbourgon/diskv v2.0.1+incompatible h1:UBdAOUP5p4RWqPBg048CAvpKN+vxiaj6gdUUzhl4XmI=
4347
github.com/peterbourgon/diskv v2.0.1+incompatible/go.mod h1:uqqh8zWWbv1HBMNONnaR/tNboyR3/BZd58JJSHlUSCU=
48+
github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
49+
github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
4450
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
4551
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
4652
github.com/prometheus/client_golang v0.9.1 h1:K47Rk0v/fkEfwfQet2KWhscE0cJzjgCCDBG2KHZoVno=
@@ -86,6 +92,8 @@ golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a h1:1BGLXjeY4akVXGgbC9HugT3Jv
8692
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
8793
golang.org/x/sys v0.0.0-20190412213103-97732733099d h1:+R4KGOnez64A81RvjARKc4UT5/tI9ujCIVX+P5KiHuI=
8894
golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
95+
golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9 h1:L2auWcuQIvxz9xSEqzESnV/QN/gNRXNApHi3fYwl2w0=
96+
golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
8997
golang.org/x/text v0.3.0 h1:g61tztE5qeGQ89tm6NTjjM9VPIm088od1l6aSorWRWg=
9098
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
9199
golang.org/x/time v0.0.0-20181108054448-85acf8d2951c h1:fqgJT0MGcGpPgpWU7VRdRjuArfcOvC4AoJmILihzhDg=

0 commit comments

Comments
 (0)