アプリケーションコンテナにサイドカープロキシを挿入すると、サービス間の呼び出しのネットワークセキュリティ、信頼性、および可観測性が向上します。 サイドカープロキシの設定方法について説明します。
開始する前に
サイドカープロキシの設定レベル
サイドカープロキシの設定は、そのスコープと優先順位に基づいて適用されます。 設定レベルは、優先順位が低いものから高いものの順に次のとおりです。
グローバル
スコープ: クラスタ内のすべてのポッドに適用されます。
説明: このレベルの設定は、サイドカープロキシの挿入中にすべてのポッドに自動的に挿入されます。
名前空間
スコープ: 指定された名前空間内のすべてのポッドに適用されます。
説明: 選択した名前空間内のポッドのみが設定を適用します。
ワークロード
スコープ: ラベルセレクタで選択された特定のワークロードに適用されます。
説明: 特定のワークロードをターゲットにするには、ラベルセレクタを定義する必要があります。 選択したワークロードのみが、サイドカープロキシの挿入中に設定を適用します。
ポッド
スコープ: 個々のポッドに適用されます。
説明: このレベルは、Service Mesh (ASM) コンソールからは設定できません。 代わりに、ポッドに直接アノテーションを追加する必要があります。 詳細については、「リソースアノテーションを追加してサイドカープロキシを設定する」をご参照ください。
設定の優先順位ルール
優先順位の高い設定は、優先順位の低い設定をオーバーライドします。 例:
default名前空間にグローバル設定と名前空間レベル設定の両方が存在する場合、defaultに新しいワークロードをデプロイするときに名前空間レベルの設定が優先されます。
手順
次のセクションでは、さまざまなレベルでサイドカープロキシを設定する方法について説明します。
グローバルレベル
ASM コンソールにログインします。 左側のナビゲーションウィンドウで、[Service Mesh] > [メッシュ管理] を選択します。
[メッシュ管理] ページで、ASM インスタンスの名前をクリックします。 左側のナビゲーションウィンドウで、[データプレーンコンポーネント管理] > [サイドカープロキシ設定] を選択します。
[グローバル] タブで、プロキシを設定し、[設定の更新] をクリックします。
サイドカープロキシの設定項目の詳細については、「サイドカープロキシの設定項目」をご参照ください。
サイドカープロキシの設定が有効になっているかどうかを確認します。
左側のナビゲーションウィンドウで、[ASM インスタンス] > [基本情報] を選択します。
[ステータス] が [実行中] の場合、グローバルサイドカープロキシの設定が有効になります。
名前空間レベル
ASM コンソールにログインします。 左側のナビゲーションウィンドウで、[Service Mesh] > [メッシュ管理] を選択します。
[メッシュ管理] ページで、ASM インスタンスの名前をクリックします。 左側のナビゲーションウィンドウで、[データプレーンコンポーネント管理] > [サイドカープロキシ設定] を選択します。
[名前空間] タブをクリックし、名前空間を選択して、関連する設定項目を設定し、[設定の更新] をクリックします。 更新はすぐに有効になります。
名前空間レベルは、サイドカープロキシの最低設定レベルではありません。 したがって、名前空間レベルのすべてのサイドカープロキシ設定項目にはデフォルト値がありません (選択および設定されていないサイドカープロキシ設定項目については、デフォルトでグローバルレベルの設定が有効になります)。 詳細については、「サイドカープロキシの設定項目」をご参照ください。
ワークロードレベル
同じ名前空間で、異なるワークロードに対して複数のサイドカープロキシ設定を作成できます。
ASM コンソールにログインします。 左側のナビゲーションウィンドウで、[Service Mesh] > [メッシュ管理] を選択します。
[メッシュ管理] ページで、ASM インスタンスの名前をクリックします。 左側のナビゲーションウィンドウで、[データプレーンコンポーネント管理] > [サイドカープロキシ設定] を選択します。
[ワークロード] タブをクリックし、[作成] をクリックします。
関連する設定項目を設定し、[作成] をクリックします。
ワークロードレベルはサイドカープロキシ設定階層の最下位ではないため、すべてのサイドカープロキシ設定オプションにデフォルト値がなく、代わりにグローバルレベル設定がデフォルトになります。 詳細については、「サイドカープロキシの設定項目」をご参照ください。
作成後、ワークロードレベルのサイドカープロキシ設定を更新または削除できます。
ワークロードレベルの設定を更新するには
[ワークロード] タブを選択します。
[アクション] 列で、ターゲットのサイドカープロキシ設定の [更新] をクリックします。
設定を変更します。
変更を適用するには、[更新] をクリックします。
ワークロードレベルの設定を削除するには
[ワークロード] タブを選択します。
[アクション] 列で、ターゲットのサイドカープロキシ設定の [削除] をクリックします。
確認ダイアログで、[OK] をクリックして続行します。
ポッドレベル
ポッドに特定のアノテーションを設定する必要があります。 詳細については、「リソースアノテーションを追加してサイドカープロキシを設定する」をご参照ください。
(オプション) ワークロードの再デプロイ
サイドカープロキシの設定を有効にするには、ポッドを再デプロイします。
ACK コンソールにログインします。 左側のナビゲーションウィンドウで、[クラスタ] をクリックします。
[クラスタ] ページで、管理するクラスタを見つけて、その名前をクリックします。 左側のウィンドウで、[ワークロード] > [デプロイメント] を選択します。
ワークロードを再デプロイするには、次の操作を実行します。
シナリオ
手順
単一のワークロードの場合
再デプロイするワークロードを見つけて、[アクション] 列の [詳細] > [再デプロイ] をクリックします。
複数のワークロードの場合
[名前] 列で複数のワークロードを選択し、ページの下部にある [一括再デプロイ] をクリックします。
サイドカープロキシ設定項目のサポートされているバージョン
サイドカープロキシ設定項目が見つからない場合は、次の表の情報を確認して、ASM インスタンスを更新する必要があるかどうかを確認してください。
ASM バージョンが V1.22 以降で、Kubernetes クラスタバージョンが V1.30 以降の場合、サイドカープロキシはネイティブサイドカーコンテナとしてデプロイされます。 この場合、Kubernetes クラスタはサイドカープロキシコンテナのライフサイクルを管理し、その中のすべてのライフサイクル管理設定をオーバーライドします。
カテゴリ | 設定項目 | グローバルレベル | 名前空間レベル | ワークロードレベル |
リソース設定 | すべてのバージョン | 1.10.5.34 | 1.13.4.20 | |
1.24.6.83 | ||||
1.9.7.93 | 1.10.5.34 | 1.13.4.20 | ||
1.16.3.47 | 1.16.3.47 | 1.16.3.47 | ||
1.15.3.104 | 1.12.4.19 | 1.13.4.20 | ||
ポートまたは IP アドレスで Sidecar プロキシを有効/無効にする | すべてのバージョン | 1.10.5.34 | 1.13.4.20 | |
すべてのバージョン | 1.10.5.34 | 1.13.4.20 | ||
1.15.3.104 | 1.10.5.34 | 1.13.4.20 | ||
1.15.3.104 | 1.10.5.34 | 1.13.4.20 | ||
すべてのバージョン | 1.10.5.34 | 1.13.4.20 | ||
すべてのバージョン | 1.10.5.34 | 1.13.4.20 | ||
DNS プロキシ | 1.8.3.17 | 1.10.5.34 | 1.13.4.20 | |
サイドカー プロキシの環境変数を管理する | 1.15.3.104 | 1.15.3.104 | 1.15.3.104 | |
ライフサイクル管理 | 1.15.3.104 | 1.12.4.58 | 1.13.4.20 | |
1.9.7.93 | 1.10.5.34 | 1.13.4.20 | ||
1.9.7.93 | 1.10.5.34 | 1.13.4.20 | ||
送信トラフィックポリシー | すべてのバージョン | 1.10.5.34 | 1.13.4.20 | |
サイドカー トラフィック遮断ポリシー | 1.15.3.25 | 1.15.3.25 | 1.15.3.25 | |
モニタリング | 1.15.3.104 | 1.12.4.58 | 1.13.4.20 | |
1.15.3.104 | 1.12.4.58 | 1.13.4.20 | ||
Envoy ランタイム パラメーター | 1.21.6.95 | 1.21.6.95 | 1.21.6.95 | |
Sidecar プロキシの構成項目
Sidecar プロキシのリソース使用量、トラフィックインターセプトモード、ドメインネームシステム(DNS)プロキシ、およびライフサイクルを構成できます。
注入された Istio プロキシのリソースを構成する
構成の詳細について展開
構成リファレンス
構成項目 | 説明 |
リソース制限 | Sidecar プロキシコンテナがリクエストできる CPU とメモリの最大リソース。それぞれコア(CPU)と MiB(メモリ)で測定されます。 |
必要なリソース | Sidecar プロキシコンテナが実行時に使用する必要がある CPU とメモリの最小リソース。それぞれコア(CPU)と MiB(メモリ)で測定されます。 |
構成例
[Sidecar プロキシ設定] ページで、ターゲットの構成レベルタブを選択し、[リソース設定] をクリックします。
(オプション) [istio-init コンテナのリソースを構成する] を選択します。これは [名前空間] と [ワークロード] にのみ適用されます。
[リソース制限] セクションで、[CPU] を 2 コア、[メモリ] を 1025 MiB に設定します。[必要なリソース] セクションで、[CPU] を 0.1 コア、[メモリ] を 128 MiB に設定します。
[設定の更新] をクリックします。
ワークロードを再デプロイすると、Sidecar プロキシの構成が有効になります。
次のコマンドを実行して、Sidecar プロキシの構成済みリソースを表示します。
kubectl get pod -n <Namespace> <Pod name> -o yaml期待される出力:
apiVersion: v1 kind: Pod ... spec: containers: - args: - proxy ... name: istio-proxy ... resources: limits: cpu: '2' memory: 1025Mi requests: cpu: 100m memory: 128Mi ...istio-proxyコンテナは、Sidecar プロキシコンテナです。リソース フィールドistio-proxyコンテナのは、想定されるリソース値に設定されています。これは、[istio-init コンテナのリソースを設定] の構成が有効になっていることを示します。
比率で Sidecar リソースを構成する
構成の詳細について展開
構成リファレンス
この構成では、ワークロードコンテナの仕様に基づいて Sidecar プロキシの自動リソース割り当てが有効になります。有効にすると、Pod に注入されたデフォルトの Istio プロキシリソース設定がオーバーライドされます。以下の戦略がサポートされています。
最大コンテナリソースに基づいてリソースを割り当てる
Pod 内のすべてのコンテナを反復処理し、Sidecar プロキシのベースラインとして最も高い CPU またはメモリ制限を使用します。
指定されたコンテナに基づいてリソースを割り当てる
Pod 内の名前でコンテナをベースラインとして指定します。
指定されたコンテナが Pod 内に見つからない場合は、注入された Istio プロキシの Sidecar リソースが適用されます。
Pod にアノテーション
scaled-resource.inject.istio.alibabacloud.com/container-refが含まれている場合、このアノテーションは手動で指定されたコンテナ名よりも優先されます。
戦略に関係なく:
ベースラインコンテナに
limitsがない場合:システムは Sidecar プロキシに制限がないと想定し、制限を構成しません。ベースラインコンテナに
requestsがない場合:Sidecar 機能を確保するために、システムは最小限の実行可能リソースを割り当てます。CPU:少なくとも
100m。メモリ:少なくとも
128Mi。
最小リソース要件:
CPU の
requestsとlimitsは両方とも ≥ 100m である必要があります。メモリの
requestsとlimitsは両方とも ≥ 128Mi である必要があります。
フォールバック動作:計算されたリソースが最小要件を下回る場合、Sidecar プロキシリソースは自動的に最小値に設定されます。
構成例
以下は、さまざまなシナリオでの構成例と対応する効果です。
標準構成
resources:
requests:
cpu: 300m
memory: 512Mi
limits:
cpu: 500m
memory: 1GiRequests が構成されていない
resources:
limits:
cpu: 500m
memory: 1GiLimits が構成されていない
resources:
requests:
cpu: 300m
memory: 512Mi[Sidecar プロキシ設定] ページで、構成レベルタブを選択し、[リソース設定] を展開します。
[比率で Sidecar リソースを構成する] を選択します。
[リソースの割合] を構成し、[計算ポリシー] を選択し(オプション)、[設定の更新] をクリックします。
ワークロードを再デプロイすると、構成が有効になります。
次のコマンドを実行して、Sidecar プロキシの構成済みリソースを表示します。
kubectl get pod -n <Namespace> <Pod name> -o yaml期待される出力:
標準構成
標準構成
[リソースの割合] が 50 に設定されている場合(Sidecar リソースはアプリケーションコンテナのリソースの 50% を取得することを意味します)、最終的な Sidecar リソース割り当ては次のとおりです。
... resources: requests: cpu: 150m memory: 256Mi limits: cpu: 250m memory: 512Mi最小構成
リソースの割合が 20 に設定されている場合、最終的な Sidecar リソース割り当ては次のとおりです。
... resources: requests: cpu: 100m memory: 128Mi limits: cpu: 100m memory: 204Mirequestsが構成されていないリソースの割合が 50 に設定されている場合、最終的な Sidecar リソース割り当ては次のとおりです。
... resources: requests: cpu: 100m memory: 128Mi limits: cpu: 250m memory: 512Milimitsが構成されていないリソースの割合が 50 に設定されている場合、最終的な Sidecar リソース割り当ては次のとおりです。
... resources: requests: cpu: 150m memory: 256Mi
Istio-init コンテナのリソースを構成する
構成の詳細について展開
構成リファレンス
この構成項目は、注入された Sidecar プロキシを持つ Pod 内の istio-init コンテナに必要な最小限および許容される最大 CPU およびメモリリソースを指定します。 istio-init コンテナは、Pod の起動時に実行される init コンテナであり、トラフィックインターセプトルーティングルールと Sidecar プロキシコンテナのその他の前提条件の構成を担当します。
構成項目 | 説明 |
リソース制限 | istio-init コンテナがリクエストできる CPU コアとメモリの最大リソース。それぞれコア(CPU)と MiB(メモリ)で測定されます。 |
必要なリソース | istio-init コンテナが実行時に使用する必要がある CPU コアとメモリの最小リソース。それぞれコア(CPU)と MiB(メモリ)で測定されます。 |
構成例
[Sidecar プロキシ設定] ページで、構成レベルタブを選択し、[リソース設定] をクリックします。
(オプション)手順 1 で [名前空間] または [ワークロード] を選択した場合は、この手順を実行します。次に、[リソース設定] セクションで、[istio-init コンテナのリソースを構成する] を選択します。
[リソース制限] セクションで、[CPU] を 1 コア、[メモリ] を 512 MiB に設定します。[必要なリソース] セクションで、[CPU] を 0.1 コア、[メモリ] を 128 MiB に設定します。次に、[設定の更新] をクリックします。
ワークロードを再デプロイすると、Sidecar プロキシの構成が有効になります。
次のコマンドを実行して、istio-init コンテナのリソース構成を表示します。
kubectl get pod -n <Namespace> <Pod name> -o yaml期待される出力:
apiVersion: v1 kind: Pod ... spec: ... initContainers: - args: ... name: istio-init resources: limits: cpu: '1' memory: 512Mi requests: cpu: 100m memory: 128Mi ...ポッド内の
istio-initコンテナの リソース フィールドは、想定されるリソース値に設定されています。これは、[istio-init コンテナのリソースを設定] の構成が有効になっていることを示します。
Sidecar プロキシ用に動的にオーバーコミットできる ACK リソースを設定する
構成の詳細について展開
構成リファレンス
この構成設定では、注入された Istio プロキシと istio-init コンテナに ACK 動的オーバーアロケートリソースの割り当てを指定します。詳細については、「動的リソースオーバーコミットメント」をご参照ください。
構成項目は、注入された Istio プロキシのリソースを構成するおよびistio-init コンテナのリソースを構成するの場合と同じ方法で構成されます。上記の構成が完了すると、ポッドに koordinator.sh/qosClass ラベルが付いている場合、通常の CPU とメモリ リソースではなく、動的にオーバーコミットできるリソースが、ポッド内の Sidecar プロキシと istio-init コンテナに割り当てられます。このラベルは、ACK リソースの動的オーバーコミットが有効になっていることを示します。
ACK リソースでは、CPU リソースの単位はミリコアです。
構成例
[Sidecar プロキシ設定] ページで、構成レベルタブを選択し、[リソース設定] をクリックします。
[Sidecar プロキシ用に動的にオーバーコミットできる ACK リソースを設定する] を選択し、設定を構成して、[設定の更新] をクリックします。
構成項目
子構成項目
説明
注入された Sidecar プロキシのリソースを構成する(ACK 動的オーバーコミットリソース)
リソース制限
[CPU] を 2000 ミリコア、[メモリ] を 2048 MiB に設定します。
必要なリソース
[CPU] を 200 ミリコア、[メモリ] を 256 MiB に設定します。
Istio-init コンテナリソース(ACK 動的オーバーセリングリソース)
リソース制限
[CPU] を 1000 ミリコア、[メモリ] を 1024 MiB に設定します。
必要なリソース
[CPU] を 100 ミリコア、[メモリ] を 128 MiB に設定します。
ワークロードを再デプロイすると、Sidecar プロキシ構成が有効になります。
次のコマンドを実行して、istio-init コンテナのリソース構成を表示します。
kubectl get pod -n <Namespace> <Pod name> -o yaml予想される出力:
apiVersion: v1 kind: Pod metadata: ... labels: koordinator.sh/qosClass: BE spec: containers: - args: ... name: istio-proxy ... resources: limits: kubernetes.io/batch-cpu: 2k kubernetes.io/batch-memory: 2Gi requests: kubernetes.io/batch-cpu: '200' kubernetes.io/batch-memory: 256Mi ... initContainers: - args: ... name: istio-init resources: limits: kubernetes.io/batch-cpu: 1k kubernetes.io/batch-memory: 1Gi requests: kubernetes.io/batch-cpu: '100' kubernetes.io/batch-memory: 128Mi ...ポッド内の
istio-proxyコンテナ(Sidecar プロキシコンテナ)とistio-initコンテナの両方に、リソース フィールドが含まれており、リソース値が構成されています。これは、[Sidecar プロキシに対して動的にオーバーコミットできる ACK リソースの設定] が有効になっていることを示しています。
サイドカー プロキシ スレッドの数
構成について学習するには展開します
構成リファレンス
この構成項目は、サイドカー プロキシ コンテナのワーカー スレッドの数を指定します。 負でない整数である必要があります。 0 に設定すると、ワーカー スレッドの数は、サイドカー プロキシに構成されている リクエストされた CPU リソース または CPU リソース制限 に基づいて自動的に決定されます。リソース制限は、リクエストされたリソースよりも優先されます。
構成例
[サイドカー プロキシ設定] ページで、構成レベルタブを選択し、[リソース設定] をクリックします。
(オプション) ステップ 1 で [名前空間] または [ワークロード] を選択した場合は、この手順を実行します。 [サイドカー プロキシ スレッドの数] を 3 に設定し、[設定の更新] をクリックします。
この構成は、サイドカー プロキシ コンテナが実行時に 3 つのワーカー スレッドを起動することを示しています。
ワークロードを再デプロイすると、サイドカー プロキシの構成が有効になります。
サイドカー プロキシ スレッドの数の構成を表示するには、次のコマンドを実行します。
kubectl get pod -n <Namespace> <Pod name> -o yaml予想される出力:
apiVersion: v1 kind: Pod ... spec: ... - args: - proxy - sidecar - '--domain' - $(POD_NAMESPACE).svc.cluster.local - '--proxyLogLevel=warning' - '--proxyComponentLogLevel=misc:error' - '--log_output_level=default:info' - '--concurrency' - '3' ... name: istio-proxy ...concurrency パラメーター
istio-proxyコンテナが3に設定されています。これは、[サイドカー プロキシ スレッドの数] の構成が有効になっていることを示します。
Sidecar プロキシに外部アクセスがリダイレクトされるアドレスを構成する
構成について学習するには展開します
構成リファレンス
カンマ (,) で区切られた IP アドレス範囲のリストを構成します。各 IP アドレス範囲は CIDR 表記で指定されます。Sidecar プロキシが挿入されたワークロードが他のサービスにアクセスする場合、構成された範囲内の宛先 IP アドレスを持つリクエストのみが Sidecar プロキシコンテナによってインターセプトされます。これらの範囲外の リクエスト は Sidecar プロキシをバイパスし、宛先に直接送信されます。デフォルトの構成は * に設定されています。これは、Sidecar プロキシコンテナがワークロードからのすべてのアウトバウンドトラフィックをインターセプトすることを意味します。
構成例
[Sidecar プロキシ設定] ページで、構成レベルタブを選択し、[ポートまたは IP アドレスによる Sidecar プロキシの有効化/無効化] を展開します。
(オプション) ステップ 1 で [ワークロード] または [名前空間] を選択した場合は、この手順を実行します。[Sidecar プロキシにリダイレクトされる外部アクセスのアドレス] を選択します。
[Sidecar プロキシにリダイレクトされる外部アクセスのアドレス] を 192.168.0.0/16,10.1.0.0/24 に設定し、[設定の更新] をクリックします。
この構成は、Sidecar プロキシコンテナが、宛先 IP アドレスが 192.168.0.0/16 および 10.1.0.0/24 CIDR ブロック内にあるリクエストをインターセプトすることを示します。
Sidecar プロキシの構成を有効にするには、ワークロードを再デプロイする必要があります。
構成を表示するには、次のコマンドを実行します。
kubectl get pod -n <Namespace> <Pod name> -o yaml予想される出力:
apiVersion: v1 kind: Pod ... spec: ... initContainers: - args: - istio-iptables - '-p' - '15001' - '-z' - '15006' - '-u' - '1337' - '-m' - REDIRECT - '-i' - '192.168.0.0/16,10.1.0.0/24' // Sidecar プロキシにリダイレクトされるアドレス - '-x' - 192.168.0.1/32 - '-b' - '*' - '-d' - '15090,15021,15081,9191,15020' - '--log_output_level=default:info' ... name: istio-init ...istio-initコンテナのランタイムパラメータ -i は192.168.0.0/16,10.1.0.0/24に設定されています。これは、[Sidecar プロキシにリダイレクトされる外部アクセスのアドレス] の構成が有効になっていることを示します。
Sidecar プロキシに外部アクセスがリダイレクトされないアドレスを構成する
構成について学習するには展開します
構成リファレンス
カンマ (,) で区切られた IP アドレス範囲のリストを構成します。各範囲は CIDR 表記で指定されます。Sidecar プロキシが挿入されたワークロードが他のサービスにアクセスすると、Sidecar プロキシコンテナがアウトバウンドトラフィックをインターセプトします。ただし、リクエストの宛先 IP アドレスが構成済みの CIDR 範囲内にある場合、リクエストは Sidecar プロキシコンテナによってインターセプトされません。
IP アドレスが [Sidecar プロキシに外部アクセスがリダイレクトされないアドレス] と [Sidecar プロキシに外部アクセスがリダイレクトされるアドレス] の両方の構成項目で指定されている場合、Sidecar プロキシコンテナは、宛先アドレスがこの IP アドレスであるリクエストをインターセプトしません。詳細については、「Sidecar プロキシに外部アクセスがリダイレクトされるアドレスを構成する」をご参照ください。
構成例
[Sidecar プロキシ設定] ページで、構成レベルタブを選択し、[ポートまたは IP アドレスで Sidecar プロキシを有効化/無効化する] を展開します。
(オプション) ステップ 1 で [ワークロード] または [名前空間] を選択した場合は、この手順を実行します。[Sidecar プロキシに外部アクセスがリダイレクトされないアドレス] を選択します。
[Sidecar プロキシに外部アクセスがリダイレクトされないアドレス] を 10.1.0.0/24 に設定し、[設定の更新] をクリックします。
この構成は、宛先 IP アドレスが 10.1.0.0/24 CIDR ブロック内にあるリクエストを sidecar プロキシコンテナがインターセプトしないことを示します。
ワークロードを再デプロイする と、Sidecar プロキシの構成が有効になります。
構成を表示するには、次のコマンドを実行します。
kubectl get pod -n <Namespace> <Pod name> -o yaml予想される出力:
apiVersion: v1 kind: Pod ... spec: ... initContainers: - args: - istio-iptables - '-p' - '15001' - '-z' - '15006' - '-u' - '1337' - '-m' - REDIRECT - '-i' - '*' - '-x' - '192.168.0.1/32,10.1.0.0/24' // デフォルトで構成されたホストのCIDRブロックとSidecarプロキシ設定で指定されたIPアドレス範囲 - '-b' - '*' - '-d' - '15090,15021,15081,9191,15020' - '--log_output_level=default:info' ... name: istio-init ...istio-initコンテナのランタイムパラメータ -x は192.168.0.1/32,10.1.0.0/24に設定されています。192.168.0.1/32は、デフォルトで構成されたホストの CIDR ブロックです。10.1.0.0/24は、Sidecar プロキシ構成で指定された IP アドレス範囲と同じです。これは、[Sidecar プロキシに外部アクセスがリダイレクトされないアドレス] の構成が有効になっていることを示します。
サイドカープロキシにリダイレクトされるインバウンドトラフィックのポートを構成する
構成について学習するには展開します
構成リファレンス
カンマ (,) で区切られたポート番号のリストを構成します。 サイドカープロキシコンテナは、宛先ポートがリストにあるインバウンドトラフィックをインターセプトします。 デフォルト値は [*] で、サイドカープロキシコンテナがワークロードのすべてのインバウンドトラフィックをインターセプトすることを示します。
構成例
[サイドカープロキシ設定] ページで、構成レベルタブを選択し、[ポートまたは IP アドレスによるサイドカープロキシの有効化/無効化] をクリックします。
(オプション) ステップ 1 で [ワークロード] または [名前空間] を選択した場合は、この手順を実行します。 [ポートまたは IP アドレスによるサイドカープロキシの有効化/無効化] セクションで、[サイドカープロキシにリダイレクトされるインバウンドトラフィックのポート] を選択します。
[サイドカープロキシにリダイレクトされるインバウンドトラフィックのポート] を 80,443 に設定し、[設定の更新] をクリックします。
この構成は、サイドカープロキシコンテナが対応するワークロードのポート 80 および 443 宛てのリクエストをインターセプトすることを示します。
ワークロードを再デプロイすると、サイドカープロキシの構成が有効になります。
以下のコマンドを実行して、構成済みを表示します。
kubectl get pod -n <Namespace> <Pod name> -o yaml期待される出力:
apiVersion: v1 kind: Pod ... spec: ... initContainers: - args: - istio-iptables - '-p' - '15001' - '-z' - '15006' - '-u' - '1337' - '-m' - REDIRECT - '-i' - '*' - '-x' - 192.168.0.1/32 - '-b' - '80,443' - '-d' - '15090,15021,15081,9191,15020' - '--log_output_level=default:info' ... name: istio-init ...istio-initコンテナのランタイムパラメータ -b は80,443に設定されています。これは、サイドカープロキシ構成で設定されたインバウンドポートと同じです。 これは、[サイドカープロキシにリダイレクトされるインバウンドトラフィックのポート] の構成が有効になっていることを示します。
Sidecar プロキシにリダイレクトされるアウトバウンドトラフィックのポートを構成する
構成について学習するには展開します
構成リファレンス
カンマ (,) で区切られたポート番号のリストを構成します。 Sidecar プロキシコンテナは、宛先ポートがリストに含まれるアウトバウンドトラフィックをインターセプトします。
宛先ポートが指定されたリストに含まれていても、以下のすべての条件が満たされている場合、Sidecar プロキシコンテナはこのリクエストをインターセプトしません。1. この構成項目と [Sidecar プロキシにリダイレクトされない外部アクセスのアドレス] または [Sidecar プロキシにリダイレクトされないアウトバウンドトラフィックのポート] の両方が構成されている。2. リクエストの宛先 IP アドレスが [Sidecar プロキシにリダイレクトされない外部アクセスのアドレス] に含まれているか、リクエストの宛先サービスポートが [Sidecar プロキシにリダイレクトされないアウトバウンドトラフィックのポート] に含まれている。詳細については、「Sidecar プロキシにリダイレクトされない外部アクセスのアドレスを構成する」および「Sidecar プロキシにリダイレクトされないアウトバウンドトラフィックのポートを構成する」をご参照ください。
構成例
[Sidecar プロキシ設定] ページで、構成レベルタブを選択し、[ポートまたは IP アドレスによる Sidecar プロキシの有効化/無効化] をクリックします。
(オプション) ステップ 1 で [ワークロード] または [名前空間] を選択した場合は、この手順を実行します。 [Sidecar プロキシにリダイレクトされるアウトバウンドトラフィックのポート] を選択します。
[Sidecar プロキシにリダイレクトされるアウトバウンドトラフィックのポート] を 80,443 に設定し、[設定の更新] をクリックします。
この構成は、Sidecar プロキシコンテナがポート 80 および 443 宛てのリクエストをインターセプトすることを示します。
ワークロードを再デプロイすると、Sidecar プロキシの構成が有効になります。
構成を表示するには、次のコマンドを実行します。
kubectl get pod -n <Namespace> <Pod name> -o yaml予想される出力:
apiVersion: v1 kind: Pod ... spec: ... initContainers: - args: - istio-iptables - '-p' - '15001' - '-z' - '15006' - '-u' - '1337' - '-m' - REDIRECT - '-i' - '*' - '-x' - 192.168.0.1/32 - '-b' - '*' - '-d' - '15090,15021,15081,9191,15020' - '--log_output_level=default:info' - '-q' - '80,443' - '--log_output_level=default:info' ... name: istio-init ...istio-initコンテナのランタイムパラメータ -q は80,443に設定されています。これは、Sidecar プロキシ構成で設定されたアウトバウンドポートと同じです。これは、[Sidecar プロキシにリダイレクトされるアウトバウンドトラフィックのポート] の構成が有効になっていることを示します。
Sidecar プロキシにリダイレクトされない受信トラフィックのポートを構成する
構成について学習するには展開します
構成リファレンス
カンマ (,) で区切られたポートのリストを構成します。リスト内のポート宛ての受信トラフィックは、Sidecar プロキシコンテナによってインターセプトされません。
この構成項目は、[Sidecar プロキシにリダイレクトされる受信トラフィックのポート] がデフォルト値 [*] に設定されている場合にのみ有効になります。これは、Sidecar プロキシコンテナがすべての受信トラフィックをインターセプトすることを示します。
構成例
[Sidecar プロキシ設定] ページで、構成レベルタブを選択し、[ポートまたは IP アドレスによる Sidecar プロキシの有効化/無効化] をクリックします。
(オプション) ステップ 1 で [ワークロード] または [名前空間] を選択した場合は、この手順を実行します。[Sidecar プロキシにリダイレクトされない受信トラフィックのポート] を選択します。
[Sidecar プロキシにリダイレクトされない受信トラフィックのポート] を 8000 に設定し、[設定の更新] をクリックします。
この構成は、Sidecar プロキシコンテナがワークロードのポート 8000 宛てのリクエストをインターセプトしなくなることを示します。
ワークロードを再デプロイすると、Sidecar プロキシの構成が有効になります。
構成を表示するには、次のコマンドを実行します。
kubectl get pod -n <Namespace> <Pod name> -o yaml予想される出力:
apiVersion: v1 kind: Pod ... spec: ... initContainers: - args: - istio-iptables - '-p' - '15001' - '-z' - '15006' - '-u' - '1337' - '-m' - REDIRECT - '-i' - '*' - '-x' - 192.168.0.1/32 - '-b' - '*' - '-d' - '15090,15021,15081,9191,15020,8000' - '--log_output_level=default:info' ... name: istio-init ...istio-initコンテナのランタイムパラメータ -d は15090,15021,15081,9191,8000に設定されています。15090、15021、15081、および 9191は、Sidecar プロキシのアプリケーションポートです。デフォルトでは、Sidecar プロキシコンテナは、これらのポート宛ての受信トラフィックをインターセプトしません。ポート8000は、Sidecar プロキシ構成で設定された受信ポートと同じです。これは、[Sidecar プロキシにリダイレクトされない受信トラフィックのポート] の構成が有効になっていることを示します。
サイドカープロキシにリダイレクトされない送信トラフィックのポートを構成する
構成について学習するには展開します
構成リファレンス
カンマ (,) で区切られたポートのリストを構成します。リスト内のポート宛ての送信トラフィックは、宛先サービスの IP アドレスが [サイドカープロキシに外部アクセスがリダイレクトされるアドレス] に含まれているかどうかに関係なく、また、宛先サービスのポートが [サイドカープロキシに送信トラフィックがリダイレクトされるポート] に含まれているかどうかに関係なく、サイドカープロキシによってインターセプトされません。
構成例
[サイドカープロキシ設定] ページで、構成レベルタブを選択し、[ポートまたは IP アドレスによるサイドカープロキシの有効化/無効化] をクリックします。
(オプション) ステップ 1 で [ワークロード] または [名前空間] を選択した場合は、この手順を実行します。 [サイドカープロキシにリダイレクトされない送信トラフィックのポート] を選択します。
[サイドカープロキシにリダイレクトされない送信トラフィックのポート] を 8000 に設定し、[設定の更新] をクリックします。
この構成は、サイドカープロキシコンテナがポート 8000 宛てのサービスリクエストをインターセプトしなくなることを示しています。
ワークロードを再デプロイすると、サイドカープロキシの構成が有効になります。
構成を表示するには、次のコマンドを実行します。
kubectl get pod -n <Namespace> <Pod name> -o yaml期待される出力:
apiVersion: v1 kind: Pod ... spec: ... initContainers: - args: - istio-iptables - '-p' - '15001' - '-z' - '15006' - '-u' - '1337' - '-m' - REDIRECT - '-i' - '*' - '-x' - 192.168.0.1/32 - '-b' - '*' - '-d' - '15090,15021,15081,9191,15020' - '--log_output_level=default:info' - '-o' - '8000' ... name: istio-init ...istio-initコンテナのランタイムパラメータ -o は8000に設定されています。これは、構成項目 [サイドカープロキシにリダイレクトされないアウトバウンドトラフィックのポート] で設定されたポートと同じです。これは、構成項目が有効になっていることを示します。
DNS プロキシを有効にする
構成について学習するには展開します
構成リファレンス
DNS プロキシが有効になっている場合、Sidecar プロキシはワークロードの DNS リクエストをインターセプトして、ASM のパフォーマンスと可用性を向上させます。 ワークロードからのすべてのリクエストは Sidecar プロキシにリダイレクトされます。 Sidecar プロキシは IP アドレスとローカルドメイン名のマッピングを保存するため、DNS リクエストが解決できない場合を除き、ほとんどの場合、リモート DNS サービスをリクエストせずにワークロードに DNS 応答を返します。 詳細については、「ASM インスタンスで DNS プロキシ機能を使用する」をご参照ください。
ネットワーク権限のため、ACK Serverless クラスターまたは Elastic Container Instance ベースのポッドの ACK クラスターでは、Sidecar プロキシの DNS プロキシ機能を有効にできません。
構成例
[Sidecar プロキシ設定] ページで、構成レベルタブを選択し、[DNS プロキシ] をクリックします。
(オプション) ステップ 1 で [ワークロード] または [名前空間] を選択した場合は、この手順を実行します。 [DNS プロキシを有効にする] を選択し、スイッチをオンにして、[設定を更新] をクリックします。
ワークロードを再デプロイすると、Sidecar プロキシの構成が有効になります。
次のコマンドを実行して、構成を表示します。
kubectl get pod -n <Namespace> <Pod name> -o yaml予想される出力:
apiVersion: v1 kind: Pod spec: containers: - args: - proxy - sidecar - '--domain' - $(POD_NAMESPACE).svc.cluster.local - '--proxyLogLevel=warning' - '--proxyComponentLogLevel=misc:error' - '--log_output_level=default:info' - '--concurrency' - '3' env: ... - name: ISTIO_META_DNS_AUTO_ALLOCATE value: 'true' - name: ISTIO_META_DNS_CAPTURE value: 'true' ... name: istio-proxyISTIO_META_DNS_AUTO_ALLOCATEおよびISTIO_META_DNS_CAPTURE環境変数のistio-proxyコンテナがtrueに設定されています。これは、[DNS プロキシ] の構成が有効になっていることを示します。
Sidecar プロキシの環境変数を管理する
構成について学習するには展開します
構成リファレンス
これらの構成項目は、Sidecar プロキシコンテナに追加の環境変数を追加するために使用されます。 Sidecar プロキシには、次の環境変数を構成できます。
構成項目 | 説明 |
Sidecar グレースフルシャットダウン | このスイッチをオンにすると、環境変数 Sidecar プロキシコンテナが終了すると、コンテナ内の pilot-agent プロセスはまず Envoy プロキシがインバウンドトラフィックを listen するのを停止し、デフォルトの 5 秒間待機します。 次に、pilot-agent プロセスは、アクティブな接続の数がゼロになるまで Envoy プロキシのアクティブな接続の数をポーリングし始め、最終的に Envoy プロキシプロセスを終了します。 重要 EXIT_ON_ZERO_ACTIVE_CONNECTIONS が true に設定されている場合、構成項目 ポッドの終了時の Sidecar プロキシのドレイン期間 は有効になりません。 詳細については、「ポッドの終了時に Sidecar プロキシのドレイン期間を構成する」をご参照ください。 |
構成例
[Sidecar プロキシ設定] ページで、構成レベルタブを選択し、[Sidecar プロキシの環境変数を管理する] をクリックします。
(オプション)手順 1 で [ワークロード] または [名前空間] を選択した場合は、この手順を実行します。 [Sidecar グレースフルシャットダウン] を選択します。
スイッチをオンにして、[設定の更新] をクリックします。
ワークロードを再デプロイする と、Sidecar プロキシの構成が有効になります。
次のコマンドを実行して、構成を表示します。
kubectl get pod -n <Namespace> <Pod name> -o yaml予想される出力:
apiVersion: v1 kind: Pod ... spec: containers: - args: ... env: - name: EXIT_ON_ZERO_ACTIVE_CONNECTIONS value: 'true' name: istio-proxy ...EXIT_ON_ZERO_ACTIVE_CONNECTIONS環境変数が、ポッド内のistio-proxyコンテナの環境変数に追加されます。 これは、Sidecar プロキシの環境変数を管理する の構成が有効になっていることを示します。
サイドカーのグレースフルスタートアップ
構成について学習するには展開します
構成リファレンス
Sidecar Graceful Startup は、Sidecar プロキシのライフサイクルを管理するために使用されます。デフォルトでは、有効になっています。これは、Sidecar プロキシが挿入されたポッドの場合、アプリケーションコンテナの前に Sidecar プロキシを起動する必要があることを示します。目的は、Sidecar プロキシが起動されていない場合に、アプリケーションコンテナ宛てのトラフィックが失われないようにすることです。
この構成項目が無効になっている場合、Sidecar プロキシ コンテナとポッド内のアプリケーション コンテナは同時に起動されます。クラスターに多数のポッドがデプロイされている場合、API サーバーの負荷が高いため、Sidecar プロキシ コンテナの起動が遅くなる可能性があります。デプロイメントを高速化するには、この構成項目を無効にすることができます。
構成例
次の例では、[サイドカーのグレースフルスタートアップ] を [グローバル] タブで無効にする方法について説明します。
[サイドカープロキシ設定] ページで、[グローバル] タブを選択し、[ライフサイクル管理] をクリックします。
[サイドカーのグレースフルスタートアップ] の横にあるスイッチをオフにし、[設定の更新] をクリックします。
ワークロードを再デプロイすると、Sidecar プロキシ構成が有効になります。
以下のコマンドを実行して構成を表示します。
kubectl get pod -n <Namespace> <Pod name> -o yaml予想される出力:
apiVersion: v1 kind: Pod ... spec: containers: - command: ... name: sleep ... env: - name: PROXY_CONFIG value: >- {..."holdApplicationUntilProxyStarts":false,...} ... name: istio-proxy ...[サイドカーのグレースフルスタートアップ] が無効になっている場合、アプリケーションコンテナが起動する前に
istio-proxyコンテナを起動する必要はなく、デフォルトの ライフサイクル フィールドは宣言されません。
ポッド終了時の Sidecar プロキシ ドレイン期間の構成
構成について学習するには、展開してください
構成リファレンス
[Sidecar プロキシ ドレイン期間(ポッド終了時)] は、Sidecar プロキシのライフサイクルを管理するためのものです。
ポッドの終了が開始されると、サービスはポッドへのトラフィックのルーティングを停止します。 Sidecar プロキシコンテナは、終了シグナルを受信した後も一定期間既存の受信トラフィックを処理し続けますが、新しい受信トラフィックは受け入れません。この期間は [Sidecar プロキシ ドレイン期間(ポッド終了時)] と呼ばれます。デフォルト値は 5s です。この構成項目は、10s などの秒単位の値に設定する必要があります。
停止されるサービスによって提供される一部の API の応答時間が Sidecar プロキシ ドレイン期間(ポッド終了時)を超えると、処理されていない場合でも、既存のすべての送受信接続が終了します。その結果、一部のリクエストが失われます。この場合は、送受信トラフィックの処理が完了できるように、より大きな値に設定します。
構成例
[Sidecar プロキシ設定] ページで、構成レベルタブを選択し、[ライフサイクル管理] をクリックします。
(オプション)手順 1 で [ワークロード] または [名前空間] を選択した場合は、この手順を実行します。 [Sidecar プロキシ ドレイン期間(ポッド終了時)] を選択します。
10s に設定し、[設定の更新] をクリックします。
ワークロードを再デプロイすると、Sidecar プロキシ構成が有効になります。
構成を表示するには、次のコマンドを実行します。
kubectl get pod -n <Namespace> <Pod name> -o yaml予想される出力:
apiVersion: v1 kind: Pod ... spec: containers: - args: ... env: - name: TERMINATION_DRAIN_DURATION_SECONDS value: '10' ... - name: PROXY_CONFIG value: >- {..."terminationDrainDuration":"10s"} ... name: istio-proxy ...ポッド内の
istio-proxyコンテナは、値が10のTERMINATION_DRAIN_DURATION_SECONDSという名前の環境変数と、PROXY_CONFIG内のterminationDrainDurationが10sで構成されています。これは、[Sidecar プロキシ ドレイン期間(ポッド終了時)] の構成が有効になっていることを示しています。
Sidecar プロキシのライフサイクルを設定する
構成について学習するには展開します
構成リファレンス
Sidecar プロキシコンテナのライフサイクルフックをカスタマイズするには、コンテナライフサイクルフックフィールド(lifecycle)を JSON 形式で入力します。このフィールドは、Sidecar プロキシコンテナに構成されているデフォルトのコンテナライフサイクルフックフィールドを置き換えます。詳細については、「コンテナライフサイクルフック」をご参照ください。
構成例
[Sidecar プロキシ設定] ページで、構成レベルタブを選択し、[ライフサイクル管理] をクリックします。
(オプション)手順 1 で [ワークロード] または [名前空間] を選択した場合は、この手順を実行します。[Sidecar プロキシのライフサイクル] を選択します。
[Sidecar プロキシのライフサイクル] の下の編集ボックスで、次の YAML ファイルを構成し、[設定の更新] をクリックします。
この YAML ファイルは、postStart および preStop フックパラメータを構成します。
postStart: Sidecar プロキシコンテナの起動後、 pilot-agent が pilot-agent と Envoy プロキシの完全な起動を待機し始めることを示します。
preStop: Sidecar プロキシコンテナが停止する前に 13 秒間スリープすることを示します。
{ "postStart": { "exec": { "command": [ "pilot-agent", "wait" ] } }, "preStop": { "exec": { "command": [ "/bin/sh", "-c", "sleep 13" ] } } }ワークロードを再デプロイすると、Sidecar プロキシ構成が有効になります。
構成を表示するには、次のコマンドを実行します。
kubectl get pod -n <Namespace> <Pod name> -o yaml予想される出力:
apiVersion: v1 kind: Pod ... spec: containers: - args: ... ... lifecycle: postStart: exec: command: - pilot-agent - wait preStop: exec: command: - /bin/sh - -c - sleep 13 name: istio-proxy ...ポッド内の
istio-proxyコンテナのライフサイクルフックフィールド(lifecycle)が、想定される構成に変更されています。これは、[Sidecar プロキシのライフサイクル] の構成が有効になっていることを示します。
アウトバウンドトラフィックポリシーを構成する
構成について学習するには展開します
構成リファレンス
この構成項目は、Sidecar プロキシコンテナのアウトバウンドトラフィックポリシーを構成するために使用されます。外部サービスとは、ASM のサービスレジストリで定義されていないサービスを指します。デフォルトでは、ASM によって管理される Kubernetes クラスタ内のサービスは登録済みサービスです。サービスエントリ(ServiceEntry)リソースを宣言することで、サービスを ASM に手動で登録できます。
この構成項目は、次の 2 つの値のいずれかに設定できます。
ALLOW_ANY:デフォルトのアウトバウンドトラフィックポリシー。Sidecar プロキシは外部サービスへのアクセスを許可し、外部サービス宛てのリクエストを転送します。
REGISTRY_ONLY:Sidecar プロキシは外部サービスへのアクセスを拒否します。ワークロードは外部サービスへの接続を確立できません。
この構成項目はグローバルレベルです。名前空間レベルまたはワークロードレベルでアウトバウンドトラフィックポリシーを構成するには、ASM コンソール にログインし、目的の ASM インスタンスを見つけ、[トラフィック管理センター] > [Sidecar トラフィック構成] に移動し、関連パラメーターを構成します。
構成例
[グローバル] タブの [Sidecar プロキシ設定] ページで、[アウトバウンドトラフィックポリシー] をクリックし、[REGISTRY_ONLY] を選択して、[設定の更新] をクリックします。
ワークロードを再デプロイすると、Sidecar プロキシ構成が有効になります。
次の内容を含む sleep.yaml ファイルを作成します。
apiVersion: v1 kind: ServiceAccount metadata: name: sleep --- apiVersion: v1 kind: Service metadata: name: sleep labels: app: sleep service: sleep spec: ports: - port: 80 name: http selector: app: sleep --- apiVersion: apps/v1 kind: Deployment metadata: name: sleep spec: replicas: 1 selector: matchLabels: app: sleep template: metadata: labels: app: sleep spec: terminationGracePeriodSeconds: 0 serviceAccountName: sleep containers: - name: sleep image: curlimages/curl command: ["/bin/sleep", "3650d"] imagePullPolicy: IfNotPresent volumeMounts: - mountPath: /etc/sleep/tls name: secret-volume volumes: - name: secret-volume secret: secretName: sleep-secret optional: true ---次のコマンドを実行して、sleep アプリケーションをデプロイします。
kubectl apply -f sleep.yaml -n default次のコマンドを実行して、sleep アプリケーションを使用して外部サービスにアクセスします。
kubectl exec -it {Name of the pod for the sleep service} -c sleep -- curl www.aliyun.com -v予想される出力:
* Trying *********... * Connected to www.aliyun.com (********) port 80 (#0) > GET / HTTP/1.1 > Host: www.aliyun.com > User-Agent: curl/7.87.0-DEV > Accept: */* > * Mark bundle as not supporting multiuse < HTTP/1.1 502 Bad Gateway < date: Mon,********* 03:25:00 GMT < server: envoy < content-length: 0 < * Connection #0 to host www.aliyun.com left intactHTTP ステータスコード
502が返されます。これは、Sidecar プロキシが挿入された sleep アプリケーションが外部サービスwww.aliyun.comにアクセスできないことを示しています。これは、[アウトバウンドトラフィックポリシー] の構成が有効になっていることを示しています。
サイドカーのトラフィックインターセプトモードを構成する
構成について学習するには、展開します
構成リファレンス
この構成項目は、サイドカープロキシのインバウンドトラフィックインターセプト戦略を設定します。 デフォルトでは、サイドカープロキシコンテナは iptables リダイレクトポリシーを使用して、アプリケーションワークロード宛てのインバウンドトラフィックをインターセプトします。 リダイレクトを介してインターセプトした後、アプリケーションはリクエストの送信元 IP として サイドカープロキシコンテナの IP のみを確認し、元のクライアント送信元 IP を識別できません。
インバウンドトラフィックインターセプト戦略を透過プロキシモード(TPROXY)に変更することにより、ASM はサイドカープロキシコンテナが iptables の透過プロキシモードを使用してインバウンドトラフィックをインターセプトできるようにします。 この構成の後、アプリケーションは元のクライアント送信元 IP を確認できるようになります。 詳細については、「クライアントが ASM のサービスにアクセスする際にクライアントの送信元 IP アドレスを保持する」をご参照ください。
透過プロキシモードは CentOS をサポートしていません。 ポッドが CentOS オペレーティングシステムで実行されている場合は、リダイレクトポリシーを使用してください。
構成例
[サイドカープロキシ設定] ページで、構成レベルタブを選択し、[サイドカートラフィックインターセプトモード] をクリックします。
(オプション)手順 1 で [ワークロード] または [名前空間] を選択した場合は、この手順を実行します。 [サイドカートラフィックインターセプトモード] を選択します。
[サイドカートラフィックインターセプトモード] の右側で、[TPROXY] を選択し、[設定の更新] をクリックします。
ワークロードを再デプロイすると、サイドカープロキシの構成が有効になります。
サイドカートラフィックインターセプトモードの構成を表示するには、次のコマンドを実行します。
kubectl get pod -n <Namespace> <Pod name> -o yaml期待される出力:
apiVersion: v1 kind: Pod ... spec: containers: - args: ... - name: PROXY_CONFIG value: >- {..."interceptionMode":"TPROXY",...} - name: ISTIO_META_POD_PORTS value: |- [ ] ... name: istio-proxy ... initContainers: - args: - istio-iptables - '-p' - '15001' - '-z' - '15006' - '-u' - '1337' - '-m' - TPROXY ... name: istio-init ..."interceptionMode":"TPROXY"は、ポッド内のistio-proxyコンテナの環境変数に記録されます。istio-initコンテナも TPROXY 設定を使用して初期化コマンドを実行します。 これは、[サイドカートラフィックインターセプトモード] の構成が有効になっていることを示します。
ログレベルを設定する
構成について学習するには、展開します
構成リファレンス
この構成項目は、Sidecar プロキシコンテナのログレベルを設定するために使用されます。 デフォルトでは、Sidecar プロキシのログレベルは info です。 ログレベルは、info、debug、trace、warning、error、critical、off の 7 つのレベルのいずれかに設定できます。
構成例
[Sidecar プロキシ設定] ページで、構成レベルタブを選択し、[監視統計] をクリックします。
(オプション) ステップ 1 で [ワークロード] または [名前空間] を選択した場合は、この手順を実行します。 [ログレベル] を選択します。
[ログレベル] ドロップダウンリストから [error] を選択し、[設定の更新] をクリックします。
この構成は、Sidecar プロキシが error レベル以上のログを表示することを示します。
ワークロードを再デプロイすると、Sidecar プロキシの構成が有効になります。
構成を表示するには、次のコマンドを実行します。
kubectl get pod -n <Namespace> <Pod name> -o yaml予想される出力:
apiVersion: v1 kind: Pod ... spec: containers: - args: - proxy - sidecar - '--domain' - $(POD_NAMESPACE).svc.cluster.local - '--proxyLogLevel=error' ... name: istio-proxy ...istio-proxyコンテナのランタイムパラメータ--proxyLogLevelが error に設定されています。これは、[ログレベル] の構成が有効になっていることを示します。
proxyStatsMatcher の構成
構成について学習するには展開します
構成項目の説明
この構成項目は、Sidecar プロキシによって報告されるカスタム Envoy 統計メトリクスを定義します。Sidecar プロキシの技術実装である Envoy は、広範囲のメトリクスを収集および報告できます。ただし、ASM はデフォルトでこれらのメトリクスのサブセットのみを有効にして、Sidecar プロキシのパフォーマンスオーバーヘッドを最小限に抑えます。
この構成項目を使用して、プレフィックス、サフィックス、または正規表現を照合することにより、Sidecar プロキシが収集および公開する必要がある追加のメトリクスを指定できます。
構成例
[Sidecar プロキシ設定] ページで、構成レベルタブを選択し、[モニタリング統計] をクリックします。
[proxyStatsMatcher] と [正規表現一致] を選択し、正規表現一致を .*outlier_detection.* に設定します。
この構成は、Sidecar プロキシがサーキットブレーカーメトリクスの統計を収集することを示します。
詳細については、「ワークロードを再デプロイする」をご参照ください。Sidecar プロキシの構成を有効にするには、ワークロードを再デプロイする必要があります。
次のコマンドを実行して、proxyStatsMatcher の構成を表示します。
kubectl get pod -n <Namespace> <Pod name> -o yaml予想される出力:
apiVersion: v1 kind: Pod ... spec: containers: - args: ... - name: PROXY_CONFIG value: >- {..."proxyStatsMatcher":{"inclusionRegexps":[".*outlier_detection.*"]},...} ...カスタムメトリクスは、ポッド内の
istio-proxyコンテナの環境変数で更新されます。これは、[proxyStatsMatcher] の構成が有効になっていることを示します。
Envoy ランタイム パラメーターを構成する
構成について学習するには、展開します
構成リファレンス
この構成項目は、Sidecar プロキシ コンテナ内の Envoy プロキシ プロセスのランタイム パラメーターを定義するために使用されます。
構成項目 | 説明 |
ダウンストリーム接続の制限 | デフォルトでは、Sidecar プロキシはダウンストリーム接続の数を制限しません。これは、悪意のあるアクティビティによって悪用される可能性があります。詳細については、「ISTIO-SECURITY-2020-007」をご参照ください。Sidecar プロキシで許可されるダウンストリーム接続の最大数を構成できます。 |
構成例
[Sidecar プロキシ設定] ページで、構成レベル タブを選択します。
[Envoy ランタイム パラメーター] セクションで、[ダウンストリーム接続の制限] の右側にある入力ボックスに 5000 と入力し、[設定の更新] をクリックします。
ワークロードを再デプロイすると、Sidecar プロキシの構成が有効になります。
Sidecar プロキシの環境変数の管理の構成を表示するには、次のコマンドを実行します。
kubectl get pod -n <Namespace> <Pod name> -o yaml予想される出力:
apiVersion: v1
kind: Pod
...
spec:
containers:
- args:
...
env:
- name: PROXY_CONFIG
value: >-
{"concurrency":2,"configPath":"/etc/istio/proxy","discoveryAddress":"istiod-1-22-6.istio-system.svc:15012","holdApplicationUntilProxyStarts":true,"interceptionMode":"REDIRECT","proxyMetadata":{"BOOTSTRAP_XDS_AGENT":"false","DNS_AGENT":"","EXIT_ON_ZERO_ACTIVE_CONNECTIONS":"true"},"runtimeValues":{"overload.global_downstream_max_connections":"5000"},"terminationDrainDuration":"5s","tracing":{"zipkin":{"address":"zipkin.istio-system:9411"}}}
name: istio-proxy
..."runtimeValues":{"overload.global_downstream_max_connections":"5000"} フィールドは、ポッド内の istio-proxyEnvoy ランタイム パラメータ コンテナの PROXY_CONFIG 環境変数に追加されます。これは、 の構成が有効になっていることを示します。