トラフィック管理 FAQ
Istioで設定した現在のルートルールはどのように確認できますか?
ルールは kubectl get virtualservice -o yaml
を使用して表示できます。
サイドカープロキシはどのポートでインバウンドトラフィックをキャプチャしますか?
Istioはデフォルトですべてのポートでインバウンドトラフィックをキャプチャします。 キャプチャするポートの明示的なリストを指定するには、traffic.sidecar.istio.io/includeInboundPorts
Podアノテーションを使用します。または、バイパスするポートのリストを指定するには、traffic.sidecar.istio.io/excludeOutboundPorts
を使用して、この動作をオーバーライドできます。
MUTUALとISTIO_MUTUAL TLSモードの違いは何ですか?
これらのDestinationRule
設定はどちらも、相互TLSトラフィックを送信します。 ISTIO_MUTUAL
を使用すると、Istio証明書が自動的に使用されます。 MUTUAL
の場合、鍵、証明書、および信頼できるCAを設定する必要があります。 これにより、Istio以外のアプリケーションとの相互TLSを開始できます。
IstioはStatefulSetsとヘッドレスサービスで使用できますか?
はい、IstioはIstio 1.101以降、これらのワークロードを完全にサポートしています。
ルートルールなしで標準のIngress仕様を使用できますか?
ホスト、TLS、および完全パスベースのマッチングを使用した単純なイングレス仕様は、ルートルールを必要とせずにそのまま使用できます。 ただし、イングレスリソースで使用されるパスには、.
文字を含めないでください。
たとえば、次のイングレスリソースは、example.comホストへのリクエストと、URLとして/helloworldを一致させます。
ただし、次のルールは、パスとingress.kubernetes.io
アノテーションに正規表現を使用しているため、機能しません。
CORS設定が機能しないのはなぜですか?
CORS設定を適用した後、一見何も起こらなかったように見え、何が問題だったのか疑問に思うかもしれません。 CORSは、設定時に混乱を招くことが多い、一般的に誤解されているHTTPの概念です。
これを理解するには、一歩下がってCORSとは何か2、そしていつ使用すべきかを理解するのに役立ちます。 デフォルトでは、ブラウザはスクリプトによって開始された「クロスオリジン」リクエストに制限を設けています。 これにより、たとえば、Webサイトattack.example.com
がbank.example.com
にJavaScriptリクエストを行い、ユーザーの機密情報を盗むことを防ぎます。
このリクエストを許可するには、bank.example.com
はattack.example.com
がクロスオリジンリクエストを実行することを許可する必要があります。 これがCORSの出番です。 Istio対応クラスターでbank.example.com
を提供している場合、これを許可するようにcorsPolicy
を設定できます。
この場合、単一のオリジンを明示的に許可します。 ワイルドカードは、機密性の低いページでは一般的です。
これを行った後、よくある間違いは、curl bank.example.com -H "Origin: https://attack.example.com"
のようなリクエストを送信し、リクエストが拒否されることを期待することです。 ただし、curlや他の多くのクライアントは、CORSがブラウザの制約であるため、拒否されたリクエストを確認しません。 CORS設定は、レスポンスにAccess-Control-*
ヘッダーを追加するだけです。 レスポンスが満足できない場合にリクエストを拒否するのは、クライアント(ブラウザ)次第です。 ブラウザでは、これはプリフライトリクエスト3によって行われます。
Istioはどのプロトコルをサポートしていますか?
現在、IstioはTCPベースのプロトコルをサポートしています。 さらに、Istioは、http
やmysql
などの他のプロトコルにルーティングやメトリックなどの機能を提供します。
すべてプロトコルのリスト、およびプロトコルの設定方法については、プロトコル選択4ドキュメントをご覧ください。