kytoonlabs / laravel-helm
Laravel 对 HELM v3 的包装
1.0.2
2024-03-01 00:51 UTC
Requires
- php: ^8.2|^8.3
- illuminate/support: *
- symfony/process: ^6.2
Requires (Dev)
- orchestra/testbench: ^8.2
- phpunit/phpunit: ^9.6
README
本包提供了一种使用PHP代码调用HELM命令的包装器。
安装
可以通过多种方法进行安装,尽管推荐使用Composer。
Composer(推荐)
将以下代码片段包含到composer.json文件中。
"require": { "kytoonlabs/laravel-helm": "^1.0" }
或者使用composer require
命令
composer require kytoonlabs/laravel-helm
GitHub
发布版本可在GitHub上找到。
配置
为了使用Laravel Helm包,需要设置HELM二进制文件在服务器上的正确路径。
Laravel Helm默认使用路径/usr/local/bin/helm
,但可以通过在.env
中定义的环境变量进行配置
HELM_BINARY_PATH=/path/to/helm/bynary
其他配置
# Set the internal `Process` timeout, default=3600 HELM_PROCESS_TIMEOUT=3600
如何使用
当前版本的包实现了以下命令
- helm version
- helm install
- helm upgrade
- helm delete
还实现了一个rawCommand
方法,可以执行任何其他命令。
Helm::version
use Kytoonlabs\LaravelHelm\Helm; ... $helm = Helm::version(); $helm->run(); // Prints the command response for the command 'helm version' $version = $helm->getOutput(); ...
Helm::install($name, $chart, $options, $envs)
参数
- name: 安装名称(必需)
- chart: helm图表(必需)
- options: 选项数组(可选)
- envs: 环境变量数组(可选)
use Kytoonlabs\LaravelHelm\Helm; ... $helm = Helm::install( 'releasename', 'oci://registry-1.docker.io/bitnamicharts/redis', [ "--version" => '16.18.2' ] ); $helm->run(); // To check the command was executed successfully if ($helm->isSuccessful()) { // HELM app installed ... } ...
Helm::upgrade($name, $chart, $options, $envs)
参数
- name: 安装名称(必需)
- chart: helm图表(必需)
- options: 选项数组(可选)
- envs: 环境变量数组(可选)
use Kytoonlabs\LaravelHelm\Helm; ... $helm = Helm::upgrade( 'releasename', 'oci://registry-1.docker.io/bitnamicharts/redis', [ "--version" => '16.18.2', '--install' ] ); $helm->run(); // To check the command was executed successfully if ($helm->isSuccessful()) { // HELM app upgraded ... } ...
Helm::delete($name, $options, $envs)
参数
- name: 安装名称(必需)
- options: 选项数组(可选)
- envs: 环境变量数组(可选)
use Kytoonlabs\LaravelHelm\Helm; ... $helm = Helm::delete('releasename'); $helm->run(); // To check the command was executed successfully if ($helm->isSuccessful()) { // HELM app uninstalled ... } ...
Helm::rawCommand($command, $options, $envs)
参数
- command: 要执行的字符串命令(必需)
- options: 选项数组(可选)
- envs: 环境变量数组(可选)
use Kytoonlabs\LaravelHelm\Helm; ... // Example using simple commands $helm = Helm::rawCommand('list'); $helm->run(); // Example using commands with parameters $helm = Helm::rawCommand('list --all'); $helm->run(); // Example combining with $options $helm = Helm::rawCommand('list --output json', ['--all']); $helm->run(); ...
解析$options数组
大多数Helm对象的方 法都使用$options
数组。以下是一个解析选项的示例
use Kytoonlabs\LaravelHelm\Helm; ... // Define options array $options = [ '--version' => '1.0.0', // include parameters using --name=value '--create-namespace', // include single --parameters 'app.host' => 'https://10.0.0.1', // values from values.yaml file '-n' => 'default', // -name value parameters '-A', // single - parameters 'dry-run' // fix invalid inputs ]; $helm = Helm::install( 'myredis', 'oci://registry-1.docker.io/bitnamicharts/redis', $options ); $helm->run(); // the command parsed will be: // helm install myredis oci://registry-1.docker.io/bitnamicharts/redis --version=1.0.0 // --create-namespace --set app.host=https://10.0.0.1 -n default -A --dry-run ...
使用$envs注入环境变量
如果需要在Helm执行上下文中包含环境变量,可以使用$envs
数组来完成。
use Kytoonlabs\LaravelHelm\Helm; ... // List all helm applications pointing to a different cluster $helm = Helm::rawCommand( 'list --all', [], [ 'KUBECONFIG' => '/path/to/another/cluster/kubeconfig' ] ); // Executing helm with the KUBECONFIG env vars enabled $helm->run(); ...
测试
为了验证包是否完全正常工作,我们始终可以运行
composer test
许可证
Laravel Helm包根据Apache 2.0许可。有关详细信息,请参阅LICENSE文件。
支持
可以直接在GitHub上打开问题。