Skip to content

Commit 44c5d50

Browse files
authored
Merge pull request #2028 from k8s-infra-cherrypick-robot/cherry-pick-2023-to-release-0.13
✨ Add tls options to manager.Options
2 parents d242fe2 + 271f9e6 commit 44c5d50

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"
@@ -241,6 +242,9 @@ type Options struct {
241242
// It is used to set webhook.Server.CertDir if WebhookServer is not set.
242243
CertDir string
243244

245+
// TLSOpts is used to allow configuring the TLS config used for the webhook server.
246+
TLSOpts []func(*tls.Config)
247+
244248
// WebhookServer is an externally configured webhook.Server. By default,
245249
// a Manager will create a default server using Port, Host, and CertDir;
246250
// if this is set, the Manager will use this server instead.
@@ -421,6 +425,7 @@ func New(config *rest.Config, options Options) (Manager, error) {
421425
port: options.Port,
422426
host: options.Host,
423427
certDir: options.CertDir,
428+
tlsOpts: options.TLSOpts,
424429
webhookServer: options.WebhookServer,
425430
leaseDuration: *options.LeaseDuration,
426431
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)