renoki-co/php-helm
PHP Helm provides a PHP-friendly interface for working with Helm, the Kubernetes package manager, making it easier to manage charts and releases from PHP applications. It fits naturally into deployment automation and Kubernetes tooling workflows.
renoki-co/php-helm is a thin Laravel-oriented abstraction over Helm 3: it provides a fluent PHP API for constructing chart metadata, values.yaml payloads, and templates, plus Artisan commands that shell out to the helm binary. Architecturally it is a generator plus process wrapper, not a templating engine — the actual rendering is still performed by Helm. That is a favourable fit for a Laravel monolith or a small platform team that wants chart definitions versioned alongside application code and unit-testable in PHP, without adopting a full GitOps or CDK-style toolchain.
Integration feasibility is high but conditional. The package assumes Laravel's service provider/console kernel and symfony/process; inside a Laravel app or a Laravel Zero CLI it drops in cleanly. Outside Laravel it is usable but you inherit Laravel's container and config bootstrapping, which is disproportionate overhead for a standalone chart generator. Critically, the package does not replace Helm — the CI runner, deploy target, or local machine must still have a compatible helm binary on PATH, so any environment using it must be provisioned accordingly.
Technical risk in 1.11.0 is concentrated in the version-support narrowing, not in new functionality. Two removals are breaking in practice: Kubernetes 1.21 is no longer a supported target and Illuminate 8.x is no longer supported. The K8s drop matters because the package encodes API-version choices in generated manifests (Deployment/Ingress/HPA/PDB apiVersions changed materially across the 1.21→1.24 window). Teams still running clusters at or below 1.21 will generate manifests that the package no longer validates against and will receive no fixes. The Illuminate drop forces a Laravel upgrade on any consumer pinned to Laravel 8, which in most organisations is a larger programme of work than the chart library change itself. The K8s 1.24 addition is the headline feature but is genuinely just a support-matrix extension — no new API surface, no new commands. Secondary risk: the release note formatting is malformed (nested bullets, no changelog prose), which is a mild signal about release hygiene and means you should read the diff, not the notes, before upgrading.
Key questions to resolve before adopting: (1) Which exact K8s minor versions are now in the supported test matrix, and is 1.22/1.23 still exercised or merely untested? (2) Does the package pin a minimum Helm CLI version, and does the K8s 1.24 support require Helm ≥3.9? (3) What is the maintainer's stated deprecation policy and support window per minor release? (4) Is there a documented path for generating manifests targeting multiple cluster versions simultaneously (e.g. matrix builds)? (5) What is the test coverage for the generated manifest apiVersions, and is it asserted against a real cluster or golden files?
Stack fit is narrow but deep: Laravel 9+ (post-1.11.0), PHP 8.x, Helm 3.9+, and a target cluster at K8s 1.22–1.24. If the estate is Laravel 10/11 on K8s 1.25+, this package is behind the cluster curve and you will be generating manifests for an older API surface than you run — usable, but you lose the main reason to adopt it. Confirm the target cluster versions before committing.
Migration path for existing consumers is a two-step gate, and the order matters. First upgrade Laravel off 8.x — this is the long pole and should be scheduled as its own workstream, not bundled with a chart-library bump. Second, upgrade the cluster past 1.21. Only when both are true should you take 1.11.0. For greenfield adoption there is no migration; scaffold a chart with the Artisan command, diff the generated output against your current hand-maintained chart, and treat the diff as the acceptance test.
Compatibility work to do up front: pin the Helm CLI version in CI and in any deploy image, and add a CI check that asserts the generated chart's apiVersion fields against the minimum cluster version you support. Because the package shells out to helm, your CI image is now a runtime dependency of your build — treat it as such with an explicit version pin rather than latest.
Sequencing recommendation: (1) inventory all clusters and confirm none are ≤1.21; (2) confirm all Laravel apps are ≥9; (3) pin Helm CLI version and add manifest apiVersion assertions to CI; (4) adopt 1.11.0 in a single non-critical service as a canary; (5) roll out repo-wide. If any cluster is still on 1.21, stay on 1.10.x and set a hard deadline — you are now on an unsupported branch with no security or bugfix path.
Where the package genuinely earns its place: teams that already have Helm but want chart definitions to be typed, linted, and unit-tested in the same language and CI pipeline as the application. Where it does not: polyglot estates, teams already on Kustomize or CDK8s, or platform teams that need to support a wide K8s version range — the support matrix is too narrow and moves too coarsely for that.
Maintenance burden is moderate and mostly borne by whoever owns the Laravel version treadmill. This release makes the coupling explicit: the package's support window is now tied to both an Illuminate major and a K8s minor range, and both move on independent schedules. Expect to be forced into a coordinated upgrade roughly annually, and budget for it rather than discovering it via a failing composer update. Watch the release cadence — a single-maintainer package with a hard support cliff is a continuity risk; consider vendoring or forking if chart generation becomes load-bearing.
Support and failure modes: because the package is a wrapper, most failures surface as opaque helm CLI errors propagated through symfony/process rather than as typed PHP exceptions. Expect weak error ergonomics — non-zero exit codes, stderr passthrough, and little structured context about which generated value caused the failure. Debugging means reproducing the helm invocation manually. The second failure mode is silent version drift: if the Helm CLI on the runner is newer or older than what the package's templates assume, you get either template errors or, worse, manifests that render fine but misbehave against the cluster. Pin the CLI. Third: any consumer still on a 1.21 cluster will not get a loud failure — they will get output that looks plausible and breaks at apply time.
Scaling characteristics are good in the dimension that matters: chart generation is CPU-trivial and stateless, so it scales horizontally without thought and adds no runtime dependency to production workloads. It does not scale well across a large, heterogeneous estate — one chart-per-repo with a narrow K8s support matrix becomes an N-repo upgrade problem. If you have more than a handful of services, centralise the chart into a shared base chart and use the package only at the edges, or you will be doing this release dance per repository.
Ramp-up is low for anyone who knows Helm and Laravel — the API is idiomatic and discoverable, maybe half a day to first productive chart. The real cost is conceptual, not syntactic: engineers must understand that this generates Helm input and does not replace Helm, and that cluster/CLI version alignment is now part of their responsibility. Document the supported matrix (Laravel ≥9, Helm ≥3.9, K8s 1.22–1.24) in the repo README and in CI, and add a pre-flight check to the pipeline that fails fast on version mismatch. Given the breaking removals here, the assessment should be revisited on every minor release rather than on a fixed cadence.
How can I help you explore Laravel packages today?