From afc2a71cf8e4e8032146955f49744d1dacaf2b58 Mon Sep 17 00:00:00 2001 From: Markus Maga Date: Tue, 23 Jul 2019 17:56:36 +0200 Subject: [PATCH 1/3] feat: allow setting type in external secret to support other than Opaque secrets --- examples/dockerconfig-example.yml | 10 ++++++++++ examples/tls-example.yml | 14 ++++++++++++++ lib/poller.js | 2 +- 3 files changed, 25 insertions(+), 1 deletion(-) create mode 100644 examples/dockerconfig-example.yml create mode 100644 examples/tls-example.yml diff --git a/examples/dockerconfig-example.yml b/examples/dockerconfig-example.yml new file mode 100644 index 00000000..3fcf812c --- /dev/null +++ b/examples/dockerconfig-example.yml @@ -0,0 +1,10 @@ +apiVersion: kubernetes-client.io/v1 +kind: ExternalSecret +metadata: + name: dockerhub-secret +secretDescriptor: + backendType: secretsManager + type: kubernetes.io/dockerconfigjson + data: + - key: /development/dockerhub + name: .dockerconfigjson diff --git a/examples/tls-example.yml b/examples/tls-example.yml new file mode 100644 index 00000000..8d6038ae --- /dev/null +++ b/examples/tls-example.yml @@ -0,0 +1,14 @@ +apiVersion: kubernetes-client.io/v1 +kind: ExternalSecret +metadata: + name: dockerhub-secret +secretDescriptor: + backendType: secretsManager + type: kubernetes.io/tls + data: + - key: /development/certifcate + property: crt + name: tls.crt + - key: /development/certifcate + property: key + name: tls.key diff --git a/lib/poller.js b/lib/poller.js index 2e69ef6e..9f9c716f 100644 --- a/lib/poller.js +++ b/lib/poller.js @@ -60,7 +60,7 @@ class Poller { this._ownerReference ] }, - type: 'Opaque', + type: secretDescriptor.type || 'Opaque', data } } From 476196541d063f02bb8f16e26037b85c4082184a Mon Sep 17 00:00:00 2001 From: Markus Maga Date: Fri, 26 Jul 2019 18:17:01 +0200 Subject: [PATCH 2/3] chore(example): fix typo --- examples/tls-example.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/examples/tls-example.yml b/examples/tls-example.yml index 8d6038ae..db87ff2e 100644 --- a/examples/tls-example.yml +++ b/examples/tls-example.yml @@ -6,9 +6,9 @@ secretDescriptor: backendType: secretsManager type: kubernetes.io/tls data: - - key: /development/certifcate + - key: /development/certificate property: crt name: tls.crt - - key: /development/certifcate + - key: /development/certificate property: key name: tls.key From dc5437950d6d86cf0ec80f98786f5d21263650d9 Mon Sep 17 00:00:00 2001 From: Markus Maga Date: Fri, 26 Jul 2019 18:17:09 +0200 Subject: [PATCH 3/3] fix: tests --- lib/poller.test.js | 53 ++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 49 insertions(+), 4 deletions(-) diff --git a/lib/poller.test.js b/lib/poller.test.js index 18f5579a..672bb98e 100644 --- a/lib/poller.test.js +++ b/lib/poller.test.js @@ -57,7 +57,7 @@ describe('Poller', () => { backendMock.getSecretManifestData = sinon.stub() }) - it('creates secret manifest', async () => { + it('creates secret manifest - no type (backwards compat)', async () => { const poller = pollerFactory({ backendType: 'fakeBackendType', name: 'fakeSecretName', @@ -99,6 +99,51 @@ describe('Poller', () => { } }) }) + + it('creates secret manifest - with type', async () => { + const poller = pollerFactory({ + type: 'dummy-test-type', + backendType: 'fakeBackendType', + name: 'fakeSecretName', + properties: [ + 'fakePropertyName1', + 'fakePropertyName2' + ] + }) + + backendMock.getSecretManifestData.resolves({ + fakePropertyName1: 'ZmFrZVByb3BlcnR5VmFsdWUx', // base 64 value + fakePropertyName2: 'ZmFrZVByb3BlcnR5VmFsdWUy' // base 64 value + }) + + const secretManifest = await poller._createSecretManifest() + + expect(backendMock.getSecretManifestData.calledWith({ + secretDescriptor: { + type: 'dummy-test-type', + backendType: 'fakeBackendType', + name: 'fakeSecretName', + properties: [ + 'fakePropertyName1', + 'fakePropertyName2' + ] + } + })).to.equal(true) + + expect(secretManifest).deep.equals({ + apiVersion: 'v1', + kind: 'Secret', + metadata: { + name: 'fakeSecretName', + ownerReferences: [ownerReference] + }, + type: 'dummy-test-type', + data: { + fakePropertyName1: 'ZmFrZVByb3BlcnR5VmFsdWUx', // base 64 value + fakePropertyName2: 'ZmFrZVByb3BlcnR5VmFsdWUy' // base 64 value + } + }) + }) }) describe('_poll', () => { @@ -151,7 +196,7 @@ describe('Poller', () => { metadata: { name: 'fakeSecretName' }, - type: 'Opaque', + type: 'some-type', data: { fakePropertyName: 'ZmFrZVByb3BlcnR5VmFsdWU=' } @@ -170,7 +215,7 @@ describe('Poller', () => { metadata: { name: 'fakeSecretName' }, - type: 'Opaque', + type: 'some-type', data: { fakePropertyName: 'ZmFrZVByb3BlcnR5VmFsdWU=' } @@ -195,7 +240,7 @@ describe('Poller', () => { metadata: { name: 'fakeSecretName' }, - type: 'Opaque', + type: 'some-type', data: { fakePropertyName: 'ZmFrZVByb3BlcnR5VmFsdWU=' }