Skip to content

Commit 04d916d

Browse files
authored
Merge pull request #997 from cappyzawa/feat/tls-config-from-secret-ref-options
runtime/secrets: add TLSConfigOption support to TLSConfigFromSecretRef
2 parents dbf1d22 + 4642dab commit 04d916d

File tree

3 files changed

+19
-4
lines changed

3 files changed

+19
-4
lines changed

oci/tests/integration/go.mod

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ require (
2222
github.com/fluxcd/pkg/cache v0.10.0
2323
github.com/fluxcd/pkg/git v0.34.0
2424
github.com/fluxcd/pkg/git/gogit v0.37.0
25-
github.com/fluxcd/pkg/runtime v0.77.0
25+
github.com/fluxcd/pkg/runtime v0.78.0
2626
github.com/fluxcd/test-infra/tftestenv v0.0.0-20250626232827-e0ca9c3f8d7b
2727
github.com/go-git/go-git/v5 v5.16.2
2828
github.com/google/go-containerregistry v0.20.6

runtime/secrets/reader.go

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,12 +35,15 @@ import (
3535
//
3636
// The targetURL parameter is used to set the ServerName for proper SNI support
3737
// in virtual hosting environments.
38-
func TLSConfigFromSecretRef(ctx context.Context, c client.Client, secretRef types.NamespacedName, targetURL string) (*tls.Config, error) {
38+
//
39+
// Optional TLSConfigOption parameters can be used to configure CA certificate handling:
40+
// - WithSystemCertPool(): Include system certificates in addition to user-provided CA
41+
func TLSConfigFromSecretRef(ctx context.Context, c client.Client, secretRef types.NamespacedName, targetURL string, opts ...TLSConfigOption) (*tls.Config, error) {
3942
secret, err := getSecret(ctx, c, secretRef)
4043
if err != nil {
4144
return nil, err
4245
}
43-
return TLSConfigFromSecret(ctx, secret, targetURL)
46+
return TLSConfigFromSecret(ctx, secret, targetURL, opts...)
4447
}
4548

4649
// ProxyURLFromSecretRef creates a proxy URL from a Kubernetes secret reference.

runtime/secrets/reader_test.go

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@ func TestTLSConfigFromSecretRef(t *testing.T) {
4242
secretRef types.NamespacedName
4343
secret *corev1.Secret // Secret to add to fake client (nil = not added)
4444
targetURL string
45+
opts []secrets.TLSConfigOption
4546
expectedServerName string
4647
errMsg string
4748
}{
@@ -74,6 +75,17 @@ func TestTLSConfigFromSecretRef(t *testing.T) {
7475
targetURL: "https://example.com",
7576
expectedServerName: "example.com",
7677
},
78+
{
79+
name: "TLS secret with WithSystemCertPool option",
80+
secretRef: types.NamespacedName{Name: "tls-secret", Namespace: testNS},
81+
secret: testSecret(
82+
withName("tls-secret"),
83+
withData(map[string][]byte{
84+
secrets.KeyCACert: caCert,
85+
}),
86+
),
87+
opts: []secrets.TLSConfigOption{secrets.WithSystemCertPool()},
88+
},
7789
}
7890

7991
for _, tt := range tests {
@@ -91,7 +103,7 @@ func TestTLSConfigFromSecretRef(t *testing.T) {
91103
}
92104
c := fakeClient(objects...)
93105

94-
tlsConfig, err := secrets.TLSConfigFromSecretRef(ctx, c, tt.secretRef, tt.targetURL)
106+
tlsConfig, err := secrets.TLSConfigFromSecretRef(ctx, c, tt.secretRef, tt.targetURL, tt.opts...)
95107

96108
if tt.errMsg != "" {
97109
g.Expect(err).To(MatchError(ContainSubstring(tt.errMsg)))

0 commit comments

Comments
 (0)