helm

package
v0.1.6 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Nov 1, 2023 License: Apache-2.0 Imports: 59 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func GetDockerhubHelmRepository added in v0.1.5

func GetDockerhubHelmRepository(ctx context.Context, repo *corev1alpha1.Repository) ([]string, error)

GetDockerhubHelmRepository retrieves the Dockerhub Helm repository based on the given path and repository.

func GetGithubHelmRepository added in v0.1.5

func GetGithubHelmRepository(ctx context.Context, repo *corev1alpha1.Repository) ([]string, error)

GetGithubHelmRepository retrieves the GitHub packages repository based on the given path and repository.

func GetHarborRepository added in v0.1.5

func GetHarborRepository(ctx context.Context, repo *corev1alpha1.Repository) ([]string, error)

GetHarborRepository retrieves the Harbor packages repository based on the given path and repository.

func GetOCIRepoList added in v0.1.5

func GetOCIRepoList(ctx context.Context, repo *corev1alpha1.Repository) ([]string, error)

GetOCIRepoList retrieves the OCI packages repository based on the given path and repository. TODO need add auth for private repo

func ParseDescription added in v0.1.4

func ParseDescription(desc string) (ns, name, uid string, generation int64, raw string)

func ParseDigestFromPullOut added in v0.1.5

func ParseDigestFromPullOut(out string) string

ParseDigestFromPullOut extracts the sha256 digest from the `helm pull` output string. It takes a string as input parameter which represents the output string. It returns a string which is the extracted sha256 digest.

func ReleaseLog added in v0.1.2

func ReleaseLog(rel *release.Release) []interface{}

ReleaseLog generates a log slice for a Helm release object.

func RepoAdd

func RepoAdd(ctx context.Context, logger logr.Logger, entry repo.Entry, httpRequestTimeout time.Duration) (err error)

RepoAdd adds a chart repository inspire by https://github.com/helm/helm/blob/dbc6d8e20fe1d58d50e6ed30f09a04a77e4c68db/cmd/helm/repo_add.go some difference with `helm repo add` command 1. when the same repo name is added, it will overwrite 2. many options we do not need now are not supported yet.

func RepoRemove

func RepoRemove(ctx context.Context, logger logr.Logger, name string) (err error)

RepoRemove inspire by https://github.com/helm/helm/blob/dbc6d8e20fe1d58d50e6ed30f09a04a77e4c68db/cmd/helm/repo_remove.go#L117 some difference with `helm repo remove` command 1. only support remove one repo 2. many options we do not need now are not supported yet.

func RepoUpdate

func RepoUpdate(ctx context.Context, logger logr.Logger, name string, httpRequestTimeout time.Duration) (err error)

RepoUpdate inspire by https://github.com/helm/helm/blob/dbc6d8e20fe1d58d50e6ed30f09a04a77e4c68db/cmd/helm/repo_update.go#L117 some difference with `helm repo update` command 1. only support update one repo 2. many options we do not need now are not supported yet.

Types

type ChartDef added in v0.1.6

type ChartDef struct {
	URL           string
	Version       string
	ConfigMapName string
	Component     *v1alpha1.Component
	H             *CoreHelmWrapper
	Scheme        *runtime.Scheme
}

func (ChartDef) String added in v0.1.6

func (c ChartDef) String() string

type ChartWorker added in v0.1.6

type ChartWorker interface {
	Push(ChartDef)
}

func NewChartWorker added in v0.1.6

func NewChartWorker(options ...Option) ChartWorker

type CoreHelm added in v0.1.6

type CoreHelm interface {
	InstallOrUpgrade(ctx context.Context, chartName string) (rel *release.Release, err error)
	Uninstall(ctx context.Context) error
	GetLastRelease() (rel *release.Release, err error)
	GetManifestsByDryRun(ctx context.Context, chartName string) (data string, err error)
	Rollback(ctx context.Context) error
	GetOCIRepoCharts(ctx context.Context, pullURL string, skipTags map[string]bool) (latest *chart.Metadata, all []*hrepo.ChartVersion, err error)
	PullAndParse(ctx context.Context, pullURL, version string) (out string, chartRequested *chart.Chart, err error)
	Pull(ctx context.Context, pullURL, version string) (out, dir, entryName string, err error)
	Template(ctx context.Context, version string, localPath string) (rel *release.Release, err error)
}

type CoreHelmWrapper added in v0.1.6

type CoreHelmWrapper struct {
	*HelmWrapper
	// contains filtered or unexported fields
}

CoreHelmWrapper is a wrapper for helm command

func NewCoreHelmWrapper added in v0.1.6

func NewCoreHelmWrapper(getter genericclioptions.RESTClientGetter, namespace string, logger logr.Logger, cli client.Client, cpl *corev1alpha1.ComponentPlan, repo *corev1alpha1.Repository, component *corev1alpha1.Component) (*CoreHelmWrapper, error)

NewCoreHelmWrapper returns a new helmWrapper instance

func (*CoreHelmWrapper) GetLastRelease added in v0.1.6

func (c *CoreHelmWrapper) GetLastRelease() (rel *release.Release, err error)

GetLastRelease get last release revision

func (*CoreHelmWrapper) GetManifestsByDryRun added in v0.1.6

func (c *CoreHelmWrapper) GetManifestsByDryRun(ctx context.Context, chartName string) (data string, err error)

GetManifestsByDryRun get helm templates by dryRun

func (*CoreHelmWrapper) GetOCIRepoCharts added in v0.1.6

func (c *CoreHelmWrapper) GetOCIRepoCharts(ctx context.Context, pullURL string, skipTags map[string]bool) (latest *chart.Metadata, all []*hrepo.ChartVersion, err error)

GetOCIRepoCharts retrieves the latest chart metadata and all component versions for a given OCI repository.

func (*CoreHelmWrapper) InstallOrUpgrade added in v0.1.6

func (c *CoreHelmWrapper) InstallOrUpgrade(ctx context.Context, chartName string) (rel *release.Release, err error)

InstallOrUpgrade installs / ungrade a helm chart to the cluster

func (*CoreHelmWrapper) Pull added in v0.1.6

func (c *CoreHelmWrapper) Pull(ctx context.Context, pullURL, version string) (out, dir, entryName string, err error)

func (*CoreHelmWrapper) PullAndParse added in v0.1.6

func (c *CoreHelmWrapper) PullAndParse(ctx context.Context, pullURL, version string) (out string, chartRequested *chart.Chart, err error)

func (*CoreHelmWrapper) Rollback added in v0.1.6

func (c *CoreHelmWrapper) Rollback(ctx context.Context) (err error)

func (*CoreHelmWrapper) Template added in v0.1.6

func (c *CoreHelmWrapper) Template(ctx context.Context, version, localPath string) (rel *release.Release, err error)

func (*CoreHelmWrapper) Uninstall added in v0.1.6

func (c *CoreHelmWrapper) Uninstall(ctx context.Context) (err error)

Uninstall installs a helm chart to the cluster

type HelmRelease added in v0.1.6

type HelmRelease interface {
	GetDefaultInstallCfg() *action.Install
	SetValuesOptions(f, set, setString, setFile []string) *values.Options
	Install(ctx context.Context, logger logr.Logger, client *action.Install, valueOpts *values.Options, name, chart string) (rel *release.Release, out string, err error)
	InstallWithDefaulConfig(ctx context.Context, logger logr.Logger, name, chart string) (rel *release.Release, out string, err error)
	GetDefaultUpgradeCfg() (upgradeCfg *action.Upgrade, createNamespace bool)
	Upgrade(ctx context.Context, logger logr.Logger, client *action.Upgrade, valueOpts *values.Options, releaseName, chart string, createNamespace bool) (rel *release.Release, out string, err error)
	UpgradeWithDefaulConfig(ctx context.Context, logger logr.Logger, releaseName, chart string) (rel *release.Release, out string, err error)
	GetDefaultTemplateCfg() (templateCfg *action.Install, validate, skipTests, includeCrds bool, kubeVersion string, extraAPIs, showFiles []string)
	Template(ctx context.Context, logger logr.Logger, client *action.Install, valueOpts *values.Options, name, chart, kubeVersion string, validate, includeCrds, skipTests bool, extraAPIs, showFiles []string) (rel *release.Release, templateOut string, err error)
	TemplateWithDefaulConfig(ctx context.Context, logger logr.Logger, name, chart string) (rel *release.Release, out string, err error)
	GetDefaultRollbackCfg() *action.Rollback
	Rollback(ctx context.Context, logger logr.Logger, client *action.Rollback, releaseName string, revision int) (out string, err error)
	RollbackWithDefaultConfig(ctx context.Context, logger logr.Logger, releaseName string, revision int) (out string, err error)
	GetDefaultUninstallCfg() *action.Uninstall
	Uninstall(ctx context.Context, logger logr.Logger, client *action.Uninstall, releaseNames ...string) (out string, err error)
	UninstallWithDefaultConfig(ctx context.Context, logger logr.Logger, releaseNames ...string) (out string, err error)
	GetDefaultPullCfg() *action.Pull
	Pull(ctx context.Context, logger logr.Logger, client *action.Pull, args ...string) (out string, err error)
	PullWithDefaultConfig(ctx context.Context, logger logr.Logger, args ...string) (out string, err error)
	GetLastRelease(releaseName string) (*release.Release, error)
}

type HelmWrapper added in v0.1.1

type HelmWrapper struct {
	// contains filtered or unexported fields
}

HelmWrapper is a wrapper for helm command

func NewHelmWrapper added in v0.1.3

func NewHelmWrapper(getter genericclioptions.RESTClientGetter, namespace string, logger logr.Logger) (*HelmWrapper, error)

NewHelmWrapper returns a new helmWrapper instance

func (*HelmWrapper) GetDefaultInstallCfg added in v0.1.6

func (h *HelmWrapper) GetDefaultInstallCfg() *action.Install

func (*HelmWrapper) GetDefaultPullCfg added in v0.1.6

func (h *HelmWrapper) GetDefaultPullCfg() *action.Pull

func (*HelmWrapper) GetDefaultRollbackCfg added in v0.1.6

func (h *HelmWrapper) GetDefaultRollbackCfg() *action.Rollback

func (*HelmWrapper) GetDefaultTemplateCfg added in v0.1.6

func (h *HelmWrapper) GetDefaultTemplateCfg() (templateCfg *action.Install, validate, skipTests, includeCrds bool, kubeVersion string, extraAPIs, showFiles []string)

func (*HelmWrapper) GetDefaultUninstallCfg added in v0.1.6

func (h *HelmWrapper) GetDefaultUninstallCfg() *action.Uninstall

func (*HelmWrapper) GetDefaultUpgradeCfg added in v0.1.6

func (h *HelmWrapper) GetDefaultUpgradeCfg() (upgradeCfg *action.Upgrade, createNamespace bool)

func (*HelmWrapper) GetLastRelease added in v0.1.6

func (h *HelmWrapper) GetLastRelease(releaseName string) (*release.Release, error)

GetLastRelease observes the last revision

func (*HelmWrapper) Install added in v0.1.6

func (h *HelmWrapper) Install(ctx context.Context, logger logr.Logger, client *action.Install, valueOpts *values.Options, name, chart string) (rel *release.Release, out string, err error)

Install [NAME] [CHART]

func (*HelmWrapper) InstallWithDefaulConfig added in v0.1.6

func (h *HelmWrapper) InstallWithDefaulConfig(ctx context.Context, logger logr.Logger, name, chart string) (rel *release.Release, out string, err error)

InstallWithDefaulConfig [NAME] [CHART]

func (*HelmWrapper) Pull added in v0.1.4

func (h *HelmWrapper) Pull(ctx context.Context, logger logr.Logger, client *action.Pull, args ...string) (out string, err error)

Pull [chart URL | repo/chartname] [...]

func (*HelmWrapper) PullWithDefaultConfig added in v0.1.6

func (h *HelmWrapper) PullWithDefaultConfig(ctx context.Context, logger logr.Logger, args ...string) (out string, err error)

PullWithDefaultConfig [chart URL | repo/chartname] [...]

func (*HelmWrapper) Rollback added in v0.1.6

func (h *HelmWrapper) Rollback(ctx context.Context, logger logr.Logger, client *action.Rollback, releaseName string, revision int) (out string, err error)

Rollback <RELEASE> [REVISION]

func (*HelmWrapper) RollbackWithDefaultConfig added in v0.1.6

func (h *HelmWrapper) RollbackWithDefaultConfig(ctx context.Context, logger logr.Logger, releaseName string, revision int) (out string, err error)

RollbackWithDefaultConfig <RELEASE> [REVISION]

func (*HelmWrapper) SetValuesOptions added in v0.1.6

func (h *HelmWrapper) SetValuesOptions(f, set, setString, setFile []string) *values.Options

SetValuesOptions -f --values specify values in a YAML file or a URL (can specify multiple) --set set values on the command line (can specify multiple or separate values with commas: key1=val1,key2=val2) --set-string set STRING values on the command line (can specify multiple or separate values with commas: key1=val1,key2=val2) --set-file set values from respective files specified via the command line (can specify multiple or separate values with commas: key1=path1,key2=path2)

func (*HelmWrapper) Template added in v0.1.6

func (h *HelmWrapper) Template(ctx context.Context, logger logr.Logger, client *action.Install, valueOpts *values.Options, name, chart, kubeVersion string, validate, includeCrds, skipTests bool, extraAPIs, showFiles []string) (rel *release.Release, templateOut string, err error)

Template [NAME] [CHART] kubeVersion: helm template --kube-version validate: helm template --validate extraAPIs: helm template --api-versions

func (*HelmWrapper) TemplateWithDefaulConfig added in v0.1.6

func (h *HelmWrapper) TemplateWithDefaulConfig(ctx context.Context, logger logr.Logger, name, chart string) (rel *release.Release, out string, err error)

TemplateWithDefaulConfig [NAME] [CHART]

func (*HelmWrapper) Uninstall added in v0.1.6

func (h *HelmWrapper) Uninstall(ctx context.Context, logger logr.Logger, client *action.Uninstall, releaseNames ...string) (out string, err error)

Uninstall RELEASE_NAME [...]

func (*HelmWrapper) UninstallWithDefaultConfig added in v0.1.6

func (h *HelmWrapper) UninstallWithDefaultConfig(ctx context.Context, logger logr.Logger, releaseNames ...string) (out string, err error)

UninstallWithDefaultConfig RELEASE_NAME [...]

func (*HelmWrapper) Upgrade added in v0.1.6

func (h *HelmWrapper) Upgrade(ctx context.Context, logger logr.Logger, client *action.Upgrade, valueOpts *values.Options, releaseName, chart string, createNamespace bool) (rel *release.Release, out string, err error)

Upgrade [RELEASE] [CHART] createNamespace: helm upgrade --create-namespace

func (*HelmWrapper) UpgradeWithDefaulConfig added in v0.1.6

func (h *HelmWrapper) UpgradeWithDefaulConfig(ctx context.Context, logger logr.Logger, releaseName, chart string) (rel *release.Release, out string, err error)

UpgradeWithDefaulConfig [RELEASE] [CHART]

type Option added in v0.1.6

type Option func(*option)

func WithChCount added in v0.1.6

func WithChCount(c int) Option

func WithContext added in v0.1.6

func WithContext(ctx context.Context) Option

func WithCustomers added in v0.1.6

func WithCustomers(customers int) Option

func WithK8sClient added in v0.1.6

func WithK8sClient(c client.Client) Option

type ReleaseWorkerPool added in v0.1.4

type ReleaseWorkerPool interface {
	// GetManifests is a synchronization function
	GetManifests(ctx context.Context, plan *v1alpha1.ComponentPlan, repo *v1alpha1.Repository, chartName string) (data string, err error)
	// InstallOrUpgrade is an asynchronous function.
	InstallOrUpgrade(ctx context.Context, plan *v1alpha1.ComponentPlan, repo *v1alpha1.Repository, chartName string) (rel *release.Release, doing bool, err error)
	// Uninstall is an asynchronous function.
	Uninstall(ctx context.Context, plan *v1alpha1.ComponentPlan) (doing bool, err error)
	// GetLastRelease is a synchronization function
	GetLastRelease(plan *v1alpha1.ComponentPlan) (rel *release.Release, err error)
	// RollBack is an asynchronous function
	RollBack(ctx context.Context, plan *v1alpha1.ComponentPlan) (rel *release.Release, doing bool, err error)
}

ReleaseWorkerPool handle all helm action.we can mock it for testing

type WorkerPool added in v0.1.4

type WorkerPool struct {
	sync.Mutex
	// contains filtered or unexported fields
}

func NewWorkerPool added in v0.1.4

func NewWorkerPool(logger logr.Logger, cli client.Client) *WorkerPool

func (*WorkerPool) GetLastRelease added in v0.1.4

func (r *WorkerPool) GetLastRelease(plan *v1alpha1.ComponentPlan) (rel *release.Release, err error)

func (*WorkerPool) GetManifests added in v0.1.4

func (r *WorkerPool) GetManifests(ctx context.Context, plan *v1alpha1.ComponentPlan, repo *v1alpha1.Repository, chartName string) (data string, err error)

func (*WorkerPool) InstallOrUpgrade added in v0.1.4

func (r *WorkerPool) InstallOrUpgrade(ctx context.Context, plan *v1alpha1.ComponentPlan, repo *v1alpha1.Repository, chartName string) (rel *release.Release, isRunning bool, err error)

func (*WorkerPool) RollBack added in v0.1.4

func (r *WorkerPool) RollBack(ctx context.Context, plan *v1alpha1.ComponentPlan) (rel *release.Release, doing bool, err error)

func (*WorkerPool) Uninstall added in v0.1.4

func (r *WorkerPool) Uninstall(ctx context.Context, plan *v1alpha1.ComponentPlan) (doing bool, err error)

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL