Це багатосторінковий друкований вигляд цього розділу. Натисність щоб друкувати.

Повернутися до звичайного перегляду сторінки.

Ресурси Service

1 - Service

Service — це іменована абстракція служб програмного забезпечення (наприклад, mysql), що складається з локального порту (наприклад, 3306), який прослуховує проксі, і селектора, який визначає, які Podʼи будуть відповідати на запити, надіслані через проксі.

apiVersion: v1

import "k8s.io/api/core/v1"

Service

Service — це іменована абстракція служб програмного забезпечення (наприклад, mysql), що складається з локального порту (наприклад, 3306), який прослуховує проксі, і селектора, який визначає, які Podʼи будуть відповідати на запити, надіслані через проксі.


ServiceSpec

ServiceSpec описує атрибути, які користувач створює для служби.


  • selector (map[string]string)

    Направляє трафік до Podʼів з ключами та значеннями міток, які відповідають цьому селектору. Якщо селектор порожній або не вказаний, передбачається, що Service має зовнішній процес, який керує його точками доступу, і Kubernetes не буде їх змінювати. Застосовується лише до типів ClusterIP, NodePort і LoadBalancer. Ігнорується, якщо тип — ExternalName. Більше інформації: https://kubernetes.io/docs/concepts/services-networking/service/

  • ports ([]ServicePort)

    Patch strategy: злиття по ключу port

    Map: унікальні значення за ключами port, protocol зберігатимуться під час злиття

    Список портів, які відкриває Service. Більше інформації: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies

    ServicePort містить інформацію про порт Service.

    • ports.port (int32), обовʼязково

      Порт, який буде відкритий цим Service.

    • ports.targetPort (IntOrString)

      Номер або імʼя порту для доступу до Podʼів, на які спрямовано Service. Номер повинен бути в діапазоні від 1 до 65535. Імʼя повинно бути IANA_SVC_NAME. Якщо це рядок, він буде шукатися як іменований порт у портах контейнера цільового Podʼа. Якщо не вказано, використовується значення поля ʼportʼ (identity map). Це поле ігнорується для Service із clusterIP=None і має бути пропущене або встановлене рівним полю ʼportʼ. Більше інформації: https://kubernetes.io/docs/concepts/services-networking/service/#defining-a-service

      IntOrString — це тип, який може містити int32 або рядок. При використанні перетворення з/в JSON або YAML він виробляє або споживає внутрішній тип. Це дозволяє вам мати, наприклад, поле JSON, яке може приймати імʼя або число.

    • ports.protocol (string)

      IP-протокол для цього порту. Підтримуються "TCP", "UDP" і "SCTP". Стандартне значення — TCP.

    • ports.name (string)

      Імʼя цього порту в Service. Воно повинно бути DNS_LABEL. Усі порти в межах ServiceSpec повинні мати унікальні імена. При аналізі точок доступу для Service, вони повинні відповідати полю ʼnameʼ в EndpointPort. Необовʼязкове, якщо визначено лише один ServicePort для цього Service.

    • ports.nodePort (int32)

      Порт на кожному вузлі, на якому цей Service буде доступний, коли тип — NodePort або LoadBalancer. Зазвичай призначається системою. Якщо значення вказано, знаходиться в діапазоні та не використовується, воно буде використано, інакше операція завершиться невдачею. Якщо не вказано, порт буде виділено, якщо Service його потребує. Якщо це поле вказано під час створення Service, яка не потребує його, створення не вдасться. Це поле буде видалено під час оновлення Service, щоб більше не потребувати його (наприклад, змінюючи тип з NodePort на ClusterIP). Більше інформації: https://kubernetes.io/docs/concepts/services-networking/service/#type-nodeport

    • ports.appProtocol (string)

      Протокол застосунків для цього порту. Він використовується як підказка для реалізацій, щоб запропонувати багатший функціонал для протоколів, які вони розуміють. Це поле відповідає стандартному синтаксису міток Kubernetes. Допустимі значення - або:

  • type (string)

    Тип визначає, як Service буде відкрито. Стандартне значення — ClusterIP. Допустимі варіанти: ExternalName, ClusterIP, NodePort та LoadBalancer. "ClusterIP" виділяє точкам доступу внутрішню IP-адресу кластера для балансування навантаження. Точки доступу визначаються селектором або, якщо його не вказано, ручним створенням обʼєкта Endpoints або обʼєктів EndpointSlice. Якщо clusterIP має значення "None", жодна віртуальна IP-адреса не виділяється, і точки доступу публікуються як набір точок доступу, а не віртуальна IP-адреса. "NodePort" базується на ClusterIP і виділяє порт на кожному вузлі, який маршрутизується до тих самих точок доступу, що і clusterIP. "LoadBalancer" базується на NodePort і створює зовнішній балансувальник навантаження (якщо підтримується в поточній хмарі), який маршрутизується до тих самих точок доступу, що і clusterIP. "ExternalName" привʼязує цей Service до вказаного externalName. Декілька інших полів не застосовуються до Service ExternalName. Більше інформації: https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services-service-types

  • ipFamilies ([]string)

    Atomic: буде замінено під час злиття

    IPFamilies — це список IP-сімейств (наприклад, IPv4, IPv6), призначених цьому Serviceʼу. Це поле зазвичай призначається автоматично на основі конфігурації кластера та поля ipFamilyPolicy. Якщо це поле вказано вручну, запитане сімейство доступне в кластері, і ipFamilyPolicy дозволяє це, воно буде використане; інакше створення Service не вдасться. Це поле змінюється відповідно до умов: дозволяє додавати або видаляти вторинне IP-сімейство, але не дозволяє змінювати первинне IP-сімейство Service. Допустимі значення: "IPv4" і "IPv6". Це поле застосовується лише до Service типів ClusterIP, NodePort та LoadBalancer, і не застосовується до "headless" Service. Це поле буде очищено під час оновлення Service до типу ExternalName.

    Це поле може містити максимум два записи (двостекові сімейство, у будь-якому порядку). Ці сімейства повинні відповідати значенням поля clusterIPs, якщо вказано. Поля clusterIPs та ipFamilies керуються полем ipFamilyPolicy.

  • ipFamilyPolicy (string)

    IPFamilyPolicy представляє вимоги до подвійного стека для цього Service. Якщо значення не надано, це поле буде встановлено на SingleStack. Service можуть бути "SingleStack" (одне IP-сімейство), "PreferDualStack" (два IP-сімейства в конфігураціях з подвійним стеком або одне IP-сімейство в конфігураціях з одним стеком) або "RequireDualStack" (два IP-сімейства в конфігураціях з подвійним стеком, інакше буде збій). Поля ipFamilies та clusterIPs залежать від значення цього поля. Це поле буде очищено під час оновлення Service до типу ExternalName.

  • clusterIP (string)

    clusterIP — це IP-адреса Service, яка зазвичай призначається випадковим чином. Якщо адреса вказана вручну, знаходиться в діапазоні (згідно з конфігурацією системи) і не використовується, вона буде виділена Service; інакше створення Service не вдасться. Це поле не може бути змінено через оновлення, якщо тип поля також не змінюється на ExternalName (що вимагає, щоб це поле було порожнім) або тип поля змінюється з ExternalName (у цьому випадку це поле може бути зазначено опціонально, як описано вище). Допустимі значення: "None", порожній рядок (""), або дійсна IP-адреса. Встановлення цього значення в "None" створює "headless service" (без віртуальної IP-адреси), що корисно, коли потрібні прямі зʼєднання з точками доступу, і проксіювання не потрібне. Застосовується лише до типів ClusterIP, NodePort і LoadBalancer. Якщо це поле вказано під час створення Service типу ExternalName, створення не вдасться. Це поле буде очищено під час оновлення Service до типу ExternalName. Більше інформації: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies

  • clusterIPs ([]string)

    Atomic: буде замінено під час злиття

    ClusterIPs — це список IP-адрес, призначених Service, і зазвичай вони призначаються випадковим чином. Якщо адреса вказана вручну, знаходиться в діапазоні (згідно з конфігурацією системи) і не використовується, вона буде виділена Service; інакше створення Service не вдасться. Це поле не може бути змінено через оновлення, якщо тип поля також не змінюється на ExternalName (що вимагає, щоб це поле було порожнім) або тип поля змінюється з ExternalName (у цьому випадку це поле може бути зазначено опціонально, як описано вище). Допустимі значення: "None", порожній рядок (""), або дійсна IP-адреса. Встановлення цього значення на "None" створює "headless service" (без віртуальної IP-адреси), що корисно, коли потрібні прямі зʼєднання з точками доступу, і проксіювання не потрібно. Застосовується лише до типів ClusterIP, NodePort і LoadBalancer. Якщо це поле вказано під час створення Service типу ExternalName, створення не вдасться. Це поле буде очищено під час оновлення Service до типу ExternalName. Якщо це поле не вказано, воно буде ініціалізовано з поля clusterIP. Якщо це поле вказано, клієнти повинні переконатися, що clusterIPs[0] і clusterIP мають однакове значення.

    Це поле може містити максимум два записи (IP-адреси подвійного стека в будь-якому порядку). Ці IP-адреси повинні відповідати значенням поля ipFamilies. Поля clusterIPs та ipFamilies керуються полем ipFamilyPolicy. Більше інформації: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies

  • externalIPs ([]string)

    Atomic: буде замінено під час злиття

    externalIPs — це список IP-адрес, для яких вузли в кластері також будуть приймати трафік для цього Service. Ці IP-адреси не керуються Kubernetes. Користувач несе відповідальність за забезпечення того, щоб трафік надходив на вузол з цією IP-адресою. Загальний приклад — зовнішні балансувальники навантаження, які не є частиною системи Kubernetes.

  • sessionAffinity (string)

    Підтримує "ClientIP" і "None". Використовується для підтримки спорідненості сеансів. Вмикає спорідненість сеансів на основі IP-адреси клієнта. Значення повинно бути ClientIP або None. Стандартне значення — None. Більше інформації: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies

  • loadBalancerIP (string)

    Застосовується лише до типу Service: LoadBalancer. Ця функція залежить від того, чи підтримує базовий хмарний провайдер вказівку loadBalancerIP під час створення балансувальника навантаження. Це поле буде ігноруватися, якщо постачальник хмари не підтримує цю функцію. Застаріле: це поле було недостатньо описане, і його значення варіюється залежно від реалізацій. Використання його не є переносимим і може не підтримувати подвійний стек. Користувачам рекомендується використовувати анотації специфічні для реалізації, коли це можливо.

  • loadBalancerSourceRanges ([]string)

    Atomic: буде замінено під час злиття

    Якщо вказано і підтримується платформою, це обмежить трафік через балансувальник навантаження постачальника хмари до вказаних IP-адрес клієнтів. Це поле буде ігноруватися, якщо постачальник хмари не підтримує цю функцію. Більше інформації: https://kubernetes.io/docs/tasks/access-application-cluster/create-external-load-balancer/

  • loadBalancerClass (string)

    loadBalancerClass — це клас реалізації балансувальника навантаження, до якого належить Service. Якщо вказано, значення цього поля повинно бути ідентифікатором у стилі мітки з опціональним префіксом, наприклад, "internal-vip" або "example.com/internal-vip". Імена без префіксів зарезервовані для кінцевих користувачів. Це поле можна встановити лише при створенні або оновленні Service до типу ʼLoadBalancerʼ. Якщо не встановлено, використовується стандартна реалізація балансувальника навантаження, сьогодні це зазвичай робиться через інтеграцію з постачальником хмари, але має застосовуватися до будь-якої стандартної реалізації. Якщо встановлено, вважається, що реалізація балансувальника навантаження стежить за Service з відповідним класом. Будь-яка стандартна реалізація балансувальника навантаження (наприклад, постачальники хмари) повинна ігнорувати Service, які встановлюють це поле. Це поле можна встановити лише при створенні або оновленні Service до типу ʼLoadBalancerʼ. Після встановлення його не можна змінити. Це поле буде очищено при оновленні Service до типу, відмінного від ʼLoadBalancerʼ.

  • externalName (string)

    externalName — це зовнішнє посилання, яке механізми виявлення будуть повертати як псевдонім для цього Service (наприклад, запис DNS CNAME). Проксіювання не буде. Повинно бути вказано в нижньому регістрі відповідно до RFC-1123 hostname (https://tools.ietf.org/html/rfc1123) і вимагає type бути "ExternalName".

  • externalTrafficPolicy (string)

    externalTrafficPolicy описує, як вузли розподіляють трафік, який вони отримують на одній з "зовнішньо спрямованих" адрес Service (NodePorts, ExternalIPs і LoadBalancer IPs). Якщо встановлено значення "Local", проксі налаштує Service так, що передбачається, що зовнішні балансувальники навантаження будуть піклуватися про балансування трафіку Service між вузлами, і тому кожен вузол буде доставляти трафік лише до локальних точок доступу вузла цього Service, не маскуючи IP-адресу джерела клієнта. (Трафік, помилково надісланий на вузол без точок доступу, буде відхилений.) Стандартне значення "Cluster" використовує стандартну поведінку маршрутизації до всіх точок доступу рівномірно (можливо, змінену топологією та іншими функціями). Зверніть увагу, що трафік, надісланий на External IP або LoadBalancer IP зсередини кластера, завжди буде мати семантику "Cluster", але клієнти, які надсилають на NodePort зсередини кластера, можуть враховувати політику трафіку під час вибору вузла.

  • internalTrafficPolicy (string)

    InternalTrafficPolicy описує, як вузли розподіляють трафік, який вони отримують на ClusterIP. Якщо встановлено значення "Local", проксі вважатиме, що Podʼи хочуть спілкуватися лише з точками доступу Service на тому ж вузлі, що й Pod, відхиляючи трафік, якщо немає локальних точок доступу. Стандартне значення "Cluster" використовує стандартну поведінку маршрутизації до всіх точок доступу рівномірно (можливо, змінено топологією та іншими функціями).

  • healthCheckNodePort (int32)

    healthCheckNodePort визначає порт вузла перевірки справності Service. Це застосовується лише при встановленні типу на LoadBalancer і зовнішньому трафіку політики на Local. Якщо вказане значення, знаходиться в діапазоні і не використовується, воно буде використано. Якщо не вказано, значення буде автоматично призначено. Зовнішні системи (наприклад, балансувальники навантаження) можуть використовувати цей порт, щоб визначити, чи містить певний вузол точки доступу для цього Service чи ні. Якщо це поле вказано під час створення Service, яка цього не потребує, створення не вдасться. Це поле буде очищено при оновленні Service, щоб більше не потребувати його (наприклад, зміна типу). Це поле не можна оновити після встановлення.

  • publishNotReadyAddresses (boolean)

    publishNotReadyAddresses вказує, що будь-який агент, який має справу з точками доступу для цього Service, повинен ігнорувати будь-які індикатори готовності/не готовності. Основний випадок використання цього поля — для Headless Service для StatefulSet, щоб поширювати SRV DNS-записи для своїх Podʼів з метою їх виявлення. Контролери Kubernetes, які генерують ресурси Endpoints і EndpointSlice для Service, інтерпретують це як ознаку того, що всі точки доступу вважаються "готовими", навіть якщо самі Podʼи не готові. Агенти, які використовують тільки точки доступу, створені Kubernetes, через ресурси Endpoints або EndpointSlice, можуть безпечно передбачати цю поведінку.

  • sessionAffinityConfig (SessionAffinityConfig)

    sessionAffinityConfig містить конфігурації сеансової спорідненості.

    SessionAffinityConfig представляє конфігурації сеансової спорідненості.

    • sessionAffinityConfig.clientIP (ClientIPConfig)

      clientIP містить конфігурації сеансової спорідненості на основі IP клієнта.

      ClientIPConfig представляє конфігурації сеансової спорідненості на основі IP клієнта.

      • sessionAffinityConfig.clientIP.timeoutSeconds (int32)

        timeoutSeconds задає час залипання сесії типу ClientIP у секундах. Значення повинно бути >0 && <=86400 (для 1 дня), якщо ServiceAffinity == "ClientIP". Стандартне значення — 10800 (3 години).

  • allocateLoadBalancerNodePorts (boolean)

    allocateLoadBalancerNodePorts визначає, чи будуть автоматично виділені NodePorts для Service з типом LoadBalancer. Стандартне значення — "true". Його можна встановити у "false", якщо балансувальник навантаження кластера не покладається на NodePorts. Якщо абонент запитує конкретні NodePorts (вказуючи значення), ці запити будуть виконані, незалежно від цього поля. Це поле можна встановити лише для Service з типом LoadBalancer і воно буде очищено, якщо тип буде змінено на будь-який інший тип.

  • trafficDistribution (string)

    TrafficDistribution надає спосіб виразити вподобання щодо того, як розподіляти трафік до точок доступу сервісу. Реалізації можуть використовувати це поле як підказку, але не зобовʼязані суворо дотримуватися вказівок. Якщо поле не встановлене, реалізація застосує свою стандартну стратегію маршрутизації. Якщо встановлено значення "PreferClose", реалізації повинні надавати пріоритет точкам доступу, які топологічно близькі (наприклад, у тій самій зоні). Це бета-поле і потребує ввімкнення функції ServiceTrafficDistribution.

ServiceStatus

ServiceStatus представляє поточний стан Service.


  • conditions ([]Condition)

    Patch strategy: злиття за ключем type

    Map: унікальні значення за ключем type зберігаються під час злиття

    Поточний стан Service

    Condition містить деталі для одного аспекту поточного стану цього API ресурсу.

    • conditions.lastTransitionTime (Time), обовʼязково

      lastTransitionTime — це останній час, коли стан змінився з одного на інший. Це має бути тоді, коли змінився основний стан. Якщо це невідомо, то можна використати час, коли змінилося поле API.

      Time — це обгортка навколо time.Time, яка підтримує коректне перетворення у YAML та JSON. Для багатьох з функцій, які пропонує пакет time, надаються обгортки.

    • conditions.message (string), обовʼязково

      message — це повідомлення, зрозуміле людині, яке вказує на деталі про зміну стану. Це може бути порожній рядок.

    • conditions.reason (string), обовʼязково

      reason містить програмний ідентифікатор, який вказує на причину останньоїзміни стану. Виробники специфічних типів станів можуть визначати очікувані значення та значення для цього поля, і чи вважаються значення гарантованим API. Значення має бути рядком у CamelCase. Це поле не може бути порожнім.

    • conditions.status (string), обовʼязково

      статус стану, одне з True, False, Unknown.

    • conditions.type (string), обовʼязково

      тип стану у CamelCase або у форматі foo.example.com/CamelCase.

    • conditions.observedGeneration (int64)

      observedGeneration представляє .metadata.generation, на основі якої встановлено стан. Наприклад, якщо .metadata.generation наразі дорівнює 12, але .status.conditions[x].observedGeneration дорівнює 9, то стан не актуальний стосовно поточного стану екземпляра.

  • loadBalancer (LoadBalancerStatus)

    LoadBalancer містить поточний статус балансувальника навантаження, якщо він присутній.

    LoadBalancerStatus представляє статус балансувальника навантаження.

    • loadBalancer.ingress ([]LoadBalancerIngress)

      Atomic: буде замінено під час злиття

      Ingress — це список точок входу для балансувальника навантаження. Трафік, призначений для Service, має надходити до цих точок входу.

      LoadBalancerIngress представляє стаnec точки входу балансувальника навантаження: трафік, призначений для Service, має надходити до точки входу.

      • loadBalancer.ingress.hostname (string)

        Hostname встановлюється для точок входу балансувальника навантаження, які базуються на DNS (зазвичай балансувальники навантаження AWS)

      • loadBalancer.ingress.ip (string)

        IP встановлюється для точок входу балансувальника навантаження, які базуються на IP (зазвичай балансувальники навантаження GCE або OpenStack)

      • loadBalancer.ingress.ipMode (string)

        IPMode визначає, як поводиться IP балансувальника навантаження, і може бути вказаний лише тоді, коли вказане поле ip. Встановлення цього значення на "VIP" означає, що трафік доставляється до вузла з встановленим призначенням на IP та порт балансувальника навантаження. Встановлення цього значення на "Proxy" означає, що трафік доставляється до вузла або Pod з встановленим призначенням на IP вузла та порт вузла або на IP Podʼа та порт. Реалізації Service можуть використовувати цю інформацію для налаштування маршрутизації трафіку.

      • loadBalancer.ingress.ports ([]PortStatus)

        Atomic: буде замінено під час злиття

        Ports — це список портів Service. Якщо використовується, кожен порт, визначений у Service, повинен мати запис у цьому списку.

        **

        • loadBalancer.ingress.ports.port (int32), обовʼязково

          Port — це номер порту Service, стан якого записаний тут.

        • loadBalancer.ingress.ports.protocol (string), обовʼязково

          Protocol — це протокол порту Service, стан якого записаний тут. Підтримувані значення: "TCP", "UDP", "SCTP".

        • loadBalancer.ingress.ports.error (string)

          Error — це запис проблеми з портом Service. Формат помилки має відповідати наступним правилам:

          • значення вбудованих помилок повинні бути визначені у цьому файлі та повинні використовувати CamelCase імена;
          • значення помилок, специфічних для хмарних провайдерів, повинні мати імена, які відповідають формату foo.example.com/CamelCase.

ServiceList

ServiceList містить список Serviceʼів.


Операції


get отримати вказаний Service

HTTP запит

GET /api/v1/namespaces/{namespace}/services/{name}

Параметри

  • name (в шляху): string, обовʼязково

    імʼя Service

  • namespace (в шляху): string, обовʼязково

    namespace

  • pretty (в запиті): string

    pretty

Відповідь

200 (Service): OK

401: Unauthorized

get отримати статус вказаного Service

HTTP запит

GET /api/v1/namespaces/{namespace}/services/{name}/status

Параметри

  • name (в шляху): string, обовʼязково

    імʼя Service

  • namespace (в шляху): string, обовʼязково

    namespace

  • pretty (в запиті): string

    pretty

Відповідь

200 (Service): OK

401: Unauthorized

list перелік або перегляд обʼєктів типу Service

HTTP запит

GET /api/v1/namespaces/{namespace}/services

Параметри

Відповідь

200 (ServiceList): OK

401: Unauthorized

list перелік або перегляд обʼєктів типу Service

HTTP запит

GET /api/v1/services

Параметри

Відповідь

200 (ServiceList): OK

401: Unauthorized

create створення Service

HTTP запит

POST /api/v1/namespaces/{namespace}/services

Параметри

  • namespace (в шляху): string, обовʼязково

    namespace

  • body: Service, обовʼязково

  • dryRun (в запиті): string

    dryRun

  • fieldManager (в запиті): string

    fieldManager

  • fieldValidation (в запиті): string

    fieldValidation

  • pretty (в запиті): string

    pretty

Відповідь

200 (Service): OK

201 (Service): Created

202 (Service): Accepted

401: Unauthorized

update заміна вказаного Service

HTTP запит

PUT /api/v1/namespaces/{namespace}/services/{name}

Параметри

  • name (в шляху): string, обовʼязково

    імʼя Service

  • namespace (в шляху): string, обовʼязково

    namespace

  • body: Service, обовʼязково

  • dryRun (в запиті): string

    dryRun

  • fieldManager (в запиті): string

    fieldManager

  • fieldValidation (в запиті): string

    fieldValidation

  • pretty (в запиті): string

    pretty

Відповідь

200 (Service): OK

201 (Service): Created

401: Unauthorized

update заміна статусу вказаного Service

HTTP запит

PUT /api/v1/namespaces/{namespace}/services/{name}/status

Параметри

  • name (в шляху): string, обовʼязково

    імʼя Service

  • namespace (в шляху): string, обовʼязково

    namespace

  • body: Service, обовʼязково

  • dryRun (в запиті): string

    dryRun

  • fieldManager (в запиті): string

    fieldManager

  • fieldValidation (в запиті): string

    fieldValidation

  • pretty (в запиті): string

    pretty

Відповідь

200 (Service): OK

201 (Service): Created

401: Unauthorized

patch часткове оновлення вказаного Service

HTTP запит

PATCH /api/v1/namespaces/{namespace}/services/{name}

Параметри

  • name (в шляху): string, обовʼязково

    імʼя Service

  • namespace (в шляху): string, обовʼязково

    namespace

  • body: patch, обовʼязково

  • dryRun (в запиті): string

    dryRun

  • fieldManager (в запиті): string

    fieldManager

  • fieldValidation (в запиті): string

    fieldValidation

  • force (в запиті): boolean

    force

  • pretty (в запиті): string

    pretty

Відповідь

200 (Service): OK

201 (Service): Created

401: Unauthorized

patch часткове оновлення статусу вказаного Service

HTTP запит

PATCH /api/v1/namespaces/{namespace}/services/{name}/status

Параметри

  • name (в шляху): string, обовʼязково

    імʼя Service

  • namespace (в шляху): string, обовʼязково

    namespace

  • body: Patch, обовʼязково

  • dryRun (в запиті): string

    dryRun

  • fieldManager (в запиті): string

    fieldManager

  • fieldValidation (в запиті): string

    fieldValidation

  • force (в запиті): boolean

    force

  • pretty (в запиті): string

    pretty

Відповідь

200 (Service): OK

201 (Service): Created

401: Unauthorized

delete видалення Service

HTTP запит

DELETE /api/v1/namespaces/{namespace}/services/{name}

Параметри

  • name (в шляху): string, обовʼязково

    імʼя Service

  • namespace (в шляху): string, обовʼязково

    namespace

  • body: DeleteOptions

  • dryRun (в запиті): string

    dryRun

  • gracePeriodSeconds (в запиті): integer

    gracePeriodSeconds

  • pretty (в запиті): string

    pretty

  • propagationPolicy (в запиті): string

    propagationPolicy

Відповідь

200 (Service): OK

202 (Service): Accepted

401: Unauthorized

deletecollection видалити колекцію Service

HTTP запит

DELETE /api/v1/namespaces/{namespace}/services

Параметри

Відповідь

200 (ServiceList): OK

401: Unauthorized

2 - Endpoints

Endpoints — є колекцією точок доступу, що фактично утворюють Service.

apiVersion: v1

import "k8s.io/api/core/v1"

Endpoints

Endpoints — є колекцією точок доступу, що фактично утворюють Service.

Name: "mysvc",
Subsets: [
  {
    Addresses: [{"ip": "10.10.1.1"}, {"ip": "10.10.2.2"}],
    Ports: [{"name": "a", "port": 8675}, {"name": "b", "port": 309}]
  },
  {
    Addresses: [{"ip": "10.10.3.3"}],
    Ports: [{"name": "a", "port": 93}, {"name": "b", "port": 76}]
  },
]

  • apiVersion: v1

  • kind: Endpoints

  • metadata (ObjectMeta)

    Стандартні метадані обʼєкта. Детальніше: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata

  • subsets ([]EndpointSubset)

    Atomic: буде замінено під час злиття

    Набір всіх точок доступу є обʼєднанням (union) всіх субнаборів. Адреси розміщуються в субнабори відповідно до IP-адрес, які вони поділяють. Одна адреса з кількома портами, деякі з яких готові, а деякі ні (тому що вони належать різним контейнерам), буде відображатися в різних субнаборах для різних портів. Жодна адреса не зʼявиться одночасно в Addresses і NotReadyAddresses в одному субнаборі. Набори адрес і портів, які складають Service.

    EndpointSubset – це група адрес з одним набором портів. Розширений набір точок доступу є декартовим добутком Addresses x Ports. Наприклад, задано:

    {
      Addresses: [{"ip": "10.10.1.1"}, {"ip": "10.10.2.2"}],
      Ports:     [{"name": "a", "port": 8675}, {"name": "b", "port": 309}]
    }
    

    Отриманий набір кінцевих точок може виглядати як:

    a: [ 10.10.1.1:8675, 10.10.2.2:8675 ],
    b: [ 10.10.1.1:309, 10.10.2.2:309 ]
    
    • subsets.addresses ([]EndpointAddress)

      Atomic: буде замінено під час злиття

      IP-адреси, які пропонують відповідні порти, позначені як готові. Ці точки доступу повинні вважатися безпечними для використання балансувальниками навантаження та клієнтами.

      EndpointAddress — це кортеж, що описує одну IP-адресу.

      • subsets.addresses.ip (string), обовʼязкове

        IP цієї точки доступу. Не може бути loopback (127.0.0.0/8 або ::1), link-local (169.254.0.0/16 або fe80::/10), або link-local multicast (224.0.0.0/24 або ff02::/16).

      • subsets.addresses.hostname (string)

        Імʼя хоста цієї точки доступу

      • subsets.addresses.nodeName (string)

        Необовʼязково: Вузол, на якому знаходиться ця точка доступу. Це може бути використано для визначення точок доступу що є локальними для вузла.

      • subsets.addresses.targetRef (ObjectReference)

        Посилання на обʼєкт, що надає точку доступу.

    • subsets.notReadyAddresses ([]EndpointAddress)

      Atomic: буде замінено під час злиття

      IP-адреси, які пропонують відповідні порти, але наразі не позначені як готові, тому що вони ще не завершили запуск, нещодавно не пройшли перевірку готовності або нещодавно не пройшли перевірку на справність.

      EndpointAddress — це кортеж, що описує одну IP-адресу.

      • subsets.notReadyAddresses.ip (string), обовʼязкове

        IP цієї точки доступу. Не може бути loopback (127.0.0.0/8 або ::1), link-local (169.254.0.0/16 або fe80::/10), або link-local multicast (224.0.0.0/24 або ff02::/16).

      • subsets.notReadyAddresses.hostname (string)

        Імʼя хоста цієї точки доступу

      • subsets.notReadyAddresses.nodeName (string)

        Необовʼязково: Вузол, на якому знаходиться ця точка доступу. Це може бути використано для визначення точок доступу що є локальними для вузла.

      • subsets.notReadyAddresses.targetRef (ObjectReference)

        Посилання на обʼєкт, що надає точку доступу.

    • subsets.ports ([]EndpointPort)

      Atomic: буде замінено під час злиття

      Номери портів, доступні на відповідних IP-адресах.

      EndpointPort — це кортеж, що описує один порт.

      • subsets.ports.port (int32), обовʼязкове

        Номер порту точки доступу.

      • subsets.ports.protocol (string)

        IP-протокол для цього порту. Повинен бути UDP, TCP або SCTP. За замовчуванням TCP.

      • subsets.ports.name (string)

        Імʼя цього порту. Це повинно відповідати полю 'name' у відповідному ServicePort. Повинно бути DNS_LABEL. Необовʼязкове, лише якщо визначено один порт.

      • subsets.ports.appProtocol (string)

        Протокол програми для цього порту. Використовується як підказка для реалізацій, щоб пропонувати багатший функціонал для протоколів, які вони розуміють. Це поле відповідає стандартному синтаксису міток Kubernetes. Дійсні значення:

EndpointsList

EndpointsList – це список точок доступу.


Операції


get отримати вказані Endpoints

HTTP запит

GET /api/v1/namespaces/{namespace}/endpoints/{name}

Параметри

  • name (в шляху): string, обовʼязково

    назва Endpoints

  • namespace (в шляху): string, обовʼязково

    namespace

  • pretty (в запиті): string

    pretty

Відповідь

200 (Endpoints): OK

401: Unauthorized

list перелік або перегляд обʼєктів типу Endpoints

HTTP запит

GET /api/v1/namespaces/{namespace}/endpoints

Параметри

Відповідь

200 (EndpointsList): OK

401: Unauthorized

list перелік або перегляд обʼєктів типу Endpoints

HTTP запит

GET /api/v1/endpoints

Параметри

Відповідь

200 (EndpointsList): OK

401: Unauthorized

create створення Endpoints

HTTP запит

POST /api/v1/namespaces/{namespace}/endpoints

Параметри

  • namespace (в шляху): string, обовʼязково

    namespace

  • body: Endpoints, обовʼязково

  • dryRun (в запиті): string

    dryRun

  • fieldManager (в запиті): string

    fieldManager

  • fieldValidation (в запиті): string

    fieldValidation

  • pretty (в запиті): string

    pretty

Відповідь

200 (Endpoints): OK

201 (Endpoints): Created

202 (Endpoints): Accepted

401: Unauthorized

update заміна Endpoints

HTTP запит

PUT /api/v1/namespaces/{namespace}/endpoints/{name}

Параметри

  • name (в шляху): string, обовʼязково

    назва Endpoints

  • namespace (в шляху): string, обовʼязково

    namespace

  • body: Endpoints, обовʼязково

  • dryRun (в запиті): string

    dryRun

  • fieldManager (в запиті): string

    fieldManager

  • fieldValidation (в запиті): string

    fieldValidation

  • pretty (в запиті): string

    pretty

Відповідь

200 (Endpoints): OK

201 (Endpoints): Created

401: Unauthorized

patch часткове оновлення Endpoints

HTTP запит

PATCH /api/v1/namespaces/{namespace}/endpoints/{name}

Параметри

  • name (в шляху): string, обовʼязково

    назва Endpoints

  • namespace (в шляху): string, обовʼязково

    namespace

  • body: Patch, обовʼязково

  • dryRun (в запиті): string

    dryRun

  • fieldManager (в запиті): string

    fieldManager

  • fieldValidation (в запиті): string

    fieldValidation

  • force (в запиті): boolean

    force

  • pretty (в запиті): string

    pretty

Відповідь

200 (Endpoints): OK

201 (Endpoints): Created

401: Unauthorized

delete видалення Endpoints

HTTP запит

DELETE /api/v1/namespaces/{namespace}/endpoints/{name}

Параметри

  • name (в шляху): string, обовʼязково

    назва Endpoints

  • namespace (в шляху): string, обовʼязково

    namespace

  • body: DeleteOptions

  • dryRun (в запиті): string

    dryRun

  • gracePeriodSeconds (в запиті): integer

    gracePeriodSeconds

  • pretty (в запиті): string

    pretty

  • propagationPolicy (в запиті): string

    propagationPolicy

Відповідь

200 (Status): OK

202 (Status): Accepted

401: Unauthorized

deletecollection видалити колекцію Endpoints

HTTP запит

DELETE /api/v1/namespaces/{namespace}/endpoints

Параметри

Відповідь

200 (Status): OK

401: Unauthorized

3 - EndpointSlice

EndpointSlice представляє підмножину точок доступу, які реалізують сервіс.

apiVersion: discovery.k8s.io/v1

import "k8s.io/api/discovery/v1"

EndpointSlice

EndpointSlice представляє підмножину точок доступу, які реалізують сервіс. Для даного сервісу може існувати декілька обʼєктів EndpointSlice, виділених мітками, які необхідно обʼєднати для отримання повного набору кінцевих точок.


  • apiVersion: discovery.k8s.io/v1

  • kind: EndpointSlice

  • metadata (ObjectMeta)

    Стандартні метадані обʼєкта.

  • addressType (string), обовʼязково

    addressType вказує тип адреси, яку містить цей EndpointSlice. Усі адреси в цьому сегменті повинні бути одного типу. Це поле є незмінним після створення. Наразі підтримуються такі типи адрес:

    • IPv4: Представляє адресу IPv4.
    • IPv6: Представляє адресу IPv6.
    • FQDN: Представляє повне доменне імʼя (Fully Qualified Domain Name).
  • endpoints ([]Endpoint), обовʼязково

    Atomic: буде замінено під час злиття

    endpoints — список унікальних точок доступу у цьому зрізі. Кожен зріз може містити максимум 1000 точок доступу.

    Точка доступу являє собою окремий логічний “бекенд", що реалізує сервіс.

    • endpoints.addresses ([]string), обовʼязково

      Set: унікальні значення будуть збережені під час злиття

      адреси цієї точки доступу. Вміст цього поля інтерпретується згідно з відповідним полем EndpointSlice addressType. Споживачі повинні обробляти різні типи адрес у контексті власних можливостей. Це поле має містити принаймні одну адресу, але не більше 100. Вважається, що всі вони є взаємозамінними, і клієнти можуть використовувати лише перший елемент. Зверніться до: https://issue.k8s.io/106267

    • endpoints.conditions (EndpointConditions)

      conditions містить інформацію про поточний стан точки доступу.

      EndpointConditions представляє поточний стано точки доступу.

      • endpoints.conditions.ready (boolean)

        ready вказує на те, що ця точка доступу готова приймати трафік, відповідно до системи, яка керує цією точкою доступу. Нульове значення вказує на невідомий стан. У більшості випадків споживачі повинні інтерпретувати цей невідомий стан як готовий. З міркувань сумісності значення ready ніколи не повинно бути "true" для точок доступу, що завершують роботу, за винятком випадків, коли звичайна поведінка готовності явно перевизначена, наприклад, коли пов'язана служба встановила прапорець publishNotReadyAddresses.

      • endpoints.conditions.serving (boolean)

        serving ідентичний ready, за винятком того, що він встановлюється незалежно від завершального стану точок доступу. Ця умова має бути встановлена в true для точки доступу що має стан ready, яка завершує роботу. Якщо вона дорівнює нулю, споживачі повинні відкладати обслуговування до стану готовності.

      • endpoints.conditions.terminating (boolean)

        terminating вказує на те, що ця точка доступу завершує роботу. Нульове значення вказує на невідомий стан. Споживачі повинні інтерпретувати цей невідомий стан як те, що точка доступу не завершує роботу.

    • endpoints.deprecatedTopology (map[string]string)

      deprecatedTopology містить інформацію про топологію, яка є частиною v1beta1 API. Це поле є застарілим і буде вилучено, коли буде вилучено API v1beta1 (не раніше kubernetes v1.24). Хоча це поле може містити значення, воно не може бути записане через v1 API, і будь-які спроби запису до нього будуть проігноровані. Замість цього інформацію про топологію можна знайти у полях zone та nodeName.

    • endpoints.hints (EndpointHints)

      hints містить інформацію, повʼязану з тим, як слід використовувати точку доступу.

      EndpointHints надає підказки, що описують, як слід використовувати точку доступу.

      • endpoints.hints.forZones ([]ForZone)

        Atomic: буде замінено під час злиття

        forZones вказує на зону(и), до якої(их) повинна потрапити ця точка доступу, щоб увімкнути топологічно орієнтовану маршрутизацію.

        ForZone надає інформацію про те, які зони повинні використовувати цю точку доступу.

        • endpoints.hints.forZones.name (string), обовʼязково

          name — назва зони.

    • endpoints.hostname (string)

      ім'я хосту цієї точки доступу. Це поле може використовуватися споживачами точок доступу, щоб відрізняти їх одна від одної (наприклад, в іменах DNS). Кілька точок доступу, які використовують одне й те саме ім'я хосту, слід вважати взаємозамінними (наприклад, кілька значень A в DNS). Повинні бути малими літерами і проходити перевірку DNS-мітки (RFC 1123).

    • endpoints.nodeName (string)

      nodeName — імʼя вузла, на якому розміщено цю точку доступу. Це може бути використано для визначення локальних для вузла точок доступу.

    • endpoints.targetRef (ObjectReference)

      targetRef — посилання на обʼєкт Kubernetes, який представляє цю точку доступу.

    • endpoints.zone (string)

      зона — назва зони, в якій існує ця точка доступу.

  • ports ([]EndpointPort)

    Atomic: буде замінено під час злиття

    ports визначає список мережевих портів, доступних для кожної точки доступу у цьому зрізі. Кожен порт повинен мати унікальну назву. Якщо параметр ports порожній, це означає, що немає визначених портів. Якщо порт визначено зі значенням nil port, це означає "all ports" (всі порти). Кожен зріз може містити максимум 100 портів.

    EndpointPort представляє Port, який використовується EndpointSlice

    • ports.port (int32)

      порт — це номер порту точки доступу. Якщо його не вказано, порти не обмежуються і повинні інтерпретуватися в контексті конкретного споживача.

    • ports.protocol (string)

      протокол представляє IP-протокол для цього порту. Має бути UDP, TCP або SCTP. Стандартно використовується TCP.

    • ports.name (string)

      name - імʼя цього порту. Усі порти у фрагменті EndpointSlice повинні мати унікальне імʼя. Якщо EndpointSlice є похідним від сервісу Kubernetes, це імʼя відповідає Service.ports[].name. Імʼя має бути або порожнім рядком, або пройти перевірку DNS_LABEL:

      • повинно мати довжину не більше 63 символів.
      • має складатися з малих літер та цифр або символу '-'.
      • повинно починатися і закінчуватися буквено-цифровим символом. Стандартно - порожній рядок.
    • ports.appProtocol (string)

      Протокол застосунку для цього порту. Це використовується як підказка для реалізацій, щоб запропонувати багатший функціонал для протоколів, які вони розуміють. Це поле дотримується стандартного синтаксису міток Kubernetes. Допустимі значення:

EndpointSliceList

EndpointSliceList представляє список зрізів точок доступу


  • apiVersion: discovery.k8s.io/v1

  • kind: EndpointSliceList

  • metadata (ListMeta)

    Стандартні метадані списку.

  • items ([]EndpointSlice), обовʼязково

    items — список зрізів точок доступу

Операції


get отримати вказанний EndpointSlice

HTTP запит

GET /apis/discovery.k8s.io/v1/namespaces/{namespace}/endpointslices/{name}

Параметри

  • name (в шляху): string, обовʼязково

    імʼя EndpointSlice

  • namespace (в шляху): string, обовʼязково

    namespace

  • pretty (в запиті): string

    pretty

Відповідь

200 (EndpointSlice): OK

401: Unauthorized

list перелік або перегляд обʼєктів EndpointSlice

HTTP запит

GET /apis/discovery.k8s.io/v1/namespaces/{namespace}/endpointslices

Параметри

Відповідь

200 (EndpointSliceList): OK

401: Unauthorized

list перелік або перегляд обʼєктів EndpointSlice

HTTP запит

GET /apis/discovery.k8s.io/v1/endpointslices

Параметри

Відповідь

200 (EndpointSliceList): OK

401: Unauthorized

create створення EndpointSlice

HTTP запит

POST /apis/discovery.k8s.io/v1/namespaces/{namespace}/endpointslices

Параметри

Відповідь

200 (EndpointSlice): OK

201 (EndpointSlice): Created

202 (EndpointSlice): Accepted

401: Unauthorized

update заміна вказаного EndpointSlice

HTTP запит

PUT /apis/discovery.k8s.io/v1/namespaces/{namespace}/endpointslices/{name}

Параметри

  • name (в шляху): string, обовʼязково

    імʼя EndpointSlice

  • namespace (в шляху): string, обовʼязково

    namespace

  • body: EndpointSlice, обовʼязково

  • dryRun (в запиті): string

    dryRun

  • fieldManager (в запиті): string

    fieldManager

  • fieldValidation (в запиті): string

    fieldValidation

  • pretty (в запиті): string

    pretty

Відповідь

200 (EndpointSlice): OK

201 (EndpointSlice): Created

401: Unauthorized

patch часткове оновлення вказаного EndpointSlice

HTTP запит

PATCH /apis/discovery.k8s.io/v1/namespaces/{namespace}/endpointslices/{name}

Параметри

  • name (в шляху): string, обовʼязково

    імʼя EndpointSlice

  • namespace (в шляху): string, обовʼязково

    namespace

  • body: Patch, обовʼязково

  • dryRun (в запиті): string

    dryRun

  • fieldManager (в запиті): string

    fieldManager

  • fieldValidation (в запиті): string

    fieldValidation

  • force (в запиті): boolean

    force

  • pretty (в запиті): string

    pretty

Відповідь

200 (EndpointSlice): OK

201 (EndpointSlice): Created

401: Unauthorized

delete видалення EndpointSlice

HTTP запит

DELETE /apis/discovery.k8s.io/v1/namespaces/{namespace}/endpointslices/{name}

Параметри

  • name (в шляху): string, обовʼязково

    імʼя EndpointSlice

  • namespace (в шляху): string, обовʼязково

    namespace

  • body: DeleteOptions

  • dryRun (в запиті): string

    dryRun

  • gracePeriodSeconds (в запиті): integer

    gracePeriodSeconds

  • pretty (в запиті): string

    pretty

  • propagationPolicy (в запиті): string

    propagationPolicy

Відповідь

200 (Status): OK

202 (Status): Accepted

401: Unauthorized

deletecollection видалення колекції EndpointSlice

HTTP запит

DELETE /apis/discovery.k8s.io/v1/namespaces/{namespace}/endpointslices

Параметри

Відповідь

200 (Status): OK

401: Unauthorized

4 - Ingress

Ingress — це набір правил, які дозволяють вхідним зʼєднанням досягати точок доступу, визначених бекендом.

apiVersion: networking.k8s.io/v1

import "k8s.io/api/networking/v1"

Ingress

Ingress — це набір правил, які дозволяють вхідним зʼєднанням досягати точок доступу, визначених бекендом. Ingress можна налаштувати так, щоб надавати Service зовнішні адреси, балансувати трафік, закінчувати SSL, пропонувати віртуальний хостинг на основі імен тощо.


IngressSpec

IngressSpec описує Ingress, який користувач хоче, щоб існував.


  • defaultBackend (IngressBackend)

    defaultBackend — це бекенд, який повинен обробляти запити, що не відповідають жодному правилу. Якщо правила не вказані, необхідно вказати DefaultBackend. Якщо DefaultBackend не встановлено, обробка запитів, що не відповідають жодному з правил, буде відбуватись на розсуд контролера Ingress.

  • ingressClassName (string)

    ingressClassName — це імʼя ресурсу IngressClass у кластері. Реалізації контролера Ingress використовують це поле для визначення, чи повинні вони обслуговувати цей ресурс Ingress, через транзитивний звʼязок (controller -> IngressClass -> Ingress resource). Хоча анотація kubernetes.io/ingress.class (проста константна назва) ніколи не була формально визначена, вона була широко підтримана контролерами Ingress для створення прямого звʼязку між контролером Ingress і ресурсами Ingress. Новостворені ресурси Ingress повинні надавати перевагу використанню цього поля. Однак, попри те, що анотація офіційно застаріла, з міркувань зворотної сумісності контролери Ingress все ще повинні враховувати цю анотацію, якщо вона присутня.

  • rules ([]IngressRule)

    Atomic: буде замінено під час злиття

    rules — це список правил для хостів, що використовуються для налаштування Ingress. Якщо не вказано або жодне правило не має збігів, весь трафік надсилається на стандартний бекенд.

    IngressRule представляє правила, що зіставляють шляхи для зазначеного хосту з відповідними бекенд-сервісами. Вхідні запити спочатку оцінюються на відповідність хосту, а потім перенаправляються до бекенда, асоційованого з відповідним IngressRuleValue.

    • rules.host (string)

      host — це повне доменне імʼя мережевого хосту, як визначено в RFC 3986. Зверніть увагу на такі відхилення від частини "host" в URI, як визначено в RFC 3986:

      1. IP-адреси не допускаються. Зараз IngressRuleValue може застосовуватися лише до IP-адреси в Spec батьківського Ingress.
      2. Двокрапка (:) як роздільник не використовується, оскільки порти не допускаються. Зараз порт Ingress неявно визначений як :80 для http і :443 для https.

      Обидва ці моменти можуть змінитися в майбутньому. Вхідні запити зіставляються з хостом перед IngressRuleValue. Якщо хост не вказано, Ingress маршрутизує весь трафік на основі зазначеного IngressRuleValue.

      host може бути "точним" (precise), доменним імʼям без завершальної крапки мережевого хосту (наприклад, "foo.bar.com"), або "wildcard" (маска), що є доменним імʼям з префіксом у вигляді одного символу маски (наприклад, "*.foo.com"). Символ маски '*' повинен зʼявлятися сам по собі як перша мітка DNS і відповідає лише одній мітці. Ви не можете мати мітку маски саму по собі (наприклад, Host == "*"). Запити будуть зіставлятися з полем Host наступним чином:

      1. Якщо host є точним, запит відповідає цьому правилу, якщо заголовок http host дорівнює Host.
      2. Якщо host є маскою, то запит відповідає цьому правилу, якщо заголовок http host дорівнює суфіксу (видаляючи першу мітку) правила маски.
    • rules.http (HTTPIngressRuleValue)

      HTTPIngressRuleValue — це список http-селекторів, що вказують на бекенди. У прикладі: http://<host>/<path>?<searchpart> -> backend, де частини url відповідають RFC 3986, цей ресурс буде використовуватися для зіставлення з усім після останнього '/' і перед першим '?' або '#'.

      • rules.http.paths ([]HTTPIngressPath), обовʼязкове

        Atomic: буде замінено під час злиття

        paths — це набір шляхів, що зіставляють запити з бекендами.

        HTTPIngressPath асоціює шлях з бекендом. Вхідні URL-адреси, що відповідають шляху, перенаправляються до бекенду.

        • rules.http.paths.backend (IngressBackend), обовʼязкове

          backend визначає повʼязану точку доступу сервісу, до якого буде перенаправлено трафік.

        • rules.http.paths.pathType (string), обовʼязкове

          pathType визначає інтерпретацію зіставлення шляху. PathType може мати одне з таких значень:

          • Exact: Точно відповідає URL-шляху.
          • Prefix: Збіг базується на префіксі шляху URL, розділеному символом '/'. Збіг перевіряється поелементно за елементами шляху. Елемент шляху — це список міток у шляху, розділених роздільником '/'. Запит вважається відповідністю для шляху p, якщо кожен елемент p є попереднім елементом відповідного елемента в кінцевому шляху запиту. Якщо це не так, то це не збіг (наприклад, /foo/bar має збіг з /foo/bar/baz, але не має з /foo/barbaz).
          • ImplementationSpecific: Інтерпретація зіставлення шляху визначається IngressClass. Реалізації можуть трактувати це як окремий PathType або так само як і типи шляхів Prefix або Exact.

          Реалізації повинні підтримувати всі типи шляхів.

        • rules.http.paths.path (string)

          path зіставляється зі шляхом вхідного запиту. Зараз він може містити символи, не дозволені в традиційній частині "path" URL, як визначено в RFC 3986. Шляхи повинні починатися з '/' і повинні бути присутніми при використанні PathType зі значенням "Exact" або "Prefix".

  • tls ([]IngressTLS)

    Atomic: буде замінено під час злиття

    tls представляє конфігурацію TLS. Зараз Ingress підтримує лише один TLS-порт, 443. Якщо декілька елементів цього списку вказують різні хости, вони будуть мультиплексовані на одному і тому ж порту відповідно до імені хосту, зазначеного через розширення SNI TLS, якщо контролер Ingress, що виконує Ingress, підтримує SNI.

    IngressTLS описує транспортний рівень безпеки, повʼязаний з ingress.

    • tls.hosts ([]string)

      Atomic: буде замінено під час злиття

      hosts — це список хостів, включених у сертифікат TLS. Значення в цьому списку повинні відповідати іменам, використаним у tlsSecret. Типово відповідає стандартним налаштуванням хосту для контролера балансування навантаження, що виконує цей Ingress, якщо залишено незазначеним.

    • tls.secretName (string)

      secretName — це імʼя Secret, який використовується для завершення TLS-трафіку на порту 443. Поле залишено необовʼязковим, щоб дозволити маршрутизацію TLS на основі лише імені хосту SNI. Якщо хост SNI у слухачі конфліктує з полем "Host" у заголовку, використаному IngressRule, хост SNI використовується для завершення, а значення поля "Host" використовується для маршрутизації.

IngressBackend

IngressBackend описує всі точки доступу для вказаного Service і порту.


  • resource (TypedLocalObjectReference)

    resource — є ObjectRef на інший ресурс Kubernetes у просторі імен обʼєкта Ingress. Якщо вказано resource, не можна вказувати service.Name та service.Port. Це взаємозаперечне налаштування з "Service".

  • service (IngressServiceBackend)

    service — посилається на Service як на бекенд. Це взаємозаперечне налаштування з "Resource".

    IngressServiceBackend посилається на Kubernetes Service як на Backend.

    • service.name (string), обовʼязкове

      name — це посилання на сервіс. Сервіс повинен існувати в тому ж просторі імен, що й обʼєкт Ingress.

    • service.port (ServiceBackendPort)

      port вказаного сервіс. Для IngressServiceBackend потрібно вказати імʼя порту або номер порту.

      ServiceBackendPort — це порт сервісу, на який посилаються.

      • service.port.name (string)

        name — це імʼя порту на сервісі. Це взаємозаперечне налаштування з "Number".

      • service.port.number (int32)

        number — це числовий номер порту (наприклад, 80) на сервісі. Це взаємозаперечне налаштування з "Name".

IngressStatus

IngressStatus описує поточний стан Ingress.


  • loadBalancer (IngressLoadBalancerStatus)

    loadBalancer містить поточний статус балансувальника навантаження.

    IngressLoadBalancerStatus представляє статус балансувальника навантаження.

    • loadBalancer.ingress ([]IngressLoadBalancerIngress)

      Atomic: буде замінено під час злиття

      ingress — це список точок входу для балансувальника навантаження.

      IngressLoadBalancerIngress представляє статус точки входу балансувальника навантаження.

      • loadBalancer.ingress.hostname (string)

        hostname встановлюється для точок входу балансувальника навантаження, які базуються на DNS.

      • loadBalancer.ingress.ip (string)

        ip встановлюється для точок входу балансувальника навантаження, які базуються на IP.

      • loadBalancer.ingress.ports ([]IngressPortStatus)

        Atomic: буде замінено під час злиття

        ports надає інформацію про порти, які відкриті цим балансувальником навантаження.

        IngressPortStatus представляє стан помилки порту сервісу.

        • loadBalancer.ingress.ports.port (int32), обовʼязкове

          port — це номер порту точки входу.

        • loadBalancer.ingress.ports.protocol (string), обовʼязкове

          protocol — це протокол порту точки входу. Підтримувані значення: "TCP", "UDP", "SCTP".

        • loadBalancer.ingress.ports.error (string)

          error використовується для запису проблеми з портом сервісу. Формат помилки має відповідати наступним правилам:

          • вбудовані значення помилок повинні бути зазначені в цьому файлі та повинні використовувати CamelCase імена;
          • значення помилок, специфічні для хмарного провайдера, повинні мати імена, які відповідають формату foo.example.com/CamelCase.

IngressList

IngressList — це колекція Ingress.


Операції


get отримати вказаний Ingress

HTTP запит

GET /apis/networking.k8s.io/v1/namespaces/{namespace}/ingresses/{name}

Параметри

  • name (в шляху): string, обовʼязковий

    назва Ingress

  • namespace (в шляху): string, обовʼязковий

    namespace

  • pretty (в запиті): string

    pretty

Відповідь

200 (Ingress): OK

401: Unauthorized

get отримати статус вказаного Ingress

HTTP запит

GET /apis/networking.k8s.io/v1/namespaces/{namespace}/ingresses/{name}/status

Параметри

  • name (в шляху): string, обовʼязковий

    назва Ingress

  • namespace (в шляху): string, обовʼязковий

    namespace

  • pretty (в запиті): string

    pretty

Відповідь

200 (Ingress): OK

401: Unauthorized

list перелік або перегляд обʼєктів типу Ingress

HTTP запит

GET /apis/networking.k8s.io/v1/namespaces/{namespace}/ingresses

Параметри

Відповідь

200 (IngressList): OK

401: Unauthorized

list перелік або перегляд обʼєктів типу Ingress

HTTP запит

GET /apis/networking.k8s.io/v1/ingresses

Параметри

Відповідь

200 (IngressList): OK

401: Unauthorized

create створення Ingress

HTTP запит

POST /apis/networking.k8s.io/v1/namespaces/{namespace}/ingresses

Параметри

  • namespace (в шляху): string, обовʼязковий

    namespace

  • body: Ingress, обовʼязковий

  • dryRun (в запиті): string

    dryRun

  • fieldManager (в запиті): string

    fieldManager

  • fieldValidation (в запиті): string

    fieldValidation

  • pretty (в запиті): string

    pretty

Відповідь

200 (Ingress): OK

201 (Ingress): Created

202 (Ingress): Accepted

401: Unauthorized

update заміна вказаного Ingress

HTTP запит

PUT /apis/networking.k8s.io/v1/namespaces/{namespace}/ingresses/{name}

Параметри

  • name (в шляху): string, обовʼязковий

    назва Ingress

  • namespace (в шляху): string, обовʼязковий

    namespace

  • body: Ingress, обовʼязковий

  • dryRun (в запиті): string

    dryRun

  • fieldManager (в запиті): string

    fieldManager

  • fieldValidation (в запиті): string

    fieldValidation

  • pretty (в запиті): string

    pretty

Відповідь

200 (Ingress): OK

201 (Ingress): Created

401: Unauthorized

update заміна статусу вказаного Ingress

HTTP запит

PUT /apis/networking.k8s.io/v1/namespaces/{namespace}/ingresses/{name}/status

Параметри

  • name (в шляху): string, обовʼязковий

    назва Ingress

  • namespace (в шляху): string, обовʼязковий

    namespace

  • body: Ingress, обовʼязковий

  • dryRun (в запиті): string

    dryRun

  • fieldManager (в запиті): string

    fieldManager

  • fieldValidation (в запиті): string

    fieldValidation

  • pretty (в запиті): string

    pretty

Відповідь

200 (Ingress): OK

201 (Ingress): Created

401: Unauthorized

patch часткове оновлення вказаного Ingress

HTTP запит

PATCH /apis/networking.k8s.io/v1/namespaces/{namespace}/ingresses/{name}

Параметри

  • name (в шляху): string, обовʼязковий

    назва Ingress

  • namespace (в шляху): string, обовʼязковий

    namespace

  • body: Ingress, обовʼязковий

  • dryRun (в запиті): string

    dryRun

  • fieldManager (в запиті): string

    fieldManager

  • fieldValidation (в запиті): string

    fieldValidation

  • force (в запиті): boolean

    force

  • pretty (в запиті): string

    pretty

Відповідь

200 (Ingress): OK

201 (Ingress): Created

401: Unauthorized

patch часткове оновлення статусу вказаного Ingress

HTTP запит

PATCH /apis/networking.k8s.io/v1/namespaces/{namespace}/ingresses/{name}/status

Параметри

  • name (в шляху): string, обовʼязковий

    назва Ingress

  • namespace (в шляху): string, обовʼязковий

    namespace

  • body: Ingress, обовʼязковий

  • dryRun (в запиті): string

    dryRun

  • fieldManager (в запиті): string

    fieldManager

  • fieldValidation (в запиті): string

    fieldValidation

  • force (в запиті): boolean

    force

  • pretty (в запиті): string

    pretty

Відповідь

200 (Ingress): OK

201 (Ingress): Created

401: Unauthorized

delete видалення Ingress

HTTP запит

DELETE /apis/networking.k8s.io/v1/namespaces/{namespace}/ingresses/{name}

Параметри

  • name (в шляху): string, обовʼязковий

    назва Ingress

  • namespace (в шляху): string, обовʼязковий

    namespace

  • body: Ingress, обовʼязковий

  • dryRun (в запиті): string

    dryRun

  • gracePeriodSeconds (в запиті): integer

    gracePeriodSeconds

  • pretty (в запиті): string

    pretty

  • propagationPolicy (в запиті): string

    propagationPolicy

Відповідь

200 (Status): OK

202 (Status): Accepted

401: Unauthorized

deletecollection видалення колекції Ingress

HTTP запит

DELETE /apis/networking.k8s.io/v1/namespaces/{namespace}/ingresses

Параметри

Відповідь

200 (Status): OK

401: Unauthorized

5 - IngressClass

IngressClass представляє клас Ingress, на який посилається Ingress Spec.

apiVersion: networking.k8s.io/v1

import "k8s.io/api/networking/v1"

IngressClass

IngressClass представляє клас Ingress, на який посилається Ingress Spec. Анотацію ingressclass.kubernetes.io/is-default-class можна використовувати, щоб вказати, що IngressClass слід вважати стандартним класом. Коли для одного ресурсу IngressClass ця анотація має значення true, новим ресурсам Ingress без вказаного класу буде присвоєно цей клас.


IngressClassSpec

IngressClassSpec надає інформацію про клас Ingress.


  • controller (string)

    controller вказує на імʼя контролера, який має обробляти цей клас. Це дозволяє використовувати різні "різновиди", керовані тим самим контролером. Наприклад, для одного імплементованого контролера можуть існувати різні параметри. Це повинно бути вказане як шлях з префіксом домену, не довше ніж 250 символів, наприклад, "acme.io/ingress-controller". Це поле є незмінним.

  • parameters (IngressClassParametersReference)

    parameters це посилання на спеціалізований ресурс, що містить додаткову конфігурацію для контролера. Це необовʼязково, якщо контролер не вимагає додаткових параметрів.

    IngressClassParametersReference ідентифікує обʼєкт API. Це може бути використано для вказівки на обʼєкт, що належить кластеру або області простору імен.

    • parameters.kind (string), обовʼязково

      kind це тип ресурсу, на який вказується посилання.

    • parameters.name (string), обовʼязково

      name це імʼя ресурсу, на який вказується посилання.

    • parameters.apiGroup (string)

      apiGroup це група для ресурсу, на який вказується посилання. Якщо apiGroup не вказано, вказаний Kind повинен бути в основній групі API. Для будь-яких інших типів сторонніх ресурсів apiGroup є обовʼязковим.

    • parameters.namespace (string)

      namespace це простір імен для ресурсу, на який вказується посилання. Це поле обовʼязкове, коли scope встановлено на "Namespace", і його не слід встановлювати, коли scope встановлено у "Cluster".

    • parameters.scope (string)

      scope вказує на те, чи відноситься ресурс до кластера або простору імен. Цей параметр може мати значення "Cluster" (типово) або "Namespace".

IngressClassSpec

IngressClassSpec надає інформацію про клас Ingress.


  • controller (string)

    controller вказує на імʼя контролера, який повинен обробляти цей клас. Це дозволяє використовувати різні "різновиди", які контролюються тим самим контролером. Наприклад, у вас можуть бути різні параметри для одного й того ж імплементаційного контролера. Це повинно бути вказано як шлях з префіксом домену довжиною не більше 250 символів, наприклад, "acme.io/ingress-controller". Це поле є незмінним.

  • parameters (IngressClassParametersReference)

    parameters це посилання на власний ресурс, що містить додаткову конфігурацію для контролера. Це необовʼязково, якщо контролер не потребує додаткових параметрів.

    IngressClassParametersReference ідентифікує обʼєкт API. Це може бути використано для {#list-list-or-watch-objects-of-kind-ingressclass}вказівки на ресурс, обмежений кластером або простором імен. {#http-request-1}

    • parameters.kind (string), обовʼязково

      kind це тип ресурсу, на який вказується посилання. {#parameters-1}

    • parameters.name (string), обовʼязково

      name це імʼя ресурсу, на який вказується посилання.

    • parameters.apiGroup (string)

      apiGroup це група для ресурсу, на який вказується посилання. Якщо apiGroup не вказано, вказаний Kind повинен належати до основної групи API. Для будь-яких інших типів сторонніх ресурсів apiGroup є обовʼязковим.

    • parameters.namespace (string)

      namespace це простір імен для ресурсу, на який вказується посилання. Це поле є обовʼязковим, коли scope встановлено на "Namespace", і його не слід встановлювати, коли scope встановлено на "Cluster".

    • parameters.scope (string)

      scope вказує, чи це посилання на ресурс, обмежений кластером або простором імен. Це може бути встановлено на "Cluster" (стандартно) або "Namespace".

IngressClassList

IngressClassList є колекцією IngressClasses.


  • apiVersion: networking.k8s.io/v1

  • kind: IngressClassList

  • metadata (ListMeta)

    Стандартні метадані списку.

  • items ([]IngressClass), обовʼязково

    items це список IngressClasses.

Операції


get отримати вказаний IngressClass

HTTP запит

GET /apis/networking.k8s.io/v1/ingressclasses/{name}

Параметри

  • name (в шляху): string, обовʼязково

    імʼя IngressClass

  • pretty (в запиті): string

    pretty

Відповідь

200 (IngressClass): ОК

401: Unauthorized

list перелік або перегляд обʼєктів типу IngressClass

HTTP запит

GET /apis/networking.k8s.io/v1/ingressclasses

Параметри

Відповідь

200 (IngressClassList): ОК

401: Unauthorized

create створення IngressClass

HTTP запит

POST /apis/networking.k8s.io/v1/ingressclasses

Параметри

Відповідь

200 (IngressClass): ОК

201 (IngressClass): Created

202 (IngressClass): Accepted

401: Unauthorized

update заміна вказаного IngressClass

HTTP запит

PUT /apis/networking.k8s.io/v1/ingressclasses/{name}

Параметри

  • name (в шляху): string, обовʼязково

    імʼя IngressClass

  • body: IngressClass, обовʼязково

  • dryRun (в запиті): string

    dryRun

  • fieldManager (в запиті): string

    fieldManager

  • fieldValidation (в запиті): string

    fieldValidation

  • pretty (в запиті): string

    pretty

Відповідь

200 (IngressClass): ОК

201 (IngressClass): Created

401: Unauthorized

patch часткове оновлення вказаного IngressClass

HTTP запит

PATCH /apis/networking.k8s.io/v1/ingressclasses/{name}

Параметри

  • name (в шляху): string, обовʼязково

    імʼя IngressClass

  • body: Patch, обовʼязково

  • dryRun (в запиті): string

    dryRun

  • fieldManager (в запиті): string

    fieldManager

  • fieldValidation (в запиті): string

    fieldValidation

  • force (в запиті): boolean

    force

  • pretty (в запиті): string

    pretty

Відповідь

200 (IngressClass): ОК

201 (IngressClass): Created

401: Unauthorized

delete видалення IngressClass

HTTP запит

DELETE /apis/networking.k8s.io/v1/ingressclasses/{name}

Параметри

Відповідь

200 (Status): ОК

202 (Status): Accepted

401: Unauthorized

deletecollection видалення колекції IngressClass

HTTP запит

DELETE /apis/networking.k8s.io/v1/ingressclasses

Параметри

Відповідь

200 (Status): ОК

401: Unauthorized