52
52
RuntimeInstallOptions struct {
53
53
RuntimeName string
54
54
RuntimeToken string
55
+ Insecure bool
55
56
Version * semver.Version
56
57
gsCloneOpts * git.CloneOptions
57
58
insCloneOpts * git.CloneOptions
@@ -151,6 +152,7 @@ func NewRuntimeInstallCommand() *cobra.Command {
151
152
return RunRuntimeInstall (ctx , & RuntimeInstallOptions {
152
153
RuntimeName : args [0 ],
153
154
Version : version ,
155
+ Insecure : true ,
154
156
gsCloneOpts : gsCloneOpts ,
155
157
insCloneOpts : insCloneOpts ,
156
158
KubeFactory : f ,
@@ -185,7 +187,7 @@ func RunRuntimeInstall(ctx context.Context, opts *RuntimeInstallOptions) error {
185
187
186
188
runtimeCreationResponse , err := cfConfig .NewClient ().ArgoRuntime ().Create (opts .RuntimeName )
187
189
if err != nil {
188
- return fmt .Errorf ("failed to get a runtime creation response : %w" , err )
190
+ return fmt .Errorf ("failed to create a new runtime : %w" , err )
189
191
}
190
192
191
193
opts .RuntimeToken = runtimeCreationResponse .NewAccessToken
@@ -196,6 +198,7 @@ func RunRuntimeInstall(ctx context.Context, opts *RuntimeInstallOptions) error {
196
198
Namespace : opts .RuntimeName ,
197
199
KubeFactory : opts .KubeFactory ,
198
200
CloneOptions : opts .insCloneOpts ,
201
+ Insecure : opts .Insecure ,
199
202
})
200
203
if err != nil {
201
204
return fmt .Errorf ("failed to bootstrap repository: %w" , err )
@@ -223,8 +226,12 @@ func RunRuntimeInstall(ctx context.Context, opts *RuntimeInstallOptions) error {
223
226
return fmt .Errorf ("failed to create codefresh-cm: %w" , err )
224
227
}
225
228
226
- if err = createComponentsReporter (ctx , opts .insCloneOpts , opts ); err != nil {
227
- return fmt .Errorf ("failed to create components-reporter: %w" , err )
229
+ if err = createEventsReporter (ctx , opts .insCloneOpts , opts ); err != nil {
230
+ return fmt .Errorf ("failed to create events-reporter: %w" , err )
231
+ }
232
+
233
+ if err = createWorkflowReporter (ctx , opts .insCloneOpts , opts ); err != nil {
234
+ return fmt .Errorf ("failed to create workflows-reporter: %w" , err )
228
235
}
229
236
230
237
if err = createDemoWorkflowTemplate (ctx , opts .gsCloneOpts , store .Get ().GitSourceName , opts .RuntimeName ); err != nil {
@@ -492,19 +499,24 @@ func persistRuntime(ctx context.Context, cloneOpts *git.CloneOptions, rt *runtim
492
499
return err
493
500
}
494
501
495
- func createComponentsReporter (ctx context.Context , cloneOpts * git.CloneOptions , opts * RuntimeInstallOptions ) error {
496
- tokenSecret , err := getTokenSecret (opts .RuntimeName , opts .RuntimeToken )
502
+ func createEventsReporter (ctx context.Context , cloneOpts * git.CloneOptions , opts * RuntimeInstallOptions ) error {
503
+ runtimeTokenSecret , err := getRuntimeTokenSecret (opts .RuntimeName , opts .RuntimeToken )
497
504
if err != nil {
498
505
return fmt .Errorf ("failed to create codefresh token secret: %w" , err )
499
506
}
500
507
501
- if err = opts .KubeFactory .Apply (ctx , opts .RuntimeName , tokenSecret ); err != nil {
508
+ argoTokenSecret , err := getArgoCDTokenSecret (ctx , opts .RuntimeName , opts .Insecure )
509
+ if err != nil {
510
+ return fmt .Errorf ("failed to create argocd token secret: %w" , err )
511
+ }
512
+
513
+ if err = opts .KubeFactory .Apply (ctx , opts .RuntimeName , aputil .JoinManifests (runtimeTokenSecret , argoTokenSecret )); err != nil {
502
514
return fmt .Errorf ("failed to create codefresh token: %w" , err )
503
515
}
504
516
505
- resPath := cloneOpts .FS .Join (apstore .Default .AppsDir , store .Get ().ComponentsReporterName , opts .RuntimeName , "resources" )
517
+ resPath := cloneOpts .FS .Join (apstore .Default .AppsDir , store .Get ().EventsReporterName , opts .RuntimeName , "resources" )
506
518
appDef := & runtime.AppDef {
507
- Name : store .Get ().ComponentsReporterName ,
519
+ Name : store .Get ().EventsReporterName ,
508
520
Type : application .AppTypeDirectory ,
509
521
URL : cloneOpts .URL () + "/" + resPath ,
510
522
}
@@ -521,21 +533,50 @@ func createComponentsReporter(ctx context.Context, cloneOpts *git.CloneOptions,
521
533
return err
522
534
}
523
535
524
- if err := createRBAC (repofs , resPath , opts .RuntimeName ); err != nil {
536
+ if err := createEventsReporterEventSource (repofs , resPath , opts .RuntimeName , opts . Insecure ); err != nil {
525
537
return err
526
538
}
527
539
528
- if err := createEventSource (repofs , resPath , opts .RuntimeName ); err != nil {
540
+ if err := createSensor (repofs , store . Get (). EventsReporterName , resPath , opts .RuntimeName , store . Get (). EventsReporterName , "events" ); err != nil {
529
541
return err
530
542
}
531
543
532
- if err := createSensor (repofs , store .Get ().ComponentsReporterName , resPath , opts .RuntimeName ,
533
- store .Get ().ComponentsReporterName , opts .commonConfig .CodefreshBaseURL ); err != nil {
544
+ _ , err = r .Persist (ctx , & git.PushOptions {
545
+ CommitMsg : "Created Codefresh Event Reporter" ,
546
+ })
547
+ return err
548
+ }
549
+
550
+ func createWorkflowReporter (ctx context.Context , cloneOpts * git.CloneOptions , opts * RuntimeInstallOptions ) error {
551
+ resPath := cloneOpts .FS .Join (apstore .Default .AppsDir , store .Get ().WorkflowReporterName , opts .RuntimeName , "resources" )
552
+ appDef := & runtime.AppDef {
553
+ Name : store .Get ().WorkflowReporterName ,
554
+ Type : application .AppTypeDirectory ,
555
+ URL : cloneOpts .URL () + "/" + resPath ,
556
+ }
557
+ if err := appDef .CreateApp (ctx , opts .KubeFactory , cloneOpts , opts .RuntimeName , store .Get ().CFComponentType , opts .Version ); err != nil {
558
+ return err
559
+ }
560
+
561
+ r , repofs , err := cloneOpts .GetRepo (ctx )
562
+ if err != nil {
563
+ return err
564
+ }
565
+
566
+ if err := createWorkflowReporterRBAC (repofs , resPath , opts .RuntimeName ); err != nil {
567
+ return err
568
+ }
569
+
570
+ if err := createWorkflowReporterEventSource (repofs , resPath , opts .RuntimeName ); err != nil {
571
+ return err
572
+ }
573
+
574
+ if err := createSensor (repofs , store .Get ().WorkflowReporterName , resPath , opts .RuntimeName , store .Get ().WorkflowReporterName , "workflows" ); err != nil {
534
575
return err
535
576
}
536
577
537
578
_ , err = r .Persist (ctx , & git.PushOptions {
538
- CommitMsg : "Created Codefresh Resources " ,
579
+ CommitMsg : "Created Codefresh Workflow Reporter " ,
539
580
})
540
581
return err
541
582
}
@@ -565,7 +606,7 @@ var getProjectInfoFromFile = func(repofs fs.FS, name string) (*argocdv1alpha1.Ap
565
606
return proj , appSet , nil
566
607
}
567
608
568
- func getTokenSecret (namespace string , token string ) ([]byte , error ) {
609
+ func getRuntimeTokenSecret (namespace string , token string ) ([]byte , error ) {
569
610
return yaml .Marshal (& v1.Secret {
570
611
TypeMeta : metav1.TypeMeta {
571
612
APIVersion : "v1" ,
@@ -581,14 +622,35 @@ func getTokenSecret(namespace string, token string) ([]byte, error) {
581
622
})
582
623
}
583
624
584
- func createRBAC (repofs fs.FS , path , runtimeName string ) error {
625
+ func getArgoCDTokenSecret (ctx context.Context , namespace string , insecure bool ) ([]byte , error ) {
626
+ token , err := cdutil .GenerateToken (ctx , namespace , "admin" , nil , insecure )
627
+ if err != nil {
628
+ return nil , err
629
+ }
630
+
631
+ return yaml .Marshal (& v1.Secret {
632
+ TypeMeta : metav1.TypeMeta {
633
+ APIVersion : "v1" ,
634
+ Kind : "Secret" ,
635
+ },
636
+ ObjectMeta : metav1.ObjectMeta {
637
+ Name : store .Get ().ArgoCDTokenSecret ,
638
+ Namespace : namespace ,
639
+ },
640
+ Data : map [string ][]byte {
641
+ store .Get ().ArgoCDTokenKey : []byte (token ),
642
+ },
643
+ })
644
+ }
645
+
646
+ func createWorkflowReporterRBAC (repofs fs.FS , path , runtimeName string ) error {
585
647
serviceAccount := & v1.ServiceAccount {
586
648
TypeMeta : metav1.TypeMeta {
587
649
Kind : "ServiceAccount" ,
588
650
APIVersion : "v1" ,
589
651
},
590
652
ObjectMeta : metav1.ObjectMeta {
591
- Name : store .Get ().ComponentsReporterSA ,
653
+ Name : store .Get ().CodefreshSA ,
592
654
Namespace : runtimeName ,
593
655
},
594
656
}
@@ -599,7 +661,7 @@ func createRBAC(repofs fs.FS, path, runtimeName string) error {
599
661
APIVersion : "rbac.authorization.k8s.io/v1" ,
600
662
},
601
663
ObjectMeta : metav1.ObjectMeta {
602
- Name : store .Get ().ComponentsReporterName ,
664
+ Name : store .Get ().CodefreshSA ,
603
665
Namespace : runtimeName ,
604
666
},
605
667
Rules : []rbacv1.PolicyRule {
@@ -617,74 +679,73 @@ func createRBAC(repofs fs.FS, path, runtimeName string) error {
617
679
APIVersion : "rbac.authorization.k8s.io/v1" ,
618
680
},
619
681
ObjectMeta : metav1.ObjectMeta {
620
- Name : store .Get ().ComponentsReporterName ,
682
+ Name : store .Get ().CodefreshSA ,
621
683
Namespace : runtimeName ,
622
684
},
623
685
Subjects : []rbacv1.Subject {
624
686
{
625
687
Kind : "ServiceAccount" ,
626
688
Namespace : runtimeName ,
627
- Name : store .Get ().ComponentsReporterSA ,
689
+ Name : store .Get ().CodefreshSA ,
628
690
},
629
691
},
630
692
RoleRef : rbacv1.RoleRef {
631
693
Kind : "Role" ,
632
- Name : store .Get ().ComponentsReporterName ,
694
+ Name : store .Get ().CodefreshSA ,
633
695
},
634
696
}
635
697
636
698
return repofs .WriteYamls (repofs .Join (path , "rbac.yaml" ), serviceAccount , role , roleBinding )
637
699
}
638
700
639
- func createEventSource (repofs fs.FS , path , namespace string ) error {
701
+ func createEventsReporterEventSource (repofs fs.FS , path , namespace string , insecure bool ) error {
702
+ port := 443
703
+ if insecure {
704
+ port = 80
705
+ }
706
+ argoCDSvc := fmt .Sprintf ("argocd-server.%s.svc:%d" , namespace , port )
707
+
708
+ eventSource := eventsutil .CreateEventSource (& eventsutil.CreateEventSourceOptions {
709
+ Name : store .Get ().EventsReporterName ,
710
+ Namespace : namespace ,
711
+ EventBusName : store .Get ().EventBusName ,
712
+ Generic : map [string ]eventsutil.CreateGenericEventSourceOptions {
713
+ "events" : {
714
+ URL : argoCDSvc ,
715
+ TokenSecretName : store .Get ().ArgoCDTokenSecret ,
716
+ Insecure : insecure ,
717
+ },
718
+ },
719
+ })
720
+ return repofs .WriteYamls (repofs .Join (path , "event-source.yaml" ), eventSource )
721
+ }
722
+
723
+ func createWorkflowReporterEventSource (repofs fs.FS , path , namespace string ) error {
640
724
eventSource := eventsutil .CreateEventSource (& eventsutil.CreateEventSourceOptions {
641
- Name : store .Get ().ComponentsReporterName ,
725
+ Name : store .Get ().WorkflowReporterName ,
642
726
Namespace : namespace ,
643
- ServiceAccountName : store .Get ().ComponentsReporterSA ,
727
+ ServiceAccountName : store .Get ().CodefreshSA ,
644
728
EventBusName : store .Get ().EventBusName ,
645
729
Resource : map [string ]eventsutil.CreateResourceEventSourceOptions {
646
- "components" : {
647
- Group : "argoproj.io" ,
648
- Version : "v1alpha1" ,
649
- Resource : "applications" ,
650
- Namespace : namespace ,
651
- Selectors : []eventsutil.CreateSelectorOptions {
652
- {
653
- Key : store .Get ().LabelKeyCFType ,
654
- Operation : "==" ,
655
- Value : store .Get ().CFComponentType ,
656
- },
657
- },
658
- },
659
- "runtime" : {
730
+ "workflows" : {
660
731
Group : "argoproj.io" ,
661
732
Version : "v1alpha1" ,
662
- Resource : "appprojects " ,
733
+ Resource : "workflows " ,
663
734
Namespace : namespace ,
664
- Selectors : []eventsutil.CreateSelectorOptions {
665
- {
666
- Key : store .Get ().LabelKeyCFType ,
667
- Operation : "==" ,
668
- Value : store .Get ().CFRuntimeType ,
669
- },
670
- },
671
735
},
672
736
},
673
737
})
674
738
return repofs .WriteYamls (repofs .Join (path , "event-source.yaml" ), eventSource )
675
739
}
676
740
677
- func createSensor (repofs fs.FS , name , path , namespace , eventSourceName , cfBaseURL string ) error {
741
+ func createSensor (repofs fs.FS , name , path , namespace , eventSourceName , trigger string ) error {
678
742
sensor := eventsutil .CreateSensor (& eventsutil.CreateSensorOptions {
679
743
Name : name ,
680
744
Namespace : namespace ,
681
745
EventSourceName : eventSourceName ,
682
746
EventBusName : store .Get ().EventBusName ,
683
- TriggerURL : cfBaseURL + store .Get ().EventReportingEndpoint ,
684
- Triggers : []string {
685
- "components" ,
686
- "runtime" ,
687
- },
747
+ TriggerURL : cfConfig .GetCurrentContext ().URL + store .Get ().EventReportingEndpoint ,
748
+ Triggers : []string {trigger },
688
749
})
689
750
return repofs .WriteYamls (repofs .Join (path , "sensor.yaml" ), sensor )
690
751
}
@@ -752,7 +813,7 @@ func createGitSource(ctx context.Context, insCloneOpts *git.CloneOptions, gsClon
752
813
eventSource := eventsutil .CreateEventSource (& eventsutil.CreateEventSourceOptions {
753
814
Name : eventSourceName ,
754
815
Namespace : runtimeName ,
755
- ServiceAccountName : store .Get ().ComponentsReporterSA ,
816
+ ServiceAccountName : store .Get ().CodefreshSA ,
756
817
EventBusName : store .Get ().EventBusName ,
757
818
Resource : map [string ]eventsutil.CreateResourceEventSourceOptions {
758
819
// "clusterWorkflowTemplate": {
0 commit comments