Service Mesh(ASM)では、アプリケーションが異常と見なされるまでに応答しない期間、つまりリクエストの許容応答レイテンシを指定できます。このトピックでは、タイムアウトポリシーを構成する方法について説明します。
前提条件
準備が完了し、HTTPBin サービスと sleep サービスがデプロイされています。詳細については、準備をご参照ください。
手順
サービス構成が有効になっているかどうかを確認します。
kubeconfig ファイルの情報に基づいて、kubectl を使用して Container Service for Kubernetes(ACK)クラスターに接続し、次のコマンドを実行して sleep サービスの bash を有効にします:
kubectl exec -it deploy/sleep -- sh次のコマンドを実行して HTTPBin サービスにリクエストを送信し、HTTPBin サービスが応答メッセージを送信する前に 1 秒遅延するように要求します。
curl -I httpbin:8000/delay/1予想される出力:
HTTP/1.1 200 OK server: envoy date: Fri, 11 Aug 2023 09:57:36 GMT content-type: application/json content-length: 481 access-control-allow-origin: * access-control-allow-credentials: true x-envoy-upstream-service-time: 1006出力は、応答が 1 秒遅延していることを示しています。
次のコマンドを実行して HTTPBin サービスにリクエストを送信し、HTTPBin サービスが応答メッセージを送信する前に 2 秒遅延するように要求します。
curl -I httpbin:8000/delay/2予想される出力:
HTTP/1.1 200 OK server: envoy date: Fri, 11 Aug 2023 09:57:26 GMT content-type: application/json content-length: 481 access-control-allow-origin: * access-control-allow-credentials: true x-envoy-upstream-service-time: 2004出力は、応答が 2 秒遅延していることを示しています。
次のコンテンツを使用してテストシナリオを作成し、HTTPBin サービスのトラフィックルールを構成し、許容される
timeoutを2sに設定します。詳細については、仮想サービスの管理をご参照ください。構成が有効になっているかどうかを確認します。
kubeconfig ファイルの情報に基づいて、kubectl を使用して ACK クラスターに接続し、次のコマンドを実行して sleep サービスの bash を有効にします:
kubectl exec -it deploy/sleep -- sh次のコマンドを実行して HTTPBin サービスにリクエストを送信し、HTTPBin サービスが応答メッセージを送信する前に 1 秒遅延するように構成します。
curl -I httpbin:8000/delay/1予想される出力:
HTTP/1.1 200 OK server: envoy date: Fri, 11 Aug 2023 09:56:30 GMT content-type: application/json content-length: 481 access-control-allow-origin: * access-control-allow-credentials: true x-envoy-upstream-service-time: 1005出力は、応答が 1 秒遅延していることを示しています。
次のコマンドを実行して HTTPBin サービスにリクエストを送信し、HTTPBin サービスが応答メッセージを送信する前に 2 秒遅延するように構成します。
curl -I httpbin:8000/delay/2予想される出力:
HTTP/1.1 504 Gateway Timeout content-length: 24 content-type: text/plain date: Fri, 11 Aug 2023 09:56:35 GMT server: envoyHTTP 504 ステータスコードが返されます。これは、タイムアウトポリシーが有効になっていることを示します。
apiVersion: networking.istio.io/v1beta1
kind: VirtualService
metadata:
name: httpbin-vs
namespace: default
spec:
hosts:
- httpbin
http:
- route:
- destination:
host: httpbin
timeout: 2s