Використання функцій 7-го рівня

Додавши waypoint-проксі до потоку вашого трафіку, ви можете увімкнути більше функцій Istio. Waypoints налаштовуються за допомогою Kubernetes Gateway API.

Прив’язка маршрутів та політик

Gateway API визначає взаємозв’язок між об’єктами (такими як маршрути та шлюзи) через прив’язку.

  • Обʼєкти маршруту (такі як HTTPRoute) включають спосіб посилання на батьківські ресурси, до яких вони хочуть підʼєднатися.
  • Об’єкти політик вважаються метаресурсами: об’єкти, які розширюють поведінку цільового об’єкта стандартним способом.

У таблицях нижче показано тип прив’язки, який налаштований для кожного обʼєкта.

Маршрутизація трафіку

За наявності розгорнутої waypoint-проксі ви можете використовувати такі типи маршрутів:

НазваСтатус функціїПривʼязка
HTTPRouteБетаparentRefs
TLSRouteАльфаparentRefs
TCPRouteАльфаparentRefs

Перегляньте документацію з керування трафіком, щоб ознайомитись з діапазоном функцій, які можна реалізувати за допомогою цих маршрутів.

Безпека

Без встановленого waypoint ви можете використовувати лише політики безпеки рівня 4. Додавши waypoint, ви отримаєте доступ до наступних політик:

НазваСтатус функціїПривʼязка
AuthorizationPolicy (включаючи функції L7)БетаtargetRefs
RequestAuthenticationБетаtargetRefs

Розгляд політик авторизації

У режимі ambient, політики авторизації можуть бути або націлені (для забезпечення ztunnel), або прикріплені (для забезпечення waypoint). Щоб політика авторизації була прикріплена до waypoint, вона повинна мати targetRef, який посилається на waypoint або на Service, що використовує цей waypoint.

Ztunnel не може забезпечувати політики L7. Якщо політика з правилами, що відповідають атрибутам L7, буде націлена за допомогою селектора робочого навантаження (а не прикріплена за допомогою targetRef), так що вона забезпечується ztunnel, вона стане політикою DENY через збій у безпеці.

Політика, прикріплена до waypoint, застосовується лише до трафіку, який фактично досягає waypoint. Трафік може оминути waypoint та його політики 7-го рівня, коли waypoint не існує або не має адреси, або коли тип трафіку не збігається з типом трафіку, який обробляє waypoint (див. Типи трафіку waypoint). Щоб вимагати, щоб трафік проходив через waypoint, поєднайте політику waypoint з AuthorizationPolicy, яку забезпечує ztunnel і яка дозволяє лише ідентичність waypoint. Див. Вимога проходження трафіку через waypoint.

Дивіться керівництво з політики L4 для отримання додаткової інформації, включаючи коли прикріпляти політики до Service для випадків використання тільки TCP.

Спостережуваність

Повний набір метрик трафіку Istio експортується waypoint-проксі.

Розширення

Оскільки waypoint-проксі є розгортанням Envoy, деякі механізми розширення, доступні для Envoy у режимі sidecar, також доступні для waypoint-проксі.

НазваСтатус функціїПривʼязка
WasmPluginАльфаtargetRefs
TrafficExtensionАльфаtargetRefs

Детальніше про те, як розширити waypoint за допомогою WebAssembly втулків.

Детальніше про те, як розширити waypoint за допомогою скриптів Lua.

Конфігурації розширень вважаються політикою за визначенням Gateway API.

Сфера дії маршрутів або політик

Маршрут або політика можуть бути обмежені для застосування до всього трафіку, що проходить через waypoint-проксі, або лише до конкретних сервісів.

Прикріплення до всього waypoint-проксі

Щоб прикріпити маршрут або політику до всього waypoint — так, щоб він застосовувався до всього трафіку, зареєстрованого для його використання, — встановіть значення Gateway як parentRefs або targetRefs, залежно від типу.

Щоб обмежити політику AuthorizationPolicy для застосування до waypoint з назвою default у просторі імен default:

apiVersion: security.istio.io/v1
kind: AuthorizationPolicy
metadata:
  name: view-only
  namespace: default
spec:
  targetRefs:
  - kind: Gateway
    group: gateway.networking.k8s.io
    name: default
  action: ALLOW
  rules:
  - from:
    - source:
        namespaces: ["default", "istio-system"]
    to:
    - operation:
        methods: ["GET"]

Прикріплення до конкретного сервісу

Ви також можете прикріпити маршрут до одного або кількох конкретних сервісів у межах waypoint. Встановіть значення Service як parentRefs або targetRefs, залежно від ситуації.

Щоб застосувати маршрут reviews HTTPRoute до сервісу reviews у просторі імен default:

apiVersion: gateway.networking.k8s.io/v1
kind: HTTPRoute
metadata:
  name: reviews
  namespace: default
spec:
  parentRefs:
  - group: ""
    kind: Service
    name: reviews
    port: 9080
  rules:
  - backendRefs:
    - name: reviews-v1
      port: 9080
      weight: 90
    - name: reviews-v2
      port: 9080
      weight: 10
Чи була ця інформація корисною?
Чи є у вас пропозиції щодо покращення?

Дякуємо за ваш відгук!