3.3. サイドカーインジェクションの有効化
サイドカーインジェクションを設定するためのさまざまなアプローチを示すために、次の手順では Bookinfo アプリケーションを使用します。
前提条件
-
Red Hat OpenShift Service Mesh Operator をインストールし、
Istio
リソースを作成し、Operator によって Istio がデプロイされている。 -
IstioCNI
リソースが作成され、Operator によって必要なIstioCNI
Pod がデプロイされている。 - メッシュの一部となる namespace を作成し、これらが Istio コントロールプレーンによって検出可能となっている。
-
オプション: メッシュに含めるワークロードをデプロイしている。次の例では、Bookinfo は
info
namespace にデプロイされていますが、サイドカーインジェクション (手順 5) は設定されていません。詳細は、「Bookinfo アプリケーションのデプロイ」を参照してください。
3.3.1. namespace ラベルによるサイドカーインジェクションの有効化 リンクのコピーリンクがクリップボードにコピーされました!
この例では、namespace 内のすべてのワークロードがサイドカープロキシーインジェクションを受け取ります。これは、namespace 内のワークロードの大部分をメッシュに含める必要がある場合に最適なアプローチです。
手順
次のコマンドを使用して、Istio コントロールプレーンのリビジョン名を確認します。
oc get istiorevisions
$ oc get istiorevisions
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次の例のような出力が表示されるはずです。
出力例
NAME TYPE READY STATUS IN USE VERSION AGE default Local True Healthy False v1.23.0 4m57s
NAME TYPE READY STATUS IN USE VERSION AGE default Local True Healthy False v1.23.0 4m57s
Copy to Clipboard Copied! Toggle word wrap Toggle overflow リビジョン名はデフォルトなので、正確なリビジョン名を参照せずにデフォルトのインジェクションラベルを使用できます。
次のコマンドを使用して、目的の namespace ですでに実行されているワークロードで
1/1
コンテナーがREADY
と表示されていることを確認します。これにより、Pod がサイドカーなしで実行されていることが確認されます。oc get pods -n info
$ oc get pods -n info
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次の例のような出力が表示されるはずです。
出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow インジェクションラベルを
info
namespace に適用するには、CLI で次のコマンドを実行します。oc label namespace info istio-injection=enabled
$ oc label namespace info istio-injection=enabled namespace/info labeled
Copy to Clipboard Copied! Toggle word wrap Toggle overflow サイドカーインジェクションが適用されていることを確認するには、
info
namespace に既存のワークロードを再デプロイします。すべてのワークロードのローリング更新を実行するには、次のコマンドを使用します。oc -n info rollout restart deployments
$ oc -n info rollout restart deployments
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
次のコマンドを実行して、新しい Pod に
2/2
コンテナーがREADY
と表示されていることを確認し、サイドカーインジェクションが成功したことを確認して、ロールアウトを検証します。oc get pods -n info
$ oc get pods -n info
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次の例のような出力が表示されるはずです。
出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
3.3.2. メッシュからワークロードを除外する リンクのコピーリンクがクリップボードにコピーされました!
すべてのワークロードに対してインジェクションが有効になっている namespace 内で、特定のワークロードをサイドカーインジェクションから除外できます。
この例はデモンストレーションのみを目的としています。info アプリケーションが適切に機能するには、すべてのワークロードがメッシュの一部である必要があります。
手順
-
アプリケーションの
Deployment
リソースをエディターで開きます。この場合、ratings-v1
サービスを除外します。 サイドカーインジェクションを無効にするには、
Deployment
リソースのspec.template.metadata.labels
セクションを変更して、ラベルsidecar.istio.io/inject: false
を含めます。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記Deployment
の最上位レベルのlabels
セクションにラベルを追加しても、サイドカーインジェクションには影響しません。デプロイメントを更新するとロールアウトがトリガーされ、更新された Pod を含む新しい ReplicaSet が作成されます。
検証
次のコマンドを実行して、更新された Pod にサイドカーコンテナーが含まれておらず、
1/1
コンテナーがRunning
と表示されていることを確認します。oc get pods -n info
$ oc get pods -n info
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次の例のような出力が表示されるはずです。
出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
3.3.3. Pod ラベルによるサイドカーインジェクションの有効化 リンクのコピーリンクがクリップボードにコピーされました!
このアプローチにより、namespace 内のすべてのワークロードに適用するのではなく、サイドカーインジェクションに個々のワークロードを含めることができるため、サービスメッシュの一部となる必要があるワークロードが少数であるシナリオに最適です。この例では、サイドカーインジェクションのリビジョンラベルの使用法も示しており、ここでは Istio
リソースは my-mesh
という名前で作成されます。同じクラスター内に複数の Istio コントロールプレーンが存在する場合、またはリビジョンベースのコントロールプレーンのアップグレード中は、一意の Istio
リソース名が必要です。
手順
次のコマンドを実行して、Istio コントロールプレーンのリビジョン名を確認します。
oc get istiorevisions
$ oc get istiorevisions
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次の例のような出力が表示されるはずです。
出力例
NAME TYPE READY STATUS IN USE VERSION AGE my-mesh Local True Healthy False v1.23.0 47s
NAME TYPE READY STATUS IN USE VERSION AGE my-mesh Local True Healthy False v1.23.0 47s
Copy to Clipboard Copied! Toggle word wrap Toggle overflow リビジョン名は
my-mesh
なので、サイドカーインジェクションを有効にするには、リビジョンラベルistio.io/rev=my-mesh
を使用します。次のコマンドを実行して、すでに実行中のワークロードで
1/1
コンテナーがREADY
と表示され、Pod がサイドカーなしで実行されていることを確認します。oc get pods -n info
$ oc get pods -n info
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次の例のような出力が表示されるはずです。
出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
アプリケーションの
Deployment
リソースをエディターで開きます。この場合は、ratings-v1
サービスを更新します。 適切な Pod インジェクションまたはリビジョンラベルを含めるように、
Deployment
のspec.template.metadata.labels
セクションを更新します。この場合、istio.io/rev: my-mesh
は以下のようになります。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記Deployment
リソースの最上位レベルのlabels
セクションにラベルを追加しても、サイドカーインジェクションには影響しません。デプロイメントを更新するとロールアウトがトリガーされ、更新された Pod を含む新しい ReplicaSet が作成されます。
検証
次のコマンドを実行して、ratings-v1 Pod のみに
2/2
コンテナーがREADY
と表示されるようになり、サイドカーの正常なインジェクションを示すことを確認します。oc get pods -n info
$ oc get pods -n info
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次の例のような出力が表示されるはずです。
出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - メッシュに追加する他のワークロードで繰り返します。