action

package
v1.23.1 Latest Latest
Warning

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

Go to latest
Published: Mar 23, 2026 License: Apache-2.0, Apache-2.0 Imports: 62 Imported by: 0

Documentation

Overview

Package action contains the logic for each action that Helm can perform.

This is a library for calling top-level Helm actions like 'install', 'upgrade', or 'list'. Actions approximately match the command line invocations that the Helm client uses.

Index

Constants

ListAll is a convenience for enabling all list filters

View Source
const NotesFileSuffix = notesFileSuffix

Variables

View Source
var (
	NewSecretClient    = newSecretClient
	NewConfigMapClient = newConfigMapClient
)
View Source
var Timestamper = time.Now

Timestamper is a function capable of producing a timestamp.Timestamper.

By default, this is a time.Time function from the Helm time package. This can be overridden for testing though, so that timestamps are predictable.

View Source
var ValidName = regexp.MustCompile(`^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$`)

ValidName is a regular expression for resource names.

DEPRECATED: This will be removed in Helm 4, and is no longer used here. See pkg/lint/rules.validateMetadataNameFunc for the replacement.

According to the Kubernetes help text, the regular expression it uses is:

[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*

This follows the above regular expression (but requires a full string match, not partial).

The Kubernetes documentation is here, though it is not entirely correct: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names

Functions

func CheckDependencies

func CheckDependencies(ch *chart.Chart, reqs []*chart.Dependency) error

CheckDependencies checks the dependencies for a chart.

func ErrMissingChart

func ErrMissingChart() error

func ExistingResourceConflict

func ExistingResourceConflict(resources kube.ResourceList, releaseName, releaseNamespace string) (kube.ResourceList, error)

func GetVersionSet

GetVersionSet retrieves a set of available k8s API versions

func HasWarningsOrErrors

func HasWarningsOrErrors(result *LintResult) bool

HasWarningsOrErrors checks is LintResult has any warnings or errors

func NewLazyClient

func NewLazyClient(namespace string, clientFn func() (*kubernetes.Clientset, error)) *lazyClient

func TemplateName

func TemplateName(nameTemplate string) (string, error)

TemplateName renders a name template, returning the name or an error.

Types

type ChartPathOptions

type ChartPathOptions struct {
	CaFile                string // --ca-file
	CertFile              string // --cert-file
	KeyFile               string // --key-file
	InsecureSkipTLSverify bool   // --insecure-skip-verify
	PlainHTTP             bool   // --plain-http
	Keyring               string // --keyring
	Password              string // --password
	PassCredentialsAll    bool   // --pass-credentials
	RepoURL               string // --repo
	Username              string // --username
	Verify                bool   // --verify
	Version               string // --version
	// contains filtered or unexported fields
}

ChartPathOptions captures common options used for controlling chart paths

func (*ChartPathOptions) LocateChart

func (c *ChartPathOptions) LocateChart(name string, settings *cli.EnvSettings) (string, error)

LocateChart looks for a chart directory in known places, and returns either the full path or an error.

This does not ensure that the chart is well-formed; only that the requested filename exists.

Order of resolution: - relative to current working directory - if path is absolute or begins with '.', error out here - URL

If 'verify' was set on ChartPathOptions, this will attempt to also verify the chart.

func (*ChartPathOptions) SetRegistryClient

func (c *ChartPathOptions) SetRegistryClient(cli *registry.Client)

type Configuration

type Configuration struct {
	// RESTClientGetter is an interface that loads Kubernetes clients.
	RESTClientGetter RESTClientGetter

	// Releases stores records of releases.
	Releases *storage.Storage

	// KubeClient is a Kubernetes API client.
	KubeClient kube.Interface

	// RegistryClient is a client for working with registries
	RegistryClient *registry.Client

	// Capabilities describes the capabilities of the Kubernetes cluster.
	Capabilities *chartutil.Capabilities

	Log func(string, ...interface{})
}

Configuration injects the dependencies that all actions share.

func (*Configuration) GetCapabilities

func (cfg *Configuration) GetCapabilities() (*chartutil.Capabilities, error)

func (*Configuration) Init

func (cfg *Configuration) Init(getter genericclioptions.RESTClientGetter, namespace, helmDriver string, log DebugLog) error

Init initializes the action configuration

func (*Configuration) KubernetesClientSet

func (cfg *Configuration) KubernetesClientSet() (kubernetes.Interface, error)

KubernetesClientSet creates a new kubernetes ClientSet based on the configuration

func (*Configuration) Now

func (cfg *Configuration) Now() time.Time

Now generates a timestamp

If the configuration has a Timestamper on it, that will be used. Otherwise, this will use time.Now().

func (*Configuration) RenderResources

func (cfg *Configuration) RenderResources(ch *chart.Chart, values chartutil.Values, releaseName, outputDir string, subNotes, useReleaseName, includeCrds bool, pr postrender.PostRenderer, interactWithRemote, enableDNS bool, opts helmopts.HelmOptions) ([]*release.Hook, *bytes.Buffer, string, error)

type DebugLog

type DebugLog func(format string, v ...interface{})

DebugLog sets the logger that writes debug strings

type Dependency

type Dependency struct {
	Verify      bool
	Keyring     string
	SkipRefresh bool
	ColumnWidth uint
}

Dependency is the action for building a given chart's dependency tree.

It provides the implementation of 'helm dependency' and its respective subcommands.

func NewDependency

func NewDependency() *Dependency

NewDependency creates a new Dependency object with the given configuration.

func (*Dependency) List

func (d *Dependency) List(chartpath string, out io.Writer, opts helmopts.HelmOptions) error

List executes 'helm dependency list'.

type History

type History struct {
	Max     int
	Version int
	// contains filtered or unexported fields
}

History is the action for checking the release's ledger.

It provides the implementation of 'helm history'. It returns all the revisions for a specific release. To list up to one revision of every release in one specific, or in all, namespaces, see the List action.

func NewHistory

func NewHistory(cfg *Configuration) *History

NewHistory creates a new History object with the given configuration.

func (*History) Run

func (h *History) Run(name string) ([]*release.Release, error)

Run executes 'helm history' against the given release.

type Install

type Install struct {
	ChartPathOptions

	ClientOnly               bool
	Force                    bool
	CreateNamespace          bool
	DryRun                   bool
	DryRunOption             string
	DisableHooks             bool
	Replace                  bool
	Wait                     bool
	WaitForJobs              bool
	Devel                    bool
	DependencyUpdate         bool
	Timeout                  time.Duration
	Namespace                string
	ReleaseName              string
	GenerateName             bool
	NameTemplate             string
	Description              string
	OutputDir                string
	Atomic                   bool
	SkipCRDs                 bool
	SubNotes                 bool
	DisableOpenAPIValidation bool
	IncludeCRDs              bool
	Labels                   map[string]string
	// KubeVersion allows specifying a custom kubernetes version to use and
	// APIVersions allows a manual set of supported API Versions to be passed
	// (for things like templating). These are ignored if ClientOnly is false
	KubeVersion *chartutil.KubeVersion
	APIVersions chartutil.VersionSet
	// Used by helm template to render charts with .Release.IsUpgrade. Ignored if Dry-Run is false
	IsUpgrade bool
	// Enable DNS lookups when rendering templates
	EnableDNS bool
	// Used by helm template to add the release as part of OutputDir path
	// OutputDir/<ReleaseName>
	UseReleaseName bool
	PostRenderer   postrender.PostRenderer
	// Lock to control raceconditions when the process receives a SIGTERM
	Lock sync.Mutex

	CleanupOnFail               bool
	StagesSplitter              phases.Splitter
	StagesExternalDepsGenerator phases.ExternalDepsGenerator
	DeployReportPath            string
	// contains filtered or unexported fields
}

Install performs an installation operation.

func NewInstall

func NewInstall(cfg *Configuration, stagesSplitter phases.Splitter, stagesExternalDepsGenerator phases.ExternalDepsGenerator) *Install

NewInstall creates a new Install object with the given configuration.

func (*Install) GetRegistryClient

func (i *Install) GetRegistryClient() *registry.Client

GetRegistryClient get the registry client.

func (*Install) NameAndChart

func (i *Install) NameAndChart(args []string) (string, string, error)

NameAndChart returns the name and chart that should be used.

This will read the flags and handle name generation if necessary.

func (*Install) Run

func (i *Install) Run(chrt *chart.Chart, vals map[string]interface{}) (*release.Release, error)

func (*Install) RunWithContext

func (i *Install) RunWithContext(ctx context.Context, chrt *chart.Chart, vals map[string]interface{}) (*release.Release, error)

Run executes the installation with Context

When the task is cancelled through ctx, the function returns and the install proceeds in the background.

func (*Install) SetRegistryClient

func (i *Install) SetRegistryClient(registryClient *registry.Client)

SetRegistryClient sets the registry client for the install action

type Lint

type Lint struct {
	Strict        bool
	Namespace     string
	WithSubcharts bool
	Quiet         bool
	KubeVersion   *chartutil.KubeVersion
}

Lint is the action for checking that the semantics of a chart are well-formed.

It provides the implementation of 'helm lint'.

func NewLint

func NewLint() *Lint

NewLint creates a new Lint object with the given configuration.

func (*Lint) Run

func (l *Lint) Run(paths []string, vals map[string]interface{}) *LintResult

Run executes 'helm Lint' against the given chart.

type LintResult

type LintResult struct {
	TotalChartsLinted int
	Messages          []support.Message
	Errors            []error
}

LintResult is the result of Lint

type List

type List struct {

	// All ignores the limit/offset
	All bool
	// AllNamespaces searches across namespaces
	AllNamespaces bool
	// Sort indicates the sort to use
	//
	// see pkg/releaseutil for several useful sorters
	Sort Sorter
	// Overrides the default lexicographic sorting
	ByDate      bool
	SortReverse bool
	// StateMask accepts a bitmask of states for items to show.
	// The default is ListDeployed
	StateMask ListStates
	// Limit is the number of items to return per Run()
	Limit int
	// Offset is the starting index for the Run() call
	Offset int
	// Filter is a filter that is applied to the results
	Filter       string
	Short        bool
	NoHeaders    bool
	TimeFormat   string
	Uninstalled  bool
	Superseded   bool
	Uninstalling bool
	Deployed     bool
	Failed       bool
	Pending      bool
	Selector     string
	// contains filtered or unexported fields
}

List is the action for listing releases.

It provides, for example, the implementation of 'helm list'. It returns no more than one revision of every release in one specific, or in all, namespaces. To list all the revisions of a specific release, see the History action.

func NewList

func NewList(cfg *Configuration) *List

NewList constructs a new *List

func (*List) Run

func (l *List) Run() ([]*release.Release, error)

Run executes the list command, returning a set of matches.

func (*List) SetStateMask

func (l *List) SetStateMask()

SetStateMask calculates the state mask based on parameters.

type ListStates

type ListStates uint

ListStates represents zero or more status codes that a list item may have set

Because this is used as a bitmask filter, more than one bit can be flipped in the ListStates.

const (
	// ListDeployed filters on status "deployed"
	ListDeployed ListStates = 1 << iota
	// ListUninstalled filters on status "uninstalled"
	ListUninstalled
	// ListUninstalling filters on status "uninstalling" (uninstall in progress)
	ListUninstalling
	// ListPendingInstall filters on status "pending" (deployment in progress)
	ListPendingInstall
	// ListPendingUpgrade filters on status "pending_upgrade" (upgrade in progress)
	ListPendingUpgrade
	// ListPendingRollback filters on status "pending_rollback" (rollback in progress)
	ListPendingRollback
	// ListSuperseded filters on status "superseded" (historical release version that is no longer deployed)
	ListSuperseded
	// ListFailed filters on status "failed" (release version not deployed because of error)
	ListFailed
	// ListUnknown filters on an unknown status
	ListUnknown
)

func (ListStates) FromName

func (s ListStates) FromName(str string) ListStates

FromName takes a state name and returns a ListStates representation.

Currently, there are only names for individual flipped bits, so the returned ListStates will only match one of the constants. However, it is possible that this behavior could change in the future.

type Package

type Package struct {
	Sign             bool
	Key              string
	Keyring          string
	PassphraseFile   string
	Version          string
	AppVersion       string
	Destination      string
	DependencyUpdate bool

	RepositoryConfig string
	RepositoryCache  string
}

Package is the action for packaging a chart.

It provides the implementation of 'helm package'.

func NewPackage

func NewPackage() *Package

NewPackage creates a new Package object with the given configuration.

func (*Package) Clearsign

func (p *Package) Clearsign(filename string, opts helmopts.HelmOptions) error

Clearsign signs a chart

func (*Package) Run

func (p *Package) Run(path string, _ map[string]interface{}, opts helmopts.HelmOptions) (string, error)

Run executes 'helm package' against the given chart and returns the path to the packaged chart.

type Pull

type Pull struct {
	ChartPathOptions

	Settings *cli.EnvSettings // TODO: refactor this out of pkg/action

	Devel       bool
	Untar       bool
	VerifyLater bool
	UntarDir    string
	DestDir     string
	// contains filtered or unexported fields
}

Pull is the action for checking a given release's information.

It provides the implementation of 'helm pull'.

func NewPull

func NewPull() *Pull

NewPull creates a new Pull object.

func NewPullWithOpts

func NewPullWithOpts(opts ...PullOpt) *Pull

NewPullWithOpts creates a new pull, with configuration options.

func (*Pull) Run

func (p *Pull) Run(chartRef string) (string, error)

Run executes 'helm pull' against the given release.

func (*Pull) SetRegistryClient

func (p *Pull) SetRegistryClient(client *registry.Client)

SetRegistryClient sets the registry client on the pull configuration object.

type PullOpt

type PullOpt func(*Pull)

func WithConfig

func WithConfig(cfg *Configuration) PullOpt

type Push

type Push struct {
	Settings *cli.EnvSettings
	// contains filtered or unexported fields
}

Push is the action for uploading a chart.

It provides the implementation of 'helm push'.

func NewPushWithOpts

func NewPushWithOpts(opts ...PushOpt) *Push

NewPushWithOpts creates a new push, with configuration options.

func (*Push) Run

func (p *Push) Run(chartRef string, remote string, opts helmopts.HelmOptions) (string, error)

Run executes 'helm push' against the given chart archive.

type PushOpt

type PushOpt func(*Push)

PushOpt is a type of function that sets options for a push action.

func WithInsecureSkipTLSVerify

func WithInsecureSkipTLSVerify(insecureSkipTLSVerify bool) PushOpt

WithInsecureSkipTLSVerify determines if a TLS Certificate will be checked

func WithPlainHTTP

func WithPlainHTTP(plainHTTP bool) PushOpt

WithPlainHTTP configures the use of plain HTTP connections.

func WithPushConfig

func WithPushConfig(cfg *Configuration) PushOpt

WithPushConfig sets the cfg field on the push configuration object.

func WithPushOptWriter

func WithPushOptWriter(out io.Writer) PushOpt

WithOptWriter sets the registryOut field on the push configuration object.

func WithTLSClientConfig

func WithTLSClientConfig(certFile, keyFile, caFile string) PushOpt

WithTLSClientConfig sets the certFile, keyFile, and caFile fields on the push configuration object.

type RESTClientGetter

type RESTClientGetter interface {
	ToRESTConfig() (*rest.Config, error)
	ToDiscoveryClient() (discovery.CachedDiscoveryInterface, error)
	ToRESTMapper() (meta.RESTMapper, error)
}

RESTClientGetter gets the rest client

type RegistryLogin

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

RegistryLogin performs a registry login operation.

func NewRegistryLogin

func NewRegistryLogin(cfg *Configuration) *RegistryLogin

NewRegistryLogin creates a new RegistryLogin object with the given configuration.

func (*RegistryLogin) Run

func (a *RegistryLogin) Run(_ io.Writer, hostname string, username string, password string, opts ...RegistryLoginOpt) error

Run executes the registry login operation

type RegistryLoginOpt

type RegistryLoginOpt func(*RegistryLogin) error

func WithCAFile

func WithCAFile(caFile string) RegistryLoginOpt

WithCAFile specifies the path to the CA file to use for TLS.

func WithCertFile

func WithCertFile(certFile string) RegistryLoginOpt

WithCertFile specifies the path to the certificate file to use for TLS.

func WithInsecure

func WithInsecure(insecure bool) RegistryLoginOpt

WithKeyFile specifies whether to very certificates when communicating.

func WithKeyFile

func WithKeyFile(keyFile string) RegistryLoginOpt

WithKeyFile specifies the path to the key file to use for TLS.

type RegistryLogout

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

RegistryLogout performs a registry login operation.

func NewRegistryLogout

func NewRegistryLogout(cfg *Configuration) *RegistryLogout

NewRegistryLogout creates a new RegistryLogout object with the given configuration.

func (*RegistryLogout) Run

func (a *RegistryLogout) Run(_ io.Writer, hostname string) error

Run executes the registry logout operation

type Sorter

type Sorter uint

Sorter is a top-level sort

const (
	// ByNameDesc sorts by descending lexicographic order
	ByNameDesc Sorter = iota + 1
	// ByDateAsc sorts by ascending dates (oldest updated release first)
	ByDateAsc
	// ByDateDesc sorts by descending dates (latest updated release first)
	ByDateDesc
)

type Uninstall

type Uninstall struct {
	DisableHooks        bool
	DryRun              bool
	IgnoreNotFound      bool
	KeepHistory         bool
	Wait                bool
	DeletionPropagation string
	Timeout             time.Duration
	Description         string

	DeleteHooks     bool
	DeleteNamespace bool
	Namespace       string
	StagesSplitter  phases.Splitter
	// contains filtered or unexported fields
}

Uninstall is the action for uninstalling releases.

It provides the implementation of 'helm uninstall'.

func NewUninstall

func NewUninstall(cfg *Configuration, stagesSplitter phases.Splitter) *Uninstall

NewUninstall creates a new Uninstall object with the given configuration.

func (*Uninstall) Run

Run uninstalls the given release.

type Verify

type Verify struct {
	Keyring string
	Out     string
}

Verify is the action for building a given chart's Verify tree.

It provides the implementation of 'helm verify'.

func NewVerify

func NewVerify() *Verify

NewVerify creates a new Verify object with the given configuration.

func (*Verify) Run

func (v *Verify) Run(chartfile string) error

Run executes 'helm verify'.

Jump to

Keyboard shortcuts

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