Skip to main content

Ingress

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

Маршрутизация в смысле L7, не в смысле L3

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

Host-based example Path-based example Backend K8s Service
shield.mcu.com mcu.com/shield shield
hydra.mcu.com mcu.com/hydra hydra

k8s_ingress_1.JPG

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

Ingress классы

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

 

 

Пример

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

 

 

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

Команда Доп. пар. Описание
kubectl get ingressclass   Список классов Ingress
kubectl describe ingressclass class_name   Детализация для класса class_name
kubectl get ingress my-ingress -n my-ns -o yaml   Получить конфигурацию в виде yaml
kubectl get ing   Список ingress
kubectl describe ing mcu-all
Детализация ingress