1.7.3. Red Hat OpenShift Service Mesh のサイドカーコンテナー挿入
Red Hat OpenShift Service Mesh は、アプリケーションの Pod 内のプロキシーサイドカーコンテナーに依存して、アプリケーションにサービスメッシュ機能を提供します。自動のサイドカーコンテナー挿入を有効にしたり、手動で管理したりできます。Red Hat では、プロジェクトにラベルを付ける必要のない、アノテーションを使用した自動挿入を推奨しています。これにより、デプロイメント時に、アプリケーションにサービスメッシュの適切な設定が含まれるようになります。この方法で必要となる権限は少なく、ビルダー Pod などの他の OpenShift 機能と競合しません。
プロジェクトにラベルを付けている場合、デフォルトで Istio のアップストリームバージョンはサイドカーコンテナーを挿入します。Red Hat OpenShift Service Mesh では、サイドカーコンテナーがデプロイメントに自動的に挿入されるようにオプトインすることが求められるため、プロジェクトにラベルを付ける必要はありません。これにより、(Pod のビルドまたはデプロイの場合など) 不要な場合にはサイドカーコンテナーを挿入しないようにできます。
Webhook はすべてのプロジェクトにデプロイする Pod の設定をチェックし、これらの Pod が適切なアノテーションで挿入をオプトインしているかどうかを確認します。
1.7.3.1. アノテーションを使用したアプリケーションのプロキシーでの環境変数の設定
デプロイメントの Pod アノテーションを injection-template.yaml
ファイルに追加することにより、アプリケーションのサイドカープロキシーで環境変数を設定できます。環境変数がサイドカーコンテナーに挿入されます。
apiVersion: apps/v1 kind: Deployment metadata: name: resource spec: replicas: 7 selector: matchLabels: app: resource template: metadata: annotations: sidecar.maistra.io/proxyEnv: "{ \"maistra_test_env\": \"env_value\", \"maistra_test_env_2\": \"env_value_2\" }"
maistra.io/
ラベルおよびアノテーションは、ユーザーによって作成されるリソースに含めることはできません。それらはリソースが Operator によって生成され、管理されることを示すためです。独自のリソースの作成時に Operator で生成されるリソースからコンテンツをコピーする場合、maistra.io/
で始まるラベルやアノテーションを含めることはできません。さもないと、リソースが次の調整時に Operator によって上書きまたは削除されます。