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.

Kubernetes Logo

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

GitHub


Cloner le projet sur GitHub

Projet sous licence open source! Hébergé, développé et maintenu sur GitHub.


Voir le projet sur GitHub

Patreon


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);