Skip to main content

Generate Argo CD Application manifests from Helm releases in Kubernetes

Project description

helmadm

CLI tools for Helm 3 releases stored in Kubernetes: generate Argo CD Application YAML, export reproducible Helm install bundles, list releases, and compare a release manifest to live cluster objects. No helm or kubectl binary required for helmadm itself.

Requirements

  • Python 3.12+
  • uv
  • Access to a Kubernetes cluster (kubeconfig or in-cluster)

Install

uv sync

Commands

Command Purpose
argocd-yaml Print an Argo CD Application manifest for a release (stdout)
pull Export a reproducible Helm install bundle (values files + README)
ls List Helm releases in the cluster
drift Compare the release's stored manifest to live objects (read-only)
uv run helmadm --help
uv run helmadm argocd-yaml --help
uv run helmadm pull --help
uv run helmadm ls --help
uv run helmadm drift --help

argocd-yaml — Application manifest

Reads the release from cluster storage, diffs coalesced chart values + user config against helm show values for the chart version (fetched from the chart repo), and writes overrides to spec.source.helm.valuesObject. Non-helm fields use CHANGE_ME placeholders.

uv run helmadm ls -n monitoring
uv run helmadm argocd-yaml -n monitoring prometheus

If the release has no chart.metadata.repoURL, pass the repository URL (see NEEDS_REPO_URL in ls):

uv run helmadm argocd-yaml -n monitoring prometheus \
  --repo-url https://prometheus-community.github.io/helm-charts

--debug adds a .debug block to the YAML (raw values, diff metadata, ignoreAnnotations). Remove it before applying to Argo CD.

pull — reproducible install bundle

Reads a release from cluster storage and writes a directory you can use with plain helm install / helm upgrade (no helmadm or Argo required for reinstall).

uv run helmadm pull -n loki -o ./bundles fluentbit

Creates ./bundles/{namespace}/{release}/ containing:

  • helmadm-pull-metadata.yaml — when pulled, kubeconfig/context, release and chart info
  • {chart}.all.values.yaml — effective values from the cluster (coalesced)
  • {chart}.changed.values.yaml — overrides only (diff vs remote chart defaults)
  • {chart}.remote-all.values.yaml — chart defaults from the repository
  • README.md — helm install/template commands for each values file

Options:

  • --revision N — pull a specific Helm release revision (default: latest)
  • --repo-url — when the release has no chart.metadata.repoURL (see NEEDS_REPO_URL in ls)
  • --repo-name — helm repo alias used in the README (default: derived from the repo URL host)
  • --tar — write a gzip tarball of the bundle to stdout instead of leaving files on disk
  • --force — overwrite an existing bundle directory
uv run helmadm pull -n monitoring prometheus --revision 3 -o ./bundles
uv run helmadm pull -n loki -o ./bundles fluentbit --tar > fluentbit-bundle.tar.gz

ls — list releases

uv run helmadm ls                  # all namespaces, detailed (default)
uv run helmadm ls -n monitoring    # one namespace
uv run helmadm ls --no-detail      # name / revision / status only

drift — manifest vs live

uv run helmadm drift -n monitoring prometheus
uv run helmadm drift --detect-extras -n monitoring prometheus
uv run helmadm drift -ia -n kube-system traefik   # print normalization notes before each diff

Exit 1 on drift, missing objects, fetch errors, or extras (with --detect-extras).

Environment variables

CLI flags take precedence over env vars.

Flag Environment variable
-n / --namespace HELMADM_NAMESPACE (or current kubeconfig context namespace)
--context HELMADM_CONTEXT
--repo-url HELMADM_REPO_URL
release name (positional) HELMADM_RELEASE_NAME
(values trace, with -v) HELMADM_TRACE_VALUES — per-key logs during argocd-yaml
(Kubernetes HTTP) HELMADM_K8S_CONNECT_TIMEOUT — connect timeout in seconds (default: 5)
(Kubernetes HTTP) HELMADM_K8S_READ_TIMEOUT — read timeout in seconds (default: 60)

--kubeconfig follows kubectl: use the flag, or KUBECONFIG / ~/.kube/config.

Development

uv run pytest

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

helmadm-0.1.2.tar.gz (65.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

helmadm-0.1.2-py3-none-any.whl (39.0 kB view details)

Uploaded Python 3

File details

Details for the file helmadm-0.1.2.tar.gz.

File metadata

  • Download URL: helmadm-0.1.2.tar.gz
  • Upload date:
  • Size: 65.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.8 {"installer":{"name":"uv","version":"0.11.8","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for helmadm-0.1.2.tar.gz
Algorithm Hash digest
SHA256 8531863409ba227da930b6b076e9486f40e4c8764658f6c215f99f4d16f0205a
MD5 3b098f3145fbb1410dfe85f6ba08d156
BLAKE2b-256 7f55141392bfdf34b4a6b88d86c614ed046260b207a67e7bd040f1b12ccf5763

See more details on using hashes here.

File details

Details for the file helmadm-0.1.2-py3-none-any.whl.

File metadata

  • Download URL: helmadm-0.1.2-py3-none-any.whl
  • Upload date:
  • Size: 39.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.8 {"installer":{"name":"uv","version":"0.11.8","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for helmadm-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 106c9bea8ad73b0b33ebf99111ad388f17626b0890c5abf5842fe66cd5cd0a7b
MD5 52dee7df75dd3d2b8c9d64ec38b620f2
BLAKE2b-256 19618cb5896d0474151c0a100949021a6182359a5a0bbd4929affb823f73f7d4

See more details on using hashes here.

Supported by

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