Skip to content
This repository was archived by the owner on Sep 2, 2024. It is now read-only.

Commit 2cb3e9d

Browse files
upgrade to latest dependencies (#1362)
bumping knative.dev/eventing a13eebe...248a471: > 248a471 Eventing TLS: Configure CRDs to have addresses and CA certs (# 7105) > d2ce623 [main] Upgrade to latest dependencies (# 7109) > 6bfc2d4 [main] Format Go code (# 7108) > 855fbed Auto create events in channels (# 7089) > 0054bf3 Eventing TLS: Configure certificates to force rotate private keys (# 7104) > 6911db0 Tag line proposal (# 7045) bumping knative.dev/reconciler-test 7286e0a...26cee79: > 26cee79 [release-1.11] Create a client and transport per request in the TLS case to force TLS handshakes (# 553) Signed-off-by: Knative Automation <[email protected]>
1 parent 1027c8e commit 2cb3e9d

File tree

4 files changed

+63
-36
lines changed

4 files changed

+63
-36
lines changed

go.mod

+2-2
Original file line numberDiff line numberDiff line change
@@ -24,10 +24,10 @@ require (
2424
k8s.io/apimachinery v0.26.5
2525
k8s.io/client-go v0.26.5
2626
k8s.io/utils v0.0.0-20221108210102-8e77b1f39fe2
27-
knative.dev/eventing v0.37.1-0.20230720121212-a13eebe803bf
27+
knative.dev/eventing v0.38.0
2828
knative.dev/hack v0.0.0-20230712131415-ddae80293c43
2929
knative.dev/pkg v0.0.0-20230718152110-aef227e72ead
30-
knative.dev/reconciler-test v0.0.0-20230720092812-7286e0a369dc
30+
knative.dev/reconciler-test v0.0.0-20230726074640-26cee79ad63d
3131
sigs.k8s.io/yaml v1.3.0
3232
)
3333

go.sum

+4-4
Original file line numberDiff line numberDiff line change
@@ -967,14 +967,14 @@ k8s.io/kube-openapi v0.0.0-20221012153701-172d655c2280 h1:+70TFaan3hfJzs+7VK2o+O
967967
k8s.io/kube-openapi v0.0.0-20221012153701-172d655c2280/go.mod h1:+Axhij7bCpeqhklhUTe3xmOn6bWxolyZEeyaFpjGtl4=
968968
k8s.io/utils v0.0.0-20221108210102-8e77b1f39fe2 h1:GfD9OzL11kvZN5iArC6oTS7RTj7oJOIfnislxYlqTj8=
969969
k8s.io/utils v0.0.0-20221108210102-8e77b1f39fe2/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0=
970-
knative.dev/eventing v0.37.1-0.20230720121212-a13eebe803bf h1:KqqwFQD+qM6utzZH3l7B1/HT+LBT6F61t8cChde1weg=
971-
knative.dev/eventing v0.37.1-0.20230720121212-a13eebe803bf/go.mod h1:nd7MZ/O5nyNKlZ1m9XAxI9eSq2bYWJQfYogSXflRpqc=
970+
knative.dev/eventing v0.38.0 h1:n6/k9IJ1kOvpZx4CMLqa1FG7g2iBiyKXwBu1Fy/81q4=
971+
knative.dev/eventing v0.38.0/go.mod h1:JUqEC0zoyfYqhRHFz8VUxjkxH9G1cQ/Y+UvhXTxUXgI=
972972
knative.dev/hack v0.0.0-20230712131415-ddae80293c43 h1:3SE06uNfSFGm/5XS+0trbyCUpgsOaBeyhPQU8FPNFz8=
973973
knative.dev/hack v0.0.0-20230712131415-ddae80293c43/go.mod h1:yk2OjGDsbEnQjfxdm0/HJKS2WqTLEFg/N6nUs6Rqx3Q=
974974
knative.dev/pkg v0.0.0-20230718152110-aef227e72ead h1:2dDzorpKuVZW3Qp7TbirMMq16FbId8f6bacQFX8jXLw=
975975
knative.dev/pkg v0.0.0-20230718152110-aef227e72ead/go.mod h1:WmrwRV/P+hGHoMraAEfwg6ec+fBTf+Obu41v354Iabc=
976-
knative.dev/reconciler-test v0.0.0-20230720092812-7286e0a369dc h1:uzrOfQ30FKaynWRWUqEnKk6lP7SEl0ikC6jOfxFhf6A=
977-
knative.dev/reconciler-test v0.0.0-20230720092812-7286e0a369dc/go.mod h1:i+/PWK/n3HPgjXMoj5U7CA6WRW/C3c3EfHCQ0FmrhNM=
976+
knative.dev/reconciler-test v0.0.0-20230726074640-26cee79ad63d h1:B7s1+wFSkQF3oJFjMK3WGPiKvBYMatjgxqei0CX0BoA=
977+
knative.dev/reconciler-test v0.0.0-20230726074640-26cee79ad63d/go.mod h1:i+/PWK/n3HPgjXMoj5U7CA6WRW/C3c3EfHCQ0FmrhNM=
978978
pgregory.net/rapid v0.3.3 h1:jCjBsY4ln4Atz78QoBWxUEvAHaFyNDQg9+WU62aCn1U=
979979
pgregory.net/rapid v0.3.3/go.mod h1:UYpPVyjFHzYBGHIxLFoupi8vwk6rXNzRY9OMvVxFIOU=
980980
rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8=

vendor/knative.dev/reconciler-test/pkg/eventshub/sender/sender.go

+55-28
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ import (
3939
"github.com/cloudevents/sdk-go/v2/types"
4040
"github.com/kelseyhightower/envconfig"
4141
"go.opencensus.io/trace"
42+
"go.uber.org/atomic"
4243
"go.uber.org/zap"
4344
"k8s.io/apimachinery/pkg/util/wait"
4445
"knative.dev/pkg/logging"
@@ -116,6 +117,10 @@ type generator struct {
116117
eventQueue []conformanceevent.Event
117118
}
118119

120+
var (
121+
verifyConnectionCounter = atomic.NewUint64(0)
122+
)
123+
119124
func Start(ctx context.Context, logs *eventshub.EventLogs, clientOpts ...eventshub.ClientOption) error {
120125
var env generator
121126
if err := envconfig.Process("", &env); err != nil {
@@ -143,27 +148,9 @@ func Start(ctx context.Context, logs *eventshub.EventLogs, clientOpts ...eventsh
143148
logging.FromContext(ctx).Info("awake, continuing")
144149
}
145150

146-
httpClient := nethttp.DefaultClient
147-
148-
if env.EnforceTLS {
149-
caCertPool, err := x509.SystemCertPool()
150-
if err != nil {
151-
return fmt.Errorf("failed to create cert pool %s: %w", env.Sink, err)
152-
}
153-
caCertPool.AppendCertsFromPEM([]byte(env.CACerts))
154-
155-
transport := nethttp.DefaultTransport.(*nethttp.Transport).Clone()
156-
transport.TLSClientConfig = &tls.Config{
157-
RootCAs: caCertPool,
158-
MinVersion: tls.VersionTLS12,
159-
VerifyConnection: func(state tls.ConnectionState) error {
160-
if err := logs.Vent(env.peerCertificatesReceived(state)); err != nil {
161-
return err
162-
}
163-
return nil
164-
},
165-
}
166-
httpClient = &nethttp.Client{Transport: transport}
151+
httpClient, _, err := createClient(ctx, env, logs)
152+
if err != nil {
153+
return err
167154
}
168155

169156
if env.ProbeSink {
@@ -185,12 +172,6 @@ func Start(ctx context.Context, logs *eventshub.EventLogs, clientOpts ...eventsh
185172
}
186173
}
187174

188-
for _, opt := range clientOpts {
189-
if err := opt(httpClient); err != nil {
190-
return fmt.Errorf("unable to apply option: %w", err)
191-
}
192-
}
193-
194175
switch env.EventEncoding {
195176
case "binary":
196177
ctx = cloudevents.WithEncodingBinary(ctx)
@@ -203,6 +184,19 @@ func Start(ctx context.Context, logs *eventshub.EventLogs, clientOpts ...eventsh
203184
ticker := time.NewTicker(period)
204185
for {
205186

187+
// when enforcing TLS we want to create multiple transports to force multiple TLS handshakes
188+
// on each request sent so that VerifyConnection is called multiple times.
189+
httpClient, _, err = createClient(ctx, env, logs)
190+
if err != nil {
191+
return err
192+
}
193+
194+
for _, opt := range clientOpts {
195+
if err := opt(httpClient); err != nil {
196+
return fmt.Errorf("unable to apply option: %w", err)
197+
}
198+
}
199+
206200
ctx, span := trace.StartSpan(ctx, "eventshub-sender")
207201

208202
req, event, err := env.next(ctx)
@@ -251,13 +245,46 @@ func Start(ctx context.Context, logs *eventshub.EventLogs, clientOpts ...eventsh
251245
}
252246
}
253247

254-
func (g *generator) peerCertificatesReceived(state tls.ConnectionState) eventshub.EventInfo {
248+
func createClient(ctx context.Context, env generator, logs *eventshub.EventLogs) (*nethttp.Client, *nethttp.Transport, error) {
249+
if env.EnforceTLS {
250+
caCertPool, err := x509.SystemCertPool()
251+
if err != nil {
252+
return nil, nil, fmt.Errorf("failed to create cert pool %s: %w", env.Sink, err)
253+
}
254+
caCertPool.AppendCertsFromPEM([]byte(env.CACerts))
255+
256+
transport := nethttp.DefaultTransport.(*nethttp.Transport).Clone()
257+
258+
// Force multiple TLS handshakes
259+
transport.DisableKeepAlives = true
260+
transport.IdleConnTimeout = 500 * time.Millisecond
261+
262+
transport.TLSClientConfig = &tls.Config{
263+
RootCAs: caCertPool,
264+
MinVersion: tls.VersionTLS12,
265+
VerifyConnection: func(state tls.ConnectionState) error {
266+
logging.FromContext(ctx).Infow("VerifyConnection")
267+
268+
if err := logs.Vent(env.peerCertificatesReceived(verifyConnectionCounter.Inc(), state)); err != nil {
269+
return err
270+
}
271+
return nil
272+
},
273+
}
274+
return &nethttp.Client{Transport: transport}, transport, nil
275+
}
276+
277+
return nethttp.DefaultClient, nethttp.DefaultTransport.(*nethttp.Transport), nil
278+
}
279+
280+
func (g *generator) peerCertificatesReceived(counter uint64, state tls.ConnectionState) eventshub.EventInfo {
255281
return eventshub.EventInfo{
256282
Kind: eventshub.PeerCertificatesReceived,
257283
Connection: eventshub.TLSConnectionStateToConnection(&state),
258284
Origin: g.SenderName,
259285
Observer: g.SenderName,
260286
Time: time.Now(),
287+
Sequence: counter,
261288
}
262289
}
263290

vendor/modules.txt

+2-2
Original file line numberDiff line numberDiff line change
@@ -1238,7 +1238,7 @@ k8s.io/utils/net
12381238
k8s.io/utils/pointer
12391239
k8s.io/utils/strings/slices
12401240
k8s.io/utils/trace
1241-
# knative.dev/eventing v0.37.1-0.20230720121212-a13eebe803bf
1241+
# knative.dev/eventing v0.38.0
12421242
## explicit; go 1.19
12431243
knative.dev/eventing/cmd/heartbeats
12441244
knative.dev/eventing/pkg/adapter/v2
@@ -1447,7 +1447,7 @@ knative.dev/pkg/webhook/resourcesemantics
14471447
knative.dev/pkg/webhook/resourcesemantics/conversion
14481448
knative.dev/pkg/webhook/resourcesemantics/defaulting
14491449
knative.dev/pkg/webhook/resourcesemantics/validation
1450-
# knative.dev/reconciler-test v0.0.0-20230720092812-7286e0a369dc
1450+
# knative.dev/reconciler-test v0.0.0-20230726074640-26cee79ad63d
14511451
## explicit; go 1.18
14521452
knative.dev/reconciler-test/cmd/eventshub
14531453
knative.dev/reconciler-test/pkg/environment

0 commit comments

Comments
 (0)