すべてのプロダクト
Search
ドキュメントセンター

Alibaba Cloud Service Mesh:アノテーションを使用したサイドカープロキシの設定

最終更新日:Jun 22, 2026

Alibaba Cloud Service Mesh (ASM) は、アノテーションを使用してサイドカープロキシのリソースと構成を変更することをサポートしています。このトピックでは、リソースアノテーションの追加と ProxyConfig フィールドの使用によるサイドカープロキシの設定方法について説明します。

前提条件

リソースアノテーションの追加

ASM は、Pod にアノテーションを追加することで、サイドカープロキシのリソースを変更することをサポートしています。この例では、サイドカープロキシのメモリリクエストを変更する方法を示します。その他のアノテーションの詳細については、「付録 A:Istio リソースアノテーション」をご参照ください。

  1. default 名前空間に対してサイドカーメッシュプロキシの自動インジェクションを有効にします。詳細については、「自動インジェクションの有効化」をご参照ください。

  2. default 名前空間にアプリケーションをデプロイします。詳細については、「ASM インスタンスに関連付けられたクラスターへのアプリケーションのデプロイ」をご参照ください。

  3. サイドカープロキシの最小メモリリクエストを変更します。

    1. Container Service for Kubernetes (ACK) コンソールにログインします。左側のナビゲーションウィンドウで、クラスターリスト をクリックします。

    2. [クラスターリスト] ページで、対象のクラスター名をクリックします。左側のナビゲーションウィンドウで、ワークロード > デプロイメント をクリックします。

    3. [デプロイメント] ページで、対象のアプリケーションを見つけ、[アクション] 列の 詳細 > Yaml をクリックします。

    4. [YAML の編集] ダイアログボックスで、`template` パラメーターの下に次の内容を追加し、[更新] をクリックします。

      annotations:
        sidecar.istio.io/proxyMemory: 14Mi
      template:
          metadata:
            annotations:
              sidecar.istio.io/proxyMemory: 14Mi
            labels:
              app: details
              version: v1
  4. サイドカープロキシのメモリ変更が成功したことを確認します。

    1. クラスター管理ページの左側のナビゲーションウィンドウで、ワークロード > ポッド を選択します。

    2. [ポッド] ページで、対象のアプリケーション Pod を見つけ、[アクション] 列の [詳細] をクリックします。

    3. [コンテナー] タブで、[istio-proxy] をクリックします。

      istio-proxy が 14 Mi のメモリをリクエストしていることがわかります。クリックすると、レジストリアドレス、イメージプルポリシー (IfNotPresent)、Istio サイドカー関連の環境変数など、istio-proxy コンテナの詳細を表示できます。[リクエストされたリソース] の下に、現在のメモリ設定が Memory: 14Mi と表示されます。

ProxyConfig フィールドの設定

ASM は、Pod の ProxyConfig フィールドを変更することで、サイドカープロキシの構成を定義することをサポートしています。ProxyConfig フィールドの使用に関する詳細については、「付録 B:ProxyConfig フィールド」をご参照ください。

説明

proxy.istio.io/config の値は、YAML または JSON 形式を使用できます。

ProxyConfig フィールドを設定する手順は、リソースアノテーションの追加と同じです。このセクションでは、一般的な ProxyConfig フィールドの例を示します。手順については、前のセクションをご参照ください。

例 1:終了ドレイン期間の設定

terminationDrainDuration フィールドを使用して、終了ドレイン期間を変更します。この期間は、アプリケーションコンテナが終了した後に Istio プロキシが待機する最大時間を定義します。

アプリケーションの YAML ファイルに次の内容を追加して、アプリケーションコンテナの終了後、Istio プロキシが最大 3 秒間待機するようにします。

annotations:
  proxy.istio.io/config: |
    terminationDrainDuration: 3s
type: RollingUpdate
  template:
    metadata:
      annotations:
        proxy.istio.io/config: |
          terminationDrainDuration: 3s
      labels:
        app: details

[Pod] ページで、対象のアプリケーション Pod を見つけ、[詳細] 列の [アクション] をクリックします。[コンテナー] タブで、istio-proxy をクリックします。終了ドレイン期間が 3 秒に設定されていることがわかります。構成が有効になった後、Pod のコンテナページで istio-proxy コンテナの詳細を表示します。PROXY_CONFIG 環境変数で、terminationDrainDuration3s に設定されています。

例 2:Istio プロキシの起動順序の設定

デフォルトでは、ASM はグローバルに holdApplicationUntilProxyStartstrue に設定します。これにより、アプリケーションコンテナが起動する前に Istio プロキシが正常に起動することが保証されます。Istio プロキシが準備完了になる前にアプリケーションコンテナが準備完了になると、Pod はトラフィックを受け入れることができません。

holdApplicationUntilProxyStarts は、サイドカープロキシのインジェクション後のアプリケーションコンテナの起動動作を制御する構成オプションです。holdApplicationUntilProxyStartstrue に設定されている場合、Istio CNI またはサイドカーインジェクターは、プロキシコンテナが準備完了になりトラフィックの受信を開始するまで、アプリケーションコンテナの起動を妨げるように Kubernetes Pod を構成します。これにより、Pod がトラフィックを受信する前にすべてのトラフィックがプロキシを通過することが保証され、トラフィック管理、モニタリング、およびセキュリティポリシーの即時適用が可能になります。ほとんどの場合、適切なトラフィック処理を保証するために holdApplicationUntilProxyStartstrue に設定します。特定のシナリオで適切な場合にのみ false に設定してください。

[Pod] ページで、対象のアプリケーション Pod を見つけ、[詳細] 列の [アクション] をクリックします。[イベント] タブをクリックします。アプリケーションコンテナが最初に起動し、その後に Istio プロキシが起動することがわかります。Pod の [イベント] タブでは、details-v1 Pod のイベントリストに、Pod のスケジューリング (Scheduled)、イメージのプル (Pulled)、コンテナの作成 (Created)、コンテナの起動 (Started) を含む完全なコンテナ起動シーケンスが表示されます。起動したコンテナは、init コンテナ istio-init、アプリケーションコンテナ details、サイドカーコンテナ istio-proxy の順に表示されます。Started コンテナのイベントがハイライト表示され、holdApplicationUntilProxyStarts 構成によって強制された起動順序が確認できます。

付録 A:Istio リソースアノテーション

アノテーション

説明

proxy.istio.io/config

このプロキシのプロキシ構成を上書きします。

readiness.status.sidecar.istio.io/applicationPorts

アプリケーションコンテナによって公開されるポートのリストを指定します。サイドカープロキシの readiness プローブが、プロキシが構成されトラフィックを受信する準備ができたタイミングを判断するために使用します。

readiness.status.sidecar.istio.io/failureThreshold

サイドカープロキシの readiness プローブの失敗しきい値を指定します。

readiness.status.sidecar.istio.io/initialDelaySeconds

サイドカープロキシの readiness プローブの初期遅延 (秒単位) を指定します。

readiness.status.sidecar.istio.io/periodSeconds

サイドカープロキシの readiness プローブの期間 (秒単位) を指定します。

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 readiness および liveness プローブをサイドカープロキシにリダイレクトします。

status.sidecar.istio.io/port

サイドカープロキシの HTTP ステータスポートを指定します。ゼロに設定した場合、サイドカーはステータスを提供しません。

traffic.sidecar.istio.io/excludeInboundPorts

サイドカープロキシへのリダイレクトから除外されるインバウンドポートのカンマ区切りリスト。すべてのインバウンドトラフィック (つまり「*」) がリダイレクトされる場合にのみ適用されます。

traffic.sidecar.istio.io/excludeOutboundIPRanges

リダイレクトから除外される CIDR 形式の IP 範囲のカンマ区切りリスト。すべてのアウトバウンドトラフィック (つまり「*」) がリダイレクトされる場合にのみ適用されます。

traffic.sidecar.istio.io/excludeOutboundPorts

サイドカープロキシへのアウトバウンドトラフィックのリダイレクトを禁止する文字列ポートのカンマ区切りリスト。

traffic.sidecar.istio.io/includeInboundPorts

トラフィックがサイドカープロキシにリダイレクトされるインバウンドポートのカンマ区切りリスト。ワイルドカード「*」を使用して、すべてのポートのリダイレクトを構成します。空のリストは、すべてのインバウンドトラフィックのリダイレクトを無効にします。

traffic.sidecar.istio.io/includeOutboundIPRanges

サイドカープロキシにリダイレクトされる CIDR 形式の IP 範囲のカンマ区切りリスト。ワイルドカード「*」を使用して、すべてのアウトバウンドトラフィックをリダイレクトします。空のリストは、すべてのアウトバウンドトラフィックのリダイレクトを無効にします。

traffic.sidecar.istio.io/includeOutboundPorts

宛先 IP に関係なく、トラフィックがサイドカープロキシにリダイレクトされるアウトバウンドトラフィックポート文字列のカンマ区切りリスト。

traffic.sidecar.istio.io/kubevirtInterfaces

インバウンドトラフィックがアウトバウンドトラフィックとして扱われる仮想インターフェイスのカンマ区切りリスト。

付録 B:ProxyConfig フィールド

フィールド

タイプ

説明

configPath

String

生成された設定ファイルが保存されるディレクトリへのパス。プロキシエージェントは実際の設定を生成し、このディレクトリに保存します。

statsdUdpAddress

String

statsd UDP リスナーの IP アドレスとポート。

proxyAdminPort

Int32

Envoy が管理コマンドをリッスンするポート。デフォルトポートは 15000 です。

controlPlaneAuthPolicy

AuthenticationPolicy

AuthenticationPolicy は、プロキシがコントロールプレーンに接続する際の認証方法を定義します。デフォルトは MUTUAL_TLS です。

concurrency

Int32Value

実行するワーカースレッドの数。設定されていない場合、CPU リクエストと制限に基づいて自動的に決定されます。0 に設定すると、マシン上のすべてのコアが使用されます。デフォルトは 2 ワーカースレッドです。

interceptionMode

InboundInterceptionMode

インバウンドトラフィックをサイドカープロキシにリダイレクトするモードを設定します。

tracing

Tracing

サイドカープロキシが使用するトレース構成。

sds

SDS

プロキシが使用する Secret Discovery Service (SDS) 構成。

proxyMetadata

Map<string, string>

プロキシの追加の環境変数。ISTIO_META_ で始まる名前は、生成されたブートストラップ構成に含まれ、XDS サーバーに送信されます。

statusPort

Map<string, string>

プロキシがリッスンする管理 (readiness プローブなど) ポート。デフォルトはポート 15020 です。

terminationDrainDuration

Duration

プロキシのシャットダウン中に接続が完了するまでに許容される時間。SIGTERM または SIGINT を受信すると、istio-agent はアクティブなサイドカープロキシにドレインを開始するように指示します。これにより、新しい接続がブロックされ、既存の接続は完了できます。その後、termination_drain_duration の間スリープしてから、残りのすべてのアクティブな Envoy プロセスをシャットダウンします。設定されていない場合、デフォルト値の 5 秒が適用されます。

holdApplicationUntilProxyStarts

BoolValue

holdApplicationUntilProxyStarts 動作を有効または無効にするブール値フラグ。この機能は、Pod プロキシがトラフィックを受け入れる準備ができるまでアプリケーションの起動を遅らせるフックを追加し、特定の起動時の競合状態を緩和します。