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
- Variables
- func CheckDependencies(ch *chart.Chart, reqs []*chart.Dependency) error
- func ErrMissingChart() error
- func ExistingResourceConflict(resources kube.ResourceList, releaseName, releaseNamespace string) (kube.ResourceList, error)
- func GetVersionSet(client discovery.ServerResourcesInterface) (chartutil.VersionSet, error)
- func HasWarningsOrErrors(result *LintResult) bool
- func NewLazyClient(namespace string, clientFn func() (*kubernetes.Clientset, error)) *lazyClient
- func TemplateName(nameTemplate string) (string, error)
- type ChartPathOptions
- type Configuration
- func (cfg *Configuration) GetCapabilities() (*chartutil.Capabilities, error)
- func (cfg *Configuration) Init(getter genericclioptions.RESTClientGetter, namespace, helmDriver string, ...) error
- func (cfg *Configuration) KubernetesClientSet() (kubernetes.Interface, error)
- func (cfg *Configuration) Now() time.Time
- func (cfg *Configuration) RenderResources(ch *chart.Chart, values chartutil.Values, releaseName, outputDir string, ...) ([]*release.Hook, *bytes.Buffer, string, error)
- type DebugLog
- type Dependency
- type History
- type Install
- func (i *Install) GetRegistryClient() *registry.Client
- func (i *Install) NameAndChart(args []string) (string, string, error)
- func (i *Install) Run(chrt *chart.Chart, vals map[string]interface{}) (*release.Release, error)
- func (i *Install) RunWithContext(ctx context.Context, chrt *chart.Chart, vals map[string]interface{}) (*release.Release, error)
- func (i *Install) SetRegistryClient(registryClient *registry.Client)
- type Lint
- type LintResult
- type List
- type ListStates
- type Package
- type Pull
- type PullOpt
- type Push
- type PushOpt
- type RESTClientGetter
- type RegistryLogin
- type RegistryLoginOpt
- type RegistryLogout
- type Sorter
- type Uninstall
- type Verify
Constants ¶
const ListAll = ListDeployed | ListUninstalled | ListUninstalling | ListPendingInstall | ListPendingRollback | ListPendingUpgrade | ListSuperseded | ListFailed
ListAll is a convenience for enabling all list filters
const NotesFileSuffix = notesFileSuffix
Variables ¶
var ( NewSecretClient = newSecretClient NewConfigMapClient = newConfigMapClient )
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.
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 ¶
func GetVersionSet(client discovery.ServerResourcesInterface) (chartutil.VersionSet, error)
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 ¶
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 ¶
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 ¶
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.
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 ¶
GetRegistryClient get the registry client.
func (*Install) NameAndChart ¶
NameAndChart returns the name and chart that should be used.
This will read the flags and handle name generation if necessary.
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 ¶
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'.
type LintResult ¶
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 (*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.
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 NewPullWithOpts ¶
NewPullWithOpts creates a new pull, with configuration options.
func (*Pull) SetRegistryClient ¶
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 ¶
NewPushWithOpts creates a new push, with configuration options.
type PushOpt ¶
type PushOpt func(*Push)
PushOpt is a type of function that sets options for a push action.
func WithInsecureSkipTLSVerify ¶
WithInsecureSkipTLSVerify determines if a TLS Certificate will be checked
func WithPlainHTTP ¶
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 ¶
WithOptWriter sets the registryOut field on the push configuration object.
func WithTLSClientConfig ¶
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.
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.