レスポンスヘッダーの変更

Istioでは、HTTPリクエストヘッダーに基づいてルーティングするトラフィックルールを適用できます。 Istioを使用してレスポンスヘッダーを変更することもできます。これは、アプリケーションで生成されたヘッダーを削除する場合、またはアプリケーションコードを変更せずにレスポンスヘッダーを追加する場合に便利です。

この例では、IstioのVirtualServiceを適用して新しいヘッダー(hello:world)を追加して、set-cookie ヘッダーを削除します。次に、frontend-gateway を介してサービスメッシュに入るすべてのクライアントリクエストは、変更されたヘッダーを受信します。

apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: frontend-ingress
spec:
  hosts:
  - "*"
  gateways:
  - frontend-gateway
  http:
  - route:
    - destination:
        host: frontend
        port:
          number: 80
      headers:
        response:
          add:
            hello: world
          remove:
          - "set-cookie"

VirtualServiceを適用する前だと、frontend サービスは次の応答ヘッダーを返します。:

HTTP/1.1 200 OK
set-cookie: shop_session-id=432bef95-0d25-4754-80c8-3904c2e329e9; Max-Age=172800
date: Wed, 18 Sep 2019 16:26:01 GMT
content-type: text/html; charset=utf-8
x-envoy-upstream-service-time: 45
server: istio-envoy
transfer-encoding: chunked

次に、kubectl apply コマンドでVirtualServiceを適用すると、レスポンスヘッダーを変更するようにEnvoyが正常に構成されていることがわかります。:

HTTP/1.1 200 OK
date: Wed, 18 Sep 2019 16:26:24 GMT
content-type: text/html; charset=utf-8
x-envoy-upstream-service-time: 85
hello: world
server: istio-envoy
transfer-encoding: chunked