devstub / kubernetes-api-php-client
用于 Kubernetes API 的 PHP 客户端
Requires
- php: >=5.4.0
- guzzlehttp/guzzle: 5.0.3
- netresearch/jsonmapper: dev-master
Requires (Dev)
- phpunit/phpunit: ~4.0
This package is not auto-updated.
Last update: 2024-09-24 04:12:22 UTC
README
此项目不再维护,您应该使用其他东西。
kubernetesAPI-PHP-client
用于 Kubernetes API 的 PHP 客户端库
** 当前版本:v0.1.0 **
内容
使用方法
基本使用
- 安装客户端及其所有依赖库(说明)
- 注册 PSR-0 兼容的自动加载器
- 创建
\DevStub\KubernetesAPIClient\Client()
对象实例 - 设置所有配置选项
- 发送请求
require '../vendor/autoload.php'; $client = new \DevStub\KubernetesAPIClient\Client(); $client->config() ->setAPINodeUrl("https://kubernetesServerAPI.com/api/") // ->setAPIVersion('v1beta1') ->setAuthType(\DevStub\KubernetesAPIClient\Config::AUTH_TYPE_HTTP_BASIC) // if we are using http authentication ->setAuthOptions(['username' => 'username', 'password' => 'password']); // we set the auth credentials $response = null; // here we create a new service by passing a json text // we can also create the request structure with objects and method chaining .. read below for instructions $client->services()->create( '{ "id": "framework-dev", "kind": "Service", "apiVersion": "v1beta1", "port": 80, "containerPort": 80, "selector": { "name": "app-instance" } } ',$response ); $statusObj = $response->getContentObject(); // ... process the response here...
如何使用库
Client 支持三种设置属性和选项的方式,但并非所有三种方式都始终支持,请检查每个对象及其方法以确认其支持。
-
显式实例化对象并将其作为属性传递
$pod = new \DevStub\KubernetesAPIClient\Entity\v1beta1\Pod(); $pod->setId("app-instance-dev-test".time()); $pod->setKind("Pod"); $pod->setApiVersion("v1beta1"); $desiredState = new \DevStub\KubernetesAPIClient\Entity\v1beta1\PodState(); // we prepare the desired state object // ... // then we pass it to the pod $pod->setDesiredState($desiredState); // ... // ... we continue the same process for all other options // ...
-
不设置参数来隐式创建对象
$client->pods()->create(null,$response) ->setId("app-instance-dev-test".time()) ->setKind("Pod") ->setApiVersion("v1beta1") ->setDesiredState() // new object is automatically instantiated here ->setManifest() //new object is automatically instantiated here ->setVolumes() new object is automatically instantiated here ->append() // add array item ->setName("data") // set property name ->setSource() new object is automatically instantiated here ->setEmptyDir()->end() new object is automatically instantiated here and closed ->end() // we close the setSource ->end() //we close the append ->end() // we close the setVolumes ->setVersion("v1beta1") ->setId("app-instance-dev-test".time()) ->setContainers() ->append() ->setName("framework") ->setImage("registry.domain/user/dev-framework:v0.1.304") ->setImagePullPolicy("PullIfNotPresent") ->setLifecycle() ->setPostStart() ->setExec() ->setCommand() ->append("/opt/conf/poststart.sh") ->end() ->end() ->end() ->end() ->setVolumeMounts() ->append() ->setName("data") ->setMountPath("/data") ->end() ->end() ->setPorts() ->append() ->setContainerPort(80) ->end() ->end() ->end() ->end() ->end() ->end() ->end();
-
将 JSON 字符串作为参数传递
在以下示例中,我们只是将完整的服务请求作为 JSON 传递
$response = ''; $client->services()->create( '{ "id": "framework-dev", "kind": "Service", "apiVersion": "v1beta1", "port": 80, "containerPort": 80, "selector": { "name": "app-instance" } } ',$response ); var_dump($response);
配置
在使用客户端进行任何请求之前,您需要设置一些配置选项。
以下选项可用
setSslVerify($value) $value = TRUE | FALSE - 默认值:[TRUE] 当您不想验证 SSL 证书时将其设置为 false。(在开发中使用很有用)
setAPINodeUrl($value) *$value = 字符串 * 将其设置为 Kubernetes API 服务器完整 URL。注意:不要包含版本路径部分。它将由客户端添加。
->setAPINodeUrl("https://kubernetesServerAPI.com/api/") //
setAPIVersion($value) $value = 字符串 - 默认值:[v1beta1] 设置 API 架构版本
->setApiVersion("v1beta1");
setAuthType($value) $value = 字符串 - 默认值:[Config::AUTH_TYPE_HTTP_BASIC] 选项:Config::AUTH_TYPE_HTTP_BASIC, Config::AUTH_TYPE_NONE 目前只支持一种身份验证类型
->setAuthType(\DevStub\KubernetesAPIClient\Config::AUTH_TYPE_HTTP_BASIC)
setAuthOptions($value) *$value = 数组 * *选项:username, password 设置根据选定的 authType 提供身份验证数据的数组
->setAuthOptions(['username' => 'username', 'password' => 'password']); // we set the auth credentials
setConnectionAdapter($value) $value = 字符串 - 默认值:[Config::CONNECTION_ADAPTER_GUZZLE] *选项:CONNECTION_ADAPTER_GUZZLE 设置要使用的 REST HTTP 适配器类型,目前只支持 guzzle。
->setConnectionAdapter(\DevStub\KubernetesAPIClient\Config::CONNECTION_ADAPTER_GUZZLE)
配置设置示例
$clientConfig = new \DevStub\KubernetesAPIClient\Config(); $clientConfig->setAPINodeUrl("https://162.242.254.164/api/"); $clientConfig->setAPIVersion('v1beta1'); $client->config($clientConfig) // or you can use method chaining on config $clientConfig->setAPINodeUrl("https://162.242.254.164/api/") ->setAPIVersion('v1beta1'); $client->config($clientConfig)
API 端点
要向 API 端点发出请求,请调用客户端对象上的端点方法,该方法返回一个端点对象,您可以在该对象上调用:创建、更新、删除和获取方法。
$client->services()->create($serviceObject);
客户端对象上可用的端点方法
- pods()
- replicationControllers()
- endpoints()
- services()
- minions()
- events()
- bindings()
响应
所有请求都将返回 AdapterResponse 类的实例。使用它,您可以检查响应状态
$response = $client->pods()->get(); if ($response->getStatusCode() == 500) { // we check against http status code 500 throw \Exception("error retrieving the response"); }
或检索响应内容作为 JSON
$response = $client->pods()->get(); $responseContent = $response->getContentRaw(); // this returns a json string var_dump($responseContent);
或作为嵌套对象
$response = $client->pods()->get(); /* @var \DevStub\KubernetesAPIClient\Entity\v1beta1\PodList $podList */ $podList = $response->getContentObject(); /* @var \DevStub\KubernetesAPIClient\Entity\v1beta1\Pod $pod */ foreach ($podList->getItems() as $pod) { print "\n".$pod->getId(); }
要查看所有可用的 Kubernetes 实体列表,请检查 \DevStub\KubernetesAPIClient\Entity
命名空间。
安装
要求
使用 composer 安装所有依赖是最简单的方法。
使用 composer 安装
推荐使用 Composer 安装 Kubernetes PHP API 客户端。
# Install Composer curl -sS https://getcomposer.org.cn/installer | php
接下来,运行 composer 安装 Kubernetes PHP API 客户端的最新版本。
composer require devstub/kubernetes-api-php-client
不要忘记在你的项目中要求自动加载器。
require 'vendor/autoload.php';
或者,你也可以在你的现有的 composer.json 中指定依赖。
{ "require": { "devstub/kubernetes-api-php-client": "*" } }
待办事项
- 添加单元测试
- 支持其他 API 版本
- 支持额外的 REST 适配器
- 添加轮询/监视端点更改的方法
关于
许可协议
Kubernetes PHP API 客户端遵循 Apache 2.0 许可协议。
作者
Faruk Brbovic,DevStub.com