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

Open docs/quickstart.md for the full step-by-step guide, including a Python DSL example and importing an existing deployment.

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 --output deploy.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 docs/API.md for the field-level reference.

Documentation Map

Examples

What users usually ask next

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 docs/advanced-settings.md.

How do I target another cluster or context? Pass --kubeconfig, --context, and optionally --namespace. You can also save defaults in .helm-me.toml. See docs/advanced-settings.md.

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 docs/quickstart.md.

How do secrets and storage work? secretEnv, inline secrets, SQLite volumes, PostgreSQL/Redis storage, and PVC uploads are covered in docs/advanced-settings.md.

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.2.tar.gz (5.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.2-py3-none-any.whl (72.1 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: helm_me-0.1.2.tar.gz
  • Upload date:
  • Size: 5.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.2.tar.gz
Algorithm Hash digest
SHA256 77563476fe6a725fb44e93509b2903036ce25213f400fcfe54587b0d9bfcf6cc
MD5 19cb979c059ca1117c2615cd93df85e0
BLAKE2b-256 f3d749b10bb3376680a54bd2d14ee8ba785b742b7ca44a0a75bc53139e44dd79

See more details on using hashes here.

Provenance

The following attestation bundles were made for helm_me-0.1.2.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.2-py3-none-any.whl.

File metadata

  • Download URL: helm_me-0.1.2-py3-none-any.whl
  • Upload date:
  • Size: 72.1 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.2-py3-none-any.whl
Algorithm Hash digest
SHA256 f6e1f8050102c5aba83b853938e95c7896b08c46d30c5c669615a8250bbb4b7c
MD5 d2e865ee848c2bcfbc9d8318bb5adc33
BLAKE2b-256 0211254ec44cb52091b62f8b4e627f0d8b3ff56b4bc3674b59396053435781cd

See more details on using hashes here.

Provenance

The following attestation bundles were made for helm_me-0.1.2-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