Ingress
Документация по концепции Ingress
-
Сделайте сетевой сервис HTTP (или HTTPS) доступным с помощью механизма конфигурации, учитывающего протокол и понимающего такие веб-понятия, как URI, имена хостов, пути и многое другое. Концепция Ingress позволяет направлять трафик к различным бэкендам на основе правил, заданных через API Kubernetes.
apiVersion: networking.k8s.io/v1
import "k8s.io/api/networking/v1"
Ingress
Ingress — это набор правил, позволяющих входящим подключениям достигать конечных точек, определённых бэкендом. Ingress можно настроить для предоставления сервисам URL-адресов, доступных извне, балансировки трафика, завершения SSL-соединений, организации виртуального хостинга на основе имён и т. д.
| Поле | Описание |
|---|---|
apiVersionstring |
APIVersion определяет версионированную схему этого представления объекта. Серверы должны преобразовывать распознанные схемы в последнее внутреннее представление и могут отклонять нераспознанные значения. Подробнее: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources |
kindstring |
Kind — строковое значение, представляющее ресурс REST, который описывает этот объект. Серверы могут определять его по конечной точке, на которую клиент отправляет запросы. Не может быть обновлено. В формате CamelCase. Подробнее: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds |
metadataObjectMeta |
Стандартные метаданные объекта. Подробнее: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata |
specIngressSpec |
spec — желаемое состояние Ingress. Подробнее: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status |
statusIngressStatus |
status — текущее состояние Ingress. Подробнее: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status |
IngressSpec
IngressSpec описывает Ingress, который пользователь хочет создать.
| Поле | Описание |
|---|---|
defaultBackendIngressBackend |
defaultBackend — бэкенд, который должен обрабатывать запросы, не соответствующие ни одному правилу. Если Rules не указаны, необходимо указать DefaultBackend. Если DefaultBackend не задан, обработка запросов, не соответствующих ни одному из правил, зависит от контроллера Ingress. |
ingressClassNamestring |
ingressClassName — имя кластерного ресурса IngressClass. Реализации контроллеров Ingress используют это поле, чтобы определить, должны ли они обслуживать данный ресурс Ingress, используя цепочку связей (controller -> IngressClass -> ресурс Ingress). Хотя аннотация `kubernetes.io/ingress.class` (простое постоянное имя) никогда официально не определялась, контроллеры Ingress широко поддерживали её для создания прямой привязки между контроллером Ingress и ресурсами Ingress. В новых ресурсах Ingress следует предпочитать это поле. Однако, несмотря на официальное признание аннотации устаревшей, для обеспечения обратной совместимости контроллеры Ingress должны по-прежнему учитывать её, если она задана. |
rulesIngressRule array |
rules — список правил для хостов, используемых при настройке Ingress. Если правила не указаны или ни одно из них не соответствует запросу, весь трафик направляется в бэкенд по умолчанию. |
tlsIngressTLS array |
tls представляет конфигурацию TLS. В настоящее время Ingress поддерживает только один порт TLS — 443. Если несколько элементов этого списка указывают разные хосты, они будут мультиплексироваться через один и тот же порт в соответствии с именем хоста, указанным в расширении TLS SNI, если контроллер Ingress, обслуживающий Ingress, поддерживает SNI. |
IngressStatus
IngressStatus описывает текущее состояние Ingress.
| Поле | Описание |
|---|---|
loadBalancerIngressLoadBalancerStatus |
loadBalancer содержит текущее состояние балансировщика нагрузки. |
IngressList
IngressList — это коллекция объектов Ingress.
| Поле | Описание |
|---|---|
apiVersionstring |
APIVersion определяет версионированную схему этого представления объекта. Серверы должны преобразовывать распознанные схемы в последнее внутреннее представление и могут отклонять нераспознанные значения. Подробнее: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources |
items *Ingress array |
items — список объектов Ingress. |
kindstring |
Kind — строковое значение, представляющее ресурс REST, который описывает этот объект. Серверы могут определять его по конечной точке, на которую клиент отправляет запросы. Не может быть обновлено. В формате CamelCase. Подробнее: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds |
metadataListMeta |
Стандартные метаданные объекта. Подробнее: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata |
HTTPIngressPath
HTTPIngressPath связывает путь с бэкендом. Входящие URL-адреса, соответствующие этому пути, перенаправляются в бэкенд.
| Поле | Описание |
|---|---|
backend *IngressBackend |
backend определяет конечную точку сервиса, на которую будет перенаправляться трафик. |
pathstring |
path сопоставляется с путём входящего запроса. В настоящее время он может содержать символы, недопустимые в обычной части «пути» URL, определённой RFC 3986. Пути должны начинаться с «/» и быть указаны при использовании PathType со значением «Exact» или «Prefix». |
pathType *string |
pathType определяет способ сопоставления путей. PathType может принимать одно из следующих значений: * Exact: точное совпадение с путём URL. * Prefix: совпадение по префиксу пути URL, разделённому символом «/». Сопоставление выполняется поэлементно. Элемент пути — это одна из меток в пути, разделённом символом «/». Запрос соответствует пути p, если каждый элемент пути p является префиксом соответствующего элемента пути запроса. Обратите внимание: если последний элемент пути является подстрокой последнего элемента пути запроса, совпадения нет (например, /foo/bar соответствует /foo/bar/baz, но не соответствует /foo/barbaz). * ImplementationSpecific: способ сопоставления путей определяется IngressClass. Реализации могут рассматривать это значение как отдельный PathType или обрабатывать его так же, как типы путей Prefix или Exact. Реализации должны поддерживать все типы путей. Возможные значения перечисления: - `"Exact"` — точное совпадение с путём URL с учётом регистра. - `"ImplementationSpecific"` — сопоставление определяется IngressClass. Реализации могут рассматривать это значение как отдельный PathType или обрабатывать его так же, как типы путей Prefix или Exact. - `"Prefix"` — совпадение по префиксу пути URL, разделённому символом «/». Сопоставление выполняется с учётом регистра и поэлементно. Элемент пути — это одна из меток в пути, разделённом символом «/». Запрос соответствует пути p, если каждый элемент пути p является префиксом соответствующего элемента пути запроса. Обратите внимание: если последний элемент пути является подстрокой последнего элемента пути запроса, совпадения нет (например, /foo/bar соответствует /foo/bar/baz, но не соответствует /foo/barbaz). Если в спецификации Ingress существует несколько совпадающих путей, приоритет имеет самый длинный совпадающий путь. Примеры: - /foo/bar не соответствует запросам к /foo/barbaz - /foo/bar соответствует запросам к /foo/bar и /foo/bar/baz - /foo и /foo/ соответствуют запросам к /foo и /foo/. Если в спецификации Ingress указаны оба пути, приоритет имеет самый длинный совпадающий путь (/foo/). |
HTTPIngressRuleValue
HTTPIngressRuleValue — это список селекторов HTTP, указывающих на бэкенды. В примере: http://<host>/<path>?<searchpart> -> backend, где части URL соответствуют RFC 3986, этот ресурс будет использоваться для сопоставления всего, что находится после последнего «/» и перед первым «?» или «#».
| Поле | Описание |
|---|---|
paths *HTTPIngressPath array |
paths — набор путей, направляющих запросы к бэкендам. |
IngressBackend
IngressBackend описывает все конечные точки для заданного сервиса и порта.
| Поле | Описание |
|---|---|
resourceTypedLocalObjectReference |
resource — это ObjectRef, указывающий на другой ресурс Kubernetes в пространстве имён объекта Ingress. Если указан resource, указывать service.Name и service.Port нельзя. Это взаимоисключающая настройка по отношению к «Service». |
serviceIngressServiceBackend |
service ссылается на сервис, используемый в качестве бэкенда. Это взаимоисключающая настройка по отношению к «Resource». |
IngressLoadBalancerIngress
IngressLoadBalancerIngress представляет состояние точки входа балансировщика нагрузки.
| Поле | Описание |
|---|---|
hostnamestring |
hostname задаётся для точек входа балансировщика нагрузки, использующих DNS. |
ipstring |
ip задаётся для точек входа балансировщика нагрузки, использующих IP-адреса. |
portsIngressPortStatus array |
ports содержит сведения о портах, открытых этим LoadBalancer. |
IngressLoadBalancerStatus
IngressLoadBalancerStatus представляет состояние балансировщика нагрузки.
| Поле | Описание |
|---|---|
ingressIngressLoadBalancerIngress array |
ingress — список точек входа балансировщика нагрузки. |
IngressPortStatus
IngressPortStatus представляет состояние ошибки порта сервиса
| Поле | Описание |
|---|---|
errorstring |
error используется для записи проблемы с портом сервиса. Формат ошибки должен соответствовать следующим правилам: - встроенные значения ошибок должны быть указаны в этом файле и иметь имена в формате CamelCase; - значения ошибок, специфичные для поставщика облачных услуг, должны иметь имена в формате foo.example.com/CamelCase. |
port *integer |
port — номер порта точки входа. |
protocol *string |
protocol — протокол порта точки входа. Поддерживаются следующие значения: «TCP», «UDP», «SCTP» Возможные значения перечисления: - `"SCTP"` — протокол SCTP. - `"TCP"` — протокол TCP. - `"UDP"` — протокол UDP. |
IngressRule
IngressRule представляет правила, сопоставляющие пути для указанного хоста с соответствующими сервисами-бэкендами. Входящие запросы сначала проверяются на соответствие хосту, затем направляются в бэкенд, связанный с соответствующим IngressRuleValue.
| Поле | Описание |
|---|---|
hoststring |
host — полное доменное имя сетевого хоста, определённое RFC 3986. Обратите внимание на следующие отличия от части «host» URI, определённой RFC 3986: 1. IP-адреса не допускаются. В настоящее время IngressRuleValue может применяться только к IP-адресу, указанному в Spec родительского Ingress. 2. Разделитель «:» не учитывается, поскольку порты не допускаются. В настоящее время порт Ingress неявно равен :80 для http и :443 для https. В будущем оба значения могут измениться. Входящие запросы проверяются на соответствие хосту перед IngressRuleValue. Если хост не указан, Ingress направляет весь трафик на основе заданного IngressRuleValue. host может быть «точным» — доменным именем без завершающей точки сетевого хоста (например, «foo.bar.com») — или «шаблонным», то есть доменным именем с одной меткой-шаблоном в начале (например, «*.foo.com»). Символ подстановки '\*' должен находиться отдельно в первой DNS-метке и соответствует только одной метке. Нельзя указывать метку-шаблон отдельно (например, Host == "*"). Запросы сопоставляются с полем Host следующим образом: 1. Если host точный, запрос соответствует этому правилу, если заголовок http host совпадает с Host. 2. Если host является шаблонным, запрос соответствует этому правилу, если заголовок http host равен суффиксу шаблонного правила (без первой метки). |
httpHTTPIngressRuleValue |
IngressServiceBackend
IngressServiceBackend ссылается на сервис Kubernetes в качестве бэкенда.
| Поле | Описание |
|---|---|
name *string |
name — имя указанного сервиса. Сервис должен существовать в том же пространстве имён, что и объект Ingress. |
portServiceBackendPort |
port — порт указанного сервиса. Для IngressServiceBackend необходимо указать имя или номер порта. |
IngressTLS
IngressTLS описывает безопасность транспортного уровня, связанную с Ingress.
| Поле | Описание |
|---|---|
hostsstring array |
hosts — список хостов, включённых в сертификат TLS. Значения в этом списке должны совпадать с именами, используемыми в tlsSecret. Если значение не указано, по умолчанию используется настройка шаблонного хоста контроллера балансировщика нагрузки, обслуживающего этот Ingress. |
secretNamestring |
secretName — имя секрета, используемого для завершения TLS-трафика на порту 443. Это поле необязательно, чтобы разрешить маршрутизацию TLS только на основе имени хоста SNI. Если хост SNI в прослушивателе конфликтует с полем заголовка «Host», используемым IngressRule, для завершения соединения используется хост SNI, а значение заголовка «Host» — для маршрутизации. |
ServiceBackendPort
ServiceBackendPort — это используемый порт сервиса.
| Поле | Описание |
|---|---|
namestring |
name — имя порта в Service. Эта настройка взаимоисключающая с «Number». |
numberinteger |
number — числовой номер порта (например, 80) в Service. Эта настройка взаимоисключающая с «Name». |
© 2026 The Kubernetes Authors | Documentation Distributed under CC BY 4.0
Copyright © 2026 The Linux Foundation ®. All rights reserved.
https://kubernetes.io/docs/reference/kubernetes-api/networking/ingress-v1/