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 contextPrehľad metód
| Metóda | Vracia | Čo robí |
|---|---|---|
cluster(?string $name = null) | Cluster | Nakonfigurovaný 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) | void | Definuje klaster v kóde; prepíše nakonfigurovaný klaster s rovnakým menom. |
registerResource(string $name, string $class) | void | Zaregistruje triedu zdroja pod menom prístupu pre všetky klastre. |
namespace(string $namespace) | Cluster | Predvolený klaster obmedzený na jeden namespace. |
ping() · version() | bool · VersionInfo | Dostupnosť a informácie o zostavení predvoleného klastra. |
url(string $url) | Cluster | Nový, prázdny ad-hoc klaster. |
connect(KubeConfig $config) | Cluster | Nový ad-hoc klaster z vyriešeného pripojenia. |
fromKubeConfig(?string $path, ?string $context) · inCluster() | Cluster | Nový 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) | zdroj | Každý zdroj balíka naviazaný na predvolený klaster. |
apps(), tenantNamespace(), … | zdroj / výsledok makra | Vlastný zdroj zaregistrovaný pod týmto menom alebo makro triedy Cluster — na predvolenom klastri. |
fake() | KubernetesFake | Nahradí 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 Cluster | Vracia | Poznámka |
|---|---|---|
name() | ?string | Meno z registrácie; null pri ad-hoc klastroch (url(), connect(), fromKubeConfig(), inCluster()). |
url() · with…() · without…() · withManagerName() · withDefaultNamespace() | kópia | Pripojenie a prihlasovacie údaje — pozrite Pripojenie ku klastru. |
namespace(string) · namespaceScope() | Cluster · ?string | Kópia obmedzená na jeden namespace; aktuálne obmedzenie, ak nejaké je. |
defaultNamespace() | string | Mäkký predvolený namespace pre zdroje v namespace. |
applyConfig(KubeConfig) | kópia | Nahradí 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 · VersionInfo | ping() 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) | Response | Priama požiadavka cez transport klastra; neúspešná odpoveď vyhodí KubernetesException. |
getUrl() · getToken() · getManagerName() · shouldVerify() · getPathTo…() | čítanie | Prihlasovacie ú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 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.