1.10. サイドカーコンテナーの挿入の有効化


サービスが含まれる namespace をメッシュに追加したら、次の手順は、アプリケーションのデプロイメントリソースでサイドカーの自動挿入を有効にします。デプロイメントごとにサイドカーコンテナーの自動挿入を有効にする必要があります。

Bookinfo サンプルアプリケーションをインストールした場合は、アプリケーションがデプロイされ、インストール手順の一部としてサイドカーが注入されています。独自のプロジェクトとサービスを使用している場合は、Red Hat OpenShift Service on AWS にアプリケーションをデプロイします。

注記

Init Containers (Pod 内のアプリケーションコンテナーの前に実行される特殊なコンテナー) によって開始されたトラフィックは、デフォルトでサービスメッシュの外に移動できません。Init Container が実行する、メッシュ外のネットワークトラフィック接続の確立を必要とするアクションはすべて失敗します。

Init Container をサービスに接続する方法の詳細は Red Hat ナレッジベースソリューション initContainer in CrashLoopBackOff on pod with Service Mesh sidecar injected を参照してください。

1.10.1. 前提条件

1.10.2. サイドカーコンテナーの自動挿入の有効化

アプリケーションをデプロイする場合は、deployment オブジェクトで spec.template.metadata.labelssidecar.istio.io/inject ラベルを true に設定して、インジェクションをオプトインする必要があります。オプトインにより、サイドカーの挿入が Red Hat OpenShift Service on AWS エコシステム内の複数のフレームワークが使用する、ビルダー Pod などの他の Red Hat OpenShift Service on AWS 機能に干渉しないようにします。

前提条件

  • Service Mesh の一部である namespace と、サイドカーの自動注入が必要なデプロイメントを特定しておく。

手順

  1. デプロイメントを見つけるには、oc get コマンドを使用します。

    $ oc get deployment -n <namespace>

    たとえば、info namespace の 'ratings-v1' マイクロサービスの Deployment YAML ファイルを表示するには、次のコマンドを使用して YAML 形式でリソースを表示します。

    oc get deployment -n info ratings-v1 -o yaml
  2. エディターでアプリケーションの Deployment YAML ファイルを開きます。
  3. 次の例に示すように、spec.template.metadata.labels.sidecar.istio/inject を Deployment YAML ファイルに追加し、sidecar.istio.io/injecttrue に設定します。

    info deployment-ratings-v1.yaml からのスニペットの例

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: ratings-v1
      namespace: info
      labels:
        app: ratings
        version: v1
    spec:
      template:
        metadata:
          labels:
            sidecar.istio.io/inject: 'true'

    注記

    自動サイドカーコンテナー注入を有効にする際の annotations パラメーターの使用は非推奨となり、labels パラメーターの使用に置き換えられます。

  4. Deployment YAML ファイルを保存します。
  5. ファイルをアプリケーションが含まれるプロジェクトに追加し直します。

    $ oc apply -n <namespace> -f deployment.yaml

    この例では、inforatings-v1 アプリを含むプロジェクトの名前であり、deployment-ratings-v1.yaml は編集したファイルです。

    $ oc apply -n info -f deployment-ratings-v1.yaml
  6. リソースが正常にアップロードされたことを確認するには、以下のコマンドを実行します。

    $ oc get deployment -n <namespace> <deploymentName> -o yaml

    以下に例を示します。

    $ oc get deployment -n info ratings-v1 -o yaml

1.10.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 タブもあります。このタブには、ClustersListenersRoutesBootstrapConfig、および Metrics のサブタブなど、組み込みの Envoy ダッシュボードが表示されます。

Envoy アクセスログを有効にする方法は、トラブルシューティング のセクションを参照してください。

Envoy ログの表示については、Kiali コンソールでのログの表示 を参照してください。

1.10.4. アノテーションによるプロキシー環境変数の設定

Envoy サイドカープロキシーの設定は、ServiceMeshControlPlane によって管理されます。

デプロイメントの Pod アノテーションを injection-template.yaml ファイルに追加することにより、アプリケーションのサイドカープロキシーで環境変数を設定できます。環境変数がサイドカーコンテナーに挿入されます。

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 によって上書きまたは削除されます。

1.10.5. サイドカープロキシーの更新

サイドカープロキシーの設定を更新するには、アプリケーション管理者はアプリケーション Pod を再起動する必要があります。

デプロイメントで自動のサイドカーコンテナー挿入を使用する場合は、アノテーションを追加または変更してデプロイメントの Pod テンプレートを更新できます。以下のコマンドを実行して Pod を再デプロイします。

$ oc patch deployment/<deployment> -p '{"spec":{"template":{"metadata":{"annotations":{"kubectl.kubernetes.io/restartedAt": "'`date -Iseconds`'"}}}}}'

デプロイメントで自動のサイドカーコンテナー挿入を使用しない場合は、デプロイメントまたは Pod で指定されたサイドカーコンテナーイメージを変更して Pod を再起動し、サイドカーコンテナーを手動で更新する必要があります。

1.10.6. 次のステップ

ご使用の環境用に Red Hat OpenShift Service Mesh 機能を設定します。

Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.