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

Alibaba Cloud Service Mesh:名前空間レベルのサイドカープロキシを設定する

最終更新日:Jan 13, 2025

サイドカープロキシは、サービスコールのネットワークセキュリティ、信頼性、および可観測性を向上させるのに役立ちます。Service Mesh (ASM) は、Istio のサイドカープロキシの設定を改良し、名前空間レベルのサイドカープロキシをサポートすることで、サイドカープロキシをより適切に管理できるようにします。このトピックでは、名前空間レベルのサイドカープロキシのリソース、ライフサイクル、および終了ドレイン期間などの設定方法について説明します。

前提条件

背景情報

次の表は、名前空間レベルのサイドカープロキシで ASM によってサポートされる機能を示しています。

機能

説明

挿入された Istio プロキシのリソースを設定する

Istio プロキシの最小および最大リソースを設定できます。

istio-init コンテナのリソースを設定する

istio-init コンテナの最小および最大リソースを設定できます。

IP アドレスまたはポートでサイドカープロキシを有効または無効にする

IP アドレスまたはポートでイングレスおよびエグレス トラフィックのサイドカープロキシを有効または無効にすることができます。

サイドカープロキシのライフサイクルを設定する

サイドカープロキシのライフサイクルを設定できます。詳細については、「コンテナライフサイクルフック」をご参照ください。

サイドカープロキシの終了ドレイン期間を設定する

サイドカープロキシのカスタム終了ドレイン期間を設定できます。この期間は、Pod が停止した後、システムが既存の接続のサイドカープロキシを破棄する前に待機する最大時間を示します。

DNS プロキシ機能を有効にする

サイドカープロキシのドメインネームシステム (DNS) プロキシ機能を有効にすることができます。DNS プロキシ機能が有効になると、サイドカープロキシは DNS クエリをインターセプトし、クライアントに認識されることなく解決結果を返します。

設定の優先順位

Pod アノテーション、名前空間設定、およびグローバル設定を使用して、サイドカープロキシを設定できます。これらの設定は、次の優先順位に従います。

Pod アノテーション > 名前空間設定 > グローバル設定

挿入された Istio プロキシのリソースを設定する

  1. [ASM コンソール] にログインします。

  2. 左側のナビゲーションペインで、[サービスメッシュ] > [メッシュ管理] を選択します。

  3. [メッシュ管理] ページで、構成する ASM インスタンスを見つけます。[管理] 列で、ASM インスタンスの名前をクリックするか、[アクション] をクリックします。

  4. ASM インスタンスの詳細ページで、左側のナビゲーションペインの [サイドカー管理 (データプレーン)] > [サイドカープロキシ設定] を選択します。

  5. [サイドカープロキシ設定] ページで、[名前空間] タブをクリックします。

  6. 構成する名前空間を選択します。Right arrow [注入されたプロキシのリソース設定] の左側のアイコンをクリックし、Istio リソースパラメーターを設定して、[設定の更新] をクリックします。

    パラメータ

    説明

    リソース制限

    Istio プロキシが要求できる CPU とメモリの最大リソース。この例では、CPU パラメータを 2 (コア) に、メモリパラメータを 1025 (MiB) に設定します。

    リソース要件

    Istio プロキシで使用可能な CPU とメモリの最小リソース。この例では、CPU パラメータを 0.1 (コア) に、メモリパラメータを 128 (MiB) に設定します。

  7. サイドカープロキシの設定を有効にするには、Pod を再起動します。

    1. [ACK コンソール] にログインします。

    2. ACK コンソールの左側のナビゲーションペインで、[クラスター] をクリックします。

    3. [クラスター] ページで、管理するクラスターを見つけ、クラスターの名前をクリックするか、詳細[アクション] 列の をクリックします。クラスターの詳細ページが表示されます。

    4. 詳細ページの左側のナビゲーションペインで、[ワークロード] > [pod] を選択します。

    5. [pod] ページで、削除する Pod を見つけ、削除[アクション] 列の をクリックします。

    6. [pod の削除] メッセージで、[OK] をクリックします。

      Pod が再び起動するまで待ちます。サイドカープロキシの設定は、Pod が起動した後に有効になります。

  8. サイドカープロキシのリソース設定を表示します。

    1. [pod] ページで、表示する Pod の名前をクリックします。

    2. [コンテナ] タブで、Right arrow[istio-proxy] の左側の アイコンをクリックします。

      Istio プロキシのリソース設定を表示します。設定が指定したものと同じであれば、Istio プロキシのリソースが設定されています。Resource Settings for Injected Proxies

istio-init コンテナのリソースを設定する

  1. [ASM コンソール] にログインします。

  2. 左側のナビゲーションペインで、[サービスメッシュ] > [メッシュ管理] を選択します。

  3. [メッシュ管理] ページで、構成する ASM インスタンスを見つけます。[管理] 列で ASM インスタンスの名前をクリックするか、[アクション] をクリックします。

  4. ASM インスタンスの詳細ページで、左側のナビゲーションペインの [サイドカー管理 (データプレーン)] > [サイドカープロキシ設定] を選択します。

  5. [サイドカープロキシ設定] ページで、[名前空間] タブをクリックします。

  6. 構成する名前空間を選択します。Right arrow [istio-init はコンテナーリソース制限を初期化します] の左側のアイコンをクリックし、Istio リソースパラメーターを設定して、[設定の更新] をクリックします。

    パラメータ

    説明

    リソース制限

    istio-init コンテナが要求できる CPU とメモリの最大リソース。この例では、CPU パラメータを 0.916 (コア) に、メモリパラメータを 512 (MiB) に設定します。

    リソース要件

    istio-init コンテナで使用可能な CPU とメモリの最小リソース。この例では、CPU パラメータを 0.016 (コア) に、メモリパラメータを 18 (MiB) に設定します。

  7. サイドカープロキシの設定を有効にするには、Pod を再起動します。

    1. [ACK コンソール] にログインします。

    2. ACK コンソールの左側のナビゲーションペインで、[クラスター] をクリックします。

    3. [クラスター] ページで、管理するクラスターを見つけ、クラスターの名前をクリックするか、詳細[アクション] 列の をクリックします。クラスターの詳細ページが表示されます。

    4. 詳細ページの左側のナビゲーションペインで、[ワークロード] > [pod] を選択します。

    5. [pod] ページで、削除する Pod を見つけ、削除[アクション] 列の をクリックします。

    6. [pod の削除] メッセージで、[OK] をクリックします。

      Pod が再び起動するまで待ちます。サイドカープロキシの設定は、Pod が起動した後に有効になります。

  8. 次のコマンドを実行して、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 アドレスまたはポートでサイドカープロキシを有効または無効にする

  1. [ASM コンソール] にログインします。

  2. 左側のナビゲーションペインで、[サービスメッシュ] > [メッシュ管理] を選択します。

  3. [メッシュ管理] ページで、構成する ASM インスタンスを見つけます。[管理] 列の ASM インスタンス名をクリックするか、[アクション] をクリックします。

  4. ASM インスタンスの詳細ページで、左側のナビゲーションペインの [サイドカー管理 (データプレーン)] > [サイドカープロキシ設定] を選択します。

  5. [サイドカープロキシ設定] ページで、[名前空間] タブをクリックします。

  6. 構成する名前空間を選択します。Right arrow [ポートまたはアドレス別にサイドカープロキシを有効化/無効化] の左側にあるアイコンをクリックし、[外部アクセス用のブロック済みアドレス][外部アクセスをブロックしないアドレス範囲][envoy にトラフィックがリダイレクトされるインバウンドポート][envoy にトラフィックがリダイレクトされるアウトバウンドポート][サイドカープロキシを通過しないように Inboundtraffic を制限するポート番号を設定][サイドカープロキシを通過しないように Outboundtraffic を制限するポート番号を設定] パラメーターを設定し、[設定の更新] をクリックします。

    この例では、[外部アクセス用のブロックされたアドレス] パラメータを 192.168.1.2/32 に、[外部アクセスをブロックしないアドレス範囲] パラメータを 192.168.1.1/32 に、[トラフィックが Envoy にリダイレクトされるインバウンドポート] パラメータを * に、[トラフィックが Envoy にリダイレクトされるアウトバウンドポート] パラメータを 7015,7016 に、[inboundtraffic がサイドカープロキシを通過するのを防ぐポート番号を設定する] パラメータを 7015,7016 に、[outboundtraffic がサイドカープロキシを通過するのを防ぐポート番号を設定する] パラメータを 7011,7012 に設定します。

  7. サイドカープロキシの設定を有効にするには、Pod を再起動します。

    1. [ACK コンソール] にログインします。

    2. ACK コンソールの左側のナビゲーションペインで、[クラスター] をクリックします。

    3. [クラスター] ページで、管理するクラスターを見つけ、クラスターの名前をクリックするか、詳細[アクション] 列の をクリックします。クラスターの詳細ページが表示されます。

    4. 詳細ページの左側のナビゲーションペインで、[ワークロード] > [pod] を選択します。

    5. [pod] ページで、削除する Pod を見つけ、削除[アクション] 列の をクリックします。

    6. [pod の削除] メッセージで、[OK] をクリックします。

      Pod が再び起動するまで待ちます。サイドカープロキシの設定は、Pod が起動した後に有効になります。

  8. 次のコマンドを実行して、サイドカープロキシが 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

サイドカープロキシのライフサイクルを設定する

  1. [ASM コンソール] にログインします。

  2. 左側のナビゲーションペインで、[サービスメッシュ] > [メッシュ管理] を選択します。

  3. [メッシュ管理] ページで、構成する ASM インスタンスを見つけます。[管理] 列で ASM インスタンスの名前をクリックするか、[アクション] をクリックします。

  4. ASM インスタンスの詳細ページで、左側のナビゲーションペインの [サイドカー管理 (データプレーン)] > [サイドカープロキシ設定] を選択します。

  5. [サイドカープロキシ設定] ページで、[名前空間] タブをクリックします。

  6. 構成する名前空間を選択します。Right arrow [sidecar プロキシ ライフサイクル] の左側のアイコンをクリックし、必要に応じて次のコンテンツを変更し、コンテンツをコードエディターにコピーして、[設定の更新] をクリックします。

    {
      "postStart": { // 開始後
        "exec": {
          "command": [
            "pilot-agent",
            "wait" // 待機
          ]
        }
      },
      "preStop": { // 停止前
        "exec": {
          "command": [
            "/bin/sh",
            "-c",
            "sleep 13" // 13秒待機
          ]
        }
      }
    }
    • postStart 内の command: サイドカーコンテナの起動後に実行されるアクション。この例では、サイドカーコンテナの起動後、pilot-agent が起動するまでシステムは待機します。

    • preStop を使用した command: サイドカーコンテナの停止前に実行されるアクション。この例では、サイドカーコンテナが停止する前にシステムは 13 秒間スリープします。

  7. サイドカープロキシの設定を有効にするには、Pod を再起動します。

    1. [ACK コンソール] にログインします。

    2. ACK コンソールの左側のナビゲーションペインで、[クラスター] をクリックします。

    3. [クラスター] ページで、管理するクラスターを見つけ、クラスターの名前をクリックするか、詳細[アクション] 列の をクリックします。クラスターの詳細ページが表示されます。

    4. 詳細ページの左側のナビゲーションペインで、[ワークロード] > [pod] を選択します。

    5. [pod] ページで、削除する Pod を見つけ、削除[アクション] 列の をクリックします。

    6. [pod の削除] メッセージで、[OK] をクリックします。

      Pod が再び起動するまで待ちます。サイドカープロキシの設定は、Pod が起動した後に有効になります。

  8. 次のコマンドを実行して、サイドカープロキシのライフサイクルを表示します。

    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

サイドカープロキシの終了ドレイン期間を設定する

  1. [ASM コンソール] にログインします。

  2. 左側のナビゲーションペインで、[サービスメッシュ] > [メッシュ管理] を選択します。

  3. [メッシュ管理] ページで、構成する ASM インスタンスを見つけます。[管理] 列の [アクション] をクリックするか、ASM インスタンスの名前をクリックします。

  4. ASM インスタンスの詳細ページで、左側のナビゲーションペインの [サイドカー管理 (データプレーン)] > [サイドカープロキシ設定] を選択します。

  5. [サイドカープロキシ設定] ページで、[名前空間] タブをクリックします。

  6. 構成する名前空間を選択します。Right arrow アイコンをクリックして、[サイドカープロキシの終了期間] を入力し、[設定の更新] をクリックします。この例では、[サイドカープロキシの終了期間] パラメーターを 10s に設定します。

  7. サイドカープロキシの設定を有効にするには、Pod を再起動します。

    1. [ACK コンソール] にログインします。

    2. ACK コンソールの左側のナビゲーションペインで、[クラスター] をクリックします。

    3. [クラスター] ページで、管理するクラスターを見つけ、クラスターの名前をクリックするか、詳細[アクション] 列の をクリックします。クラスターの詳細ページが表示されます。

    4. 詳細ページの左側のナビゲーションペインで、[ワークロード] > [pod] を選択します。

    5. [pod] ページで、削除する Pod を見つけ、削除[アクション] 列の をクリックします。

    6. [pod の削除] メッセージで、[OK] をクリックします。

      Pod が再び起動するまで待ちます。サイドカープロキシの設定は、Pod が起動した後に有効になります。

  8. サイドカープロキシに設定されている終了ドレイン期間を表示します。

    1. [pod] ページで、表示する Pod の名前をクリックします。

    2. [コンテナ] タブで、Right arrow[istio-proxy] の左側の アイコンをクリックします。

      サイドカープロキシに設定されている終了ドレイン期間を表示します。期間が指定したものと同じであれば、サイドカープロキシの終了ドレイン期間が設定されています。Termination drain duration

DNS プロキシ機能を有効にする

  1. [ASM コンソール] にログインします。

  2. 左側のナビゲーションペインで、[サービスメッシュ] > [メッシュ管理] を選択します。

  3. [メッシュ管理] ページで、構成する ASM インスタンスを見つけます。[管理] 列で、ASM インスタンスの名前をクリックするか、[アクション] をクリックします。

  4. ASM インスタンスの詳細ページで、左側のナビゲーションペインの [サイドカー管理 (データプレーン)] > [サイドカープロキシ設定] を選択します。

  5. [サイドカープロキシ設定] ページで、[名前空間] タブをクリックします。

  6. 構成する名前空間を選択します。Right arrow [DNS プロキシ] の左側のアイコンをクリックし、[DNS プロキシを有効にする] を選択して、[設定の更新] をクリックします。

  7. サイドカープロキシの設定を有効にするには、Pod を再起動します。

    1. [ACK コンソール] にログインします。

    2. ACK コンソールの左側のナビゲーションペインで、[クラスター] をクリックします。

    3. [クラスター] ページで、管理するクラスターを見つけ、クラスターの名前をクリックするか、詳細[アクション] 列の をクリックします。クラスターの詳細ページが表示されます。

    4. 詳細ページの左側のナビゲーションペインで、[ワークロード] > [pod] を選択します。

    5. [pod] ページで、削除する Pod を見つけ、削除[アクション] 列の をクリックします。

    6. [pod の削除] メッセージで、[OK] をクリックします。

      Pod が再び起動するまで待ちます。サイドカープロキシの設定は、Pod が起動した後に有効になります。

  8. 次のコマンドを実行して、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