mirror of
				https://github.com/fluxcd/flux2.git
				synced 2025-11-01 01:25:53 +08:00 
			
		
		
		
	Give flux bootstrap the extra components flag
This commit adds a flag for supplying extra components to bootstrap (and its subcommands), to match the one for `flux install`. Since the bootstrapComponents global is used in a few places, I made it a func and renamed the variable. For consistency, I also renamed the var used in install.go. Lastly, so that the flag sorts next to `--components`, I changed it to `--components-extra` in both commands. Signed-off-by: Michael Bridgen <michael@weave.works>
This commit is contained in:
		| @ -47,7 +47,8 @@ var bootstrapCmd = &cobra.Command{ | |||||||
|  |  | ||||||
| var ( | var ( | ||||||
| 	bootstrapVersion            string | 	bootstrapVersion            string | ||||||
| 	bootstrapComponents         []string | 	bootstrapDefaultComponents  []string | ||||||
|  | 	bootstrapExtraComponents    []string | ||||||
| 	bootstrapRegistry           string | 	bootstrapRegistry           string | ||||||
| 	bootstrapImagePullSecret    string | 	bootstrapImagePullSecret    string | ||||||
| 	bootstrapBranch             string | 	bootstrapBranch             string | ||||||
| @ -67,8 +68,10 @@ const ( | |||||||
| func init() { | func init() { | ||||||
| 	bootstrapCmd.PersistentFlags().StringVarP(&bootstrapVersion, "version", "v", defaults.Version, | 	bootstrapCmd.PersistentFlags().StringVarP(&bootstrapVersion, "version", "v", defaults.Version, | ||||||
| 		"toolkit version") | 		"toolkit version") | ||||||
| 	bootstrapCmd.PersistentFlags().StringSliceVar(&bootstrapComponents, "components", defaults.Components, | 	bootstrapCmd.PersistentFlags().StringSliceVar(&bootstrapDefaultComponents, "components", defaults.Components, | ||||||
| 		"list of components, accepts comma-separated values") | 		"list of components, accepts comma-separated values") | ||||||
|  | 	bootstrapCmd.PersistentFlags().StringSliceVar(&bootstrapExtraComponents, "components-extra", nil, | ||||||
|  | 		"list of components in addition to those supplied or defaulted, accepts comma-separated values") | ||||||
| 	bootstrapCmd.PersistentFlags().StringVar(&bootstrapRegistry, "registry", "ghcr.io/fluxcd", | 	bootstrapCmd.PersistentFlags().StringVar(&bootstrapRegistry, "registry", "ghcr.io/fluxcd", | ||||||
| 		"container registry where the toolkit images are published") | 		"container registry where the toolkit images are published") | ||||||
| 	bootstrapCmd.PersistentFlags().StringVar(&bootstrapImagePullSecret, "image-pull-secret", "", | 	bootstrapCmd.PersistentFlags().StringVar(&bootstrapImagePullSecret, "image-pull-secret", "", | ||||||
| @ -88,13 +91,17 @@ func init() { | |||||||
| 	rootCmd.AddCommand(bootstrapCmd) | 	rootCmd.AddCommand(bootstrapCmd) | ||||||
| } | } | ||||||
|  |  | ||||||
|  | func bootstrapComponents() []string { | ||||||
|  | 	return append(bootstrapDefaultComponents, bootstrapExtraComponents...) | ||||||
|  | } | ||||||
|  |  | ||||||
| func bootstrapValidate() error { | func bootstrapValidate() error { | ||||||
|  | 	components := bootstrapComponents() | ||||||
| 	for _, component := range bootstrapRequiredComponents { | 	for _, component := range bootstrapRequiredComponents { | ||||||
| 		if !utils.ContainsItemString(bootstrapComponents, component) { | 		if !utils.ContainsItemString(components, component) { | ||||||
| 			return fmt.Errorf("component %s is required", component) | 			return fmt.Errorf("component %s is required", component) | ||||||
| 		} | 		} | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| 	return nil | 	return nil | ||||||
| } | } | ||||||
|  |  | ||||||
| @ -103,7 +110,7 @@ func generateInstallManifests(targetPath, namespace, tmpDir string, localManifes | |||||||
| 		BaseURL:                localManifests, | 		BaseURL:                localManifests, | ||||||
| 		Version:                bootstrapVersion, | 		Version:                bootstrapVersion, | ||||||
| 		Namespace:              namespace, | 		Namespace:              namespace, | ||||||
| 		Components:             bootstrapComponents, | 		Components:             bootstrapComponents(), | ||||||
| 		Registry:               bootstrapRegistry, | 		Registry:               bootstrapRegistry, | ||||||
| 		ImagePullSecret:        bootstrapImagePullSecret, | 		ImagePullSecret:        bootstrapImagePullSecret, | ||||||
| 		Arch:                   bootstrapArch.String(), | 		Arch:                   bootstrapArch.String(), | ||||||
|  | |||||||
| @ -206,7 +206,7 @@ func bootstrapGitHubCmdRun(cmd *cobra.Command, args []string) error { | |||||||
| 	if isInstall { | 	if isInstall { | ||||||
| 		// apply install manifests | 		// apply install manifests | ||||||
| 		logger.Actionf("installing components in %s namespace", namespace) | 		logger.Actionf("installing components in %s namespace", namespace) | ||||||
| 		if err := applyInstallManifests(ctx, manifest, bootstrapComponents); err != nil { | 		if err := applyInstallManifests(ctx, manifest, bootstrapComponents()); err != nil { | ||||||
| 			return err | 			return err | ||||||
| 		} | 		} | ||||||
| 		logger.Successf("install completed") | 		logger.Successf("install completed") | ||||||
|  | |||||||
| @ -172,7 +172,7 @@ func bootstrapGitLabCmdRun(cmd *cobra.Command, args []string) error { | |||||||
| 	if isInstall { | 	if isInstall { | ||||||
| 		// apply install manifests | 		// apply install manifests | ||||||
| 		logger.Actionf("installing components in %s namespace", namespace) | 		logger.Actionf("installing components in %s namespace", namespace) | ||||||
| 		if err := applyInstallManifests(ctx, manifest, bootstrapComponents); err != nil { | 		if err := applyInstallManifests(ctx, manifest, bootstrapComponents()); err != nil { | ||||||
| 			return err | 			return err | ||||||
| 		} | 		} | ||||||
| 		logger.Successf("install completed") | 		logger.Successf("install completed") | ||||||
|  | |||||||
| @ -56,7 +56,7 @@ var ( | |||||||
| 	installDryRun             bool | 	installDryRun             bool | ||||||
| 	installManifestsPath      string | 	installManifestsPath      string | ||||||
| 	installVersion            string | 	installVersion            string | ||||||
| 	installComponents         []string | 	installDefaultComponents  []string | ||||||
| 	installExtraComponents    []string | 	installExtraComponents    []string | ||||||
| 	installRegistry           string | 	installRegistry           string | ||||||
| 	installImagePullSecret    string | 	installImagePullSecret    string | ||||||
| @ -73,9 +73,9 @@ func init() { | |||||||
| 		"only print the object that would be applied") | 		"only print the object that would be applied") | ||||||
| 	installCmd.Flags().StringVarP(&installVersion, "version", "v", defaults.Version, | 	installCmd.Flags().StringVarP(&installVersion, "version", "v", defaults.Version, | ||||||
| 		"toolkit version") | 		"toolkit version") | ||||||
| 	installCmd.Flags().StringSliceVar(&installComponents, "components", defaults.Components, | 	installCmd.Flags().StringSliceVar(&installDefaultComponents, "components", defaults.Components, | ||||||
| 		"list of components, accepts comma-separated values") | 		"list of components, accepts comma-separated values") | ||||||
| 	installCmd.Flags().StringSliceVar(&installExtraComponents, "extra-components", nil, | 	installCmd.Flags().StringSliceVar(&installExtraComponents, "components-extra", nil, | ||||||
| 		"list of components in addition to those supplied or defaulted, accepts comma-separated values") | 		"list of components in addition to those supplied or defaulted, accepts comma-separated values") | ||||||
| 	installCmd.Flags().StringVar(&installManifestsPath, "manifests", "", "path to the manifest directory") | 	installCmd.Flags().StringVar(&installManifestsPath, "manifests", "", "path to the manifest directory") | ||||||
| 	installCmd.Flags().MarkHidden("manifests") | 	installCmd.Flags().MarkHidden("manifests") | ||||||
| @ -106,7 +106,7 @@ func installCmdRun(cmd *cobra.Command, args []string) error { | |||||||
| 		logger.Generatef("generating manifests") | 		logger.Generatef("generating manifests") | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| 	components := append(installComponents, installExtraComponents...) | 	components := append(installDefaultComponents, installExtraComponents...) | ||||||
|  |  | ||||||
| 	opts := install.Options{ | 	opts := install.Options{ | ||||||
| 		BaseURL:                installManifestsPath, | 		BaseURL:                installManifestsPath, | ||||||
|  | |||||||
| @ -12,6 +12,7 @@ The bootstrap sub-commands bootstrap the toolkit components on the targeted Git | |||||||
|       --arch arch                  cluster architecture, available options are: (amd64, arm, arm64) (default amd64) |       --arch arch                  cluster architecture, available options are: (amd64, arm, arm64) (default amd64) | ||||||
|       --branch string              default branch (for GitHub this must match the default branch setting for the organization) (default "main") |       --branch string              default branch (for GitHub this must match the default branch setting for the organization) (default "main") | ||||||
|       --components strings         list of components, accepts comma-separated values (default [source-controller,kustomize-controller,helm-controller,notification-controller]) |       --components strings         list of components, accepts comma-separated values (default [source-controller,kustomize-controller,helm-controller,notification-controller]) | ||||||
|  |       --components-extra strings   list of components in addition to those supplied or defaulted, accepts comma-separated values | ||||||
|   -h, --help                       help for bootstrap |   -h, --help                       help for bootstrap | ||||||
|       --image-pull-secret string   Kubernetes secret name used for pulling the toolkit images from a private registry |       --image-pull-secret string   Kubernetes secret name used for pulling the toolkit images from a private registry | ||||||
|       --log-level logLevel         log level, available options are: (debug, info, error) (default info) |       --log-level logLevel         log level, available options are: (debug, info, error) (default info) | ||||||
|  | |||||||
| @ -64,6 +64,7 @@ flux bootstrap github [flags] | |||||||
|       --arch arch                  cluster architecture, available options are: (amd64, arm, arm64) (default amd64) |       --arch arch                  cluster architecture, available options are: (amd64, arm, arm64) (default amd64) | ||||||
|       --branch string              default branch (for GitHub this must match the default branch setting for the organization) (default "main") |       --branch string              default branch (for GitHub this must match the default branch setting for the organization) (default "main") | ||||||
|       --components strings         list of components, accepts comma-separated values (default [source-controller,kustomize-controller,helm-controller,notification-controller]) |       --components strings         list of components, accepts comma-separated values (default [source-controller,kustomize-controller,helm-controller,notification-controller]) | ||||||
|  |       --components-extra strings   list of components in addition to those supplied or defaulted, accepts comma-separated values | ||||||
|       --context string             kubernetes context to use |       --context string             kubernetes context to use | ||||||
|       --image-pull-secret string   Kubernetes secret name used for pulling the toolkit images from a private registry |       --image-pull-secret string   Kubernetes secret name used for pulling the toolkit images from a private registry | ||||||
|       --kubeconfig string          path to the kubeconfig file (default "~/.kube/config") |       --kubeconfig string          path to the kubeconfig file (default "~/.kube/config") | ||||||
|  | |||||||
| @ -60,6 +60,7 @@ flux bootstrap gitlab [flags] | |||||||
|       --arch arch                  cluster architecture, available options are: (amd64, arm, arm64) (default amd64) |       --arch arch                  cluster architecture, available options are: (amd64, arm, arm64) (default amd64) | ||||||
|       --branch string              default branch (for GitHub this must match the default branch setting for the organization) (default "main") |       --branch string              default branch (for GitHub this must match the default branch setting for the organization) (default "main") | ||||||
|       --components strings         list of components, accepts comma-separated values (default [source-controller,kustomize-controller,helm-controller,notification-controller]) |       --components strings         list of components, accepts comma-separated values (default [source-controller,kustomize-controller,helm-controller,notification-controller]) | ||||||
|  |       --components-extra strings   list of components in addition to those supplied or defaulted, accepts comma-separated values | ||||||
|       --context string             kubernetes context to use |       --context string             kubernetes context to use | ||||||
|       --image-pull-secret string   Kubernetes secret name used for pulling the toolkit images from a private registry |       --image-pull-secret string   Kubernetes secret name used for pulling the toolkit images from a private registry | ||||||
|       --kubeconfig string          path to the kubeconfig file (default "~/.kube/config") |       --kubeconfig string          path to the kubeconfig file (default "~/.kube/config") | ||||||
|  | |||||||
| @ -33,9 +33,9 @@ flux install [flags] | |||||||
| ``` | ``` | ||||||
|       --arch arch                  cluster architecture, available options are: (amd64, arm, arm64) (default amd64) |       --arch arch                  cluster architecture, available options are: (amd64, arm, arm64) (default amd64) | ||||||
|       --components strings         list of components, accepts comma-separated values (default [source-controller,kustomize-controller,helm-controller,notification-controller]) |       --components strings         list of components, accepts comma-separated values (default [source-controller,kustomize-controller,helm-controller,notification-controller]) | ||||||
|  |       --components-extra strings   list of components in addition to those supplied or defaulted, accepts comma-separated values | ||||||
|       --dry-run                    only print the object that would be applied |       --dry-run                    only print the object that would be applied | ||||||
|       --export                     write the install manifests to stdout and exit |       --export                     write the install manifests to stdout and exit | ||||||
|       --extra-components strings   list of components in addition to those supplied or defaulted, accepts comma-separated values |  | ||||||
|   -h, --help                       help for install |   -h, --help                       help for install | ||||||
|       --image-pull-secret string   Kubernetes secret name used for pulling the toolkit images from a private registry |       --image-pull-secret string   Kubernetes secret name used for pulling the toolkit images from a private registry | ||||||
|       --log-level logLevel         log level, available options are: (debug, info, error) (default info) |       --log-level logLevel         log level, available options are: (debug, info, error) (default info) | ||||||
|  | |||||||
		Reference in New Issue
	
	Block a user
	 Michael Bridgen
					Michael Bridgen