teknoo/kubernetes-client
Composer 安装命令:
composer require teknoo/kubernetes-client
包简介
A simple yet elegant client for accessing and controlling a Kubernetes cluster.
README 文档
README
A PHP client for managing a Kubernetes cluster. Control your Kubernetes resources by manipulating manifests, as PHP array, through the Kubernetes HTTP API. The client supports all Kubernetes API V1.28 resources, but it's possible to define new resource usable with the client. This is a fork and a rework from Maclof Kuebrnetes library.
Supported API Features
v1
- Config Maps
- Delete Options
- EndPoints
- Endpoints
- Events
- Namespaces
- Nodes
- Persistent Volume
- Persistent Volume Claims
- Pods
- Quota
- Replica Sets
- Replication Controllers
- Secrets
- Service Account
- Services
autoscaling/v2
- Horizontal Pad Autoscaler
batch/v1
- CronJobs
- Jobs
batch/v1beta1
- Cron Jobs
apps/v1
- Daemon Set
- Deployments
- ReplicaSet
extensions/v1beta1
- Daemon Sets
networking.k8s.io/v1
- Ingresses
- Network Policies
certmanager.k8s.io/v1
- Certificates
- Issuers
rbac.authorization.k8s.io/v1
- ClusterRole
- ClusterRoleBinding
- Role
- RoleBinding
hnc.x-k8s.io/v1
- Subnamespace Anchor
Basic Usage
use Teknoo\Kubernetes\Client;
$client = new Client([
'master' => 'http://master.mycluster.com',
]);
// Find pods by label selector
$pods = $client->pods()
->setLabelSelector(
[
'name' => 'test',
'version' => 'a',
]
)->find();
// Both setLabelSelector and setFieldSelector can take an optional
// second parameter which lets you define inequality based selectors (ie using the != operator)
$pods = $client->pods()
->setLabelSelector(
['name' => 'test'],
['env' => 'staging']
)->find();
// Find pods by field selector
$pods = $client->pods()->setFieldSelector(['metadata.name' => 'test'])->find();
// Find first pod with label selector (same for field selector)
$pod = $client->pods()->setLabelSelector(['name' => 'test'])->first();
Authentication Examples
Insecure HTTP
use Teknoo\Kubernetes\Client; $client = new Client([ 'master' => 'http://master.mycluster.com', ]);
Connecting from a kubeconfig file
use Teknoo\Kubernetes\Client; // Parsing from the file data directly $client = Client::loadFromKubeConfig('kubeconfig yaml data'); // Parsing from the file path $client = Client::loadFromKubeConfigFile('~/.kube/config.yml');
Extending a library
Custom repositories
use Teknoo\Kubernetes\Client; $repositories = new RepositoryRegistry(); $repositories['things'] = MyApp\Kubernetes\Repository\ThingRepository::class; $client = new Client( [ 'master' => 'https://master.mycluster.com', ], $repositories ); $client->things(); //ThingRepository
Usage Examples
Create/Update a Replication Controller
The below example uses an array to specify the replication controller's attributes. You can specify the attributes either as an array, JSON encoded string or a YAML encoded string. The second parameter to the model constructor is the data type and defaults to array.
use Teknoo\Kubernetes\Model\ReplicationController; $replicationController = new ReplicationController([ 'metadata' => [ 'name' => 'nginx-test', 'labels' => [ 'name' => 'nginx-test', ], ], 'spec' => [ 'replicas' => 1, 'template' => [ 'metadata' => [ 'labels' => [ 'name' => 'nginx-test', ], ], 'spec' => [ 'containers' => [ [ 'name' => 'nginx', 'image' => 'nginx', 'ports' => [ [ 'containerPort' => 80, 'protocol' => 'TCP', ], ], ], ], ], ], ], ]); if ($client->replicationControllers()->exists($replicationController->getMetadata('name'))) { $client->replicationControllers()->update($replicationController); } else { $client->replicationControllers()->create($replicationController); } $client->replicationControllers()->apply($replicationController); // or
Delete a Replication Controller
$replicationController = $client->replicationControllers()->setLabelSelector(['name' => 'nginx-test'])->first(); $client->replicationControllers()->delete($replicationController);
You can also specify options when performing a deletion, eg. to perform cascading delete
use Teknoo\Kubernetes\Model\DeleteOptions; $client->replicationControllers()->delete( $replicationController, new DeleteOptions(['propagationPolicy' => 'Background']) );
Support this project
This project is free and will remain free. It is fully supported by the activities of the EIRL. If you like it and help me maintain it and evolve it, don't hesitate to support me on Patreon or Github.
Thanks :) Richard.
Credits
EIRL Richard Déloge - https://deloge.io - Lead developer. SASU Teknoo Software - https://teknoo.software
About Teknoo Software
Teknoo Software is a PHP software editor, founded by Richard Déloge, as part of EIRL Richard Déloge. Teknoo Software's goals : Provide to our partners and to the community a set of high quality services or software, sharing knowledge and skills.
License
Kubernetes Client is licensed under the 3-Clause BSD License - see the licenses folder for details.
Installation & Requirements
To install this library with composer, run this command :
composer require teknoo/kubernetes-client
This library requires :
* PHP 8.1+
* A PHP autoloader (Composer is recommended)
* Symfony/Yaml.
* Illuminate/Collections
Contribute :)
You are welcome to contribute to this project. Fork it on Github
teknoo/kubernetes-client 适用场景与选型建议
teknoo/kubernetes-client 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 11.16k 次下载、GitHub Stars 达 3, 最近一次更新时间为 2023 年 01 月 02 日, 在 PHP 生态内属于活跃度较高的组件。
它主要适用于以下技术方向: 「container」 「cluster」 「docker」 「kubernetes」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。
我们在过去多个企业项目中使用过 teknoo/kubernetes-client 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 teknoo/kubernetes-client 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
与 teknoo/kubernetes-client 相关的其它包
同方向 / 同关键字的高下载量 PHP Composer 包推荐,方便对比选型:
Docker based testing environment for shopware projects.
The Laragoon utility package
PHP Long Running Process Manager Cluster
A Filament-native cards plugin for organizing pages and resources into a card-based navigation hub.
Docker compose for Robo Task Runner
A fast and intuitive dependency injection container.
统计信息
- 总下载量: 11.16k
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 4
- 点击次数: 12
- 依赖项目数: 2
- 推荐数: 1
其他信息
- 授权协议: BSD-3-Clause
- 更新时间: 2023-01-02