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

Змінено September 06, 2024 at 4:29 PM PST: upstream sync (b8cab2cff8)