Pomenované klastre
Klastre nastavte v kľúči clusters v config/kubernetes.php — každá položka berie pripojenie z URL, z kontextu kubeconfigu alebo zo service accountu podu — a predvolený klaster určte kľúčom default:
// config/kubernetes.php
'default' => env('KUBERNETES_CLUSTER', 'default'),
'clusters' => [
'default' => [
'source' => 'url',
'url' => env('KUBERNETES_URL'),
'token' => env('KUBERNETES_TOKEN'),
'ca_certificate' => env('KUBERNETES_CA_CERTIFICATE'),
'namespace' => 'shop',
'manager' => 'shop-production',
],
'staging' => [
'source' => 'kubeconfig',
'kubeconfig' => null, // null = KUBECONFIG or ~/.kube/config
'context' => 'staging', // null = current-context
'manager' => 'shop-staging',
],
'in-cluster' => [
'source' => 'in-cluster', // the pod's service account
],
],Registrácia v kóde
Klastre môžete zaregistrovať aj v kóde, napríklad v metóde boot() service providera. Closure dostane prázdny klaster a musí vrátiť nastavený; spustí sa lenivo, až pri prvom použití klastra:
use RoundlyConsulting\KubernetesApi\Cluster;
use RoundlyConsulting\KubernetesApi\Facades\Kubernetes;
// In a service provider's boot() — the closure must return the configured cluster
Kubernetes::registerCluster('production', fn (Cluster $cluster): Cluster => $cluster
->url('https://api.prod.example.com:6443')
->withToken(config('services.kubernetes.prod_token'))
->withCaCertificate('/path/to/ca.crt')
->withManagerName('shop-production'));
// Resolve it anywhere by name
$cluster = Kubernetes::cluster('production');
Kubernetes::hasCluster('production'); // true
Kubernetes::clusters(); // ['default', 'production']- Klaster sa vytvorí raz a potom sa znova používa — klastre sú nemenné, takže ich zdieľanie je bezpečné.
- Registrácia v kóde prepíše nakonfigurovaný klaster s rovnakým menom.
- Neznáme meno vyhodí ClusterNotFoundException. Closure, ktorá nevráti Cluster, alebo položka konfigurácie, ktorá nie je pole, má neznámy zdroj či nastavenie, ktoré nie je reťazec, vyhodí ClusterConfigurationException s jeho názvom. Prázdne nastavenie sa počíta ako nenastavené a dostane predvolenú hodnotu.
- Rovnaké API bez fasády získate injektovaním RoundlyConsulting\KubernetesApi\KubernetesManager: $kubernetes->cluster('production').
Registrácia z vlastnej konfigurácie
Closure je obyčajné PHP, takže registrácie môžete riadiť vlastnou konfiguráciou:
use RoundlyConsulting\KubernetesApi\Cluster;
use RoundlyConsulting\KubernetesApi\Facades\Kubernetes;
public function boot(): void
{
// One entry per cluster in your own config/services.php
foreach (config('services.kubernetes.clusters', []) as $name => $settings) {
Kubernetes::registerCluster($name, fn (Cluster $cluster): Cluster => $cluster
->url($settings['url'])
->withToken($settings['token'])
->withCaCertificate($settings['ca'])
->withManagerName("shop-{$name}"));
}
}Limiter požiadaviek na strane klienta kľúčuje rozpočet podľa apiservera — hostu, portu a predpony cesty v URL klastra —, takže klastre nikdy nezdieľajú rozpočet, ani keď majú rovnaké meno managera (pozrite Obmedzenie požiadaviek na strane klienta).
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.