---
title: "Konfigurácia — Kubernetes API for Laravel | Roundly"
description: "Každý kľúč config/kubernetes.php s env premennou a predvolenou hodnotou — klastre, voľby HTTP klienta, limity, skupina Traefiku a mapa zdrojov."
url: https://roundly-consulting.com/sk/open-source/navody/kubernetes-api-for-laravel/konfiguracia
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)

# Konfigurácia

Publikovaný config/kubernetes.php v plnom znení:

```php
use RoundlyConsulting\KubernetesApi\Resources;

return [
    'default' => env('KUBERNETES_CLUSTER', 'default'),
    'clusters' => [
        'default' => [
            'source' => env('KUBERNETES_SOURCE', 'url'),      // url | kubeconfig | in-cluster
            'url' => env('KUBERNETES_URL'),
            'token' => env('KUBERNETES_TOKEN'),
            'certificate' => env('KUBERNETES_CLIENT_CERTIFICATE'),
            'private_key' => env('KUBERNETES_CLIENT_KEY'),
            'ca_certificate' => env('KUBERNETES_CA_CERTIFICATE'),
            'verify' => env('KUBERNETES_VERIFY_SSL', true),
            'kubeconfig' => env('KUBERNETES_KUBECONFIG'),     // null = every KUBECONFIG file merged, or ~/.kube/config
            'context' => env('KUBERNETES_CONTEXT'),           // null = current-context
            'namespace' => env('KUBERNETES_NAMESPACE'),       // null = the kubeconfig context's, else default
            'manager' => env('KUBERNETES_MANAGER'),
            'follow_redirects' => env('KUBERNETES_FOLLOW_REDIRECTS', false),
            'redact_errors' => env('KUBERNETES_REDACT_ERRORS', false),
        ],
    ],
    'client' => [
        'options' => [
            'timeout' => 5,
        ],
        'stream_timeout' => env('KUBERNETES_STREAM_TIMEOUT', 0),
    ],
    'rate_limits' => [
        'enabled' => env('KUBERNETES_RATELIMIT_ENABLED', true),
        'owner' => env('KUBERNETES_RATELIMIT_OWNER', 'app'),
        'max_attempts' => env('KUBERNETES_RATELIMIT', 400),
        'timespan' => env('KUBERNETES_RATELIMIT_TIMESPAN', 'minute'), // second|minute|hour|day
        'adaptive' => env('KUBERNETES_RATELIMIT_ADAPTIVE', true),     // honour 429 Retry-After
        'max_wait' => env('KUBERNETES_RATELIMIT_MAX_WAIT'),           // ms; null = pace, set = fail fast
        'jitter' => env('KUBERNETES_RATELIMIT_JITTER'),               // ms; null = none
    ],
    'traefik' => [
        'group' => 'traefik.io/v1alpha1',
    ],
    'resources' => [
        'clusterRoles' => Resources\ClusterRole::class,
        'clusterRoleBindings' => Resources\ClusterRoleBinding::class,
        'configMaps' => Resources\ConfigMap::class,
        'cronJobs' => Resources\CronJob::class,
        'daemonSets' => Resources\DaemonSet::class,
        'deployments' => Resources\Deployment::class,
        'endpoints' => Resources\Endpoints::class,
        'events' => Resources\Event::class,
        'horizontalPodAutoscalers' => Resources\HorizontalPodAutoscaler::class,
        'ingresses' => Resources\Ingress::class,
        'jobs' => Resources\Job::class,
        'limitRanges' => Resources\LimitRange::class,
        'namespaces' => Resources\KubernetesNamespace::class,
        'networkPolicies' => Resources\NetworkPolicy::class,
        'nodes' => Resources\Node::class,
        'persistentVolumes' => Resources\PersistentVolume::class,
        'persistentVolumeClaims' => Resources\PersistentVolumeClaim::class,
        'pods' => Resources\Pod::class,
        'replicaSets' => Resources\ReplicaSet::class,
        'replicationControllers' => Resources\ReplicationController::class,
        'resourceQuotas' => Resources\ResourceQuota::class,
        'roles' => Resources\Role::class,
        'roleBindings' => Resources\RoleBinding::class,
        'secrets' => Resources\Secret::class,
        'serviceAccounts' => Resources\ServiceAccount::class,
        'services' => Resources\Service::class,
        'statefulSets' => Resources\StatefulSet::class,
        'storageClasses' => Resources\StorageClass::class,
        'traefikIngressRoutes' => Resources\TraefikIngressRoute::class,
        'traefikMiddlewares' => Resources\TraefikMiddleware::class,
        'traefikServersTransports' => Resources\TraefikServersTransport::class,
        'traefikTlsOptions' => Resources\TraefikTlsOption::class,
        'traefikTlsStores' => Resources\TraefikTlsStore::class,
    ],
];
```

## Všetky kľúče

| Kľúč | Env | Predvolené | Účel |
| --- | --- | --- | --- |
| `default` | `KUBERNETES_CLUSTER` | default | Klaster, ktorý používa Kubernetes::pods(), Kubernetes::ping() a každá ďalšia skratka pre predvolený klaster — a ktorý kubernetes:ping overí bez argumentu. |
| `clusters.<name>.source` | `KUBERNETES_SOURCE` | url | Odkiaľ sa berie pripojenie: url (kľúče nižšie), kubeconfig (súbor a kontext) alebo in-cluster (service account podu). |
| `clusters.<name>.url` | `KUBERNETES_URL` | null | URL apiservera pre zdroj url. |
| `clusters.<name>.token` | `KUBERNETES_TOKEN` | null | Bearer token. |
| `clusters.<name>.certificate / private_key / ca_certificate` | `KUBERNETES_CLIENT_CERTIFICATE · …_CLIENT_KEY · …_CA_CERTIFICATE` | null | Cesty ku klientskemu certifikátu, jeho kľúču a k CA. |
| `clusters.<name>.verify` | `KUBERNETES_VERIFY_SSL` | true | Overovanie TLS. Vypnite ho len pri lokálnom vývoji. Prázdne KUBERNETES\_VERIFY\_SSL= sa počíta ako nenastavené a overovanie ponechá zapnuté. |
| `clusters.<name>.kubeconfig / context` | `KUBERNETES_KUBECONFIG · KUBERNETES_CONTEXT` | null | Pre zdroj kubeconfig: súbor (null = všetky súbory z KUBECONFIG zlúčené ako v kubectl — chýbajúce sa preskočia a platí hodnota z prvého súboru, ktorý ju nastavuje — inak ~/.kube/config) a kontext (null = current-context). |
| `clusters.<name>.namespace` | `KUBERNETES_NAMESPACE` | null | Predvolený namespace pre zdroje v namespace na tomto klastri. Bez nastavenia sa pri zdroji kubeconfig použije namespace z kontextu, inak default. |
| `clusters.<name>.manager` | `KUBERNETES_MANAGER` | null | Field manager vašej aplikácie — posiela sa ako fieldManager pri každom zápise a ako user agent. Server-side apply bez neho použije kubernetes-api-for-laravel. Rozpočet požiadaviek podľa neho nekľúčuje (ten platí pre apiserver). |
| `clusters.<name>.follow_redirects` | `KUBERNETES_FOLLOW_REDIRECTS` | false | Povolí klastru nasledovať HTTP presmerovania (s predvolenými hodnotami Guzzle). Bez povolenia vyhodí 3xx KubernetesException — pozrite Pripojenie ku klastru. Platí pre každý zdroj. |
| `clusters.<name>.redact_errors` | `KUBERNETES_REDACT_ERRORS` | false | Správy KubernetesException nesú len stav a dôvod (HTTP 409 AlreadyExists) — pozrite Spracovanie chýb. Platí pre každý zdroj. |
| `client.options` | — | \['timeout' => 5\] | Voľby HTTP klienta Laravelu pridané ku každej požiadavke balíka (timeout, proxy, hlavičky…). Timeout — sekundy ako int, float alebo číselný reťazec, 0 = bez limitu — ohraničuje bežné požiadavky; pri watch a streamLogs() len pripojenie a hlavičky odpovede, exec() ho ignoruje. Kľúč allow\_redirects nastavený tu (boolean alebo pole volieb Guzzle; v publikovanom súbore nie je) je globálne pravidlo presmerovaní pre klastre, ktoré si ich samy nepovolia. |
| `client.stream_timeout` | `KUBERNETES_STREAM_TIMEOUT` | 0 | Časový limit nečinnosti streamov v sekundách (celé číslo od 0 do 86400): po takom dlhom tichu sa watch či sledovanie logov čisto ukončí a nedokončený exec() nevráti exit kód. 0 čaká neobmedzene, ako kubectl. |
| `rate_limits.enabled` | `KUBERNETES_RATELIMIT_ENABLED` | true | Zapína obmedzenie požiadaviek na strane klienta; false posiela požiadavky bez obmedzenia. |
| `rate_limits.owner` | `KUBERNETES_RATELIMIT_OWNER` | app | Predpona kľúča rozpočtu — viac aplikácií či workerov môže rozpočet klastra zdieľať alebo oddeliť. |
| `rate_limits.max_attempts` | `KUBERNETES_RATELIMIT` | 400 | Počet požiadaviek na klaster v jednom okne, kým sa začne čakať — celé číslo, aspoň 1. |
| `rate_limits.timespan` | `KUBERNETES_RATELIMIT_TIMESPAN` | minute | Dĺžka okna: presne second, minute, hour alebo day. Preklep ako minutes vyhodí výnimku, namiesto aby sa z neho stala minúta. |
| `rate_limits.adaptive` | `KUBERNETES_RATELIMIT_ADAPTIVE` | true | Pri odpovedi 429 rešpektuje hlavičku Retry-After od apiservera a limiter sa sám doladí. |
| `rate_limits.max_wait` | `KUBERNETES_RATELIMIT_MAX_WAIT` | null | null znamená čakať. Strop v ms (0 alebo viac) namiesto čakania okamžite vyhodí RateLimitExceededException. |
| `rate_limits.jitter` | `KUBERNETES_RATELIMIT_JITTER` | null | Náhodný rozptyl v ms (0 alebo viac) pridaný ku každému odkladu, ktorý rozloží nárazové špičky. |
| `traefik.group` | — | traefik.io/v1alpha1 | API skupina/verzia vstavaných zdrojov Traefiku; pre Traefik starší ako v3 traefik.containo.us/v1alpha1. |
| `resources` | — | 33 vstavaných položiek | Názov prístupu → trieda zdroja, číta sa pri každom volaní. Vstavané meno nasmerujte na vlastnú podtriedu alebo pridajte vlastné CRD. Každá položka musí byť podtrieda Resource. |

## Prostredie (env)

Predvolený klaster aj limity požiadaviek sa riadia cez env, takže konfiguráciu často ani nemusíte publikovať:

```bash
KUBERNETES_CLUSTER=default            # the default cluster's name
KUBERNETES_SOURCE=url                 # url | kubeconfig | in-cluster
KUBERNETES_URL=https://api.my-cluster.example:6443
KUBERNETES_TOKEN=service-account-token
KUBERNETES_NAMESPACE=shop             # default namespace for namespaced resources
KUBERNETES_MANAGER=shop-app           # field manager (fieldManager on writes) and user agent
KUBERNETES_STREAM_TIMEOUT=0           # idle seconds before a watch or log follow ends (0 = never)
# KUBERNETES_FOLLOW_REDIRECTS=false   # opt in to following HTTP redirects
# KUBERNETES_REDACT_ERRORS=false      # status + reason only in exception messages
```

```bash
KUBERNETES_RATELIMIT=400            # attempts per window, per cluster
KUBERNETES_RATELIMIT_TIMESPAN=minute
KUBERNETES_RATELIMIT_ADAPTIVE=true  # honour 429 Retry-After
# KUBERNETES_RATELIMIT_MAX_WAIT=2000  # ms — fail fast instead of waiting
# KUBERNETES_RATELIMIT_JITTER=250     # ms of random spread per defer
# KUBERNETES_RATELIMIT_OWNER=app
# KUBERNETES_RATELIMIT_ENABLED=false  # the raw, unthrottled client
```

## Čo prísna konfigurácia odmietne

Každý kľúč sa číta prísne: predvolená hodnota sa použije len pri nenastavenom kľúči a zadaná, no neplatná hodnota vyhodí výnimku s názvom kľúča. Prázdna hodnota znamená nenastavená: chýbajúci kľúč, null aj prázdna hodnota (KEY= u hostiteľa, prázdna alebo len z medzier) dostanú predvolenú hodnotu — aj pri prepínačoch, kde prázdna hodnota nikdy neznamená false.

- Prepínače — clusters.<name>.verify, follow\_redirects a redact\_errors, client.options.allow\_redirects, rate\_limits.enabled a rate\_limits.adaptive — prijímajú true/false, 1/0, on/off a yes/no. Čokoľvek iné vyhodí výnimku, takže preklep v KUBERNETES\_VERIFY\_SSL overovanie TLS nikdy nevypne — a prázdne KUBERNETES\_VERIFY\_SSL= sa počíta ako nenastavené, takže overovanie zostane zapnuté.
- Čísla prijímajú int alebo celočíselný reťazec ('400'): rate\_limits.max\_attempts (aspoň 1), rate\_limits.max\_wait a jitter (0 alebo viac) a client.stream\_timeout (0 – 86400). client.options.timeout prijme aj float či desatinný reťazec ('2.5'), 0 alebo viac. 'five', '5.5' pri celom čísle, '5s' alebo záporné číslo vyhodia výnimku. Prázdne KUBERNETES\_STREAM\_TIMEOUT= znamená predvolenú 0 a prázdne max\_wait či jitter sa počíta ako nenastavené — nikdy nie ako strop 0 ms s okamžitým zlyhaním.
- rate\_limits.timespan musí byť presne second, minute, hour alebo day — minutes vyhodí výnimku, namiesto aby sa z neho stala minúta.
- Reťazce — default, url klastra, cesty k prihlasovacím údajom, kubeconfig, context, namespace a manager, ako aj rate\_limits.owner a traefik.group — musia byť reťazce. Prázdna env premenná ako KUBERNETES\_TOKEN= sa počíta ako nenastavená: žiadny token sa nepošle, presne ako keby riadok chýbal. Rovnako KUBERNETES\_NAMESPACE= znamená namespace z kontextu kubeconfigu (pri zdroji kubeconfig) alebo default a KUBERNETES\_CLUSTER= predvolený klaster. Token nesprávneho typu sa v správe uvedie len typom (\[int\] given.), nikdy hodnotou. Neznámy alebo nereťazcový source vyhodí výnimku; prázdny znamená url.
- Mapy — clusters, každá položka clusters.<name>, client.options a resources — musia byť polia a každá položka resources musí byť podtrieda Resource.

Nastavenia klastra a klienta vyhodia ClusterConfigurationException — prepínače klastra pri jeho vytvorení, client.options.allow\_redirects pri prvej požiadavke —, resources vyhodí InvalidResourceException a limity požiadaviek spolu s traefik.group vyhodia InvalidConfigurationException z toolkitu.

## Mapa zdrojov

Typované prístupy čítajú mapu resources pri každom volaní a ak v nej svoje meno nenájdu, použijú triedu z balíka. Publikované pole resources tak stačí obmedziť na položky, ktoré pridávate alebo meníte — publikovaný súbor uvádza všetkých 33 len pre prehľad. Vlastné mená fungujú, len kým sú v mape. Položka, ktorá nie je podtrieda Resource, alebo hodnota resources, ktorá nie je pole, vyhodí InvalidResourceException.

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