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

Fasáda Kubernetes

Všetko začína pri fasáde Kubernetes (RoundlyConsulting\KubernetesApi\Facades\Kubernetes). Vydáva klastre — nemenných klientov — a cez ne objekty zdrojov (Pod, Deployment, …), ktoré čítajú a zapisujú do apiservera. Volania bez mena klastra idú na predvolený klaster z config/kubernetes.php:

use RoundlyConsulting\KubernetesApi\Facades\Kubernetes;

Kubernetes::pods()->get();                                   // default cluster, default namespace
Kubernetes::namespace('shop')->deployments()->get();         // default cluster, scoped to shop
Kubernetes::cluster('production')->services()->get();        // a named cluster

Kubernetes::ping();                                          // bool — does the apiserver answer?
Kubernetes::version()->gitVersion;                           // "v1.34.0" (a VersionInfo DTO)

Kubernetes::hasCluster('production');                        // bool
Kubernetes::clusters();                                      // ['default', 'production']

Kubernetes::url('https://127.0.0.1:6443')->withToken($token); // a new, blank ad-hoc cluster
Kubernetes::fromKubeConfig(context: 'staging');              // a new cluster from a kubeconfig context

Prehľad metód

MetódaVraciaČo robí
cluster(?string $name = null)ClusterNakonfigurovaný alebo zaregistrovaný klaster — pri null predvolený. Vytvorí sa raz a potom sa znova používa.
hasCluster(string $name) · clusters()bool · list<string>Či klaster existuje; mená všetkých nakonfigurovaných a zaregistrovaných klastrov.
registerCluster(string $name, Closure $definition)voidDefinuje klaster v kóde; prepíše nakonfigurovaný klaster s rovnakým menom.
registerResource(string $name, string $class)voidZaregistruje triedu zdroja pod menom prístupu pre všetky klastre.
namespace(string $namespace)ClusterPredvolený klaster obmedzený na jeden namespace.
ping() · version()bool · VersionInfoDostupnosť a informácie o zostavení predvoleného klastra.
url(string $url)ClusterNový, prázdny ad-hoc klaster.
connect(KubeConfig $config)ClusterNový ad-hoc klaster z vyriešeného pripojenia; jeho namespace, ak ho má, sa stane predvoleným.
fromKubeConfig(?string $path, ?string $context) · inCluster()ClusterNový ad-hoc klaster z kontextu kubeconfigu (jeho namespace sa stane predvoleným) alebo zo service accountu podu (súbor s tokenom sa načíta pri každej požiadavke).
resource(string $class)ResourceĽubovoľná trieda zdroja naviazaná na predvolený klaster.
pods(), deployments(), services(), … (33 prístupov)zdrojKaždý zdroj balíka naviazaný na predvolený klaster.
apps(), tenantNamespace(), …zdroj / výsledok makraVlastný zdroj zaregistrovaný pod týmto menom alebo makro triedy Cluster — na predvolenom klastri.
fake()KubernetesFakeNahradí apiserver verziou v pamäti pre testy — pozrite Testovanie. Pod fake fasáda sprostredkuje aj overenia fake vrátane assertTokenRequested().

Objekt Cluster

cluster(), namespace(), url(), connect(), fromKubeConfig() aj inCluster() vracajú RoundlyConsulting\KubernetesApi\Cluster. Každý Cluster má tých istých 33 prístupov ako fasáda a k tomu vlastnú identitu, kontrolu dostupnosti a metódu request() na priame požiadavky — s autentifikáciou, limitmi aj podporou fake ako všetko ostatné:

$cluster = Kubernetes::cluster('production');

$cluster->name();                   // 'production' (null for ad-hoc clusters)
$cluster->defaultNamespace();       // from clusters.production.namespace
$cluster->hasResource('apps');      // is an accessor registered under that name?
$cluster->getUrl();                 // plus getToken(), getTokenFile(), getManagerName(), shouldVerify()…
$cluster->followsRedirects();       // false unless the cluster opted in
$cluster->redactsErrors();          // whether exception messages carry status + reason only

// Raw escape hatch — authenticated, rate limited and faked like the typed resources
$response = $cluster->request('GET', '/apis/apps/v1/namespaces/shop/deployments', ['limit' => 10]);
$response->json('items');
Metóda ClusterVraciaPoznámka
name()?stringMeno z registrácie; null pri ad-hoc klastroch (url(), connect(), fromKubeConfig(), inCluster()).
url() · with…() · without…() · withManagerName() · withDefaultNamespace()kópiaPripojenie a prihlasovacie údaje — pozrite Pripojenie ku klastru.
namespace(string) · namespaceScope()Cluster · ?stringKópia obmedzená na jeden namespace; aktuálne obmedzenie, ak nejaké je.
defaultNamespace()stringMäkký predvolený namespace pre zdroje v namespace.
withRedirects() · withoutRedirects() · followsRedirects()kópia · kópia · boolPovolí nasledovanie HTTP presmerovaní — predvolene vypnuté; pozrite Pripojenie ku klastru.
withRedactedErrors() · redactsErrors()kópia · boolSprávy výnimiek len so stavom a dôvodom; pozrite Spracovanie chýb.
applyConfig(KubeConfig)kópiaNahradí URL, token, súbor s tokenom, certifikát, kľúč, CA aj overovanie; namespace sa stane predvoleným (nikdy nie cez obmedzenie na namespace). Povolenie presmerovaní aj skracovanie chýb zostávajú.
resource(class-string) · hasResource(string)Resource · boolĽubovoľná trieda zdroja naviazaná na tento klaster; či je meno prístupu zaregistrované.
ping() · version()bool · VersionInfoping() vráti false pri chybe apiservera (vrátane nenasledovaného presmerovania), zlyhaní spojenia alebo chýbajúcej URL; vyčerpaný limit požiadaviek sa naďalej vyhodí.
request($method, $path, $query = [], $body = '', $contentType = null, $stream = false)ResponsePriama požiadavka cez transport klastra; neúspešná odpoveď vyhodí KubernetesException, rovnako ako presmerovanie, ktoré sa nenasledovalo.
getUrl() · getToken() · getTokenFile() · getManagerName() · shouldVerify() · getPathTo…()čítaniePrihlasovacie údaje, ktoré klaster nesie.
  • Klastre sú nemenné: každé volanie with…() / without…(), url(), withManagerName(), withDefaultNamespace() aj namespace() vráti nový klaster, takže klienta z fasády nemôže iný volajúci presmerovať ani mu vymeniť prihlasovacie údaje.
  • Pomenované klastre sa vytvoria raz a potom sa znova používajú; url(), connect(), fromKubeConfig() a inCluster() pri každom volaní vytvoria nový ad-hoc klaster.
  • Cluster::execute() je @internal — otvára WebSocket pre Pod::exec(); namiesto neho volajte exec() na pode.

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.