Добавьте настраиваемый заголовок ко всем ответам от Traefik в Azure's Service Fabric - PullRequest
0 голосов
/ 08 января 2019

Я развернул Traefik в кластере Azure Service Fabric. Все работает отлично, так как в Traefik (с использованием SFC API) можно найти другие гостевые сервисы и динамически создавать профили внешнего и внутреннего интерфейсов. Так что я не настраиваю статически какой-либо интерфейс.

Есть ли способ сообщить Traefik добавить собственный заголовок ко всем ответам, приходящим от всех пользователей?

Ответы [ 2 ]

0 голосов
/ 11 января 2019

Предложенный XML в принятом ответе не будет работать для динамически обнаруженных сервисов в SFC. Однако я принял это, поскольку указал, что это можно сделать через API.

В интересах других, чтобы вызывать API, можно либо использовать "sfctl" (CLI Service Fabric), либо напрямую вызывать API с помощью cUrl.

Мне не удалось заставить работать CLI (https://github.com/Microsoft/service-fabric-cli/issues/175),, но мне удалось с помощью cUrl:

curl -kv -X PUT -H 'Content-Type: application/json' -d '{"PropertyName": "traefik.frontend.headers.customResponseHeaders","Value": {"Kind": "String","Data": "Access-Control-Allow-Origin: https://some_value"}}' --cert /Users/me/client_cert.crt --key /Users/me/client_cert.key https://****.westus2.cloudapp.azure.com:19080/Names/full/service/name/$/GetProperty?api-version=6.0 --http1.1

Ссылка: https://docs.microsoft.com/en-us/rest/api/servicefabric/sfclient-api-putproperty

0 голосов
/ 08 января 2019

Traefik имеет настраиваемую функцию заголовка для согласованных правил внешнего интерфейса, как описано здесь .

Пользовательские заголовки применяются к правилу ...

Пользовательские заголовки могут быть настроены через внешние интерфейсы, чтобы добавлять заголовки к запросам или ответам , которые соответствуют правилам внешнего интерфейса

Поскольку вы используете динамическую настройку, вам нужно будет добавить эти правила в службы вместо настройки в конфигурации traeffik.

Что-то вроде:

<StatelessServiceType ServiceTypeName="WebServiceType">
  <Extensions>
      <Extension Name="Traefik">
        <Labels xmlns="http://schemas.microsoft.com/2015/03/fabact-no-schema">
          <Label Key="traefik.frontend.rule.example2">PathPrefixStrip: /a/path/to/strip</Label>
          <Label Key="traefik.enable">true</Label>
          <Label Key="traefik.frontend.headers.customRequestHeaders">heaver:value</Label>
        </Labels>
      </Extension>
  </Extensions>
</StatelessServiceType>

AFAIK, нет способа применить ко всем ответам глобально.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...