Istioを使用した本番環境でのテスト向けのトラフィックミラーリング
より安全でリスクの低いデプロイメントと本番環境リリースの紹介。
非本番/テスト環境でサービスをテストするためのテストケースの組み合わせをすべて列挙するのは骨の折れる作業です。場合によっては、これらすべてのユースケースをカタログ化するために費やした労力が、実際の本番環境のユースケースに合致していないことがよくあります。理想的には、実際の本番環境のユースケースとトラフィックを使用して、より制御されたテスト環境で見逃す可能性のある、テスト対象のサービスのすべての機能領域を明らかにできます。
Istioがここで役立ちます。Istio 0.5 のリリースでは、Istioでトラフィックをミラーリングしてサービスのテストを支援できます。次の例に類似したルートルールを作成して、トラフィックミラーリングを有効にすることができます。
apiVersion: config.istio.io/v1alpha2
kind: RouteRule
metadata:
name: mirror-traffic-to-httpbin-v2
spec:
destination:
name: httpbin
precedence: 11
route:
- labels:
version: v1
weight: 100
- labels:
version: v2
weight: 0
mirror:
name: httpbin
labels:
version: v2
ここで注意すべき点がいくつかあります。
- トラフィックが別のサービスにミラーリングされると、それは要求のクリティカルパス外で発生します。
- ミラーリングされたトラフィックに対する応答は無視されます。トラフィックは「送信後破棄」としてミラーリングされます。
- Istio に、適切な Envoy クラスタを内部で作成するようヒントを与えるために、0 重みのルートが必要です。これは今後のリリースで解決される予定です。
ミラーリングタスクにアクセスしてミラーリングの詳細を学び、ブログでこのシナリオの包括的な処理を参照してください。