# Ingress

Используется для организации внешнего взаимодействия на L7 уровне. Ingress ресурсы определяют правила маршрутизации, Ingress контроллер выполняет задачу.

<span style="color: rgb(224, 62, 45);">Маршрутизация в смысле L7, не в смысле L3</span>

Могут быть host-based и path-based маршруты:

<table border="1" id="bkmrk-host-based-example-p" style="border-collapse: collapse; width: 100%;"><colgroup><col style="width: 33.3333%;"></col><col style="width: 33.3333%;"></col><col style="width: 33.3333%;"></col></colgroup><thead><tr><td class="align-center">Host-based example</td><td class="align-center">Path-based example</td><td class="align-center">Backend K8s Service</td></tr></thead><tbody><tr><td>shield.mcu.com</td><td>mcu.com/shield</td><td>shield</td></tr><tr><td>hydra.mcu.com</td><td>mcu.com/hydra</td><td>hydra</td></tr></tbody></table>

[![k8s_ingress_1.JPG](http://bobrobotirk.ru/uploads/images/gallery/2025-03/scaled-1680-/k8s-ingress-1.JPG)](http://bobrobotirk.ru/uploads/images/gallery/2025-03/k8s-ingress-1.JPG)

Необходим внешний Ingress-controller, очень часто Nginx.

**Ingress классы**

Позволяют запустить несколько ingress контроллеров в одном кластере. Сначала привязывается Ingress контроллер к классу, затем при создании объект Ingress привязывается к классу.

**Пример**

```yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: mcu-all
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /
spec:
  ingressClassName: nginx
  rules:
  - host: shield.mcu.com
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: svc-shield
            port:
              number: 8080
  - host: mcu.com
    http:
      paths:
      - path: /shield
        pathType: Prefix
        backend:
          service:
            name: svc-shield
            port:
              number: 8080
```

**Основные команды**

<div id="bkmrk-%D0%9A%D0%BE%D0%BC%D0%B0%D0%BD%D0%B4%D0%B0-%D0%94%D0%BE%D0%BF.-%D0%BF%D0%B0%D1%80.-%D0%9E%D0%BF"><table border="1" style="width: 100.357%;"><thead><tr><td class="align-center" style="width: 25.5066%;">Команда</td><td class="align-center" style="width: 19.4381%;">Доп. пар.</td><td class="align-center" style="width: 55.0553%;">Описание</td></tr></thead><tbody><tr><td style="width: 25.5066%;">kubectl get ingressclass</td><td style="width: 19.4381%;"> </td><td style="width: 55.0553%;">Список классов Ingress</td></tr><tr><td style="width: 25.5066%;">kubectl describe ingressclass class\_name</td><td style="width: 19.4381%;"> </td><td style="width: 55.0553%;">Детализация для класса class\_name</td></tr><tr><td style="width: 25.5066%;">kubectl get ingress my-ingress -n my-ns -o yaml</td><td style="width: 19.4381%;"> </td><td style="width: 55.0553%;">Получить конфигурацию в виде yaml</td></tr><tr><td style="width: 25.5066%;">kubectl get ing</td><td style="width: 19.4381%;"> </td><td style="width: 55.0553%;">Список ingress</td></tr><tr><td style="width: 25.5066%;">kubectl describe ing mcu-all</td><td style="width: 19.4381%;">  
</td><td style="width: 55.0553%;">Детализация ingress</td></tr></tbody></table>

</div>