diff --git a/native-cli/components/flux.go b/native-cli/components/flux.go new file mode 100644 index 000000000..d70555b60 --- /dev/null +++ b/native-cli/components/flux.go @@ -0,0 +1,31 @@ +package components + +import ( + "fmt" + + "github.com/pulumi/pulumi-kubernetes/sdk/v4/go/kubernetes/yaml" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +// The configuration for Flux. +type Flux struct { + Version string +} + +// Install sets up Flux in the cluster. +func (component *Flux) Install( + ctx *pulumi.Context, + name string, +) ([]pulumi.Resource, error) { + flux, err := yaml.NewConfigFile(ctx, name, &yaml.ConfigFileArgs{ + File: fmt.Sprintf( + "https://github.com/fluxcd/flux2/releases/download/v%s/install.yaml", + component.Version, + ), + }) + if err != nil { + return nil, fmt.Errorf("%w: %w", errPulumi, err) + } + + return []pulumi.Resource{flux}, nil +} diff --git a/native-cli/programs/local.go b/native-cli/programs/local.go index 09f2a22ab..31a578ed6 100644 --- a/native-cli/programs/local.go +++ b/native-cli/programs/local.go @@ -58,6 +58,16 @@ func ProgramForLocalCluster(ctx *pulumi.Context) error { os.Exit(1) } + flux, err := components.AddComponent( + ctx, + "flux", + &components.Flux{Version: "2.3.0"}, + ) + if err != nil { + log.Println(err) + os.Exit(1) + } + tektonPipelines, err := components.AddComponent( ctx, "tekton-pipelines", @@ -83,6 +93,7 @@ func ProgramForLocalCluster(ctx *pulumi.Context) error { "tekton-dashboard", &components.TektonDashboard{Version: "0.45.0"}, )) + components.Check(components.AddComponent( ctx, "rebuild-nativelink", @@ -93,6 +104,7 @@ func ProgramForLocalCluster(ctx *pulumi.Context) error { tektonTriggers, localSources, nixStore, + flux, ), }, ))