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 generates Helm charts from PHP instead of hand-maintaining YAML trees. In a Laravel app you get a service provider, a publishable config/helm.php (chart paths, Helm binary/version expectations), and a Helm facade, so the first thing to do is confirm the package installs against your framework version at all.
Check the constraints before anything else. This release is the compatibility line in the sand:
1.11.0 drops Illuminate 8.x — you need Laravel 9+ (and the PHP version that implies). If you are still on Laravel 8, pin to 1.10.x and treat this as your upgrade blocker.apiVersion assumptions target the 1.22–1.24 window. If any of your clusters are still on 1.21, do not take this release.Minimal first steps:
composer require renoki-co/php-helm and verify composer why-not / composer update --dry-run resolves against your Laravel and PHP constraint.php artisan vendor:publish --provider="RenokiCo\PhpHelm\PhpHelmServiceProvider" and read config/helm.php — chart path, default namespace, Helm binary location, and any version pinning live here.values array and a couple of templates (Deployment + Service). Render it and diff against a chart you already deploy.First real use case: replace your most static Helm chart — typically an internal service with a Deployment, Service, and ConfigMap — and keep it in resources/helm (or wherever config points) so it lives and is reviewed alongside the application it deploys.
Chart-per-service, values-per-environment. The package's sweet spot is generating values dynamically from Laravel config/env instead of checking in values-staging.yaml / values-prod.yaml. Resolve image tags, replica counts, resource limits, and hostnames from config, then hand the chart to Helm. That keeps a single source of truth with the app's own configuration.
Render in CI, apply via your existing pipeline. Do not let php artisan shell out to helm upgrade in production. Render (helm template equivalent) in CI, run helm lint and a kubectl --dry-run=server diff against the target cluster, and let Argo CD / Flux / your existing release job apply the artifact. This keeps the package as a generator, not a deployer, which is the role it is good at.
Test the output, not the PHP. Snapshot the rendered YAML and assert on it — golden-file tests catch accidental drift when you bump the package (exactly the kind of drift 1.11.0 can introduce via apiVersion changes). Add a schema/version assertion that every generated manifest's apiVersion is served by your target cluster.
Keep the K8s version explicit. Because 1.11.0 moved the supported window to 1.22–1.24, record the target cluster version in config or in your chart classes and have a test assert it. When 1.25 lands in a future release you will want that knob already in place — policy/v1 PodDisruptionBudget, batch/v1 CronJob, and the removal candidates around PSP and autoscaling/v2beta2 are the usual breakage points.
Multi-chart and subchart composition. Use one chart class per deployable, composed at the top level, rather than one giant chart with conditionals. values overrides then flow naturally per environment.
^1.10 constraint will silently jump you across a framework-support boundary. Pin deliberately and let Dependabot/ Renovate open the PR so you see the constraint diff.apply time. Validate in CI with kubectl --dry-run=server against each target cluster version you run.env() breaks under php artisan config:cache in CI containers. Read from config(), and make sure the Helm-related config is populated from real env vars at deploy time or baked into cached config intentionally.| cat -A before blaming the package.helm get values. Reference existing Secrets (secretKeyRef) or an external secret operator; never interpolate a password into the chart values from config().How can I help you explore Laravel packages today?