Skip to main content

Update the dependencies of a helm chart to the latest published versions.

Project description

helm-upgrade

Status
CI Tests GitHub Actions - CI Tests
Black GitHub Actions - Black
Flake8 GitHub Actions - Flake8

Do you manage a Helm Chart that has dependencies on other Helm Charts? Are you fed up of manually updating these dependencies? Then this is the tool for you! helm-upgrade is a Python command line interface (CLI) that automatically updates the dependencies of local Helm Charts.

This tool was inspired by HelmUpgradeBot and Chris Holdgraf's github-activity tool.


Installation

It's recommended to use Python version 3.7 with this tool.

pip

pip install helm-upgrade

Manual

First of all, clone this repository and change into it.

git clone https://github.com/sgibson91/helm-upgrade.git
cd helm-upgrade

Use Python to install requirements and the package. Python 3.7 is recommended.

python -m pip install -r requirements.txt
python setup.py install

Test the installation by calling the help page.

helm-upgrade --help

Usage

usage: helm-upgrade [-h] [--dry-run] [-v] chart dependencies

Update the dependencies of a local Helm Chart in a project repository.

positional arguments:
  chart          Name of the local Helm Chart to be updated
  dependencies   A dictionary of Helm Chart dependencies and their host repo URLs.
                 For example, '{"nginx-ingress": "https://raw.githubusercontent.com/helm/charts/master/stable/nginx-ingress/Chart.yaml"}'

optional arguments:
  --dry-run      Perform a dry run of the update. Don't write the changes to a file.
  -v, --verbose  Option to turn on logging.

Run the CLI in the directory above your local helm chart. For example:

$ ls -R -1

./my-local-helm-chart:
Chart.yaml
README.md
requirements.yaml
templates/
values.yaml

In this example, the name argument would be my-local-helm-chart.

helm-upgrade will then:

  1. read the current versions of your dependencies from your requirements.yaml file,
  2. find the latest versions of your desired dependencies from the URLs provided (in JSON schema) to the dependencies argument,
  3. compare whether these versions are equal,
  4. if the versions are not equal (and the --dry-run flag has not been set), requirements.yaml will be overwritten with the new chart versions.

The --verbose flag will print logs to the console and the --dry-run flag will skip the file writing step.

Remote Helm Charts

helm-upgrade currently recognises chart versions from three types of hosts.

  1. A Chart.yaml file from another GitHub repository. These URLs end with "/Chart.yaml".

    For example, https://raw.githubusercontent.com/helm/charts/master/stable/nginx-ingress/Chart.yaml

  2. A repository of chart versions hosted on GitHub pages. These URLs contain "/gh-pages/".

    For example, https://raw.githubusercontent.com/jupyterhub/helm-chart/gh-pages/index.yaml

  3. Versions listed on a GitHub Releases page. These URLs end with "/releases/latest" and uses BeautifulSoup to search the html.

    For example, https://github.com/jetstack/cert-manager/releases/latest

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

helm_upgrade-0.0.1.dev2.tar.gz (5.1 kB view hashes)

Uploaded Source

Built Distribution

helm_upgrade-0.0.1.dev2-py3-none-any.whl (6.9 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page