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.

Files for helm-upgrade, version 0.0.1.dev2
Filename, size File type Python version Upload date Hashes
Filename, size helm_upgrade-0.0.1.dev2-py3-none-any.whl (6.9 kB) File type Wheel Python version py3 Upload date Hashes View hashes
Filename, size helm_upgrade-0.0.1.dev2.tar.gz (5.1 kB) File type Source Python version None Upload date Hashes View hashes

Supported by

Elastic Elastic Search Pingdom Pingdom Monitoring Google Google BigQuery Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN DigiCert DigiCert EV certificate StatusPage StatusPage Status page