Skip to main content

Python DSL and CLI for rendering and deploying simple Kubernetes apps.

Project description

helm-me

Define Kubernetes apps in Python or YAML, then deploy and operate them with one CLI.

helm-me is aimed at teams that want something lighter than a full Helm chart for day-to-day app deployments, but still want repeatable manifests, typed configuration, and operational commands such as ops pods, ops logs, ops shell, and ops port-forward.

Main Demo

Why use it

  • Write one app spec instead of hand-maintaining multiple Kubernetes manifests.
  • Choose YAML for simple config-driven setups or Python for typed, parameterized specs.
  • Use built-in components for web, postgresql, redis, and deploy hooks.
  • Import existing deployments and manage them through the same CLI.
  • Work with local dev clusters (kind, minikube, k3d) without pushing images first.

Before you start

  • Python 3.11+
  • Access to a Kubernetes cluster through a working kubeconfig
  • kubectl for interactive commands such as shell, exec, cp, and port-forward

Installation

Choose one of these flows:

# Run without installing
uvx helm-me --help

# Install as a user tool
uv tool install helm-me
helm-me --help

# Or add it to the current project
uv add helm-me
uv run helm-me --help

All examples below use helm-me .... If you installed it with uv add, run them as uv run helm-me .... If you use uvx, run them as uvx helm-me .... If you use uv tool install, run them exactly as shown.

5-Minute Quick Start

Create a minimal deploy.yaml:

apiVersion: helm-me/v1alpha1
kind: Application
metadata:
  name: hello-app

components:
  backend:
    type: web
    image: traefik/whoami:latest
    port: 80

Validate, inspect, and deploy it:

helm-me lint deploy.yaml
helm-me render deploy.yaml
helm-me deploy deploy.yaml --namespace demo --yes

Check that it is running:

helm-me ops pods hello-app
helm-me ops logs backend hello-app --tail 50
helm-me ops port-forward backend 8080 hello-app

See the Quick Start guide for the full walkthrough, including a Python DSL example and importing existing deployments.

Common Tasks

Task Command
Validate a spec helm-me lint deploy.yaml
Print rendered manifests helm-me render deploy.yaml
Deploy an app helm-me deploy deploy.yaml --yes
List pods helm-me ops pods <app>
Show pods, services, and ingresses helm-me ops status <app>
Stream logs helm-me ops logs <component> <app> -f
Open interactive shell helm-me ops shell <component> <app>
Scale a component helm-me ops scale <component> <replicas> <app>
Select the active app helm-me app use <app>
Import an existing deployment helm-me app import <name> --namespace <ns>
Generate a spec from a live deployment helm-me app generate-spec <name> --fmt yaml

Which format should I choose?

Use YAML when:

  • you want a simple declarative file
  • non-Python users will maintain the spec
  • you do not need dynamic parameters beyond static config

Use Python when:

  • you want IDE autocomplete and type hints
  • you need param()-based environment-driven configuration
  • you prefer composing specs in code

Both formats support the same core concepts. See the API Reference for the field-level reference.

Documentation

Full documentation is available at teserak.github.io/helm-me.

  • Quick Start — first deployment, first commands, and first import
  • Advanced Settings — namespace, kubeconfig, params, secrets, storage, imports, local dev
  • API Reference — DSL and YAML reference for app fields, components, and helper constructors

Examples

FAQ

Which namespace will be used? If the spec sets namespace, that value is used. If not, the default namespace is the app name. helm-me deploy --namespace ... overrides the spec for that deploy. Full rules are in Advanced Settings.

How do I target another cluster or context? Pass --kubeconfig, --context, and optionally --namespace. You can also save defaults in .helm-me.toml. See Advanced Settings.

Can I manage something that was not deployed by helm-me? Yes. Use helm-me app import ..., optionally with --label when the app does not use standard labels. See the Quick Start.

How do secrets and storage work? secretEnv, inline secrets, SQLite volumes, PostgreSQL/Redis storage, and PVC uploads are covered in Advanced Settings.

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_me-0.1.3.tar.gz (6.3 MB view details)

Uploaded Source

Built Distribution

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

helm_me-0.1.3-py3-none-any.whl (72.2 kB view details)

Uploaded Python 3

File details

Details for the file helm_me-0.1.3.tar.gz.

File metadata

  • Download URL: helm_me-0.1.3.tar.gz
  • Upload date:
  • Size: 6.3 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for helm_me-0.1.3.tar.gz
Algorithm Hash digest
SHA256 f3714ea301f5fee704f3cd9d7d6675ac09685b355641e27721bfcf5aae54e90a
MD5 996515c1ad0a0510d04889ca594eb397
BLAKE2b-256 cd1ce7f9a9ece6e1e885e6c616993a37ae848cab3f8607d2aa37fc53b408b655

See more details on using hashes here.

Provenance

The following attestation bundles were made for helm_me-0.1.3.tar.gz:

Publisher: release.yml on teserak/helm-me

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file helm_me-0.1.3-py3-none-any.whl.

File metadata

  • Download URL: helm_me-0.1.3-py3-none-any.whl
  • Upload date:
  • Size: 72.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for helm_me-0.1.3-py3-none-any.whl
Algorithm Hash digest
SHA256 8ac37ced142c58a724f6f4cbe0de60faedc67a9b719e40aab390630330a1c6bf
MD5 4047f47679d96dfc97564ca7f0e915b4
BLAKE2b-256 a2ba57b1cc25c9fdc187f30f589447b71363022275ccd7383dcad33c10633fcf

See more details on using hashes here.

Provenance

The following attestation bundles were made for helm_me-0.1.3-py3-none-any.whl:

Publisher: release.yml on teserak/helm-me

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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