Skip to main content

Zero-config Flux to Docker Hardened Images chart migration reporter

Project description

Steelman

Disclaimer

This project is vibe-coded.

Assume there are bugs, rough edges, missing validation, and incorrect assumptions. Review the output before relying on it.

steelman is a reporting CLI for Flux-managed Helm releases.

It scans Flux resources from:

  • live Kubernetes clusters
  • Git repositories containing Flux manifests
  • or both

It compares those releases against Docker Hardened Images catalog data and reports one of:

  • already using a DHI chart
  • a DHI chart replacement is available
  • DHI image replacements are available inside the chart values
  • no DHI replacement was found

Scope

Current scope:

  • Flux HelmRelease
  • Flux HelmRepository
  • Flux OCIRepository

Not currently supported:

  • plain Helm releases that are not represented as Flux resources
  • Argo CD applications
  • direct workload or pod inspection
  • valuesFrom resolution

What It Checks

For each Flux release, the tool:

  1. identifies the current chart source
  2. checks whether a DHI chart exists
  3. if not, tries to resolve chart defaults with helm show values
  4. merges inline HelmRelease.spec.values
  5. extracts image references from the effective values
  6. checks whether matching DHI images exist

Chart replacement takes precedence over image replacement.

Requirements

  • Python 3.12+
  • uv
  • helm if you want image replacement analysis
  • kubeconfig access if you want live cluster scanning

Usage

From the repo root:

uv run steelman

Common variants:

uv run steelman --mode cluster
uv run steelman --mode git --repo /path/to/gitops-repo
uv run steelman --contexts prod-eu,prod-us
uv run steelman --output-dir reports
uv run steelman --offline
uv run steelman --skip-image-analysis
uv run steelman --helm-bin helm
uv run steelman --image-match-threshold 0.75
uv run steelman --aliases ./aliases.yaml
uv run steelman --verbose

Defaults

If run without flags:

  • --mode both
  • scans . recursively for Flux manifests
  • reads kubeconfig from the default location
  • uses all contexts if kubeconfig contains 10 or fewer contexts
  • otherwise uses the current context only
  • writes:
    • ./steelman.md
    • ./steelman.json

Output

The Markdown report contains:

  • summary
  • already on DHI chart
  • hardened chart available
  • hardened images available
  • no DHI replacement
  • scan notes

The JSON report contains:

  • catalog metadata
  • inventory summary
  • recommendation counts
  • per-release results
  • recorded errors

Current Limitations

  • valuesFrom is detected but not resolved
  • image analysis depends on helm show values
  • some OCI chart sources may fail helm show values depending on how the chart is published
  • matching is heuristic and may still need alias tuning for edge cases

Development

uv sync --group dev
uv run ruff check .
uv run ruff format --check .
uv run ty check
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

steelman-0.1.0.tar.gz (17.3 kB view details)

Uploaded Source

Built Distribution

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

steelman-0.1.0-py3-none-any.whl (23.8 kB view details)

Uploaded Python 3

File details

Details for the file steelman-0.1.0.tar.gz.

File metadata

  • Download URL: steelman-0.1.0.tar.gz
  • Upload date:
  • Size: 17.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.10.7 {"installer":{"name":"uv","version":"0.10.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for steelman-0.1.0.tar.gz
Algorithm Hash digest
SHA256 d66c97dc8cd8480e3db8083fdf83677ce67ab25e4828a0d1274859e7a11d2dc2
MD5 5c0adf43d1c527bd8a7ddca730bd0c51
BLAKE2b-256 7e33bf4e439da65a44b7e9da6b983385df082cc61e75ca591984a585584a7643

See more details on using hashes here.

File details

Details for the file steelman-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: steelman-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 23.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.10.7 {"installer":{"name":"uv","version":"0.10.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for steelman-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 1240083b3e82c420a598b73de12b43a4560df51df3c41d16e2f909f89c678525
MD5 842b834e2df2e9148f53cbf4143433ee
BLAKE2b-256 a1af6f281ad409a1a5a08b4c16ba75be1637c787a106aeb37f8efbc8b7373072

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