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.
fromKubeConfig(?string $path, ?string $context) · inCluster()ClusterNový ad-hoc klaster z kontextu kubeconfigu alebo zo service accountu podu.
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.

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(), getManagerName(), shouldVerify()…

// 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.
applyConfig(KubeConfig)kópiaNahradí URL, token, certifikát, kľúč, CA aj overovanie.
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, 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.
getUrl() · getToken() · 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.