ext_authz кластер 'x' не существует

Я пытаюсь использовать istio для проверки jwt. У меня есть приложение с меткой app =auth-verify, работающее на порту 3000, у которого есть 1 конечная точка. /authкоторый проверит заголовок авторизации. Основное приложение имеет метку app =backend ожидает, что приложение auth-verify проверит jwt и добавит заголовок x-authenticated. Ниже мой CRD для EnvoyFilter.

      apiVersion: networking.istio.io/v1alpha3
kind: EnvoyFilter
metadata:
  name: jwt-verification
  namespace: default
spec:
  workloadSelector:
    labels:
      app=backend
  configPatches:
    - applyTo: HTTP_FILTER
      match:
        context: SIDECAR_INBOUND
        listener:
          filterChain:
            filter:
              name: "envoy.filters.network.http_connection_manager"
              subFilter:
                name: "envoy.filters.http.router"
      patch:
        operation: INSERT_BEFORE
        filterClass: STATS
        value:
          name: envoy.filters.http.ext_authz
          typed_config:
            "@type": type.googleapis.com/envoy.extensions.filters.http.ext_authz.v3.ExtAuthz
            http_service:
              server_uri:
                uri: http://auth-verify.default.svc.cluster.local:3000/auth
                cluster: outbound|3000||http://auth-verify
                timeout: 5s
            status_on_error:
              code: FailedDependency

Когда я проверяю журналы на серверном модуле, через kubectl logs --tail 1 -f backend-695cf5b89d-nkgps istio-proxy Я вижу эту ошибку.

      debug   envoy config    ext_authz cluster 'outbound|3000||http://auth-verify' does not exist
debug   envoy http  [C9552][S4342964409469864253] Sending local reply with details ext_authz_error

Как я могу это исправить?

1 ответ

Моя ошибка заключалась в добавлении «http://» в строку кластера. Получил это, чтобы работать, изменив на cluster: outbound|3000||auth-verify.default.svc.cluster.local

Другие вопросы по тегам