NovinkaZverejnili sme 50+ Laravel balíkov ako open source
Custom AI apps, agents and automation — Roundly ConsultingRoundly
Všetky balíky

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(); // false

Ako 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 kryptomien

Odoslaní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.