Skip to content

Commit 5ff248f

Browse files
author
Daniel Ward
committed
feat: enable secret types
1 parent 720c4b1 commit 5ff248f

File tree

3 files changed

+62
-1
lines changed

3 files changed

+62
-1
lines changed

api/v1/syncedsecret_types.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ package v1
1717

1818
import (
1919
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
20+
corev1 "k8s.io/api/core/v1"
2021
)
2122

2223
// EDIT THIS FILE! THIS IS SCAFFOLDING FOR YOU TO OWN!
@@ -104,6 +105,8 @@ type SyncedSecret struct {
104105

105106
Spec SyncedSecretSpec `json:"spec,omitempty"`
106107
Status SyncedSecretStatus `json:"status,omitempty"`
108+
109+
Type corev1.SecretType `json:"type,omitempty"`
107110
}
108111

109112
// +kubebuilder:object:root=true

pkg/k8ssecret/secret.go

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -153,13 +153,19 @@ func GenerateK8SSecret(
153153
}
154154
}
155155

156+
157+
secretType := corev1.SecretTypeOpaque
158+
if cs.Type != "" {
159+
secretType = cs.Type
160+
}
161+
156162
secret := &corev1.Secret{
157163
TypeMeta: metav1.TypeMeta{
158164
APIVersion: "v1",
159165
Kind: "Secret",
160166
},
161167
ObjectMeta: secretMeta,
162-
Type: "Opaque",
168+
Type: secretType,
163169
Data: data,
164170
}
165171

pkg/k8ssecret/secret_test.go

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -160,6 +160,58 @@ func TestGenerateSecret(t *testing.T) {
160160
"field2": []byte("value2"),
161161
},
162162
},
163+
},{
164+
name: "it should support fields with a hardcoded value for Secret Type",
165+
have: have{
166+
SyncedSecret: secretsv1.SyncedSecret{
167+
ObjectMeta: metav1.ObjectMeta{
168+
Name: "secret-name",
169+
Namespace: "secret-namespace",
170+
},
171+
Spec: secretsv1.SyncedSecretSpec{
172+
SecretMetadata: metav1.ObjectMeta{
173+
Name: "secret-name",
174+
Namespace: "secret-namespace",
175+
Annotations: map[string]string{
176+
"randomkey": "random/string",
177+
},
178+
},
179+
Data: []*secretsv1.SecretField{
180+
{
181+
Name: _s("foo"),
182+
Value: _s("bar"),
183+
},
184+
{
185+
Name: _s("field2"),
186+
Value: _s("value2"),
187+
},
188+
},
189+
IAMRole: _s("iam_role"),
190+
},
191+
Type: "kubernetes.io/dockerconfigjson",
192+
},
193+
err: nil,
194+
cachedSecrets: secretsmanager.Secrets{"cachedSecret1": {}, "cachedSecret2": {}},
195+
secretValueGetter: mockgetSecretValue,
196+
},
197+
want: &corev1.Secret{
198+
TypeMeta: metav1.TypeMeta{
199+
Kind: "Secret",
200+
APIVersion: "v1",
201+
},
202+
ObjectMeta: metav1.ObjectMeta{
203+
Name: "secret-name",
204+
Namespace: "secret-namespace",
205+
Annotations: map[string]string{
206+
"randomkey": "random/string",
207+
},
208+
},
209+
Type: "kubernetes.io/dockerconfigjson",
210+
Data: map[string][]byte{
211+
"foo": []byte("bar"),
212+
"field2": []byte("value2"),
213+
},
214+
},
163215
},
164216
{
165217
name: "it should support references to a single field in an AWS Secret",

0 commit comments

Comments
 (0)