---
title: "Skladanie zdrojov z typových objektov — Kubernetes API | Roundly"
description: "Pody a služby skladáte z typových objektov Container, Port, Probe, Volume, VolumeMount a šablón claimov namiesto surových polí."
url: https://roundly-consulting.com/sk/open-source/navody/kubernetes-api-for-laravel/typove-objekty
language: sk
---

[Všetky balíky](https://roundly-consulting.com/sk/open-source.md)

[Kubernetes API for Laravel](https://roundly-consulting.com/sk/open-source/navody/kubernetes-api-for-laravel.md)

# 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:

```php
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, ?string $tag = 'latest')` | image v tvare image:tag. Referencia, ktorá už tag (nginx:1.27) alebo digest (nginx@sha256:…) má, sa použije bez zmeny a tag null nechá image bez tagu. Port registra nie je tag: z registry.local:5000/app bude …/app:latest. |
| `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:

```php
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 — upraveného na platný DNS-1123 label (bodky sa zmenia na pomlčky a meno sa skráti na 63 znakov), alebo prijmú meno zväzku ako druhý argument: fromSecret($secret, 'tls'). Zadajte ho, keď sa dve dlhé mená zhodujú na začiatku. Zdroj bez mena vyhodí InvalidResourceException.
- emptyDirectory($name, $options) pridá zväzok emptyDir; odovzdajte mu voľby, napríklad sizeLimit — bez nich pošle emptyDir: {}.
- 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](https://roundly-consulting.com/sk/podporte-nas.md)

Odoslaním daru súhlasíte s našimi [podmienkami prijímania darov](https://roundly-consulting.com/sk/podmienky-darov.md).

[Podporte našu open-source prácu (otvorí sa v novej karte)](https://donate.stripe.com/dRmeVe8FX5PF1Qd9pXcEw00) [Pridajte sa k nám na Patreone (otvorí sa v novej karte)](https://www.patreon.com/cw/roundly)

## 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.

[Ponuka do 48 hodín](https://roundly-consulting.com/sk/kontakt.md) [Prezrieť všetky balíky](https://roundly-consulting.com/sk/open-source/navody/kubernetes-api-for-laravel.md)
