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óda | Zapisuje |
|---|---|
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 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.