CRUD operácie
Operácie používajú HTTP klienta Laravelu a vracajú objekty zdrojov naplnené odpoveďou apiservera — find() vráti zdroj, get() ResourcesCollection (kolekciu Laravelu):
use RoundlyConsulting\KubernetesApi\Facades\Kubernetes;
$cluster = Kubernetes::cluster('production');
// List — a ResourcesCollection of Deployment resources
$cluster->deployments()->setNamespace('shop')->get();
// Find a single deployment — returns a Deployment resource
$cluster->deployments()->setNamespace('shop')->withName('checkout')->find();
// Check existence — a 404 becomes false, any other error still throws
$cluster->deployments()->setNamespace('shop')->withName('checkout')->existsOnCluster();
$cluster->deployments()->setNamespace('shop')->withName('checkout')->missingOnCluster();
// Create a deployment
$template = [
'metadata' => ['labels' => ['app' => 'checkout']],
'spec' => ['containers' => [['name' => 'app', 'image' => 'registry.example.com/checkout:v1.4.0']]],
];
$deployment = $cluster->deployments()
->setNamespace('shop')
->setName('checkout')
->setLabels(['app' => 'checkout'])
->setReplicas(3)
->setPodsSelectors(['app' => 'checkout'])
->setSpec('template', $template)
->create();
$deployment->wasRecentlyCreated(); // true
$deployment->exists(); // true
// Update — read, modify, write back
$cluster->deployments()
->setNamespace('shop')
->withName('checkout')
->find()
->setReplicas(5)
->update();
// Update if it exists, otherwise create it — send the complete desired object
$cluster->deployments()
->setNamespace('shop')
->setName('checkout')
->setReplicas(2)
->setPodsSelectors(['app' => 'checkout'])
->setSpec('template', $template)
->updateOrCreate();
// Delete a deployment
$deleted = $cluster->deployments()->setNamespace('shop')->withName('checkout')->delete();
$deleted->exists(); // falseAko sa správajú zápisy
- create() objekt odošle cez POST; vrátený zdroj hlási wasRecentlyCreated() aj exists(). Pri workloadoch apps/v1 apiserver vyžaduje selektor podov a šablónu podu, ktorej labely mu zodpovedajú.
- update() odošle celý objekt cez PUT — najprv ho načítajte cez find(), aby payload niesol aktuálnu resourceVersion a všetky polia, ktoré ste nemenili.
- updateOrCreate() zdroj vyhľadá a pri 404 ho vytvorí. Inak do vášho objektu prenesie aktuálnu resourceVersion zo servera a odošle ho cez PUT, takže súbežná zmena sa prejaví ako typovaný konflikt 409 a nie je potichu prepísaná. PUT objekt nahradí — zostavte celý požadovaný stav a na čiastočné zmeny použite patch().
- delete() predvolene posiela DeleteOptions s propagáciou Foreground a vráti zdroj, ktorého exists() je false.
- existsOnCluster() a missingOnCluster() premenia 404 na boolean; každá iná chyba sa naďalej vyhodí.
Parametre dotazu a voľby mazania
Každá operácia prijíma voliteľné pole dotazu — predvolene ['pretty' => 1] — ktoré sa pridá k požiadavke, takže akýkoľvek parameter apiservera máte na jeden argument. delete() navyše prijíma Type s telom DeleteOptions:
use RoundlyConsulting\KubernetesApi\Resources\Types\Type;
// Background cascading instead of the default Foreground
$cluster->deployments()->setNamespace('shop')->withName('checkout')
->delete(options: Type::make()->setPropagationPolicy('Background'));
// Any apiserver query parameter — here gracePeriodSeconds
$cluster->pods()->setNamespace('shop')->withName('checkout-5f7c9d8b6-x2kqj')
->delete(['gracePeriodSeconds' => 0]);withName() je alias setName(): každé volanie with…() sa presmeruje na zodpovedajúce set…(), takže v reťazci sa oboje číta prirodzene.
Prejavte lásku k open source
Tento balík je zadarmo pod licenciou MIT. Ak vám šetrí čas, jednorazový príspevok alebo členstvo na Patreone nám pomôže ho ďalej udržiavať, testovať a dokumentovať.
Ďalšie spôsoby podpory vrátane kryptomienOdoslaním daru súhlasíte s našimi podmienkami prijímania darov.
Chcete to zabudovať do svojho produktu?
Naše balíky integrujeme do zákazkových Laravel a AI riešení. Napíšte nám, na čom pracujete, a ozveme sa do 48 hodín.