Skip to content

Commit 15d69a2

Browse files
authored
Merge pull request #2023 from sbueringer/pr-add-tls-options
✨ Add tls options to manager.Options
2 parents 8ad090e + 689e72f commit 15d69a2

File tree

5 files changed

+21
-0
lines changed

5 files changed

+21
-0
lines changed

pkg/envtest/webhook_test.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ package envtest
1818

1919
import (
2020
"context"
21+
"crypto/tls"
2122
"path/filepath"
2223
"time"
2324

@@ -41,6 +42,9 @@ var _ = Describe("Test", func() {
4142
Port: env.WebhookInstallOptions.LocalServingPort,
4243
Host: env.WebhookInstallOptions.LocalServingHost,
4344
CertDir: env.WebhookInstallOptions.LocalServingCertDir,
45+
TLSOpts: []func(*tls.Config){
46+
func(config *tls.Config) {},
47+
},
4448
}) // we need manager here just to leverage manager.SetFields
4549
Expect(err).NotTo(HaveOccurred())
4650
server := m.GetWebhookServer()

pkg/manager/internal.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ package manager
1818

1919
import (
2020
"context"
21+
"crypto/tls"
2122
"errors"
2223
"fmt"
2324
"net"
@@ -135,6 +136,8 @@ type controllerManager struct {
135136
// if not set, webhook server would look up the server key and certificate in
136137
// {TempDir}/k8s-webhook-server/serving-certs
137138
certDir string
139+
// tlsOpts is used to allow configuring the TLS config used for the webhook server.
140+
tlsOpts []func(*tls.Config)
138141

139142
webhookServer *webhook.Server
140143
// webhookServerOnce will be called in GetWebhookServer() to optionally initialize
@@ -305,6 +308,7 @@ func (cm *controllerManager) GetWebhookServer() *webhook.Server {
305308
Port: cm.port,
306309
Host: cm.host,
307310
CertDir: cm.certDir,
311+
TLSOpts: cm.tlsOpts,
308312
}
309313
}
310314
if err := cm.Add(cm.webhookServer); err != nil {

pkg/manager/manager.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ package manager
1818

1919
import (
2020
"context"
21+
"crypto/tls"
2122
"fmt"
2223
"net"
2324
"net/http"
@@ -242,6 +243,9 @@ type Options struct {
242243
// It is used to set webhook.Server.CertDir if WebhookServer is not set.
243244
CertDir string
244245

246+
// TLSOpts is used to allow configuring the TLS config used for the webhook server.
247+
TLSOpts []func(*tls.Config)
248+
245249
// WebhookServer is an externally configured webhook.Server. By default,
246250
// a Manager will create a default server using Port, Host, and CertDir;
247251
// if this is set, the Manager will use this server instead.
@@ -422,6 +426,7 @@ func New(config *rest.Config, options Options) (Manager, error) {
422426
port: options.Port,
423427
host: options.Host,
424428
certDir: options.CertDir,
429+
tlsOpts: options.TLSOpts,
425430
webhookServer: options.WebhookServer,
426431
leaseDuration: *options.LeaseDuration,
427432
renewDeadline: *options.RenewDeadline,

pkg/manager/manager_test.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ package manager
1818

1919
import (
2020
"context"
21+
"crypto/tls"
2122
"errors"
2223
"fmt"
2324
"io"
@@ -211,6 +212,9 @@ var _ = Describe("manger.Manager", func() {
211212
},
212213
}
213214

215+
optionsTlSOptsFuncs := []func(*tls.Config){
216+
func(config *tls.Config) {},
217+
}
214218
m, err := Options{
215219
SyncPeriod: &optDuration,
216220
LeaderElection: true,
@@ -228,6 +232,7 @@ var _ = Describe("manger.Manager", func() {
228232
Port: 8080,
229233
Host: "example.com",
230234
CertDir: "/pki",
235+
TLSOpts: optionsTlSOptsFuncs,
231236
}.AndFrom(&fakeDeferredLoader{ccfg})
232237
Expect(err).To(BeNil())
233238

@@ -247,6 +252,7 @@ var _ = Describe("manger.Manager", func() {
247252
Expect(m.Port).To(Equal(8080))
248253
Expect(m.Host).To(Equal("example.com"))
249254
Expect(m.CertDir).To(Equal("/pki"))
255+
Expect(m.TLSOpts).To(Equal(optionsTlSOptsFuncs))
250256
})
251257

252258
It("should lazily initialize a webhook server if needed", func() {

pkg/webhook/webhook_integration_test.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,7 @@ var _ = Describe("Webhook", func() {
8585
Port: testenv.WebhookInstallOptions.LocalServingPort,
8686
Host: testenv.WebhookInstallOptions.LocalServingHost,
8787
CertDir: testenv.WebhookInstallOptions.LocalServingCertDir,
88+
TLSOpts: []func(*tls.Config){func(config *tls.Config) {}},
8889
}) // we need manager here just to leverage manager.SetFields
8990
Expect(err).NotTo(HaveOccurred())
9091
server := m.GetWebhookServer()
@@ -108,6 +109,7 @@ var _ = Describe("Webhook", func() {
108109
Port: testenv.WebhookInstallOptions.LocalServingPort,
109110
Host: testenv.WebhookInstallOptions.LocalServingHost,
110111
CertDir: testenv.WebhookInstallOptions.LocalServingCertDir,
112+
TLSOpts: []func(*tls.Config){func(config *tls.Config) {}},
111113
}) // we need manager here just to leverage manager.SetFields
112114
Expect(err).NotTo(HaveOccurred())
113115
server := m.GetWebhookServer()

0 commit comments

Comments
 (0)