サービスメッシュ(ASM)では、リソースアノテーションを追加することでサイドカープロキシを変更できます。このトピックでは、リソースアノテーションを追加し、ProxyConfigフィールドを設定してサイドカープロキシを設定する方法について説明します。
前提条件
クラスターがASMインスタンスに追加されていること。詳細については、「ASMインスタンスへのクラスターの追加」をご参照ください。
イングレスゲートウェイがデプロイされていること。詳細については、「イングレスゲートウェイの作成」をご参照ください。
リソースアノテーションを追加する
ASMでは、リソースアノテーションを追加することでサイドカープロキシを変更できます。このトピックでは、リソースアノテーションを追加し、ProxyConfigフィールドを設定してサイドカープロキシを設定する方法について説明します。その他のアノテーションの詳細については、「付録 1:Istioリソースアノテーション」をご参照ください。
デフォルトの名前空間に対してサイドカープロキシの自動インジェクションを有効にします。詳細については、「サイドカープロキシの自動インジェクションを有効にする」をご参照ください。
デフォルトの名前空間にアプリケーションをデプロイします。詳細については、「ASMインスタンスに追加されたACKクラスターにアプリケーションをデプロイする」をご参照ください。
サイドカープロキシの最小メモリを変更します。
ACKコンソールにログインします。左側のナビゲーションペインで、[クラスター] をクリックします。
[クラスター] ページで、管理するクラスターを見つけ、その名前をクリックします。左側のペインで、 を選択します。
[デプロイメント] ページで、変更するアプリケーションを見つけ、[アクション] 列で を選択します。
[YAMLの編集] ダイアログボックスで、
templateパラメーターの下に次のコンテンツを追加します。次に、[更新] をクリックします。annotations: sidecar.istio.io/proxyMemory: 14Mi
サイドカープロキシのメモリが変更されたかどうかを確認します。
詳細ページの左側のナビゲーションペインで、 を選択します。
[ポッド] ページで、表示するポッドを見つけ、詳細の表示[アクション] 列の をクリックします。
[コンテナー] タブで、[istio-proxy] をクリックします。
istio-proxy コンテナーに必要なメモリが 14 MiB であることがわかります。

ProxyConfig フィールドを設定する
ASMでは、ポッドのProxyConfigフィールドを変更することで、サイドカープロキシを設定できます。 ProxyConfig フィールドの詳細については、「付録 2:ProxyConfig フィールド」をご参照ください。
proxy.istio.io/config アノテーションの値は、YAML形式またはJSON形式です。
ProxyConfig フィールドを設定する手順は、リソースアノテーションを追加する手順と似ています。詳細については、「リソースアノテーションを追加する」セクションの手順をご参照ください。この例では、一般的な ProxyConfig フィールドを使用します。
例 1:終了ドレイン期間を設定する
terminationDrainDuration フィールドを設定することで、終了ドレイン期間を変更できます。終了ドレイン期間は、アプリケーションコンテナーが終了したときに、istio-proxy コンテナーが強制終了またはシャットダウンされるまで待機する時間の長さを示します。
アプリケーションのYAMLファイルに次のコンテンツを追加します。アプリケーションコンテナーが終了すると、istio-proxy コンテナーは 3 秒間待機します。
annotations:
proxy.istio.io/config: |
terminationDrainDuration: 3s
[ポッド] ページで、表示するポッドを見つけ、[アクション] 列の [詳細の表示] をクリックします。 [コンテナー] タブで、istio-proxy をクリックします。終了ドレイン期間が 3 秒であることがわかります。
例 2:istio-proxy コンテナーの開始シーケンスを設定する
デフォルトでは、ASM でグローバルに holdApplicationUntilProxyStarts フィールドが true に設定されており、ポッドが起動する前に istio-proxy コンテナーが起動していることが保証されます。ポッドの起動時に istio-proxy コンテナーが起動していない場合、ポッドはトラフィックを受信できません。
holdApplicationUntilProxyStarts は、サイドカープロキシがインジェクトされた後のアプリケーションコンテナーの起動動作を制御するために使用されます。 holdApplicationUntilProxyStarts が true に設定されている場合、Istio Container Network Interface(CNI)プラグインまたはサイドカーインジェクターは、istio-proxy コンテナーがトラフィックを受信できるようになるまでアプリケーションコンテナーが起動しないように Kubernetes ポッド YAML を変更します。これにより、ポッドがトラフィックを受信する前にすべてのトラフィックが istio-proxy コンテナーを通過するため、トラフィック管理、監視、およびセキュリティポリシーがすぐに有効になります。ほとんどの場合、ネットワークトラフィックが適切に管理されるように、holdApplicationUntilProxyStarts を true に設定することをお勧めします。特別な場合によっては、holdApplicationUntilProxyStarts を false に設定する方が適切な場合があります。
[ポッド] ページで、表示するポッドを見つけ、[アクション] 列の [詳細の表示] をクリックします。 [イベント] タブをクリックします。すると、ポッドの起動後に istio-proxy コンテナーが起動していることがわかります。
付録 1:Istioリソースアノテーション
アノテーション | 説明 |
proxy.istio.io/config | プロキシ設定をオーバーライドします。 |
readiness.status.sidecar.istio.io/applicationPorts | アプリケーションコンテナーによって公開されるポートのリストを指定します。このアノテーションは、サイドカープロキシの準備プローブによって使用され、サイドカープロキシが設定され、トラフィックを受信する準備ができているかどうかを判断します。 |
readiness.status.sidecar.istio.io/failureThreshold | サイドカープロキシの準備プローブの失敗しきい値を指定します。 |
readiness.status.sidecar.istio.io/initialDelaySeconds | サイドカープロキシの準備プローブの初期遅延を指定します。単位:秒。 |
readiness.status.sidecar.istio.io/periodSeconds | サイドカープロキシの準備プローブの期間を指定します。単位:秒。 |
sidecar.istio.io/componentLogLevel | サイドカープロキシのコンポーネントログレベルを指定します。 |
sidecar.istio.io/enableCoreDump | サイドカープロキシのコアダンプを有効にするかどうかを指定します。 |
sidecar.istio.io/extraStatTags | プロキシ内 Istio テレメトリから抽出された追加タグのリスト。各追加タグはこのリストに存在する必要があります。 |
sidecar.istio.io/inject | サイドカープロキシの自動インジェクションを有効にするかどうかを指定します。 |
sidecar.istio.io/interceptionMode | 受信トラフィックを Envoy にリダイレクトするために使用されるモード(REDIRECT または TPROXY)を指定します。 |
sidecar.istio.io/logLevel | サイドカープロキシのログレベルを指定します。 |
sidecar.istio.io/proxyCPU | サイドカープロキシの要求された CPU 設定を指定します。 |
sidecar.istio.io/proxyCPULimit | サイドカープロキシの CPU 制限を指定します。 |
sidecar.istio.io/proxyMemory | サイドカープロキシの要求されたメモリ設定を指定します。 |
sidecar.istio.io/proxyMemoryLimit | サイドカープロキシのメモリ制限を指定します。 |
sidecar.istio.io/rewriteAppHTTPProbers | HTTP 準備プローブと生存プローブをサイドカープロキシにリダイレクトするように書き換えます。 |
status.sidecar.istio.io/port | サイドカープロキシの HTTP ステータス ポートを指定します。ポート番号が 0 の場合、サイドカープロキシはステータスを提供しません。 |
traffic.sidecar.istio.io/excludeInboundPorts | サイドカープロキシへのトラフィックリダイレクトから除外される受信ポートのカンマ区切りリスト。このアノテーションは、すべての受信トラフィックがサイドカープロキシにリダイレクトされる場合にのみ有効です。ワイルドカード(*)は任意の受信ポートを示します。 |
traffic.sidecar.istio.io/excludeOutboundIPRanges | サイドカープロキシへの送信トラフィックリダイレクトから除外される CIDR ブロックのカンマ区切りリスト。このアノテーションは、すべての送信トラフィックがサイドカープロキシにリダイレクトされる場合にのみ有効です。ワイルドカード(*)は任意の CIDR ブロックを示します。 |
traffic.sidecar.istio.io/excludeOutboundPorts | サイドカープロキシへのトラフィックリダイレクトから除外される送信ポートのカンマ区切りリスト。 |
traffic.sidecar.istio.io/includeInboundPorts | トラフィックがサイドカープロキシにリダイレクトされる受信ポートのカンマ区切りリスト。ワイルドカード(*)は任意の受信ポートを示します。空のリストは、すべての受信トラフィックのサイドカープロキシへのリダイレクトが無効になっていることを示します。 |
traffic.sidecar.istio.io/includeOutboundIPRanges | 送信トラフィックをサイドカープロキシにリダイレクトする CIDR ブロックのカンマ区切りリスト。ワイルドカード(*)は任意の CIDR ブロックを示します。空のリストは、すべての送信トラフィックのサイドカープロキシへのリダイレクトが無効になっていることを示します。 |
traffic.sidecar.istio.io/includeOutboundPorts | トラフィックがサイドカープロキシにリダイレクトされる送信ポートのカンマ区切りリスト。 |
traffic.sidecar.istio.io/kubevirtInterfaces | 受信トラフィックが送信トラフィックとして扱われる仮想インターフェースのカンマ区切りリスト。 |
付録 2:ProxyConfig フィールド
フィールド | タイプ | 説明 |
configPath | String | 構成ファイルのディレクトリへのパスを指定します。プロキシアгентは実際の構成を生成し、このディレクトリに保存します。 |
statsdUdpAddress | String | StatsD UDP リスナーの IP アドレスとポートを指定します。 |
proxyAdminPort | Int32 | Envoy が管理コマンドをリッスンするポートを指定します。デフォルトポートはポート 15000 です。 |
controlPlaneAuthPolicy | AuthenticationPolicy | プロキシがコントロールプレーンに接続するときにどのように認証されるかを指定します。デフォルト値は |
concurrency | 実行するワーカースレッドの数を指定します。このフィールドが指定されていない場合、数は CPU 要求と制限に基づいて自動的に決定されます。このフィールドが 0 に設定されている場合、マシン上のすべてのコアが使用されます。デフォルト値は 2 です。 | |
interceptionMode | InboundInterceptionMode | 受信トラフィックがサイドカープロキシにリダイレクトされるモードを指定します。 |
tracing | Tracing | サイドカープロキシのトレース構成を指定します。 |
sds | SDS | サイドカープロキシの Secret Discovery Service(SDS)構成を指定します。 |
proxyMetadata | Map<string, string> | サイドカープロキシの追加の環境変数を指定します。 ISTIO_META_ で始まる名前の変数は、生成されたブートストラップに含まれ、XDS サーバーに送信されます。 |
statusPort | Map<string, string> | サイドカープロキシが準備プローブなどの管理コマンドをリッスンするポートを指定します。デフォルトポートはポート 15020 です。 |
terminationDrainDuration | プロキシのシャットダウン時に接続が完了するまでに許容される時間の長さを指定します。SIGTERM または SIGINT が受信されると、istio-agent はアクティブな Envoy にドレインを開始するように指示し、新しい接続を防止し、既存の接続を完了できるようにします。次に、istio-agent は終了ドレイン期間の間スリープし、残りのアクティブな Envoy プロセスを強制終了します。デフォルト値は 5 です。単位:秒。 | |
holdApplicationUntilProxyStarts | holdApplicationUntilProxyStarts 動作を有効または無効にするためのブール値フラグを指定します。この機能は、ポッドプロキシがトラフィックを受け入れる準備ができるまでアプリケーションの起動を遅らせるフックを追加し、起動時の競合状態を軽減します。 |