kytoonlabs/laravel-helm

Laravel 对 HELM v3 的包装

1.0.2 2024-03-01 00:51 UTC

This package is auto-updated.

Last update: 2024-09-30 02:18:14 UTC


README

GitHub License Codecov Packagist Version

本包提供了一种使用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上打开问题。