Ingress
apiVersion: networking.k8s.io/v1
import "k8s.io/api/networking/v1"
Ingress
Ingress — це набір правил, які дозволяють вхідним зʼєднанням досягати точок доступу, визначених бекендом. Ingress можна налаштувати так, щоб надавати Service зовнішні адреси, балансувати трафік, закінчувати SSL, пропонувати віртуальний хостинг на основі імен тощо.
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata (ObjectMeta)
Стандартні метадані обʼєкта. Більше інформації: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
spec (IngressSpec)
spec — це бажаний стан Ingress. Більше інформації: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
status (IngressStatus)
status — це поточний стан Ingress. Більше інформації: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
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:
- IP-адреси не допускаються. Зараз IngressRuleValue може застосовуватися лише до IP-адреси в Spec батьківського Ingress.
- Двокрапка (:) як роздільник не використовується, оскільки порти не допускаються. Зараз порт Ingress неявно визначений як :80 для http і :443 для https.
Обидва ці моменти можуть змінитися в майбутньому. Вхідні запити зіставляються з хостом перед IngressRuleValue. Якщо хост не вказано, Ingress маршрутизує весь трафік на основі зазначеного IngressRuleValue.
host може бути "точним" (precise), доменним імʼям без завершальної крапки мережевого хосту (наприклад, "foo.bar.com"), або "wildcard" (маска), що є доменним імʼям з префіксом у вигляді одного символу маски (наприклад, "*.foo.com"). Символ маски '*' повинен зʼявлятися сам по собі як перша мітка DNS і відповідає лише одній мітці. Ви не можете мати мітку маски саму по собі (наприклад, Host == "*"). Запити будуть зіставлятися з полем Host наступним чином:
- Якщо host є точним, запит відповідає цьому правилу, якщо заголовок http host дорівнює Host.
- Якщо 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.
items ([]Ingress), обовʼязкове
items — це список Ingress.
apiVersion (string)
APIVersion визначає версійну схему цього представлення обʼєкта. Сервери повинні конвертувати розпізнані схеми до останнього внутрішнього значення і можуть відхилити нерозпізнані значення. Більше інформації: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
kind (string)
Kind — це рядкове значення, що представляє REST-ресурс, який представляє цей обʼєкт. Сервери можуть визначити це з точки доступу, до якої клієнт подає запити. Не можна оновлювати. У CamelCase. Більше інформації: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
metadata (ListMeta)
Стандартні метадані обʼєкта. Більше інформації: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
Операції
get
отримати вказаний Ingress
HTTP запит
GET /apis/networking.k8s.io/v1/namespaces/{namespace}/ingresses/{name}
Параметри
name (в шляху): string, обовʼязковий
назва Ingress
namespace (в шляху): string, обовʼязковий
pretty (в запиті): string
Відповідь
200 (Ingress): OK
401: Unauthorized
get
отримати статус вказаного Ingress
HTTP запит
GET /apis/networking.k8s.io/v1/namespaces/{namespace}/ingresses/{name}/status
Параметри
name (в шляху): string, обовʼязковий
назва Ingress
namespace (в шляху): string, обовʼязковий
pretty (в запиті): string
Відповідь
200 (Ingress): OK
401: Unauthorized
list
перелік або перегляд обʼєктів типу Ingress
HTTP запит
GET /apis/networking.k8s.io/v1/namespaces/{namespace}/ingresses
Параметри
namespace (в шляху): string, обовʼязковий
allowWatchBookmarks (в запиті): boolean
continue (в запиті): string
fieldSelector (в запиті): string
labelSelector (в запиті): string
limit (в запиті): integer
pretty (в запиті): string
resourceVersion (в запиті): string
resourceVersionMatch (в запиті): string
sendInitialEvents (в запиті): boolean
timeoutSeconds (в запиті): integer
watch (в запиті): boolean
Відповідь
200 (IngressList): OK
401: Unauthorized
list
перелік або перегляд обʼєктів типу Ingress
HTTP запит
GET /apis/networking.k8s.io/v1/ingresses
Параметри
allowWatchBookmarks (в запиті): boolean
continue (в запиті): string
fieldSelector (в запиті): string
labelSelector (в запиті): string
limit (в запиті): integer
pretty (в запиті): string
resourceVersion (в запиті): string
resourceVersionMatch (в запиті): string
sendInitialEvents (в запиті): boolean
timeoutSeconds (в запиті): integer
watch (в запиті): boolean
Відповідь
200 (IngressList): OK
401: Unauthorized
create
створення Ingress
HTTP запит
POST /apis/networking.k8s.io/v1/namespaces/{namespace}/ingresses
Параметри
namespace (в шляху): string, обовʼязковий
body: Ingress, обовʼязковий
dryRun (в запиті): string
fieldManager (в запиті): string
fieldValidation (в запиті): string
pretty (в запиті): string
Відповідь
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, обовʼязковий
body: Ingress, обовʼязковий
dryRun (в запиті): string
fieldManager (в запиті): string
fieldValidation (в запиті): string
pretty (в запиті): string
Відповідь
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, обовʼязковий
body: Ingress, обовʼязковий
dryRun (в запиті): string
fieldManager (в запиті): string
fieldValidation (в запиті): string
pretty (в запиті): string
Відповідь
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, обовʼязковий
body: Ingress, обовʼязковий
dryRun (в запиті): string
fieldManager (в запиті): string
fieldValidation (в запиті): string
force (в запиті): boolean
pretty (в запиті): string
Відповідь
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, обовʼязковий
body: Ingress, обовʼязковий
dryRun (в запиті): string
fieldManager (в запиті): string
fieldValidation (в запиті): string
force (в запиті): boolean
pretty (в запиті): string
Відповідь
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, обовʼязковий
body: Ingress, обовʼязковий
dryRun (в запиті): string
gracePeriodSeconds (в запиті): integer
pretty (в запиті): string
propagationPolicy (в запиті): string
Відповідь
200 (Status): OK
202 (Status): Accepted
401: Unauthorized
deletecollection
видалення колекції Ingress
HTTP запит
DELETE /apis/networking.k8s.io/v1/namespaces/{namespace}/ingresses
Параметри
namespace (в шляху): string, обовʼязковий
body: Ingress, обовʼязковий
continue (в запиті): string
dryRun (в запиті): string
fieldSelector (в запиті): string
gracePeriodSeconds (в запиті): integer
labelSelector (в запиті): string
limit (в запиті): integer
pretty (в запиті): string
propagationPolicy (в запиті): string
resourceVersion (в запиті): string
resourceVersionMatch (в запиті): string
sendInitialEvents (в запиті): boolean
timeoutSeconds (в запиті): integer
Відповідь
200 (Status): OK
401: Unauthorized