Anthos Service Mesh 1.9 のドキュメントを表示しています。最新のドキュメントを表示するか、他の利用可能なバージョンを選択します。

サイドカー プロキシの挿入

Anthos Service Mesh は、サイドカー プロキシを使用してネットワークのセキュリティ、信頼性、オブザーバビリティを強化します。これらの機能が、アプリケーションのプライマリ コンテナと分離されて抽象化され、同じ Pod 内に別のコンテナとして提供される、共通のプロセス外プロキシ(サイドカー)に実装されます。これにより、本番環境のアプリケーションを再設計することなくサービス メッシュに参加する Anthos Service Mesh の機能が提供されます。

自動サイドカー プロキシ インジェクション(自動インジェクション)は、Anthos Service Mesh がワークロードの Pod 用に構成した名前空間ラベルを検出すると実行されます。プロキシは、ワークロードのすべての受信トラフィックと送信トラフィックを傍受し、Anthos Service Mesh と通信します。

自動サイドカー インジェクションを有効にする

サイドカー プロキシの挿入には、Webhook ベースの自動サイドカー インジェクタを使用することをおすすめしますが、手動で Pod の Kubernetes 構成を更新することもできます。自動インジェクションを有効にするには、名前空間にリビジョン ラベルを追加する必要があります。追加するラベルは、Anthos Service Mesh の Google 管理コントロール プレーンをデプロイしたか、クラスタ内コントロール プレーンをインストールしたかによって異なります。リビジョン ラベルは、サイドカー インジェクタ Webhook によって使用され、挿入されたサイドカーを特定のコントロール プレーン リビジョンに関連付けます。

自動インジェクションを有効にするには:

クラスタ内

  1. 次のコマンドを使用して、istiod のリビジョン ラベルを探します。

    kubectl -n istio-system get pods -l app=istiod --show-labels
    

    出力は次のようになります。

    NAME                                READY   STATUS    RESTARTS   AGE   LABELS
    istiod-asm-198-6-5788d57586-bljj4   1/1     Running   0          23h   app=istiod,istio.io/rev=asm-198-6,istio=istiod,pod-template-hash=5788d57586
    istiod-asm-198-6-5788d57586-vsklm   1/1     Running   1          23h   app=istiod,istio.io/rev=asm-198-6,istio=istiod,pod-template-hash=5788d57586

    出力の LABELS 列で、接頭辞 istio.io/rev= に続く istiod リビジョン ラベルの値をメモします。この例での値は asm-198-6 です。

  2. リビジョン ラベルを名前空間に適用し、istio-injection ラベルを削除します(存在する場合)。次のコマンドで、NAMESPACE は自動インジェクションを有効にする名前空間の名前で、REVISION は前の手順でメモしたリビジョン ラベルです。

    kubectl label namespace NAMESPACE  istio-injection- istio.io/rev=REVISION --overwrite
    

    出力中のメッセージ "istio-injection not found" は無視します。つまり、今までは名前空間に istio-injection ラベルが付いていなかったということです。Anthos Service Mesh の新規インストールや新規デプロイでは、これが予想されます。名前空間に istio-injection とリビジョン ラベルの両方があると自動インジェクションが失敗するため、Anthos Service Mesh ドキュメント内のすべての kubectl label コマンドには istio-injection ラベルの削除が含まれています。

  3. 次のセクションの手順に沿って、該当する Pod を再起動します。

Google 管理

  1. 次のリビジョン ラベルを名前空間に適用し、istio-injection ラベルを削除します(存在する場合)。次のコマンドの NAMESPACE を、自動インジェクションを有効にする名前空間の名前に置き換えます。

    kubectl label namespace NAMESPACE  istio-injection- istio.io/rev=asm-managed --overwrite
    

    出力中のメッセージ "istio-injection not found" は無視します。つまり、今までは名前空間に istio-injection ラベルが付いていなかったということです。Anthos Service Mesh の新規インストールや新規デプロイでは、これが予想されます。名前空間に istio-injection とリビジョン ラベルの両方があると自動インジェクションが失敗するため、Anthos Service Mesh ドキュメント内のすべての kubectl label コマンドには istio-injection ラベルの削除が含まれています。

  2. 次のセクションの手順に沿って、該当する Pod を再起動します。

Pod を再起動してサイドカー プロキシを更新する

自動サイドカー インジェクションでは、Pod の再起動で既存の Pod のサイドカーを更新できます。

Pod を再起動する方法は、Pod が Deployment の一部として作成されたかどうかによって異なります。

  1. Deployment を使用した場合は、サイドカー付きのすべての Pod を再起動する Deployment を再起動します。

    kubectl rollout restart deployment -n YOUR_NAMESPACE

    Deployment を使用していない場合、Pod を削除すると、自動的にサイドカー付きで再作成されます。

    kubectl delete pod -n YOUR_NAMESPACE --all
  2. 名前空間内のすべての Pod にサイドカーが挿入されたことを確認します。

    kubectl get pod -n YOUR_NAMESPACE

    次に前のコマンドの出力例を示します。ここで、READY 列はワークロードごとに 2 つのコンテナ(プライマリ コンテナとサイドカー プロキシのコンテナ)があることを示しています。

    NAME                    READY   STATUS    RESTARTS   AGE
    YOUR_WORKLOAD           2/2     Running   0          20s
    ...
    

次のステップ

以下の詳細を確認する