lua envoyFilter игнорируется в istio-sidecar

#envoyproxy #istio-sidecar

#envoyproxy #istio-sidecar

Вопрос:

Я пытаюсь заставить envoyFilter работать в istio-sidecar.

Кажется, что :

  • Происходит внедрение. Поскольку мой фильтр присутствует в ресурсах моего кластера, и istiod загружает мои коляски всякий раз, когда я обновляю фильтр. (И мои модули и мой фильтр находятся в одном пространстве имен)
  • Метка, которую я использую для выбора, присутствует в модуле.

Но мой скрипт полностью игнорируется. Пожалуйста, что я пропустил?

PS: я получил lua из ссылки envoy :

 piVersion: networking.istio.io/v1alpha3
kind: EnvoyFilter
metadata:
  name: authent-filter
  namespace: sma-app-integration
spec:
  workloadSelector:
    labels:
      com.effia.smartaccess/secured: enabled
  configPatches:
  - applyTo: HTTP_FILTER
    match:
      context: SIDECAR_INBOUND
      listener:
        portNumber: 8080
        filterChain:
          filter:
            name: "envoy.http_connection_manager"
            subFilter:
              name: "envoy.router"
    patch:
      operation: INSERT_FIRST
      value:
        name: envoy.filters.http.lua
        typed_config:
          "@type": "type.googleapis.com/envoy.extensions.filters.http.lua.v3.Lua"
          inlineCode: |
              function envoy_on_request(request_handle)
                request_handle:respond({[":status"] = "100"},"nope")
              end
 

Редактировать :
Ну, мы не смогли заставить его работать и переключиться на Nginx. Недавняя функция выполняет свою работу.

Ответ №1:

Я думаю, что вам следует изменить contect на «context: GATEWAY», поскольку он предназначен для входного трафика и должен применяться ко всем шлюзам.

Затем вы можете проверить, существует ли он, выполнив дамп конфигурации: kubectl exec $pod -n $namespace -c istio-proxy — pilot-agent запрос GET config_dump> dump.json

И выполните поиск «authent-filter», чтобы узнать, применен ли он.