@@ -11,6 +11,7 @@ import (
11
11
"time"
12
12
13
13
corev1 "k8s.io/api/core/v1"
14
+ apierrors "k8s.io/apimachinery/pkg/api/errors"
14
15
"k8s.io/apimachinery/pkg/types"
15
16
"sigs.k8s.io/controller-runtime/pkg/client"
16
17
@@ -85,7 +86,7 @@ var _ = Describe("Certificates", func() {
85
86
86
87
AssertDBConnectionFromAppPod (namespace , clusterName , sampleAppFile , appPod )
87
88
88
- AssertCertificatesSecrets (namespace , clusterName , caSecName , tlsSecName , certs .CertTypeServer )
89
+ createAndAssertCertificatesSecrets (namespace , clusterName , caSecName , tlsSecName , certs .CertTypeServer , false )
89
90
90
91
By ("switching to user-supplied server certificates" , func () {
91
92
// Updating defaults certificates entries with user provided certificates,
@@ -124,7 +125,8 @@ var _ = Describe("Certificates", func() {
124
125
AssertCreateCluster (namespace , clusterName , sampleFile , env )
125
126
126
127
// Create certificates secret for client
127
- AssertCertificatesSecrets (namespace , clusterName , caSecNameClient , tlsSecNameClient , certs .CertTypeClient )
128
+ createAndAssertCertificatesSecrets (namespace , clusterName , caSecNameClient , tlsSecNameClient ,
129
+ certs .CertTypeClient , false )
128
130
129
131
By ("switching to user-supplied client certificates" , func () {
130
132
// Updating defaults certificates entries with user provided certificates,
@@ -162,9 +164,10 @@ var _ = Describe("Certificates", func() {
162
164
// Create cluster
163
165
AssertCreateCluster (namespace , clusterName , sampleFile , env )
164
166
// Create certificates secret for server
165
- AssertCertificatesSecrets (namespace , clusterName , caSecName , tlsSecName , certs .CertTypeServer )
167
+ createAndAssertCertificatesSecrets (namespace , clusterName , caSecName , tlsSecName , certs .CertTypeServer , false )
166
168
// Create certificates secret for client
167
- AssertCertificatesSecrets (namespace , clusterName , caSecNameClient , tlsSecNameClient , certs .CertTypeClient )
169
+ createAndAssertCertificatesSecrets (namespace , clusterName , caSecNameClient , tlsSecNameClient ,
170
+ certs .CertTypeClient , false )
168
171
169
172
By ("switching to user-supplied server and client certificates" , func () {
170
173
// Updating defaults certificates entries with user provided certificates,
@@ -219,7 +222,7 @@ var _ = Describe("Certificates", func() {
219
222
// Create a cluster in a namespace that will be deleted after the test
220
223
err := env .CreateNamespace (namespace )
221
224
Expect (err ).ToNot (HaveOccurred ())
222
- AssertCertificatesSecrets (namespace , clusterName , caSecName , tlsSecName , certs .CertTypeServer )
225
+ createAndAssertCertificatesSecrets (namespace , clusterName , caSecName , tlsSecName , certs .CertTypeServer , false )
223
226
AssertCreateCluster (namespace , clusterName , sampleFile , env )
224
227
AssertClientCertificatesSecretsUsingCnpPlugin (namespace , clusterName )
225
228
AssertDBConnectionFromAppPod (namespace , clusterName , sampleAppFileUserSuppliedCert , appPodUserSuppliedCert )
@@ -251,7 +254,8 @@ var _ = Describe("Certificates", func() {
251
254
Expect (err ).ToNot (HaveOccurred ())
252
255
253
256
// Create certificates secret for client
254
- AssertCertificatesSecrets (namespace , clusterName , caSecNameClient , tlsSecNameClient , certs .CertTypeClient )
257
+ createAndAssertCertificatesSecrets (namespace , clusterName , caSecNameClient , tlsSecNameClient ,
258
+ certs .CertTypeClient , false )
255
259
AssertCreateCluster (namespace , clusterName , sampleFile , env )
256
260
AssertDBConnectionFromAppPod (namespace , clusterName , sampleAppFileUserSuppliedCertClient , appPodUserSuppliedCert )
257
261
})
@@ -282,34 +286,26 @@ var _ = Describe("Certificates", func() {
282
286
Expect (err ).ToNot (HaveOccurred ())
283
287
284
288
// Create certificates secret for server
285
- AssertCertificatesSecrets (namespace , clusterName , caSecName , tlsSecName , certs .CertTypeServer )
289
+ createAndAssertCertificatesSecrets (namespace , clusterName , caSecName , tlsSecName , certs .CertTypeServer , false )
286
290
287
291
// Create certificates secret for client
288
- AssertCertificatesSecrets (namespace , clusterName , caSecNameClient , tlsSecNameClient , certs .CertTypeClient )
292
+ createAndAssertCertificatesSecrets (namespace , clusterName , caSecNameClient , tlsSecNameClient ,
293
+ certs .CertTypeClient , false )
289
294
AssertCreateCluster (namespace , clusterName , sampleFile , env )
290
295
AssertDBConnectionFromAppPod (namespace , clusterName , sampleUserSuppliedCertClientServer , appPodUserSuppliedCert )
291
296
})
292
297
})
293
298
})
294
299
295
- func AssertCertificatesSecrets (namespace , clusterName , caSecName , tlsSecName , certType string ) {
296
- // creating root CA certificates
297
- cluster := & apiv1.Cluster {}
298
- cluster .Namespace = namespace
299
- cluster .Name = clusterName
300
- secret := & corev1.Secret {}
301
- err := env .Client .Get (env .Ctx , client.ObjectKey {Namespace : namespace , Name : caSecName }, secret )
302
- Expect (err ).To (HaveOccurred ())
303
-
304
- caPair , err := certs .CreateRootCA (cluster .Name , namespace )
305
- Expect (err ).ToNot (HaveOccurred ())
300
+ func createAndAssertCertificatesSecrets (
301
+ namespace , clusterName , caSecName , tlsSecName , certType string , includeCAPrivateKey bool ) {
302
+ cluster , caPair := createSecretCA (namespace , clusterName , caSecName , includeCAPrivateKey )
306
303
307
- caSecret := caPair .GenerateCASecret (namespace , caSecName )
308
- // delete the key from the CA, as it is not needed in this case
309
- delete (caSecret .Data , certs .CAPrivateKeyKey )
310
- err = env .Client .Create (env .Ctx , caSecret )
311
- Expect (err ).ToNot (HaveOccurred ())
304
+ assertCACertificateCreation (namespace , certType , caPair , cluster , tlsSecName )
305
+ }
312
306
307
+ func assertCACertificateCreation (namespace string , certType string , caPair * certs.KeyPair ,
308
+ cluster * apiv1.Cluster , tlsSecName string ) {
313
309
if certType == certs .CertTypeServer {
314
310
By ("creating server TLS certificate" , func () {
315
311
serverPair , err := caPair .CreateAndSignPair (cluster .GetServiceReadWriteName (), certs .CertTypeServer ,
@@ -342,6 +338,29 @@ func AssertCertificatesSecrets(namespace, clusterName, caSecName, tlsSecName, ce
342
338
}
343
339
}
344
340
341
+ func createSecretCA (namespace string , clusterName string , caSecName string , includeCAPrivateKey bool ) (
342
+ * apiv1.Cluster , * certs.KeyPair ) {
343
+ // creating root CA certificates
344
+ cluster := & apiv1.Cluster {}
345
+ cluster .Namespace = namespace
346
+ cluster .Name = clusterName
347
+ secret := & corev1.Secret {}
348
+ err := env .Client .Get (env .Ctx , client.ObjectKey {Namespace : namespace , Name : caSecName }, secret )
349
+ Expect (apierrors .IsNotFound (err )).To (BeTrue ())
350
+
351
+ caPair , err := certs .CreateRootCA (cluster .Name , namespace )
352
+ Expect (err ).ToNot (HaveOccurred ())
353
+
354
+ caSecret := caPair .GenerateCASecret (namespace , caSecName )
355
+ // delete the key from the CA, as it is not needed in this case
356
+ if ! includeCAPrivateKey {
357
+ delete (caSecret .Data , certs .CAPrivateKeyKey )
358
+ }
359
+ err = env .Client .Create (env .Ctx , caSecret )
360
+ Expect (err ).ToNot (HaveOccurred ())
361
+ return cluster , caPair
362
+ }
363
+
345
364
func AssertClientCertificatesSecretsUsingCnpPlugin (namespace , clusterName string ) {
346
365
clientCertName := "cluster-cert"
347
366
By ("creating a client Certificate using the 'kubectl-cnp' plugin" , func () {
0 commit comments