サイドカープロキシは、サービスコールのネットワークセキュリティ、信頼性、および可観測性を向上させるのに役立ちます。Service Mesh (ASM) は、Istio のサイドカープロキシの設定を改良し、名前空間レベルのサイドカープロキシをサポートすることで、サイドカープロキシをより適切に管理できるようにします。このトピックでは、名前空間レベルのサイドカープロキシのリソース、ライフサイクル、および終了ドレイン期間などの設定方法について説明します。
前提条件
バージョンが v1.10.5 以降の ASM インスタンスが作成されていること。詳細については、「ASM インスタンスを作成する」をご参照ください。
ACK マネージドクラスターが作成されていること。詳細については、「ACK マネージドクラスターを作成する」をご参照ください。
クラスターが ASM インスタンスに追加されていること。詳細については、「クラスターを ASM インスタンスに追加する」をご参照ください。
自動サイドカーインジェクションが有効になっていること。詳細については、「自動サイドカープロキシインジェクションを有効にする」をご参照ください。
背景情報
次の表は、名前空間レベルのサイドカープロキシで ASM によってサポートされる機能を示しています。
機能 | 説明 |
Istio プロキシの最小および最大リソースを設定できます。 | |
istio-init コンテナの最小および最大リソースを設定できます。 | |
IP アドレスまたはポートでイングレスおよびエグレス トラフィックのサイドカープロキシを有効または無効にすることができます。 | |
サイドカープロキシのライフサイクルを設定できます。詳細については、「コンテナライフサイクルフック」をご参照ください。 | |
サイドカープロキシのカスタム終了ドレイン期間を設定できます。この期間は、Pod が停止した後、システムが既存の接続のサイドカープロキシを破棄する前に待機する最大時間を示します。 | |
サイドカープロキシのドメインネームシステム (DNS) プロキシ機能を有効にすることができます。DNS プロキシ機能が有効になると、サイドカープロキシは DNS クエリをインターセプトし、クライアントに認識されることなく解決結果を返します。 |
設定の優先順位
Pod アノテーション、名前空間設定、およびグローバル設定を使用して、サイドカープロキシを設定できます。これらの設定は、次の優先順位に従います。
Pod アノテーション > 名前空間設定 > グローバル設定
挿入された Istio プロキシのリソースを設定する
[ASM コンソール] にログインします。
左側のナビゲーションペインで、 を選択します。
[メッシュ管理] ページで、構成する ASM インスタンスを見つけます。[管理] 列で、ASM インスタンスの名前をクリックするか、[アクション] をクリックします。
ASM インスタンスの詳細ページで、左側のナビゲーションペインの を選択します。
[サイドカープロキシ設定] ページで、[名前空間] タブをクリックします。
構成する名前空間を選択します。
[注入されたプロキシのリソース設定] の左側のアイコンをクリックし、Istio リソースパラメーターを設定して、[設定の更新] をクリックします。パラメータ
説明
リソース制限
Istio プロキシが要求できる CPU とメモリの最大リソース。この例では、CPU パラメータを 2 (コア) に、メモリパラメータを 1025 (MiB) に設定します。
リソース要件
Istio プロキシで使用可能な CPU とメモリの最小リソース。この例では、CPU パラメータを 0.1 (コア) に、メモリパラメータを 128 (MiB) に設定します。
サイドカープロキシの設定を有効にするには、Pod を再起動します。
[ACK コンソール] にログインします。
ACK コンソールの左側のナビゲーションペインで、[クラスター] をクリックします。
[クラスター] ページで、管理するクラスターを見つけ、クラスターの名前をクリックするか、詳細[アクション] 列の をクリックします。クラスターの詳細ページが表示されます。
詳細ページの左側のナビゲーションペインで、 を選択します。
[pod] ページで、削除する Pod を見つけ、削除[アクション] 列の をクリックします。
[pod の削除] メッセージで、[OK] をクリックします。
Pod が再び起動するまで待ちます。サイドカープロキシの設定は、Pod が起動した後に有効になります。
サイドカープロキシのリソース設定を表示します。
[pod] ページで、表示する Pod の名前をクリックします。
[コンテナ] タブで、
[istio-proxy] の左側の アイコンをクリックします。Istio プロキシのリソース設定を表示します。設定が指定したものと同じであれば、Istio プロキシのリソースが設定されています。

istio-init コンテナのリソースを設定する
[ASM コンソール] にログインします。
左側のナビゲーションペインで、 を選択します。
[メッシュ管理] ページで、構成する ASM インスタンスを見つけます。[管理] 列で ASM インスタンスの名前をクリックするか、[アクション] をクリックします。
ASM インスタンスの詳細ページで、左側のナビゲーションペインの を選択します。
[サイドカープロキシ設定] ページで、[名前空間] タブをクリックします。
構成する名前空間を選択します。
[istio-init はコンテナーリソース制限を初期化します] の左側のアイコンをクリックし、Istio リソースパラメーターを設定して、[設定の更新] をクリックします。パラメータ
説明
リソース制限
istio-init コンテナが要求できる CPU とメモリの最大リソース。この例では、CPU パラメータを 0.916 (コア) に、メモリパラメータを 512 (MiB) に設定します。
リソース要件
istio-init コンテナで使用可能な CPU とメモリの最小リソース。この例では、CPU パラメータを 0.016 (コア) に、メモリパラメータを 18 (MiB) に設定します。
サイドカープロキシの設定を有効にするには、Pod を再起動します。
[ACK コンソール] にログインします。
ACK コンソールの左側のナビゲーションペインで、[クラスター] をクリックします。
[クラスター] ページで、管理するクラスターを見つけ、クラスターの名前をクリックするか、詳細[アクション] 列の をクリックします。クラスターの詳細ページが表示されます。
詳細ページの左側のナビゲーションペインで、 を選択します。
[pod] ページで、削除する Pod を見つけ、削除[アクション] 列の をクリックします。
[pod の削除] メッセージで、[OK] をクリックします。
Pod が再び起動するまで待ちます。サイドカープロキシの設定は、Pod が起動した後に有効になります。
次のコマンドを実行して、istio-init コンテナのリソース設定を表示します。
kubectl get pod -n <Namespace> <Pod name> -o yaml予期される出力:
- name: DNS_AGENT image: registry-vpc.cn-hangzhou.aliyuncs.com/acs/proxyv2:1.10.5 imagePullPolicy: IfNotPresent name: istio-init resources: limits: // 制限 cpu: 916m memory: 512Mi requests: // 要求 cpu: 16m memory: 18Mi securityContext: allowPrivilegeEscalation: false
IP アドレスまたはポートでサイドカープロキシを有効または無効にする
[ASM コンソール] にログインします。
左側のナビゲーションペインで、 を選択します。
[メッシュ管理] ページで、構成する ASM インスタンスを見つけます。[管理] 列の ASM インスタンス名をクリックするか、[アクション] をクリックします。
ASM インスタンスの詳細ページで、左側のナビゲーションペインの を選択します。
[サイドカープロキシ設定] ページで、[名前空間] タブをクリックします。
構成する名前空間を選択します。
[ポートまたはアドレス別にサイドカープロキシを有効化/無効化] の左側にあるアイコンをクリックし、[外部アクセス用のブロック済みアドレス]、[外部アクセスをブロックしないアドレス範囲]、[envoy にトラフィックがリダイレクトされるインバウンドポート]、[envoy にトラフィックがリダイレクトされるアウトバウンドポート]、[サイドカープロキシを通過しないように Inboundtraffic を制限するポート番号を設定]、[サイドカープロキシを通過しないように Outboundtraffic を制限するポート番号を設定] パラメーターを設定し、[設定の更新] をクリックします。この例では、[外部アクセス用のブロックされたアドレス] パラメータを 192.168.1.2/32 に、[外部アクセスをブロックしないアドレス範囲] パラメータを 192.168.1.1/32 に、[トラフィックが Envoy にリダイレクトされるインバウンドポート] パラメータを * に、[トラフィックが Envoy にリダイレクトされるアウトバウンドポート] パラメータを 7015,7016 に、[inboundtraffic がサイドカープロキシを通過するのを防ぐポート番号を設定する] パラメータを 7015,7016 に、[outboundtraffic がサイドカープロキシを通過するのを防ぐポート番号を設定する] パラメータを 7011,7012 に設定します。
サイドカープロキシの設定を有効にするには、Pod を再起動します。
[ACK コンソール] にログインします。
ACK コンソールの左側のナビゲーションペインで、[クラスター] をクリックします。
[クラスター] ページで、管理するクラスターを見つけ、クラスターの名前をクリックするか、詳細[アクション] 列の をクリックします。クラスターの詳細ページが表示されます。
詳細ページの左側のナビゲーションペインで、 を選択します。
[pod] ページで、削除する Pod を見つけ、削除[アクション] 列の をクリックします。
[pod の削除] メッセージで、[OK] をクリックします。
Pod が再び起動するまで待ちます。サイドカープロキシの設定は、Pod が起動した後に有効になります。
次のコマンドを実行して、サイドカープロキシが Pod で想定どおりに有効になっているか無効になっているかを確認します。
kubectl get pod -n <Namespace> <Pod name> -o yaml予期される出力:
- "15001" - -z - "15006" - -u - "1337" - -m - REDIRECT - -i // ブロックされたアドレス - 192.168.1.2/32 - -x // ブロックされていないアドレス範囲 - 192.168.0.1/32,192.168.1.1/32 - -b // インバウンドポート - '*' - -d // アウトバウンドポート - 15090,15021,15081,9191,7013,7014 - -o // 除外されたアウトバウンドポート - 7011,7012
サイドカープロキシのライフサイクルを設定する
[ASM コンソール] にログインします。
左側のナビゲーションペインで、 を選択します。
[メッシュ管理] ページで、構成する ASM インスタンスを見つけます。[管理] 列で ASM インスタンスの名前をクリックするか、[アクション] をクリックします。
ASM インスタンスの詳細ページで、左側のナビゲーションペインの を選択します。
[サイドカープロキシ設定] ページで、[名前空間] タブをクリックします。
構成する名前空間を選択します。
[sidecar プロキシ ライフサイクル] の左側のアイコンをクリックし、必要に応じて次のコンテンツを変更し、コンテンツをコードエディターにコピーして、[設定の更新] をクリックします。{ "postStart": { // 開始後 "exec": { "command": [ "pilot-agent", "wait" // 待機 ] } }, "preStop": { // 停止前 "exec": { "command": [ "/bin/sh", "-c", "sleep 13" // 13秒待機 ] } } }postStart 内の command: サイドカーコンテナの起動後に実行されるアクション。この例では、サイドカーコンテナの起動後、pilot-agent が起動するまでシステムは待機します。
preStop を使用した command: サイドカーコンテナの停止前に実行されるアクション。この例では、サイドカーコンテナが停止する前にシステムは 13 秒間スリープします。
サイドカープロキシの設定を有効にするには、Pod を再起動します。
[ACK コンソール] にログインします。
ACK コンソールの左側のナビゲーションペインで、[クラスター] をクリックします。
[クラスター] ページで、管理するクラスターを見つけ、クラスターの名前をクリックするか、詳細[アクション] 列の をクリックします。クラスターの詳細ページが表示されます。
詳細ページの左側のナビゲーションペインで、 を選択します。
[pod] ページで、削除する Pod を見つけ、削除[アクション] 列の をクリックします。
[pod の削除] メッセージで、[OK] をクリックします。
Pod が再び起動するまで待ちます。サイドカープロキシの設定は、Pod が起動した後に有効になります。
次のコマンドを実行して、サイドカープロキシのライフサイクルを表示します。
kubectl get pod -n <Namespace> <Pod name> -o yaml予期される出力:
- name: TERMINATION_DRAIN_DURATION_SECONDS value: "5" image: registry-vpc.cn-hangzhou.aliyuncs.com/acs/proxyv2:1.10.5 imagePullPolicy: IfNotPresent lifecycle: postStart: // 開始後 exec: command: - pilot-agent - wait // 待機 preStop: // 停止前 exec: command: - /bin/sh - -c - sleep 13 // 13秒待機 name: istio-proxy
サイドカープロキシの終了ドレイン期間を設定する
[ASM コンソール] にログインします。
左側のナビゲーションペインで、 を選択します。
[メッシュ管理] ページで、構成する ASM インスタンスを見つけます。[管理] 列の [アクション] をクリックするか、ASM インスタンスの名前をクリックします。
ASM インスタンスの詳細ページで、左側のナビゲーションペインの を選択します。
[サイドカープロキシ設定] ページで、[名前空間] タブをクリックします。
構成する名前空間を選択します。
アイコンをクリックして、[サイドカープロキシの終了期間] を入力し、[設定の更新] をクリックします。この例では、[サイドカープロキシの終了期間] パラメーターを 10s に設定します。サイドカープロキシの設定を有効にするには、Pod を再起動します。
[ACK コンソール] にログインします。
ACK コンソールの左側のナビゲーションペインで、[クラスター] をクリックします。
[クラスター] ページで、管理するクラスターを見つけ、クラスターの名前をクリックするか、詳細[アクション] 列の をクリックします。クラスターの詳細ページが表示されます。
詳細ページの左側のナビゲーションペインで、 を選択します。
[pod] ページで、削除する Pod を見つけ、削除[アクション] 列の をクリックします。
[pod の削除] メッセージで、[OK] をクリックします。
Pod が再び起動するまで待ちます。サイドカープロキシの設定は、Pod が起動した後に有効になります。
サイドカープロキシに設定されている終了ドレイン期間を表示します。
[pod] ページで、表示する Pod の名前をクリックします。
[コンテナ] タブで、
[istio-proxy] の左側の アイコンをクリックします。サイドカープロキシに設定されている終了ドレイン期間を表示します。期間が指定したものと同じであれば、サイドカープロキシの終了ドレイン期間が設定されています。

DNS プロキシ機能を有効にする
[ASM コンソール] にログインします。
左側のナビゲーションペインで、 を選択します。
[メッシュ管理] ページで、構成する ASM インスタンスを見つけます。[管理] 列で、ASM インスタンスの名前をクリックするか、[アクション] をクリックします。
ASM インスタンスの詳細ページで、左側のナビゲーションペインの を選択します。
[サイドカープロキシ設定] ページで、[名前空間] タブをクリックします。
構成する名前空間を選択します。
[DNS プロキシ] の左側のアイコンをクリックし、[DNS プロキシを有効にする] を選択して、[設定の更新] をクリックします。サイドカープロキシの設定を有効にするには、Pod を再起動します。
[ACK コンソール] にログインします。
ACK コンソールの左側のナビゲーションペインで、[クラスター] をクリックします。
[クラスター] ページで、管理するクラスターを見つけ、クラスターの名前をクリックするか、詳細[アクション] 列の をクリックします。クラスターの詳細ページが表示されます。
詳細ページの左側のナビゲーションペインで、 を選択します。
[pod] ページで、削除する Pod を見つけ、削除[アクション] 列の をクリックします。
[pod の削除] メッセージで、[OK] をクリックします。
Pod が再び起動するまで待ちます。サイドカープロキシの設定は、Pod が起動した後に有効になります。
次のコマンドを実行して、DNS プロキシ設定を表示します。
kubectl get pod -n <Namespace> <Pod name> -o yaml予期される出力:
- name: TRUST_DOMAIN value: cluster.local - name: DNS_AGENT // DNS エージェント - name: TERMINATION_DRAIN_DURATION_SECONDS value: "10" - name: ISTIO_META_DNS_AUTO_ALLOCATE // DNS 自動割り当て value: "true" - name: ISTIO_META_DNS_CAPTURE // DNS キャプチャ value: "true" image: registry-vpc.cn-hangzhou.aliyuncs.com/acs/proxyv2:v1.10.5-33-gba0adb2df7-pro-aliyun imagePullPolicy: IfNotPresent -- -- - 7011,7012 - -q - 7015,7016 env: - name: DNS_AGENT // DNS エージェント - name: ISTIO_META_DNS_AUTO_ALLOCATE // DNS 自動割り当て value: "true" - name: ISTIO_META_DNS_CAPTURE // DNS キャプチャ value: "true" image: registry-vpc.cn-hangzhou.aliyuncs.com/acs/proxyv2:v1.10.5-33-gba0adb2df7-pro-aliyun