トラフィックミラーリング

信頼性を確保するには、本番環境でサービスをテストすることが重要です。稼働中の本番トラフィックをサービスの新しいバージョンに送信すると、継続的なインテグレーションと機能テスト中にテストされなかったバグを明らかにできます。

Istioを使用すると、トラフィックミラーリングを使用して、別のサービスへのトラフィックを複製できます。カナリアデプロイメントパイプラインの一部としてトラフィックミラーリングルールを組み込むことができます。これにより、ライブトラフィックをサービスに送信する前にサービスの動作を分析できます。

この例では、Kubernetesにビデオ処理パイプラインをデプロイしました。render サービスは encode-prod サービスに依存しており、encode の新しいバージョンである encode-test をロールアウトしたいと思います。

traffic mirroring

Istio VirtualService を使用して、すべてのencode-prodトラフィックを encode-test にミラーリングできます。render 用のクライアント側のEnvoyプロキシは、encode-prod(リクエストパス)とencode-test(ミラーされたパス)の両方にリクエストを送信します。 prodtest は、Istio DestinationRuleで指定されている encode Kubernetes Serviceの2つのサブセットです。

renderは、encode-testからの応答の受信を待機しません —ミラーリングされたリクエストは「投げっぱなし」になります。

apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: encode-mirror
spec:
  hosts:
    - encode
  http:
  - route:
    - destination:
        host: encode
        subset: prod
      weight: 100
    mirror:
      host: encode
      subset: test
apiVersion: networking.istio.io/v1alpha3
kind: DestinationRule
metadata:
  name: encode
spec:
  host: encode
  subsets:
  - name: prod
    labels:
      version: prod
  - name: test
    labels:
      version: test