Skip to content

Commit 0cf6c02

Browse files
Installation improvments (#38)
* removed components reporter, added events-reporter * bump
1 parent 0b952d8 commit 0cf6c02

File tree

11 files changed

+313
-115
lines changed

11 files changed

+313
-115
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ coverage.txt
1414

1515
# ides
1616
.vscode
17+
__debug_bin
1718
.idea
1819

1920
# Dependency directories (remove the comment below to include it)

Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
VERSION=v0.0.42
1+
VERSION=v0.0.43
22
OUT_DIR=dist
33
YEAR?=$(shell date +"%Y")
44

cmd/commands/runtime.go

Lines changed: 113 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@ type (
5252
RuntimeInstallOptions struct {
5353
RuntimeName string
5454
RuntimeToken string
55+
Insecure bool
5556
Version *semver.Version
5657
gsCloneOpts *git.CloneOptions
5758
insCloneOpts *git.CloneOptions
@@ -151,6 +152,7 @@ func NewRuntimeInstallCommand() *cobra.Command {
151152
return RunRuntimeInstall(ctx, &RuntimeInstallOptions{
152153
RuntimeName: args[0],
153154
Version: version,
155+
Insecure: true,
154156
gsCloneOpts: gsCloneOpts,
155157
insCloneOpts: insCloneOpts,
156158
KubeFactory: f,
@@ -185,7 +187,7 @@ func RunRuntimeInstall(ctx context.Context, opts *RuntimeInstallOptions) error {
185187

186188
runtimeCreationResponse, err := cfConfig.NewClient().ArgoRuntime().Create(opts.RuntimeName)
187189
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)
189191
}
190192

191193
opts.RuntimeToken = runtimeCreationResponse.NewAccessToken
@@ -196,6 +198,7 @@ func RunRuntimeInstall(ctx context.Context, opts *RuntimeInstallOptions) error {
196198
Namespace: opts.RuntimeName,
197199
KubeFactory: opts.KubeFactory,
198200
CloneOptions: opts.insCloneOpts,
201+
Insecure: opts.Insecure,
199202
})
200203
if err != nil {
201204
return fmt.Errorf("failed to bootstrap repository: %w", err)
@@ -223,8 +226,12 @@ func RunRuntimeInstall(ctx context.Context, opts *RuntimeInstallOptions) error {
223226
return fmt.Errorf("failed to create codefresh-cm: %w", err)
224227
}
225228

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)
228235
}
229236

230237
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
492499
return err
493500
}
494501

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)
497504
if err != nil {
498505
return fmt.Errorf("failed to create codefresh token secret: %w", err)
499506
}
500507

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 {
502514
return fmt.Errorf("failed to create codefresh token: %w", err)
503515
}
504516

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")
506518
appDef := &runtime.AppDef{
507-
Name: store.Get().ComponentsReporterName,
519+
Name: store.Get().EventsReporterName,
508520
Type: application.AppTypeDirectory,
509521
URL: cloneOpts.URL() + "/" + resPath,
510522
}
@@ -521,21 +533,50 @@ func createComponentsReporter(ctx context.Context, cloneOpts *git.CloneOptions,
521533
return err
522534
}
523535

524-
if err := createRBAC(repofs, resPath, opts.RuntimeName); err != nil {
536+
if err := createEventsReporterEventSource(repofs, resPath, opts.RuntimeName, opts.Insecure); err != nil {
525537
return err
526538
}
527539

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 {
529541
return err
530542
}
531543

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 {
534575
return err
535576
}
536577

537578
_, err = r.Persist(ctx, &git.PushOptions{
538-
CommitMsg: "Created Codefresh Resources",
579+
CommitMsg: "Created Codefresh Workflow Reporter",
539580
})
540581
return err
541582
}
@@ -565,7 +606,7 @@ var getProjectInfoFromFile = func(repofs fs.FS, name string) (*argocdv1alpha1.Ap
565606
return proj, appSet, nil
566607
}
567608

568-
func getTokenSecret(namespace string, token string) ([]byte, error) {
609+
func getRuntimeTokenSecret(namespace string, token string) ([]byte, error) {
569610
return yaml.Marshal(&v1.Secret{
570611
TypeMeta: metav1.TypeMeta{
571612
APIVersion: "v1",
@@ -581,14 +622,35 @@ func getTokenSecret(namespace string, token string) ([]byte, error) {
581622
})
582623
}
583624

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 {
585647
serviceAccount := &v1.ServiceAccount{
586648
TypeMeta: metav1.TypeMeta{
587649
Kind: "ServiceAccount",
588650
APIVersion: "v1",
589651
},
590652
ObjectMeta: metav1.ObjectMeta{
591-
Name: store.Get().ComponentsReporterSA,
653+
Name: store.Get().CodefreshSA,
592654
Namespace: runtimeName,
593655
},
594656
}
@@ -599,7 +661,7 @@ func createRBAC(repofs fs.FS, path, runtimeName string) error {
599661
APIVersion: "rbac.authorization.k8s.io/v1",
600662
},
601663
ObjectMeta: metav1.ObjectMeta{
602-
Name: store.Get().ComponentsReporterName,
664+
Name: store.Get().CodefreshSA,
603665
Namespace: runtimeName,
604666
},
605667
Rules: []rbacv1.PolicyRule{
@@ -617,74 +679,73 @@ func createRBAC(repofs fs.FS, path, runtimeName string) error {
617679
APIVersion: "rbac.authorization.k8s.io/v1",
618680
},
619681
ObjectMeta: metav1.ObjectMeta{
620-
Name: store.Get().ComponentsReporterName,
682+
Name: store.Get().CodefreshSA,
621683
Namespace: runtimeName,
622684
},
623685
Subjects: []rbacv1.Subject{
624686
{
625687
Kind: "ServiceAccount",
626688
Namespace: runtimeName,
627-
Name: store.Get().ComponentsReporterSA,
689+
Name: store.Get().CodefreshSA,
628690
},
629691
},
630692
RoleRef: rbacv1.RoleRef{
631693
Kind: "Role",
632-
Name: store.Get().ComponentsReporterName,
694+
Name: store.Get().CodefreshSA,
633695
},
634696
}
635697

636698
return repofs.WriteYamls(repofs.Join(path, "rbac.yaml"), serviceAccount, role, roleBinding)
637699
}
638700

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 {
640724
eventSource := eventsutil.CreateEventSource(&eventsutil.CreateEventSourceOptions{
641-
Name: store.Get().ComponentsReporterName,
725+
Name: store.Get().WorkflowReporterName,
642726
Namespace: namespace,
643-
ServiceAccountName: store.Get().ComponentsReporterSA,
727+
ServiceAccountName: store.Get().CodefreshSA,
644728
EventBusName: store.Get().EventBusName,
645729
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": {
660731
Group: "argoproj.io",
661732
Version: "v1alpha1",
662-
Resource: "appprojects",
733+
Resource: "workflows",
663734
Namespace: namespace,
664-
Selectors: []eventsutil.CreateSelectorOptions{
665-
{
666-
Key: store.Get().LabelKeyCFType,
667-
Operation: "==",
668-
Value: store.Get().CFRuntimeType,
669-
},
670-
},
671735
},
672736
},
673737
})
674738
return repofs.WriteYamls(repofs.Join(path, "event-source.yaml"), eventSource)
675739
}
676740

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 {
678742
sensor := eventsutil.CreateSensor(&eventsutil.CreateSensorOptions{
679743
Name: name,
680744
Namespace: namespace,
681745
EventSourceName: eventSourceName,
682746
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},
688749
})
689750
return repofs.WriteYamls(repofs.Join(path, "sensor.yaml"), sensor)
690751
}
@@ -752,7 +813,7 @@ func createGitSource(ctx context.Context, insCloneOpts *git.CloneOptions, gsClon
752813
eventSource := eventsutil.CreateEventSource(&eventsutil.CreateEventSourceOptions{
753814
Name: eventSourceName,
754815
Namespace: runtimeName,
755-
ServiceAccountName: store.Get().ComponentsReporterSA,
816+
ServiceAccountName: store.Get().CodefreshSA,
756817
EventBusName: store.Get().EventBusName,
757818
Resource: map[string]eventsutil.CreateResourceEventSourceOptions{
758819
// "clusterWorkflowTemplate": {

docs/releases/release_notes.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
### Installed Applications:
2-
* Argo CD [v2.0.5](https://github.com/argoproj/argo-cd/releases/tag/v2.0.5)
2+
* Argo CD [v2.1.0-rc1](https://github.com/codefresh-io/argo-cd/releases/tag/v2.1.0-rc1)
33
* Argo CD ApplicationSet Controller [2c62537a8e5a](https://github.com/argoproj-labs/applicationset/commit/2c62537a8e5a3d5aecad87b843870789b74bdf89)
44
* Argo Events [v1.4.0](https://github.com/argoproj/argo-events/releases/tag/v1.4.0)
55
* Argo Rollouts [v1.0.2](https://github.com/argoproj/argo-rollouts/releases/tag/v1.0.2)
@@ -8,7 +8,7 @@
88
### Linux
99
```bash
1010
# download and extract the binary
11-
curl -L --output - https://github.com/codefresh-io/cli-v2/releases/download/v0.0.42/cf-linux-amd64.tar.gz | tar zx
11+
curl -L --output - https://github.com/codefresh-io/cli-v2/releases/download/v0.0.43/cf-linux-amd64.tar.gz | tar zx
1212

1313
# move the binary to your $PATH
1414
mv ./cf-linux-amd64 /usr/local/bin/cf
@@ -20,7 +20,7 @@ cf version
2020
### Mac
2121
```bash
2222
# download and extract the binary
23-
curl -L --output - https://github.com/codefresh-io/cli-v2/releases/download/v0.0.42/cf-darwin-amd64.tar.gz | tar zx
23+
curl -L --output - https://github.com/codefresh-io/cli-v2/releases/download/v0.0.43/cf-darwin-amd64.tar.gz | tar zx
2424

2525
# move the binary to your $PATH
2626
mv ./cf-darwin-amd64 /usr/local/bin/cf

go.mod

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,11 @@ go 1.16
55
require (
66
github.com/Masterminds/semver/v3 v3.1.1
77
github.com/argoproj-labs/applicationset v0.1.0
8-
github.com/argoproj-labs/argocd-autopilot v0.2.12
9-
github.com/argoproj/argo-cd/v2 v2.0.3
8+
github.com/argoproj-labs/argocd-autopilot v0.2.13
9+
github.com/argoproj/argo-cd/v2 v2.1.0-rc1
1010
github.com/argoproj/argo-events v1.3.1
1111
github.com/argoproj/argo-workflows/v3 v3.1.0
12+
github.com/argoproj/gitops-engine v0.3.3 // indirect
1213
github.com/briandowns/spinner v1.13.0
1314
github.com/codefresh-io/go-sdk v0.30.1
1415
github.com/fatih/color v1.12.0
@@ -30,6 +31,7 @@ require (
3031
replace (
3132
github.com/argoproj-labs/applicationset => github.com/argoproj-labs/applicationset v0.0.0-20210614145856-2c62537a8e5a
3233
github.com/argoproj/argo-events => github.com/argoproj/argo-events v0.17.1-0.20210615165534-d403c441bc1d
34+
github.com/argoproj/gitops-engine => github.com/argoproj/gitops-engine v0.3.1-0.20210709004906-a4c77d5c70fb
3335
k8s.io/api => k8s.io/api v0.21.1
3436
k8s.io/apiextensions-apiserver => k8s.io/apiextensions-apiserver v0.21.1
3537
k8s.io/apimachinery => k8s.io/apimachinery v0.21.1

0 commit comments

Comments
 (0)