借助github已近写好的基础代码结合ThinkPHP3.2调用kubernetes api接口来实现一些功能。

github地址:

https://github.com/travisghansen/kubernetes-client-php

下载下来后将代码放入ThinkPHP/Library/Vendor目录,在kubernetes-client-php/src 的同级目录创建文件autoload.php文件。

<?php

function classLoader($class)
{
    $path = str_replace('\\', DIRECTORY_SEPARATOR, $class);
    $file = __DIR__ . DIRECTORY_SEPARATOR .'src'. DIRECTORY_SEPARATOR . $path . '.php';
    if (file_exists($file)) {
        require_once $file;
    }
}
spl_autoload_register('classLoader');

在框架中使用,代码如下:

<?php
namespace Home\Controller;
use Home\Common\ArticleCommonController;
use KubernetesClient; # 引入名称空间
class IndexController extends ArticleCommonController{

	
    /*
     * index
     * @param
     */
	public function index()
	{
		Vendor('kubernetes-client-php.autoload');
		
		$config = KubernetesClient\Config::BuildConfigFromFile();
		$client = new KubernetesClient\Client($config);
		
		$configMapName = 'kubernetes-php-client-test';
		$configMapNamespace = 'kube-system';
		
		//POST
		$data = [
			'kind' => 'ConfigMap',
			'metadata' => [
				'name' => $configMapName
			],
			'data' => [
				'foo' => 'bar',
			],
		];
		
		echo "<pre>";
		$response = $client->request("/api/v1/namespaces/${configMapNamespace}/configmaps", 'POST', [], $data);
		var_dump($response);
		
		//GET
		$response = $client->request("/api/v1/namespaces/${configMapNamespace}/configmaps/${configMapName}");
		var_dump($response);
    }
}