HelmStorage#
- class phalanx.storage.helm.HelmStorage(config_storage)#
Bases:
object
Interface to Helm operations.
Provides an interface to use Helm to create and process templates and to use Helm to install charts in a Kubernetes cluster.
- Parameters:
config_storage (
ConfigStorage
) – Storage object for the Phalanx configuration.
Methods Summary
create
(application, starter)Use helm create to create a new application chart.
dependency_update
(application, *[, quiet])Download chart dependencies for an application.
lint_application
(application, environment, ...)Lint an application chart with Helm.
lint_environment
(environment)Lint the top-level chart for an environment with Helm.
repo_add
(url, *[, quiet])Add a Helm chart repository to Helm's cache.
repo_update
(*[, quiet])Update Helm's cache of upstream repository indices.
template_application
(application, ...)Expand an application chart into its Kubernetes resources.
template_environment
(environment)Expand the top-level chart into its Kubernetes resources.
upgrade_application
(application, ...[, timeout])Install or upgrade an application using Helm.
Methods Documentation
- create(application, starter)#
Use helm create to create a new application chart.
- Parameters:
application (
str
) – Name of the new application.starter (
HelmStarter
) – Name of the Helm starter template to use.
- Raises:
CommandFailedError – Raised if Helm fails.
- Return type:
- dependency_update(application, *, quiet=False)#
Download chart dependencies for an application.
Tell Helm to update any third-party chart dependencies for an application and store them in the
charts
subdirectory. This is a prerequisite forlint_application
,template_application
, orupgrade_application
.Assumes that remote repositories have already been refreshed with
repo_update
and tells Helm to skip that.- Parameters:
- Raises:
CommandFailedError – Raised if Helm fails.
- Return type:
- lint_application(application, environment, values)#
Lint an application chart with Helm.
Assumes that helm dependency update has already been run to download any third-party charts. Any output is sent to standard output and standard error, and if Helm fails, a failure message will be printed to standard error.
- Parameters:
- Returns:
Whether linting passed.
- Return type:
- lint_environment(environment)#
Lint the top-level chart for an environment with Helm.
Any output is sent to standard output and standard error, and if Helm fails, a failure message will be printed to standard error.
- repo_add(url, *, quiet=False)#
Add a Helm chart repository to Helm’s cache.
Used primarily to enable Helm linting and templating, since both require any third-party chart repositories be added first.
Annoyingly, Helm requires you to name repositories, but chart configurations don’t include repository names. Automating adding Helm repositories therefore requires making up a name. This uses some arbitrary heuristics that produce consistent names and hopefully won’t produce conflicts.
- Parameters:
- Raises:
CommandFailedError – Raised if Helm fails.
ValueError – Raised if the Helm repository URL is invalid.
- Return type:
- repo_update(*, quiet=False)#
Update Helm’s cache of upstream repository indices.
- Parameters:
quiet (
bool
, default:False
) – Whether to suppress Helm’s standard output.- Raises:
CommandFailedError – Raised if Helm fails.
- Return type:
- template_application(application, environment, values)#
Expand an application chart into its Kubernetes resources.
Runs helm template to expand a chart into its Kubernetes resources for a given environment. Assumes that helm dependency update has already been run to download any third-party charts. Any output to standard error is passed along.
- Parameters:
- Returns:
Kubernetes resources created by the chart.
- Return type:
- Raises:
CommandFailedError – Raised if Helm fails.
- template_environment(environment)#
Expand the top-level chart into its Kubernetes resources.
Runs helm template to expand the top-level chart into its Kubernetes resources for a given environment. Any output to standard error is passed along.
- Parameters:
environment (
str
) – Name of the environment for which to expand the chart.- Returns:
Kubernetes resources created by the chart.
- Return type:
- Raises:
CommandFailedError – Raised if Helm fails.
- upgrade_application(application, environment, values, *, timeout=datetime.timedelta(seconds=120))#
Install or upgrade an application using Helm.
Runs helm upgrade --install to install an application chart in the given environment. Assumes that helm dependency update has already been run to download any third-party charts. Any output to standard error is passed along.
This method bypasses Argo CD and should only be used by the installer to bootstrap the environment.
- Parameters:
application (
str
) – Name of the application.environment (
str
) – Name of the environment in which to lint that application chart, used to select thevalues-environment.yaml
file to add.timeout (
timedelta
, default:datetime.timedelta(seconds=120)
) – Fail if the operation takes longer than this. The enforced timeout in Python will be one second longer to allow Helm to time out its own command first.
- Raises:
CommandFailedError – Raised if Helm fails.
CommandTimedOutError – Raised if the command timed out. The timeout is also passed to Helm as an option, so normally the command should fail and raise
CommandFailedError
instead. This exception means the Helm timeout didn’t work for some reason.
- Return type: