@@ -21,11 +21,12 @@ import (
21
21
22
22
var (
23
23
testConfig = Config {
24
- DaemonSet : types.NamespacedName {Name : "test-telemetry-fluent-bit" , Namespace : "default" },
25
- SectionsConfigMap : types.NamespacedName {Name : "test-telemetry-fluent-bit-sections" , Namespace : "default" },
26
- FilesConfigMap : types.NamespacedName {Name : "test-telemetry-fluent-bit-files" , Namespace : "default" },
27
- EnvSecret : types.NamespacedName {Name : "test-telemetry-fluent-bit-env" , Namespace : "default" },
28
- OverrideConfigMap : types.NamespacedName {Name : "override-config" , Namespace : "default" },
24
+ DaemonSet : types.NamespacedName {Name : "test-telemetry-fluent-bit" , Namespace : "default" },
25
+ SectionsConfigMap : types.NamespacedName {Name : "test-telemetry-fluent-bit-sections" , Namespace : "default" },
26
+ FilesConfigMap : types.NamespacedName {Name : "test-telemetry-fluent-bit-files" , Namespace : "default" },
27
+ EnvSecret : types.NamespacedName {Name : "test-telemetry-fluent-bit-env" , Namespace : "default" },
28
+ OutputTLSConfigSecret : types.NamespacedName {Name : "test-telemetry-fluent-bit-output-tls-config" , Namespace : "default" },
29
+ OverrideConfigMap : types.NamespacedName {Name : "override-config" , Namespace : "default" },
29
30
DaemonSetConfig : resources.DaemonSetConfig {
30
31
FluentBitImage : "my-fluent-bit-image" ,
31
32
FluentBitConfigPrepperImage : "my-fluent-bit-config-image" ,
@@ -396,3 +397,124 @@ func TestSyncReferencedSecrets(t *testing.T) {
396
397
require .NotContains (t , envSecret .Data , "HTTP_DEFAULT_CREDS_PASSWORD" )
397
398
})
398
399
}
400
+
401
+ func TestSyncTLSConfigSecrets (t * testing.T ) {
402
+ allPipelines := telemetryv1alpha1.LogPipelineList {
403
+ Items : []telemetryv1alpha1.LogPipeline {
404
+ {
405
+ ObjectMeta : metav1.ObjectMeta {Name : "pipeline-1" },
406
+ Spec : telemetryv1alpha1.LogPipelineSpec {
407
+ Output : telemetryv1alpha1.Output {
408
+ HTTP : & telemetryv1alpha1.HTTPOutput {
409
+ TLSConfig : telemetryv1alpha1.TLSConfig {
410
+ Disabled : false ,
411
+ SkipCertificateValidation : false ,
412
+ CA : telemetryv1alpha1.ValueType {
413
+ Value : "fake-ca-value" ,
414
+ },
415
+ Cert : telemetryv1alpha1.ValueType {
416
+ Value : "fake-cert-value" ,
417
+ },
418
+ Key : telemetryv1alpha1.ValueType {
419
+ ValueFrom : & telemetryv1alpha1.ValueFromSource {
420
+ SecretKeyRef : & telemetryv1alpha1.SecretKeyRef {
421
+ Name : "my-key-secret" ,
422
+ Namespace : "default" ,
423
+ Key : "my-key.key" ,
424
+ },
425
+ },
426
+ },
427
+ },
428
+ },
429
+ },
430
+ },
431
+ },
432
+ },
433
+ }
434
+
435
+ t .Run ("should add output TLS config to secret during first sync" , func (t * testing.T ) {
436
+ keySecret := corev1.Secret {
437
+ ObjectMeta : metav1.ObjectMeta {
438
+ Name : "my-key-secret" ,
439
+ Namespace : "default" ,
440
+ },
441
+ Data : map [string ][]byte {"my-key.key" : []byte ("fake-key-value" )},
442
+ }
443
+
444
+ fakeClient := fake .NewClientBuilder ().WithObjects (& keySecret ).Build ()
445
+ sut := syncer {fakeClient , testConfig }
446
+ err := sut .syncReferencedSecrets (context .Background (), & allPipelines )
447
+ require .NoError (t , err )
448
+
449
+ var tlsConfigSecret corev1.Secret
450
+ err = fakeClient .Get (context .Background (), testConfig .OutputTLSConfigSecret , & tlsConfigSecret )
451
+ require .NoError (t , err )
452
+ require .Contains (t , tlsConfigSecret .Data , "pipeline-1-ca.crt" )
453
+ require .Contains (t , tlsConfigSecret .Data , "pipeline-1-cert.crt" )
454
+ require .Contains (t , tlsConfigSecret .Data , "pipeline-1-key.crt" )
455
+ require .Equal (t , []byte ("fake-ca-value" ), tlsConfigSecret .Data ["pipeline-1-ca.crt" ])
456
+ require .Equal (t , []byte ("fake-cert-value" ), tlsConfigSecret .Data ["pipeline-1-cert.crt" ])
457
+ require .Equal (t , []byte ("fake-key-value" ), tlsConfigSecret .Data ["pipeline-1-key.crt" ])
458
+ require .Len (t , tlsConfigSecret .OwnerReferences , 1 )
459
+ require .Equal (t , allPipelines .Items [0 ].Name , tlsConfigSecret .OwnerReferences [0 ].Name )
460
+ })
461
+
462
+ t .Run ("should update output TLS config in secret during subsequent sync" , func (t * testing.T ) {
463
+ keySecret := corev1.Secret {
464
+ ObjectMeta : metav1.ObjectMeta {
465
+ Name : "my-key-secret" ,
466
+ Namespace : "default" ,
467
+ },
468
+ Data : map [string ][]byte {"my-key.key" : []byte ("fake-key-value" )},
469
+ }
470
+ fakeClient := fake .NewClientBuilder ().WithObjects (& keySecret ).Build ()
471
+
472
+ sut := syncer {fakeClient , testConfig }
473
+ err := sut .syncReferencedSecrets (context .Background (), & allPipelines )
474
+ require .NoError (t , err )
475
+
476
+ keySecret .Data ["my-key.key" ] = []byte ("new-fake-key-value" )
477
+ err = fakeClient .Update (context .Background (), & keySecret )
478
+ require .NoError (t , err )
479
+
480
+ err = sut .syncReferencedSecrets (context .Background (), & allPipelines )
481
+ require .NoError (t , err )
482
+
483
+ var tlsConfigSecret corev1.Secret
484
+ err = fakeClient .Get (context .Background (), testConfig .OutputTLSConfigSecret , & tlsConfigSecret )
485
+ require .NoError (t , err )
486
+ require .Contains (t , tlsConfigSecret .Data , "pipeline-1-ca.crt" )
487
+ require .Contains (t , tlsConfigSecret .Data , "pipeline-1-cert.crt" )
488
+ require .Contains (t , tlsConfigSecret .Data , "pipeline-1-key.crt" )
489
+ require .Equal (t , []byte ("fake-ca-value" ), tlsConfigSecret .Data ["pipeline-1-ca.crt" ])
490
+ require .Equal (t , []byte ("fake-cert-value" ), tlsConfigSecret .Data ["pipeline-1-cert.crt" ])
491
+ require .Equal (t , []byte ("new-fake-key-value" ), tlsConfigSecret .Data ["pipeline-1-key.crt" ])
492
+ })
493
+
494
+ t .Run ("should delete value in env secret if marked for deletion" , func (t * testing.T ) {
495
+ keySecret := corev1.Secret {
496
+ ObjectMeta : metav1.ObjectMeta {
497
+ Name : "my-key-secret" ,
498
+ Namespace : "default" ,
499
+ },
500
+ Data : map [string ][]byte {"my-key.key" : []byte ("fake-key-value" )},
501
+ }
502
+ fakeClient := fake .NewClientBuilder ().WithObjects (& keySecret ).Build ()
503
+
504
+ sut := syncer {fakeClient , testConfig }
505
+ err := sut .syncReferencedSecrets (context .Background (), & allPipelines )
506
+ require .NoError (t , err )
507
+
508
+ now := metav1 .Now ()
509
+ allPipelines .Items [0 ].SetDeletionTimestamp (& now )
510
+ err = sut .syncReferencedSecrets (context .Background (), & allPipelines )
511
+ require .NoError (t , err )
512
+
513
+ var tlsConfigSecret corev1.Secret
514
+ err = fakeClient .Get (context .Background (), testConfig .OutputTLSConfigSecret , & tlsConfigSecret )
515
+ require .NoError (t , err )
516
+ require .NotContains (t , tlsConfigSecret .Data , "pipeline-1-ca.crt" )
517
+ require .NotContains (t , tlsConfigSecret .Data , "pipeline-1-cert.crt" )
518
+ require .NotContains (t , tlsConfigSecret .Data , "pipeline-1-key.crt" )
519
+ })
520
+ }
0 commit comments