Kubernetes Client
Contrôler vos ressources Kubernetes grâce à votre code.
Client PHP pour gérer vos clusters Kubernetes. Contrôler vos ressources Kuberntes en manipulant les manifests, comme des tableaux PHP, au travers de l'API HTTP de Kubernetes. Le client support toutes les entrées Kubernetes de l'API V1.28. Mais il est également possible de définir de nouvelles ressources utilisables au travers du client.
Indépendant de tout framework ou outils, supporte toutes bibliothèques HttpClient.
La bibliothèque est capable de détecter automatiquement la bibliothèque HttpClient configurée dans votre application.
Fonctionnalités
Framework Free
Indépendant de tout framework ou outils, supporte toutes bibliothèques HttpClient
PSR-7
Intéroperable avec tout code exploitant la recommandation PSR-7.
Facile à utiliser
Manipuler vos manifests comme des tableaux
Extensible
Implementer facilement vos propres types de ressources Kubernetes
Cloner le projet sur GitHub
Projet sous licence open source! Hébergé, développé et maintenu sur GitHub.
Voir le projet sur GitHub
Supporter le projet sur Patreon
Ce projet est logiciel libre et le restera, mais son développement a un coût. Si vous l'appréciez et si vous souhaitez nous aider à le maintenir et à le faire évoluer. N'hésitez pas à nous supporter sur Patreon.
Supporter le p[rojet
Exemple
<?php
declare(strict_types=1);
namespace Acme;
require_once 'vendor/autoload.php';
use Teknoo\Kubernetes\Client;
use Teknoo\Kubernetes\Model\ReplicationController;
use function var_dump;
$client = new Client([
'master' => 'http://master.mycluster.com',
]);
// Find pods by label selector
var_dump(
$client->pods()
->setLabelSelector(
[
'name' => 'foo',
'version' => '1',
]
)->find()
);
// Both setLabelSelector and setFieldSelector can take an optional
// second parameter which lets you define inequality based selectors (ie using the != operator)
var_dump(
$client->pods()
->setLabelSelector(
[
'name' => 'bar',
],
[
'env' => 'staging',
]
)->find()
);
// Find pods by field selector
var_dump(
$client->pods()
->setFieldSelector(['metadata.name' => 'test'])
->find()
);
// Find first pod with label selector (same for field selector)
var_dump(
$client->pods()
->setLabelSelector(['name' => 'test'])
->first()
);
$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',
],
],
],
],
],
],
],
]);
$repository = $client->replicationControllers();
if ($repository->exists($replicationController->getMetadata('name'))) {
$repository->update($replicationController);
} else {
$repository->create($replicationController);
}
//or
$repository->apply($replicationController);
//to delete
$repository->delete($replicationController);