1.11. サイドカーコンテナーの挿入の有効化
サービスが含まれる namespace をメッシュに追加したら、次の手順は、アプリケーションのデプロイメントリソースでサイドカーの自動挿入を有効にします。デプロイメントごとにサイドカーコンテナーの自動挿入を有効にする必要があります。
Bookinfo サンプルアプリケーションをインストールした場合は、アプリケーションがデプロイされ、インストール手順の一部としてサイドカーが注入されています。独自のプロジェクトおよびサービスを使用している場合は、アプリケーションを OpenShift Container Platform にデプロイします。
詳細は、OpenShift Container Platform のドキュメント Understanding Deployment and DeploymentConfig objects を参照してください。
Init Containers (Pod 内のアプリケーションコンテナーの前に実行される特殊なコンテナー) によって開始されたトラフィックは、デフォルトでサービスメッシュの外に移動できません。Init Container が実行する、メッシュ外のネットワークトラフィック接続の確立を必要とするアクションはすべて失敗します。
Init Container をサービスに接続する方法の詳細は Red Hat ナレッジベースソリューション initContainer in CrashLoopBackOff on pod with Service Mesh sidecar injected を参照してください。
1.11.1. 前提条件 リンクのコピーリンクがクリップボードにコピーされました!
- メッシュにデプロイされたサービス(Bookinfo サンプルアプリケーションなど)。
- デプロイメントリソースファイル。
1.11.2. サイドカーコンテナーの自動挿入の有効化 リンクのコピーリンクがクリップボードにコピーされました!
アプリケーションをデプロイする場合は、deployment
オブジェクトで spec.template.metadata.labels
の sidecar.istio.io/inject
ラベルを true
に設定して、インジェクションをオプトインする必要があります。オプトインにより、サイドカーの挿入が OpenShift Container Platform エコシステム内の複数のフレームワークが使用する、ビルダー Pod などの他の OpenShift Container Platform 機能に干渉しないようにします。
前提条件
- Service Mesh の一部である namespace と、サイドカーの自動注入が必要なデプロイメントを特定しておく。
手順
デプロイメントを見つけるには、
oc get
コマンドを使用します。oc get deployment -n <namespace>
$ oc get deployment -n <namespace>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow たとえば、
info
namespace の 'ratings-v1' マイクロサービスのDeployment
YAML ファイルを表示するには、次のコマンドを使用して YAML 形式でリソースを表示します。oc get deployment -n info ratings-v1 -o yaml
oc get deployment -n info ratings-v1 -o yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
エディターでアプリケーションの
Deployment
YAML ファイルを開きます。 次の例に示すように、
spec.template.metadata.labels.sidecar.istio/inject
を Deployment YAML ファイルに追加し、sidecar.istio.io/inject
をtrue
に設定します。info deployment-ratings-v1.yaml からのスニペットの例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記自動サイドカーコンテナー注入を有効にする際の
annotations
パラメーターの使用は非推奨となり、labels
パラメーターの使用に置き換えられます。-
Deployment
YAML ファイルを保存します。 ファイルをアプリケーションが含まれるプロジェクトに追加し直します。
oc apply -n <namespace> -f deployment.yaml
$ oc apply -n <namespace> -f deployment.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow この例では、
info
はratings-v1
アプリを含むプロジェクトの名前であり、deployment-ratings-v1.yaml
は編集したファイルです。oc apply -n info -f deployment-ratings-v1.yaml
$ oc apply -n info -f deployment-ratings-v1.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow リソースが正常にアップロードされたことを確認するには、以下のコマンドを実行します。
oc get deployment -n <namespace> <deploymentName> -o yaml
$ oc get deployment -n <namespace> <deploymentName> -o yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以下に例を示します。
oc get deployment -n info ratings-v1 -o yaml
$ oc get deployment -n info ratings-v1 -o yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
1.11.3. サイドカーインジェクションの検証 リンクのコピーリンクがクリップボードにコピーされました!
Kiali コンソールは、アプリケーション、サービス、ワークロードにサイドカープロキシーがあるかどうかを検証するためのいくつかの方法を提供します。
図1.3 サイドカーバッジがない
グラフ ページには、次のグラフに サイドカー がないことを示すノードバッジが表示されます。
- App graph
- Versioned app graph
- Workload graph
図1.4 サイドカーアイコンがない
アプリケーション ページでは、サイドカーがない namespace 内のアプリケーションの 詳細 列に Missing Sidecar アイコンが表示されます。
ワークロード ページでは、サイドカーがない namespace 内のアプリケーションの 詳細 列に Missing Sidecar アイコンが表示されます。
サービス ページでは、サイドカーがない namespace 内のアプリケーションの 詳細 列に Missing Sidecar アイコンが表示されます。サービスのバージョンが複数ある場合は、サービスの詳細 ページを使用して、Missing Sidecar アイコンを表示します。
ワークロードの詳細 ページには、アプリケーションログとプロキシーログを表示および相互に関連付けることができる特別な統合 Logs タブがあります。Envoy ログは、アプリケーションワークロードのサイドカーインジェクションを検証する別の方法として表示できます。
ワークロードの詳細 ページには、Envoy プロキシーであるか、Envoy プロキシーが注入されたワークロード用の Envoy タブもあります。このタブには、Clusters、Listeners、Routes、Bootstrap、Config、および Metrics のサブタブなど、組み込みの Envoy ダッシュボードが表示されます。
Envoy アクセスログを有効にする方法は、トラブルシューティング のセクションを参照してください。
Envoy ログの表示については、Kiali コンソールでのログの表示 を参照してください。
1.11.4. アノテーションによるプロキシー環境変数の設定 リンクのコピーリンクがクリップボードにコピーされました!
Envoy サイドカープロキシーの設定は、ServiceMeshControlPlane
によって管理されます。
デプロイメントの Pod アノテーションを injection-template.yaml
ファイルに追加することにより、アプリケーションのサイドカープロキシーで環境変数を設定できます。環境変数がサイドカーコンテナーに挿入されます。
injection-template.yaml の例
独自のカスタムリソースを作成するときは、maistra.io/
ラベルとアノテーションを含めないでください。これらのラベルとアノテーションは、リソースが Operator によって生成および管理されていることを示しています。独自のリソースの作成時に Operator が生成したリソースからコンテンツをコピーする場合は、maistra.io/
で始まるラベルやアノテーションを含めないでください。これらのラベルまたはアノテーションを含むリソースは、次回の調整時に Operator によって上書きまたは削除されます。
1.11.5. サイドカープロキシーの更新 リンクのコピーリンクがクリップボードにコピーされました!
サイドカープロキシーの設定を更新するには、アプリケーション管理者はアプリケーション Pod を再起動する必要があります。
デプロイメントで自動のサイドカーコンテナー挿入を使用する場合は、アノテーションを追加または変更してデプロイメントの Pod テンプレートを更新できます。以下のコマンドを実行して Pod を再デプロイします。
oc patch deployment/<deployment> -p '{"spec":{"template":{"metadata":{"annotations":{"kubectl.kubernetes.io/restartedAt": "'`date -Iseconds`'"}}}}}'
$ oc patch deployment/<deployment> -p '{"spec":{"template":{"metadata":{"annotations":{"kubectl.kubernetes.io/restartedAt": "'`date -Iseconds`'"}}}}}'
デプロイメントで自動のサイドカーコンテナー挿入を使用しない場合は、デプロイメントまたは Pod で指定されたサイドカーコンテナーイメージを変更して Pod を再起動し、サイドカーコンテナーを手動で更新する必要があります。
1.11.6. 次のステップ リンクのコピーリンクがクリップボードにコピーされました!
ご使用の環境用に Red Hat OpenShift Service Mesh 機能を設定します。