Skip to content
This repository was archived by the owner on Jul 26, 2022. It is now read-only.

Commit 226697a

Browse files
Flydivernyjxpearce-godaddy
authored andcommitted
feat: allow setting type in external secret to support other than Opaque secrets (#130)
* feat: allow setting type in external secret to support other than Opaque secrets
1 parent 8860ef3 commit 226697a

File tree

4 files changed

+74
-5
lines changed

4 files changed

+74
-5
lines changed

examples/dockerconfig-example.yml

+10
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
apiVersion: kubernetes-client.io/v1
2+
kind: ExternalSecret
3+
metadata:
4+
name: dockerhub-secret
5+
secretDescriptor:
6+
backendType: secretsManager
7+
type: kubernetes.io/dockerconfigjson
8+
data:
9+
- key: /development/dockerhub
10+
name: .dockerconfigjson

examples/tls-example.yml

+14
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
apiVersion: kubernetes-client.io/v1
2+
kind: ExternalSecret
3+
metadata:
4+
name: dockerhub-secret
5+
secretDescriptor:
6+
backendType: secretsManager
7+
type: kubernetes.io/tls
8+
data:
9+
- key: /development/certificate
10+
property: crt
11+
name: tls.crt
12+
- key: /development/certificate
13+
property: key
14+
name: tls.key

lib/poller.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ class Poller {
6060
this._ownerReference
6161
]
6262
},
63-
type: 'Opaque',
63+
type: secretDescriptor.type || 'Opaque',
6464
data
6565
}
6666
}

lib/poller.test.js

+49-4
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ describe('Poller', () => {
5757
backendMock.getSecretManifestData = sinon.stub()
5858
})
5959

60-
it('creates secret manifest', async () => {
60+
it('creates secret manifest - no type (backwards compat)', async () => {
6161
const poller = pollerFactory({
6262
backendType: 'fakeBackendType',
6363
name: 'fakeSecretName',
@@ -99,6 +99,51 @@ describe('Poller', () => {
9999
}
100100
})
101101
})
102+
103+
it('creates secret manifest - with type', async () => {
104+
const poller = pollerFactory({
105+
type: 'dummy-test-type',
106+
backendType: 'fakeBackendType',
107+
name: 'fakeSecretName',
108+
properties: [
109+
'fakePropertyName1',
110+
'fakePropertyName2'
111+
]
112+
})
113+
114+
backendMock.getSecretManifestData.resolves({
115+
fakePropertyName1: 'ZmFrZVByb3BlcnR5VmFsdWUx', // base 64 value
116+
fakePropertyName2: 'ZmFrZVByb3BlcnR5VmFsdWUy' // base 64 value
117+
})
118+
119+
const secretManifest = await poller._createSecretManifest()
120+
121+
expect(backendMock.getSecretManifestData.calledWith({
122+
secretDescriptor: {
123+
type: 'dummy-test-type',
124+
backendType: 'fakeBackendType',
125+
name: 'fakeSecretName',
126+
properties: [
127+
'fakePropertyName1',
128+
'fakePropertyName2'
129+
]
130+
}
131+
})).to.equal(true)
132+
133+
expect(secretManifest).deep.equals({
134+
apiVersion: 'v1',
135+
kind: 'Secret',
136+
metadata: {
137+
name: 'fakeSecretName',
138+
ownerReferences: [ownerReference]
139+
},
140+
type: 'dummy-test-type',
141+
data: {
142+
fakePropertyName1: 'ZmFrZVByb3BlcnR5VmFsdWUx', // base 64 value
143+
fakePropertyName2: 'ZmFrZVByb3BlcnR5VmFsdWUy' // base 64 value
144+
}
145+
})
146+
})
102147
})
103148

104149
describe('_poll', () => {
@@ -151,7 +196,7 @@ describe('Poller', () => {
151196
metadata: {
152197
name: 'fakeSecretName'
153198
},
154-
type: 'Opaque',
199+
type: 'some-type',
155200
data: {
156201
fakePropertyName: 'ZmFrZVByb3BlcnR5VmFsdWU='
157202
}
@@ -170,7 +215,7 @@ describe('Poller', () => {
170215
metadata: {
171216
name: 'fakeSecretName'
172217
},
173-
type: 'Opaque',
218+
type: 'some-type',
174219
data: {
175220
fakePropertyName: 'ZmFrZVByb3BlcnR5VmFsdWU='
176221
}
@@ -195,7 +240,7 @@ describe('Poller', () => {
195240
metadata: {
196241
name: 'fakeSecretName'
197242
},
198-
type: 'Opaque',
243+
type: 'some-type',
199244
data: {
200245
fakePropertyName: 'ZmFrZVByb3BlcnR5VmFsdWU='
201246
}

0 commit comments

Comments
 (0)