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

Skladanie zdrojov z typových objektov

Zdroje sa skladajú z typových hodnotových objektov v RoundlyConsulting\KubernetesApi\Resources\Types, z ktorých každý sa serializuje presne do tvaru, aký apiserver očakáva. Pod so sondami, zdrojmi, premennými prostredia a zväzkami:

use RoundlyConsulting\KubernetesApi\Resources\ConfigMap;
use RoundlyConsulting\KubernetesApi\Resources\Secret;
use RoundlyConsulting\KubernetesApi\Resources\Types\Container;
use RoundlyConsulting\KubernetesApi\Resources\Types\Probe;
use RoundlyConsulting\KubernetesApi\Resources\Types\Volume;

$configVolume = Volume::make()->fromConfigMap(ConfigMap::make()->setName('checkout-config'));
$tlsVolume = Volume::make()->fromSecret(Secret::make()->setName('checkout-tls'));
$cacheVolume = Volume::make()->emptyDirectory('cache', ['sizeLimit' => '500Mi']);

$app = Container::make()
    ->setName('app')
    ->setImage('registry.example.com/checkout', 'v1.4.0')
    ->addPort(8080, 'TCP', 'http')
    ->setEnvironment(['APP_ENV' => 'production', 'LOG_CHANNEL' => 'stderr'])
    ->addToEnvironmentFromSecret('DB_PASSWORD', 'checkout-db', 'password')
    ->addToEnvironmentFromConfigMap('FEATURE_FLAGS', 'checkout-config', 'flags')
    ->addToEnvironmentFromFieldReference('POD_NAME', 'metadata.name')
    ->setMinimumCpu('250m')
    ->setMaximumCpu('1')
    ->setMinimumMemory(256, 'Mi')
    ->setMaximumMemory(512, 'Mi')
    ->setReadinessProbe(Probe::http('/healthz', 8080))
    ->setLivenessProbe(Probe::tcp(8080))
    ->addVolumeMount($configVolume->mountTo('/etc/checkout'))
    ->addVolumeMount($tlsVolume->mountTo('/etc/tls'))
    ->addVolumeMount($cacheVolume->mountTo('/var/cache/checkout'));

$pod = $cluster->pods()
    ->setNamespace('shop')
    ->setName('checkout-debug')
    ->setLabels(['app' => 'checkout', 'purpose' => 'debug'])
    ->setContainers([$app])
    ->addVolumes([$configVolume, $tlsVolume, $cacheVolume])
    ->addImagePullSecret('registry-credentials')
    ->create();

Container

MetódaZapisuje
setImage($image, $tag = 'latest')image v tvare image:tag.
addPort($containerPort, $protocol = 'TCP', $name = null)ports[].
setEnvironment([...]) · addToEnvironment($name, $value) · addMultipleToEnvironment([...])env[] — setEnvironment() zoznam nahradí.
addToEnvironmentFromSecret($name, $secretName, $key = null)env[].valueFrom.secretKeyRef — kľúč je predvolene názov secretu.
addToEnvironmentFromConfigMap($name, $configMapName, $key)env[].valueFrom.configMapKeyRef.
addToEnvironmentFromFieldReference($name, $fieldPath)env[].valueFrom.fieldRef.
setMinimumCpu($size) / setMaximumCpu($size)resources.requests.cpu / resources.limits.cpu.
setMinimumMemory($size, $measure = 'Gi') / setMaximumMemory(…)resources.requests.memory / resources.limits.memory.
setReadinessProbe() · setLivenessProbe() · setStartupProbe()Tri druhy sond, z objektu Probe.
addVolumeMount() · addVolumeMounts() · setVolumeMounts()volumeMounts[], z objektov VolumeMount.

Množné tvary prijímajú mapy: addToEnvironmentFromSecrets(['DB_PASSWORD' => ['checkout-db', 'password']]), addToEnvironmentFromConfigMaps(['FLAGS' => ['checkout-config', 'flags']]) a addToEnvironmentFromFieldReferences(['POD_NAME' => 'metadata.name']). Všetko ostatné — command, args, imagePullPolicy — nastavíte magickými settermi.

Sondy

Probe::http(), Probe::tcp() a command() vytvoria tri druhy sond. Prahy, časovanie aj ktorékoľvek ďalšie pole sondy doladíte magickými settermi:

use RoundlyConsulting\KubernetesApi\Resources\Types\Probe;

Probe::http('/healthz', 8080);                                  // httpGet, scheme HTTP
Probe::http('/ready', 8443, ['X-Probe' => 'kubelet'], 'HTTPS'); // headers + scheme
Probe::tcp(5432);                                               // tcpSocket
Probe::make()->command(['pg_isready', '-U', 'shop']);           // exec

// Every probe starts with failureThreshold: 1 and successThreshold: 1
Probe::http('/healthz', 8080)
    ->setFailureThreshold(3)
    ->setPeriodSeconds(10)
    ->setInitialDelaySeconds(5);

Zväzky, mounty a porty

  • Volume::fromConfigMap() a fromSecret() pomenujú zväzok podľa zdroja — checkout-config-config-volume, checkout-tls-secret-volume.
  • emptyDirectory($name, $options) pridá zväzok emptyDir; odovzdajte mu voľby, napríklad sizeLimit.
  • mountTo($mountPath, $subPath = null) z ľubovoľného zväzku vytvorí VolumeMount s rovnakým menom.
  • Pod ich prijíma cez setContainers(), setInitContainers(), addVolume(s)(), setVolumes() a addImagePullSecret(s)() a ako objekty ich vráti cez getContainers(), getInitContainers() a getVolumes().
  • Port::http($containerPort = 80) vytvorí TCP port služby 80 smerujúci na port kontajnera; iné porty zostavíte cez Port::make() a magické settery.
  • PersistentVolumeClaimTemplate opisuje claim pre každú repliku stateful setu — pozrite Workloady.

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.