Skip to content

Commit 3bc387a

Browse files
committed
chore: additional changes from code review
Signed-off-by: Mikhail Fedosin <mfedosin@redhat.com>
1 parent 16f94d9 commit 3bc387a

4 files changed

Lines changed: 48 additions & 59 deletions

File tree

pkg/deployment/config.go

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -236,6 +236,17 @@ func NewConfigFromMap(configMap map[string]string) (*Config, error) {
236236
return nil, fmt.Errorf("digest-resolution-timeout cannot be a non-positive duration, was %v", nc.DigestResolutionTimeout)
237237
}
238238

239+
for _, pair := range []struct {
240+
key, value string
241+
}{
242+
{queueSidecarTLSMinVersionKey, nc.QueueSidecarTLSMinVersion},
243+
{queueSidecarTLSMaxVersionKey, nc.QueueSidecarTLSMaxVersion},
244+
} {
245+
if pair.value != "" && pair.value != "1.2" && pair.value != "1.3" {
246+
return nil, fmt.Errorf("%s must be \"1.2\", \"1.3\", or empty, got %q", pair.key, pair.value)
247+
}
248+
}
249+
239250
if affinity, ok := configMap[defaultAffinityTypeKey]; ok {
240251
switch opt := AffinityType(affinity); opt {
241252
case None, PreferSpreadRevisionOverNodes:

pkg/deployment/config_test.go

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -494,6 +494,20 @@ kata:
494494
queueSidecarTLSCipherSuitesKey: "TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256",
495495
queueSidecarTLSCurvePreferencesKey: "X25519,CurveP256",
496496
},
497+
}, {
498+
name: "invalid queue sidecar TLS min version",
499+
wantErr: true,
500+
data: map[string]string{
501+
QueueSidecarImageKey: defaultSidecarImage,
502+
queueSidecarTLSMinVersionKey: "1.1",
503+
},
504+
}, {
505+
name: "invalid queue sidecar TLS max version",
506+
wantErr: true,
507+
data: map[string]string{
508+
QueueSidecarImageKey: defaultSidecarImage,
509+
queueSidecarTLSMaxVersionKey: "invalid",
510+
},
497511
}}
498512

499513
for _, tt := range configTests {

pkg/queue/sharedmain/main.go

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

1919
import (
2020
"context"
21-
"crypto/tls"
2221
"encoding/json"
2322
"errors"
2423
"fmt"
@@ -293,20 +292,22 @@ func Main(opts ...Option) error {
293292
}
294293
}(name, server)
295294
}
296-
tlsCfg, err := queueProxyTLSConfig()
297-
if err != nil {
298-
logger.Fatalw("Failed to read TLS configuration from environment", zap.Error(err))
299-
}
300-
for name, server := range tlsServers {
301-
go func(name string, s *http.Server) {
302-
logger.Info("Starting tls server ", name, s.Addr)
303-
s.TLSConfig = tlsCfg.TLSConfig()
304-
s.TLSConfig.GetCertificate = certWatcher.GetCertificate
305-
// Don't forward ErrServerClosed as that indicates we're already shutting down.
306-
if err := s.ListenAndServeTLS("", ""); err != nil && !errors.Is(err, http.ErrServerClosed) {
307-
errCh <- fmt.Errorf("%s server failed to serve: %w", name, err)
308-
}
309-
}(name, server)
295+
if tlsEnabled {
296+
tlsCfg, err := knativetls.DefaultConfigFromEnv("QUEUE_PROXY_")
297+
if err != nil {
298+
logger.Fatalw("Failed to read TLS configuration from environment", zap.Error(err))
299+
}
300+
for name, server := range tlsServers {
301+
go func(name string, s *http.Server) {
302+
logger.Info("Starting tls server ", name, s.Addr)
303+
s.TLSConfig = tlsCfg
304+
s.TLSConfig.GetCertificate = certWatcher.GetCertificate
305+
// Don't forward ErrServerClosed as that indicates we're already shutting down.
306+
if err := s.ListenAndServeTLS("", ""); err != nil && !errors.Is(err, http.ErrServerClosed) {
307+
errCh <- fmt.Errorf("%s server failed to serve: %w", name, err)
308+
}
309+
}(name, server)
310+
}
310311
}
311312

312313
// Blocks until we actually receive a TERM signal or one of the servers
@@ -460,17 +461,6 @@ func requestAppMetricsHandler(
460461
return h
461462
}
462463

463-
func queueProxyTLSConfig() (*knativetls.Config, error) {
464-
cfg, err := knativetls.NewConfigFromEnv("QUEUE_PROXY_")
465-
if err != nil {
466-
return nil, err
467-
}
468-
if cfg.MinVersion == 0 {
469-
cfg.MinVersion = tls.VersionTLS13
470-
}
471-
return cfg, nil
472-
}
473-
474464
func flush(logger *zap.SugaredLogger) {
475465
logger.Sync()
476466
os.Stdout.Sync()

pkg/queue/sharedmain/tls_config_test.go

Lines changed: 7 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,8 @@ package sharedmain
1919
import (
2020
"crypto/tls"
2121
"testing"
22+
23+
knativetls "knative.dev/pkg/tls"
2224
)
2325

2426
func TestQueueProxyTLSConfig(t *testing.T) {
@@ -32,34 +34,14 @@ func TestQueueProxyTLSConfig(t *testing.T) {
3234
name: "defaults to TLS 1.3 when no env vars set",
3335
wantMin: tls.VersionTLS13,
3436
}, {
35-
name: "respects QUEUE_PROXY_TLS_MIN_VERSION=1.2",
36-
envVars: map[string]string{"QUEUE_PROXY_TLS_MIN_VERSION": "1.2"},
37+
name: "env vars are passed through",
38+
envVars: map[string]string{"QUEUE_PROXY_TLS_MIN_VERSION": "1.2", "QUEUE_PROXY_TLS_MAX_VERSION": "1.3"},
3739
wantMin: tls.VersionTLS12,
38-
}, {
39-
name: "respects QUEUE_PROXY_TLS_MIN_VERSION=1.3",
40-
envVars: map[string]string{"QUEUE_PROXY_TLS_MIN_VERSION": "1.3"},
41-
wantMin: tls.VersionTLS13,
42-
}, {
43-
name: "respects QUEUE_PROXY_TLS_MAX_VERSION",
44-
envVars: map[string]string{"QUEUE_PROXY_TLS_MAX_VERSION": "1.3"},
45-
wantMin: tls.VersionTLS13,
4640
wantMax: tls.VersionTLS13,
4741
}, {
48-
name: "min and max version together",
49-
envVars: map[string]string{
50-
"QUEUE_PROXY_TLS_MIN_VERSION": "1.2",
51-
"QUEUE_PROXY_TLS_MAX_VERSION": "1.3",
52-
},
53-
wantMin: tls.VersionTLS12,
54-
wantMax: tls.VersionTLS13,
55-
}, {
56-
name: "invalid min version returns error",
42+
name: "invalid env var forwards error",
5743
envVars: map[string]string{"QUEUE_PROXY_TLS_MIN_VERSION": "1.1"},
5844
wantErr: true,
59-
}, {
60-
name: "invalid max version returns error",
61-
envVars: map[string]string{"QUEUE_PROXY_TLS_MAX_VERSION": "invalid"},
62-
wantErr: true,
6345
}}
6446

6547
for _, tt := range tests {
@@ -68,9 +50,9 @@ func TestQueueProxyTLSConfig(t *testing.T) {
6850
t.Setenv(k, v)
6951
}
7052

71-
cfg, err := queueProxyTLSConfig()
53+
cfg, err := knativetls.DefaultConfigFromEnv("QUEUE_PROXY_")
7254
if (err != nil) != tt.wantErr {
73-
t.Fatalf("queueProxyTLSConfig() error = %v, wantErr %v", err, tt.wantErr)
55+
t.Fatalf("DefaultConfigFromEnv() error = %v, wantErr %v", err, tt.wantErr)
7456
}
7557
if tt.wantErr {
7658
return
@@ -82,14 +64,6 @@ func TestQueueProxyTLSConfig(t *testing.T) {
8264
if cfg.MaxVersion != tt.wantMax {
8365
t.Errorf("MaxVersion = %#x, want %#x", cfg.MaxVersion, tt.wantMax)
8466
}
85-
86-
tlsCfg := cfg.TLSConfig()
87-
if tlsCfg.MinVersion != tt.wantMin {
88-
t.Errorf("TLSConfig().MinVersion = %#x, want %#x", tlsCfg.MinVersion, tt.wantMin)
89-
}
90-
if tlsCfg.MaxVersion != tt.wantMax {
91-
t.Errorf("TLSConfig().MaxVersion = %#x, want %#x", tlsCfg.MaxVersion, tt.wantMax)
92-
}
9367
})
9468
}
9569
}

0 commit comments

Comments
 (0)