Skip to content

Commit 738ffcd

Browse files
fix: honor insecureSkipTLS in OCI storage secret
1 parent 4179f04 commit 738ffcd

3 files changed

Lines changed: 73 additions & 15 deletions

File tree

e2e/single-cluster/oci_registry_test.go

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -54,13 +54,13 @@ func createOCIRegistrySecret(
5454
Namespace: namespace,
5555
},
5656
Data: map[string][]byte{
57-
ocistorage.OCISecretReference: []byte(reference),
58-
ocistorage.OCISecretUsername: []byte(username),
59-
ocistorage.OCISecretPassword: []byte(password),
60-
ocistorage.OCISecretAgentUsername: []byte(agentUsername),
61-
ocistorage.OCISecretAgentPassword: []byte(agentPassword),
62-
ocistorage.OCISecretInsecure: []byte(strconv.FormatBool(insecure)),
63-
ocistorage.OCISecretBasicHTTP: []byte(strconv.FormatBool(false)),
57+
ocistorage.OCISecretReference: []byte(reference),
58+
ocistorage.OCISecretUsername: []byte(username),
59+
ocistorage.OCISecretPassword: []byte(password),
60+
ocistorage.OCISecretAgentUsername: []byte(agentUsername),
61+
ocistorage.OCISecretAgentPassword: []byte(agentPassword),
62+
ocistorage.OCISecretInsecureSkipTLS: []byte(strconv.FormatBool(insecure)),
63+
ocistorage.OCISecretBasicHTTP: []byte(strconv.FormatBool(false)),
6464
},
6565
Type: corev1.SecretType(fleet.SecretTypeOCIStorage),
6666
}

internal/ocistorage/secret.go

Lines changed: 26 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -13,13 +13,14 @@ import (
1313
)
1414

1515
const (
16-
OCISecretUsername = "username"
17-
OCISecretPassword = "password"
18-
OCISecretAgentUsername = "agentUsername"
19-
OCISecretAgentPassword = "agentPassword"
20-
OCISecretReference = "reference"
21-
OCISecretBasicHTTP = "basicHTTP"
22-
OCISecretInsecure = "insecure"
16+
OCISecretUsername = "username"
17+
OCISecretPassword = "password"
18+
OCISecretAgentUsername = "agentUsername"
19+
OCISecretAgentPassword = "agentPassword"
20+
OCISecretReference = "reference"
21+
OCISecretBasicHTTP = "basicHTTP"
22+
OCISecretInsecureSkipTLS = "insecureSkipTLS"
23+
OCISecretInsecure = "insecure" // legacy alias
2324
)
2425

2526
// ReadOptsFromSecret reads the secret identified by the given NamespacedName and
@@ -73,7 +74,12 @@ func ReadOptsFromSecret(ctx context.Context, c client.Reader, ns client.ObjectKe
7374
return OCIOpts{}, err
7475
}
7576

76-
opts.InsecureSkipTLS, err = getBoolValueFromSecret(secret.Data, OCISecretInsecure, false)
77+
opts.InsecureSkipTLS, err = getBoolValueFromSecretWithFallback(
78+
secret.Data,
79+
false,
80+
OCISecretInsecureSkipTLS,
81+
OCISecretInsecure,
82+
)
7783
if err != nil {
7884
return OCIOpts{}, err
7985
}
@@ -108,3 +114,15 @@ func getBoolValueFromSecret(data map[string][]byte, key string, required bool) (
108114

109115
return boolValue, nil
110116
}
117+
118+
func getBoolValueFromSecretWithFallback(data map[string][]byte, required bool, keys ...string) (bool, error) {
119+
for _, key := range keys {
120+
if _, ok := data[key]; ok {
121+
return getBoolValueFromSecret(data, key, true)
122+
}
123+
}
124+
if !required {
125+
return false, nil
126+
}
127+
return false, fmt.Errorf("key %q not found in secret", keys[0])
128+
}

internal/ocistorage/secret_test.go

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,46 @@ var _ = Describe("OCIOpts loaded from secret", func() {
7676
})
7777
})
7878

79+
When("the given oci storage secret uses the documented insecureSkipTLS field", func() {
80+
BeforeEach(func() {
81+
secretName = "test"
82+
secretData = map[string][]byte{
83+
OCISecretReference: []byte("reference"),
84+
OCISecretInsecureSkipTLS: []byte("true"),
85+
}
86+
secretType = fleet.SecretTypeOCIStorage
87+
secretGetErrorMessage = ""
88+
secretGetNotFoundError = false
89+
})
90+
It("returns the expected OCIOpts from the data in the secret", func() {
91+
ns := client.ObjectKey{Name: secretName, Namespace: "test"}
92+
opts, err := ReadOptsFromSecret(context.TODO(), mockClient, ns)
93+
Expect(err).ToNot(HaveOccurred())
94+
Expect(opts.Reference).To(Equal(string(secretData[OCISecretReference])))
95+
Expect(opts.InsecureSkipTLS).To(BeTrue())
96+
})
97+
})
98+
99+
When("the oci storage secret contains both insecure keys", func() {
100+
BeforeEach(func() {
101+
secretName = "test"
102+
secretData = map[string][]byte{
103+
OCISecretReference: []byte("reference"),
104+
OCISecretInsecureSkipTLS: []byte("false"),
105+
OCISecretInsecure: []byte("true"),
106+
}
107+
secretType = fleet.SecretTypeOCIStorage
108+
secretGetErrorMessage = ""
109+
secretGetNotFoundError = false
110+
})
111+
It("prefers insecureSkipTLS over the legacy insecure field", func() {
112+
ns := client.ObjectKey{Name: secretName, Namespace: "test"}
113+
opts, err := ReadOptsFromSecret(context.TODO(), mockClient, ns)
114+
Expect(err).ToNot(HaveOccurred())
115+
Expect(opts.InsecureSkipTLS).To(BeFalse())
116+
})
117+
})
118+
79119
When("the secret name is not set, but a default secret exists", func() {
80120
BeforeEach(func() {
81121
secretName = ""

0 commit comments

Comments
 (0)